Full Code of apache/seatunnel for AI

dev 219c2acec365 cached
6942 files
35.5 MB
9.9M tokens
30910 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (39,422K chars total). Download the full file to get everything.
Repository: apache/seatunnel
Branch: dev
Commit: 219c2acec365
Files: 6942
Total size: 35.5 MB

Directory structure:
gitextract_vzl20rdb/

├── .asf.yaml
├── .dlc.json
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.yml
│   │   ├── feature-request.yml
│   │   └── umbrella.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── add-label.yml
│       ├── approve-label-trigger.yml
│       ├── approve-label.yml
│       ├── backend.yml
│       ├── build_main.yml
│       ├── codeql.yaml
│       ├── labeler/
│       │   └── label-scope-conf.yml
│       ├── notify_test_workflow.yml
│       ├── publish-docker.yaml
│       ├── publish-helm-chart.yaml
│       ├── schedule_backend.yml
│       ├── stale.yml
│       └── update_build_status.yml
├── .gitignore
├── .gitmodules
├── .licenserc.yaml
├── .mvn/
│   └── wrapper/
│       └── maven-wrapper.properties
├── AGENTS.md
├── LICENSE
├── NOTICE
├── README.md
├── bin/
│   ├── install-plugin.cmd
│   └── install-plugin.sh
├── config/
│   ├── hazelcast-client.yaml
│   ├── hazelcast-master.yaml
│   ├── hazelcast-worker.yaml
│   ├── hazelcast.yaml
│   ├── jvm_client_options
│   ├── jvm_master_options
│   ├── jvm_options
│   ├── jvm_worker_options
│   ├── log4j2.properties
│   ├── log4j2_client.properties
│   ├── plugin_config
│   ├── seatunnel-env.cmd
│   ├── seatunnel-env.sh
│   ├── seatunnel.yaml
│   ├── v2.batch.config.template
│   └── v2.streaming.conf.template
├── deploy/
│   └── kubernetes/
│       └── seatunnel/
│           ├── Chart.yaml
│           ├── conf/
│           │   ├── hazelcast-client.yaml
│           │   ├── hazelcast-master.yaml
│           │   ├── hazelcast-worker.yaml
│           │   ├── jvm_client_options
│           │   ├── jvm_master_options
│           │   ├── jvm_worker_options
│           │   ├── log4j2.properties
│           │   └── seatunnel.yaml
│           ├── templates/
│           │   ├── NOTES.txt
│           │   ├── _helpers.tpl
│           │   ├── configmap.yaml
│           │   ├── deployment-seatunnel-master.yaml
│           │   ├── deployment-seatunnel-worker.yaml
│           │   ├── ingress.yaml
│           │   ├── rbac.yaml
│           │   ├── service-headless.yaml
│           │   └── service-master-headless.yaml
│           └── values.yaml
├── docs/
│   ├── en/
│   │   ├── architecture/
│   │   │   ├── api-design/
│   │   │   │   ├── catalog-table.md
│   │   │   │   ├── sink-architecture.md
│   │   │   │   ├── source-architecture.md
│   │   │   │   └── translation-layer.md
│   │   │   ├── design-philosophy.md
│   │   │   ├── engine/
│   │   │   │   ├── dag-execution.md
│   │   │   │   ├── engine-architecture.md
│   │   │   │   └── resource-management.md
│   │   │   ├── fault-tolerance/
│   │   │   │   ├── checkpoint-mechanism.md
│   │   │   │   └── exactly-once.md
│   │   │   ├── features/
│   │   │   │   └── multi-table.md
│   │   │   └── overview.md
│   │   ├── connectors/
│   │   │   ├── changelog/
│   │   │   │   ├── connector-activemq.md
│   │   │   │   ├── connector-aerospike.md
│   │   │   │   ├── connector-amazondynamodb.md
│   │   │   │   ├── connector-amazonsqs.md
│   │   │   │   ├── connector-assert.md
│   │   │   │   ├── connector-cassandra.md
│   │   │   │   ├── connector-cdc-base.md
│   │   │   │   ├── connector-cdc-mongodb.md
│   │   │   │   ├── connector-cdc-mysql.md
│   │   │   │   ├── connector-cdc-opengauss.md
│   │   │   │   ├── connector-cdc-oracle.md
│   │   │   │   ├── connector-cdc-postgres.md
│   │   │   │   ├── connector-cdc-sqlserver.md
│   │   │   │   ├── connector-cdc-tidb.md
│   │   │   │   ├── connector-cdc.md
│   │   │   │   ├── connector-clickhouse.md
│   │   │   │   ├── connector-cloudberry.md
│   │   │   │   ├── connector-common.md
│   │   │   │   ├── connector-console.md
│   │   │   │   ├── connector-databend.md
│   │   │   │   ├── connector-datahub.md
│   │   │   │   ├── connector-dingtalk.md
│   │   │   │   ├── connector-doris.md
│   │   │   │   ├── connector-druid.md
│   │   │   │   ├── connector-easysearch.md
│   │   │   │   ├── connector-elasticsearch.md
│   │   │   │   ├── connector-email.md
│   │   │   │   ├── connector-fake.md
│   │   │   │   ├── connector-file-base-hadoop.md
│   │   │   │   ├── connector-file-base.md
│   │   │   │   ├── connector-file-cos.md
│   │   │   │   ├── connector-file-ftp.md
│   │   │   │   ├── connector-file-hadoop.md
│   │   │   │   ├── connector-file-jindo-oss.md
│   │   │   │   ├── connector-file-local.md
│   │   │   │   ├── connector-file-obs.md
│   │   │   │   ├── connector-file-oss-jindo.md
│   │   │   │   ├── connector-file-oss.md
│   │   │   │   ├── connector-file-s3.md
│   │   │   │   ├── connector-file-sftp.md
│   │   │   │   ├── connector-file.md
│   │   │   │   ├── connector-fluss.md
│   │   │   │   ├── connector-google-firestore.md
│   │   │   │   ├── connector-google-sheets.md
│   │   │   │   ├── connector-graphql.md
│   │   │   │   ├── connector-hbase.md
│   │   │   │   ├── connector-hive.md
│   │   │   │   ├── connector-http-airtable.md
│   │   │   │   ├── connector-http-base.md
│   │   │   │   ├── connector-http-feishu.md
│   │   │   │   ├── connector-http-github.md
│   │   │   │   ├── connector-http-gitlab.md
│   │   │   │   ├── connector-http-jira.md
│   │   │   │   ├── connector-http-klaviyo.md
│   │   │   │   ├── connector-http-lemlist.md
│   │   │   │   ├── connector-http-myhours.md
│   │   │   │   ├── connector-http-notion.md
│   │   │   │   ├── connector-http-onesignal.md
│   │   │   │   ├── connector-http-persistiq.md
│   │   │   │   ├── connector-http-wechat.md
│   │   │   │   ├── connector-http.md
│   │   │   │   ├── connector-hudi.md
│   │   │   │   ├── connector-hugegraph.md
│   │   │   │   ├── connector-iceberg.md
│   │   │   │   ├── connector-influxdb.md
│   │   │   │   ├── connector-iotdb.md
│   │   │   │   ├── connector-jdbc.md
│   │   │   │   ├── connector-kafka.md
│   │   │   │   ├── connector-kudu.md
│   │   │   │   ├── connector-lance.md
│   │   │   │   ├── connector-maxcompute.md
│   │   │   │   ├── connector-milvus.md
│   │   │   │   ├── connector-mongodb.md
│   │   │   │   ├── connector-neo4j.md
│   │   │   │   ├── connector-openmldb.md
│   │   │   │   ├── connector-paimon.md
│   │   │   │   ├── connector-prometheus.md
│   │   │   │   ├── connector-pulsar.md
│   │   │   │   ├── connector-qdrant.md
│   │   │   │   ├── connector-rabbitmq.md
│   │   │   │   ├── connector-redis.md
│   │   │   │   ├── connector-rocketmq.md
│   │   │   │   ├── connector-s3-redshift.md
│   │   │   │   ├── connector-selectdb-cloud.md
│   │   │   │   ├── connector-sensorsdata.md
│   │   │   │   ├── connector-sentry.md
│   │   │   │   ├── connector-slack.md
│   │   │   │   ├── connector-sls.md
│   │   │   │   ├── connector-socket.md
│   │   │   │   ├── connector-starrocks.md
│   │   │   │   ├── connector-tablestore.md
│   │   │   │   ├── connector-tdengine.md
│   │   │   │   ├── connector-typesense.md
│   │   │   │   └── connector-web3j.md
│   │   │   ├── common-options/
│   │   │   │   ├── sink-common-options.md
│   │   │   │   └── source-common-options.md
│   │   │   ├── connector-isolated-dependency.md
│   │   │   ├── formats/
│   │   │   │   ├── avro.md
│   │   │   │   ├── canal-json.md
│   │   │   │   ├── cdc-compatible-debezium-json.md
│   │   │   │   ├── debezium-json.md
│   │   │   │   ├── kafka-compatible-kafkaconnect-json.md
│   │   │   │   ├── maxwell-json.md
│   │   │   │   ├── ogg-json.md
│   │   │   │   └── protobuf.md
│   │   │   ├── sink/
│   │   │   │   ├── Activemq.md
│   │   │   │   ├── Aerospike.md
│   │   │   │   ├── Airtable.md
│   │   │   │   ├── AmazonDynamoDB.md
│   │   │   │   ├── AmazonSqs.md
│   │   │   │   ├── Assert.md
│   │   │   │   ├── Cassandra.md
│   │   │   │   ├── Clickhouse.md
│   │   │   │   ├── ClickhouseFile.md
│   │   │   │   ├── Cloudberry.md
│   │   │   │   ├── Console.md
│   │   │   │   ├── CosFile.md
│   │   │   │   ├── DB2.md
│   │   │   │   ├── Databend.md
│   │   │   │   ├── Datahub.md
│   │   │   │   ├── DingTalk.md
│   │   │   │   ├── Doris.md
│   │   │   │   ├── Druid.md
│   │   │   │   ├── DuckDB.md
│   │   │   │   ├── Easysearch.md
│   │   │   │   ├── Elasticsearch.md
│   │   │   │   ├── Email.md
│   │   │   │   ├── Enterprise-WeChat.md
│   │   │   │   ├── Feishu.md
│   │   │   │   ├── Fluss.md
│   │   │   │   ├── FtpFile.md
│   │   │   │   ├── GoogleFirestore.md
│   │   │   │   ├── GraphQL.md
│   │   │   │   ├── Greenplum.md
│   │   │   │   ├── Hbase.md
│   │   │   │   ├── HdfsFile.md
│   │   │   │   ├── Hive.md
│   │   │   │   ├── Http.md
│   │   │   │   ├── Hudi.md
│   │   │   │   ├── HugeGraph.md
│   │   │   │   ├── Iceberg.md
│   │   │   │   ├── InfluxDB.md
│   │   │   │   ├── IoTDB.md
│   │   │   │   ├── IoTDBv2.md
│   │   │   │   ├── Jdbc.md
│   │   │   │   ├── Kafka.md
│   │   │   │   ├── Kingbase.md
│   │   │   │   ├── Kudu.md
│   │   │   │   ├── Lance.md
│   │   │   │   ├── LocalFile.md
│   │   │   │   ├── Maxcompute.md
│   │   │   │   ├── Milvus.md
│   │   │   │   ├── MongoDB.md
│   │   │   │   ├── Mysql.md
│   │   │   │   ├── Neo4j.md
│   │   │   │   ├── ObsFile.md
│   │   │   │   ├── OceanBase.md
│   │   │   │   ├── Oracle.md
│   │   │   │   ├── OssFile.md
│   │   │   │   ├── OssJindoFile.md
│   │   │   │   ├── Paimon.md
│   │   │   │   ├── Phoenix.md
│   │   │   │   ├── PostgreSql.md
│   │   │   │   ├── Prometheus.md
│   │   │   │   ├── Pulsar.md
│   │   │   │   ├── Qdrant.md
│   │   │   │   ├── Rabbitmq.md
│   │   │   │   ├── Redis.md
│   │   │   │   ├── Redshift.md
│   │   │   │   ├── RocketMQ.md
│   │   │   │   ├── S3-Redshift.md
│   │   │   │   ├── S3File.md
│   │   │   │   ├── SelectDB-Cloud.md
│   │   │   │   ├── SensorsData.md
│   │   │   │   ├── Sentry.md
│   │   │   │   ├── SftpFile.md
│   │   │   │   ├── Slack.md
│   │   │   │   ├── Sls.md
│   │   │   │   ├── Snowflake.md
│   │   │   │   ├── Socket.md
│   │   │   │   ├── SqlServer.md
│   │   │   │   ├── StarRocks.md
│   │   │   │   ├── TDengine.md
│   │   │   │   ├── Tablestore.md
│   │   │   │   ├── Typesense.md
│   │   │   │   └── Vertica.md
│   │   │   └── source/
│   │   │       ├── Airtable.md
│   │   │       ├── AmazonDynamoDB.md
│   │   │       ├── AmazonSqs.md
│   │   │       ├── Cassandra.md
│   │   │       ├── Clickhouse.md
│   │   │       ├── Cloudberry.md
│   │   │       ├── CosFile.md
│   │   │       ├── DB2.md
│   │   │       ├── Databend.md
│   │   │       ├── Doris.md
│   │   │       ├── DuckDB.md
│   │   │       ├── Easysearch.md
│   │   │       ├── Elasticsearch.md
│   │   │       ├── FakeSource.md
│   │   │       ├── FtpFile.md
│   │   │       ├── Github.md
│   │   │       ├── Gitlab.md
│   │   │       ├── GoogleSheets.md
│   │   │       ├── GraphQL.md
│   │   │       ├── Greenplum.md
│   │   │       ├── Hbase.md
│   │   │       ├── HdfsFile.md
│   │   │       ├── Hive.md
│   │   │       ├── HiveJdbc.md
│   │   │       ├── Http.md
│   │   │       ├── Iceberg.md
│   │   │       ├── InfluxDB.md
│   │   │       ├── IoTDB.md
│   │   │       ├── IoTDBv2.md
│   │   │       ├── Jdbc.md
│   │   │       ├── Jira.md
│   │   │       ├── Kafka.md
│   │   │       ├── Kingbase.md
│   │   │       ├── Klaviyo.md
│   │   │       ├── Kudu.md
│   │   │       ├── Lemlist.md
│   │   │       ├── LocalFile.md
│   │   │       ├── Maxcompute.md
│   │   │       ├── Milvus.md
│   │   │       ├── MongoDB-CDC.md
│   │   │       ├── MongoDB.md
│   │   │       ├── MyHours.md
│   │   │       ├── MySQL-CDC.md
│   │   │       ├── Mysql.md
│   │   │       ├── Neo4j.md
│   │   │       ├── Notion.md
│   │   │       ├── ObsFile.md
│   │   │       ├── OceanBase.md
│   │   │       ├── OneSignal.md
│   │   │       ├── OpenMldb.md
│   │   │       ├── Opengauss-CDC.md
│   │   │       ├── Oracle-CDC.md
│   │   │       ├── Oracle.md
│   │   │       ├── OssFile.md
│   │   │       ├── OssJindoFile.md
│   │   │       ├── Paimon.md
│   │   │       ├── Persistiq.md
│   │   │       ├── Phoenix.md
│   │   │       ├── PostgreSQL-CDC.md
│   │   │       ├── PostgreSQL.md
│   │   │       ├── Prometheus.md
│   │   │       ├── Pulsar.md
│   │   │       ├── Qdrant.md
│   │   │       ├── Rabbitmq.md
│   │   │       ├── Redis.md
│   │   │       ├── Redshift.md
│   │   │       ├── RocketMQ.md
│   │   │       ├── S3File.md
│   │   │       ├── SftpFile.md
│   │   │       ├── Sls.md
│   │   │       ├── Snowflake.md
│   │   │       ├── Socket.md
│   │   │       ├── SqlServer-CDC.md
│   │   │       ├── SqlServer.md
│   │   │       ├── StarRocks.md
│   │   │       ├── TDengine.md
│   │   │       ├── Tablestore.md
│   │   │       ├── TiDB-CDC.md
│   │   │       ├── Typesense.md
│   │   │       ├── Vertica.md
│   │   │       └── Web3j.md
│   │   ├── developer/
│   │   │   ├── coding-guide.md
│   │   │   ├── contribute-plugin.md
│   │   │   ├── contribute-transform-v2-guide.md
│   │   │   ├── docs-format-specification.md
│   │   │   ├── how-to-create-your-connector.md
│   │   │   ├── new-license.md
│   │   │   └── setup.md
│   │   ├── engines/
│   │   │   ├── command/
│   │   │   │   ├── connector-check.md
│   │   │   │   └── usage.mdx
│   │   │   ├── event-listener.md
│   │   │   ├── flink.md
│   │   │   ├── overview.md
│   │   │   ├── spark.md
│   │   │   └── zeta/
│   │   │       ├── about.md
│   │   │       ├── checkpoint-storage.md
│   │   │       ├── deployment.md
│   │   │       ├── download-seatunnel.md
│   │   │       ├── engine-jar-storage-mode.md
│   │   │       ├── hybrid-cluster-deployment.md
│   │   │       ├── local-mode-deployment.md
│   │   │       ├── logging.md
│   │   │       ├── resource-isolation.md
│   │   │       ├── rest-api-v1.md
│   │   │       ├── rest-api-v2.md
│   │   │       ├── security.md
│   │   │       ├── separated-cluster-deployment.md
│   │   │       ├── slot-allocation-strategy.md
│   │   │       ├── tcp.md
│   │   │       ├── telemetry.md
│   │   │       ├── tuning-guide.md
│   │   │       ├── user-command.md
│   │   │       └── web-ui.md
│   │   ├── faq.md
│   │   ├── getting-started/
│   │   │   ├── docker/
│   │   │   │   └── docker.md
│   │   │   ├── kubernetes/
│   │   │   │   ├── helm.md
│   │   │   │   └── kubernetes.mdx
│   │   │   └── locally/
│   │   │       ├── deployment.md
│   │   │       ├── quick-start-flink.md
│   │   │       ├── quick-start-seatunnel-engine.md
│   │   │       └── quick-start-spark.md
│   │   ├── introduction/
│   │   │   ├── about.md
│   │   │   ├── concepts/
│   │   │   │   ├── config.md
│   │   │   │   ├── connector-v2-features.md
│   │   │   │   ├── gravitino-type-mapping.md
│   │   │   │   ├── incompatible-changes.md
│   │   │   │   └── schema-feature.md
│   │   │   ├── configuration/
│   │   │   │   ├── JobEnvConfig.md
│   │   │   │   ├── config-encryption-decryption.md
│   │   │   │   ├── metalake.md
│   │   │   │   ├── schema-evolution.md
│   │   │   │   ├── sink-options-placeholders.md
│   │   │   │   ├── speed-limit.md
│   │   │   │   └── sql-config.md
│   │   │   └── how-it-works.md
│   │   ├── tools/
│   │   │   ├── overview.md
│   │   │   ├── seatunnel-mcp.md
│   │   │   ├── seatunnel-skill.md
│   │   │   └── x2seatunnel.md
│   │   └── transforms/
│   │       ├── common-options/
│   │       │   └── common-options.md
│   │       ├── copy.md
│   │       ├── data-validator.md
│   │       ├── define-sink-type.md
│   │       ├── dynamic-compile.md
│   │       ├── embedding.md
│   │       ├── encrypt.md
│   │       ├── field-mapper.md
│   │       ├── field-rename.md
│   │       ├── filter-rowkind.md
│   │       ├── filter.md
│   │       ├── jsonpath.md
│   │       ├── llm.md
│   │       ├── metadata.md
│   │       ├── regexextract.md
│   │       ├── replace.md
│   │       ├── rowkind-extractor.md
│   │       ├── split.md
│   │       ├── sql-functions.md
│   │       ├── sql-udf.md
│   │       ├── sql.md
│   │       ├── table-filter.md
│   │       ├── table-merge.md
│   │       ├── table-rename.md
│   │       └── transform-multi-table.md
│   ├── sidebars.js
│   └── zh/
│       ├── architecture/
│       │   ├── api-design/
│       │   │   ├── catalog-table.md
│       │   │   ├── sink-architecture.md
│       │   │   ├── source-architecture.md
│       │   │   └── translation-layer.md
│       │   ├── design-philosophy.md
│       │   ├── engine/
│       │   │   ├── dag-execution.md
│       │   │   ├── engine-architecture.md
│       │   │   └── resource-management.md
│       │   ├── fault-tolerance/
│       │   │   ├── checkpoint-mechanism.md
│       │   │   └── exactly-once.md
│       │   ├── features/
│       │   │   └── multi-table.md
│       │   └── overview.md
│       ├── connectors/
│       │   ├── changelog/
│       │   │   ├── connector-activemq.md
│       │   │   ├── connector-aerospike.md
│       │   │   ├── connector-amazondynamodb.md
│       │   │   ├── connector-amazonsqs.md
│       │   │   ├── connector-assert.md
│       │   │   ├── connector-cassandra.md
│       │   │   ├── connector-cdc-base.md
│       │   │   ├── connector-cdc-mongodb.md
│       │   │   ├── connector-cdc-mysql.md
│       │   │   ├── connector-cdc-opengauss.md
│       │   │   ├── connector-cdc-oracle.md
│       │   │   ├── connector-cdc-postgres.md
│       │   │   ├── connector-cdc-sqlserver.md
│       │   │   ├── connector-cdc-tidb.md
│       │   │   ├── connector-cdc.md
│       │   │   ├── connector-clickhouse.md
│       │   │   ├── connector-cloudberry.md
│       │   │   ├── connector-common.md
│       │   │   ├── connector-console.md
│       │   │   ├── connector-databend.md
│       │   │   ├── connector-datahub.md
│       │   │   ├── connector-dingtalk.md
│       │   │   ├── connector-doris.md
│       │   │   ├── connector-druid.md
│       │   │   ├── connector-easysearch.md
│       │   │   ├── connector-elasticsearch.md
│       │   │   ├── connector-email.md
│       │   │   ├── connector-fake.md
│       │   │   ├── connector-file-base-hadoop.md
│       │   │   ├── connector-file-base.md
│       │   │   ├── connector-file-cos.md
│       │   │   ├── connector-file-ftp.md
│       │   │   ├── connector-file-hadoop.md
│       │   │   ├── connector-file-jindo-oss.md
│       │   │   ├── connector-file-local.md
│       │   │   ├── connector-file-obs.md
│       │   │   ├── connector-file-oss-jindo.md
│       │   │   ├── connector-file-oss.md
│       │   │   ├── connector-file-s3.md
│       │   │   ├── connector-file-sftp.md
│       │   │   ├── connector-file.md
│       │   │   ├── connector-fluss.md
│       │   │   ├── connector-google-firestore.md
│       │   │   ├── connector-google-sheets.md
│       │   │   ├── connector-graphql.md
│       │   │   ├── connector-hbase.md
│       │   │   ├── connector-hive.md
│       │   │   ├── connector-http-airtable.md
│       │   │   ├── connector-http-base.md
│       │   │   ├── connector-http-feishu.md
│       │   │   ├── connector-http-github.md
│       │   │   ├── connector-http-gitlab.md
│       │   │   ├── connector-http-jira.md
│       │   │   ├── connector-http-klaviyo.md
│       │   │   ├── connector-http-lemlist.md
│       │   │   ├── connector-http-myhours.md
│       │   │   ├── connector-http-notion.md
│       │   │   ├── connector-http-onesignal.md
│       │   │   ├── connector-http-persistiq.md
│       │   │   ├── connector-http-wechat.md
│       │   │   ├── connector-http.md
│       │   │   ├── connector-hudi.md
│       │   │   ├── connector-hugegraph.md
│       │   │   ├── connector-iceberg.md
│       │   │   ├── connector-influxdb.md
│       │   │   ├── connector-iotdb.md
│       │   │   ├── connector-jdbc.md
│       │   │   ├── connector-kafka.md
│       │   │   ├── connector-kudu.md
│       │   │   ├── connector-lance.md
│       │   │   ├── connector-maxcompute.md
│       │   │   ├── connector-milvus.md
│       │   │   ├── connector-mongodb.md
│       │   │   ├── connector-neo4j.md
│       │   │   ├── connector-openmldb.md
│       │   │   ├── connector-paimon.md
│       │   │   ├── connector-prometheus.md
│       │   │   ├── connector-pulsar.md
│       │   │   ├── connector-qdrant.md
│       │   │   ├── connector-rabbitmq.md
│       │   │   ├── connector-redis.md
│       │   │   ├── connector-rocketmq.md
│       │   │   ├── connector-s3-redshift.md
│       │   │   ├── connector-selectdb-cloud.md
│       │   │   ├── connector-sensorsdata.md
│       │   │   ├── connector-sentry.md
│       │   │   ├── connector-slack.md
│       │   │   ├── connector-sls.md
│       │   │   ├── connector-socket.md
│       │   │   ├── connector-starrocks.md
│       │   │   ├── connector-tablestore.md
│       │   │   ├── connector-tdengine.md
│       │   │   ├── connector-typesense.md
│       │   │   └── connector-web3j.md
│       │   ├── common-options/
│       │   │   ├── sink-common-options.md
│       │   │   └── source-common-options.md
│       │   ├── connector-isolated-dependency.md
│       │   ├── formats/
│       │   │   ├── avro.md
│       │   │   ├── canal-json.md
│       │   │   ├── cdc-compatible-debezium-json.md
│       │   │   ├── debezium-json.md
│       │   │   ├── kafka-compatible-kafkaconnect-json.md
│       │   │   ├── maxwell-json.md
│       │   │   ├── ogg-json.md
│       │   │   └── protobuf.md
│       │   ├── sink/
│       │   │   ├── Activemq.md
│       │   │   ├── Aerospike.md
│       │   │   ├── Airtable.md
│       │   │   ├── AmazonDynamoDB.md
│       │   │   ├── AmazonSqs.md
│       │   │   ├── Assert.md
│       │   │   ├── Cassandra.md
│       │   │   ├── Clickhouse.md
│       │   │   ├── ClickhouseFile.md
│       │   │   ├── Cloudberry.md
│       │   │   ├── Console.md
│       │   │   ├── CosFile.md
│       │   │   ├── DB2.md
│       │   │   ├── Databend.md
│       │   │   ├── Datahub.md
│       │   │   ├── DingTalk.md
│       │   │   ├── Doris.md
│       │   │   ├── Druid.md
│       │   │   ├── DuckDB.md
│       │   │   ├── Easysearch.md
│       │   │   ├── Elasticsearch.md
│       │   │   ├── Email.md
│       │   │   ├── Enterprise-WeChat.md
│       │   │   ├── Feishu.md
│       │   │   ├── Fluss.md
│       │   │   ├── FtpFile.md
│       │   │   ├── GoogleFirestore.md
│       │   │   ├── GraphQL.md
│       │   │   ├── Greenplum.md
│       │   │   ├── Hbase.md
│       │   │   ├── HdfsFile.md
│       │   │   ├── Hive.md
│       │   │   ├── Http.md
│       │   │   ├── Hudi.md
│       │   │   ├── HugeGraph.md
│       │   │   ├── Iceberg.md
│       │   │   ├── InfluxDB.md
│       │   │   ├── IoTDB.md
│       │   │   ├── IoTDBv2.md
│       │   │   ├── Jdbc.md
│       │   │   ├── Kafka.md
│       │   │   ├── Kingbase.md
│       │   │   ├── Kudu.md
│       │   │   ├── Lance.md
│       │   │   ├── LocalFile.md
│       │   │   ├── Maxcompute.md
│       │   │   ├── Milvus.md
│       │   │   ├── MongoDB.md
│       │   │   ├── Mysql.md
│       │   │   ├── Neo4j.md
│       │   │   ├── ObsFile.md
│       │   │   ├── OceanBase.md
│       │   │   ├── Oracle.md
│       │   │   ├── OssFile.md
│       │   │   ├── OssJindoFile.md
│       │   │   ├── Paimon.md
│       │   │   ├── Phoenix.md
│       │   │   ├── PostgreSql.md
│       │   │   ├── Prometheus.md
│       │   │   ├── Pulsar.md
│       │   │   ├── Qdrant.md
│       │   │   ├── Rabbitmq.md
│       │   │   ├── Redis.md
│       │   │   ├── Redshift.md
│       │   │   ├── RocketMQ.md
│       │   │   ├── S3-Redshift.md
│       │   │   ├── S3File.md
│       │   │   ├── SelectDB-Cloud.md
│       │   │   ├── SensorsData.md
│       │   │   ├── Sentry.md
│       │   │   ├── SftpFile.md
│       │   │   ├── Slack.md
│       │   │   ├── Sls.md
│       │   │   ├── Snowflake.md
│       │   │   ├── Socket.md
│       │   │   ├── SqlServer.md
│       │   │   ├── StarRocks.md
│       │   │   ├── TDengine.md
│       │   │   ├── Tablestore.md
│       │   │   ├── Typesense.md
│       │   │   └── Vertica.md
│       │   └── source/
│       │       ├── Airtable.md
│       │       ├── AmazonDynamoDB.md
│       │       ├── AmazonSqs.md
│       │       ├── Cassandra.md
│       │       ├── Clickhouse.md
│       │       ├── Cloudberry.md
│       │       ├── CosFile.md
│       │       ├── DB2.md
│       │       ├── Databend.md
│       │       ├── Doris.md
│       │       ├── DuckDB.md
│       │       ├── Easysearch.md
│       │       ├── Elasticsearch.md
│       │       ├── FakeSource.md
│       │       ├── FtpFile.md
│       │       ├── Github.md
│       │       ├── Gitlab.md
│       │       ├── GoogleSheets.md
│       │       ├── GraphQL.md
│       │       ├── Greenplum.md
│       │       ├── Hbase.md
│       │       ├── HdfsFile.md
│       │       ├── Hive.md
│       │       ├── HiveJdbc.md
│       │       ├── Http.md
│       │       ├── Iceberg.md
│       │       ├── InfluxDB.md
│       │       ├── IoTDB.md
│       │       ├── IoTDBv2.md
│       │       ├── Jdbc.md
│       │       ├── Jira.md
│       │       ├── Kafka.md
│       │       ├── Kingbase.md
│       │       ├── Klaviyo.md
│       │       ├── Kudu.md
│       │       ├── Lemlist.md
│       │       ├── LocalFile.md
│       │       ├── Maxcompute.md
│       │       ├── Milvus.md
│       │       ├── MongoDB-CDC.md
│       │       ├── MongoDB.md
│       │       ├── MyHours.md
│       │       ├── MySQL-CDC.md
│       │       ├── Mysql.md
│       │       ├── Neo4j.md
│       │       ├── Notion.md
│       │       ├── ObsFile.md
│       │       ├── OceanBase.md
│       │       ├── OneSignal.md
│       │       ├── OpenMldb.md
│       │       ├── Opengauss-CDC.md
│       │       ├── Oracle-CDC.md
│       │       ├── Oracle.md
│       │       ├── OssFile.md
│       │       ├── OssJindoFile.md
│       │       ├── Paimon.md
│       │       ├── Persistiq.md
│       │       ├── Phoenix.md
│       │       ├── PostgreSQL-CDC.md
│       │       ├── PostgreSQL.md
│       │       ├── Prometheus.md
│       │       ├── Pulsar.md
│       │       ├── Qdrant.md
│       │       ├── Rabbitmq.md
│       │       ├── Redis.md
│       │       ├── Redshift.md
│       │       ├── RocketMQ.md
│       │       ├── S3File.md
│       │       ├── SftpFile.md
│       │       ├── Sls.md
│       │       ├── Snowflake.md
│       │       ├── Socket.md
│       │       ├── SqlServer-CDC.md
│       │       ├── SqlServer.md
│       │       ├── StarRocks.md
│       │       ├── TDengine.md
│       │       ├── Tablestore.md
│       │       ├── TiDB-CDC.md
│       │       ├── Typesense.md
│       │       ├── Vertica.md
│       │       └── Web3j.md
│       ├── developer/
│       │   ├── coding-guide.md
│       │   ├── contribute-plugin.md
│       │   ├── contribute-transform-v2-guide.md
│       │   ├── docs-format-specification.md
│       │   ├── how-to-create-your-connector.md
│       │   ├── new-license.md
│       │   └── setup.md
│       ├── engines/
│       │   ├── command/
│       │   │   ├── connector-check.md
│       │   │   └── usage.mdx
│       │   ├── event-listener.md
│       │   ├── flink.md
│       │   ├── overview.md
│       │   ├── spark.md
│       │   └── zeta/
│       │       ├── about.md
│       │       ├── checkpoint-storage.md
│       │       ├── deployment.md
│       │       ├── download-seatunnel.md
│       │       ├── engine-jar-storage-mode.md
│       │       ├── hybrid-cluster-deployment.md
│       │       ├── local-mode-deployment.md
│       │       ├── logging.md
│       │       ├── resource-isolation.md
│       │       ├── rest-api-v1.md
│       │       ├── rest-api-v2.md
│       │       ├── security.md
│       │       ├── separated-cluster-deployment.md
│       │       ├── slot-allocation-strategy.md
│       │       ├── tcp.md
│       │       ├── telemetry.md
│       │       ├── tuning-guide.md
│       │       ├── user-command.md
│       │       └── web-ui.md
│       ├── faq.md
│       ├── getting-started/
│       │   ├── docker/
│       │   │   └── docker.md
│       │   ├── kubernetes/
│       │   │   ├── helm.md
│       │   │   └── kubernetes.mdx
│       │   └── locally/
│       │       ├── deployment.md
│       │       ├── quick-start-flink.md
│       │       ├── quick-start-seatunnel-engine.md
│       │       └── quick-start-spark.md
│       ├── introduction/
│       │   ├── about.md
│       │   ├── concepts/
│       │   │   ├── config.md
│       │   │   ├── connector-v2-features.md
│       │   │   ├── gravitino-type-mapping.md
│       │   │   ├── incompatible-changes.md
│       │   │   └── schema-feature.md
│       │   ├── configuration/
│       │   │   ├── JobEnvConfig.md
│       │   │   ├── config-encryption-decryption.md
│       │   │   ├── metalake.md
│       │   │   ├── schema-evolution.md
│       │   │   ├── sink-options-placeholders.md
│       │   │   ├── speed-limit.md
│       │   │   └── sql-config.md
│       │   └── how-it-works.md
│       ├── tools/
│       │   ├── overview.md
│       │   ├── seatunnel-mcp.md
│       │   ├── seatunnel-skill.md
│       │   └── x2seatunnel.md
│       └── transforms/
│           ├── common-options/
│           │   └── common-options.md
│           ├── copy.md
│           ├── data-validator.md
│           ├── define-sink-type.md
│           ├── dynamic-compile.md
│           ├── embedding.md
│           ├── encrypt.md
│           ├── field-mapper.md
│           ├── field-rename.md
│           ├── filter-rowkind.md
│           ├── filter.md
│           ├── jsonpath.md
│           ├── llm.md
│           ├── metadata.md
│           ├── regexextract.md
│           ├── replace.md
│           ├── rowkind-extractor.md
│           ├── split.md
│           ├── sql-functions.md
│           ├── sql-udf.md
│           ├── sql.md
│           ├── table-filter.md
│           ├── table-merge.md
│           ├── table-rename.md
│           └── transform-multi-table.md
├── mvnw
├── mvnw.cmd
├── plugin-mapping.properties
├── plugins/
│   └── README.md
├── pom.xml
├── seatunnel-api/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── org/
│       │           └── apache/
│       │               └── seatunnel/
│       │                   └── api/
│       │                       ├── annotation/
│       │                       │   └── Experimental.java
│       │                       ├── common/
│       │                       │   ├── JobContext.java
│       │                       │   ├── PluginIdentifier.java
│       │                       │   ├── PluginIdentifierInterface.java
│       │                       │   ├── PrepareFailException.java
│       │                       │   ├── SeaTunnelAPIErrorCode.java
│       │                       │   ├── SeaTunnelPluginLifeCycle.java
│       │                       │   └── metrics/
│       │                       │       ├── AbstractMetricsContext.java
│       │                       │       ├── Counter.java
│       │                       │       ├── JobMetrics.java
│       │                       │       ├── Measurement.java
│       │                       │       ├── MeasurementPredicates.java
│       │                       │       ├── Meter.java
│       │                       │       ├── Metric.java
│       │                       │       ├── MetricNames.java
│       │                       │       ├── MetricTags.java
│       │                       │       ├── MetricsContext.java
│       │                       │       ├── RawJobMetrics.java
│       │                       │       ├── ThreadSafeCounter.java
│       │                       │       ├── ThreadSafeQPSMeter.java
│       │                       │       └── Unit.java
│       │                       ├── configuration/
│       │                       │   ├── ConfigAdapter.java
│       │                       │   ├── ConfigShade.java
│       │                       │   ├── Option.java
│       │                       │   ├── Options.java
│       │                       │   ├── ReadonlyConfig.java
│       │                       │   ├── SingleChoiceOption.java
│       │                       │   └── util/
│       │                       │       ├── Condition.java
│       │                       │       ├── ConfigUtil.java
│       │                       │       ├── ConfigValidator.java
│       │                       │       ├── Expression.java
│       │                       │       ├── OptionMark.java
│       │                       │       ├── OptionRule.java
│       │                       │       ├── OptionUtil.java
│       │                       │       ├── OptionValidationException.java
│       │                       │       └── RequiredOption.java
│       │                       ├── env/
│       │                       │   └── ParsingMode.java
│       │                       ├── event/
│       │                       │   ├── DefaultEventProcessor.java
│       │                       │   ├── Event.java
│       │                       │   ├── EventHandler.java
│       │                       │   ├── EventListener.java
│       │                       │   ├── EventProcessor.java
│       │                       │   ├── EventType.java
│       │                       │   ├── LifecycleEvent.java
│       │                       │   └── LoggingEventHandler.java
│       │                       ├── metalake/
│       │                       │   ├── MetaLakeFactory.java
│       │                       │   ├── MetaLakeTableSchemaConvertor.java
│       │                       │   ├── MetalakeClient.java
│       │                       │   ├── MetalakeConfigUtils.java
│       │                       │   ├── TableSchemaDiscoverer.java
│       │                       │   └── gravitino/
│       │                       │       ├── GravitinoClient.java
│       │                       │       └── GravitinoTableSchemaConvertor.java
│       │                       ├── options/
│       │                       │   ├── ConnectorCommonOptions.java
│       │                       │   ├── EnvCommonOptions.java
│       │                       │   ├── EnvOptionRule.java
│       │                       │   ├── SinkConnectorCommonOptions.java
│       │                       │   ├── SourceConnectorCommonOptions.java
│       │                       │   └── table/
│       │                       │       ├── CatalogOptions.java
│       │                       │       ├── ColumnOptions.java
│       │                       │       ├── ConstraintKeyOptions.java
│       │                       │       ├── FieldOptions.java
│       │                       │       ├── FormatOptions.java
│       │                       │       ├── PrimaryKeyOptions.java
│       │                       │       ├── TableIdentifierOptions.java
│       │                       │       └── TableSchemaOptions.java
│       │                       ├── serialization/
│       │                       │   ├── DefaultSerializer.java
│       │                       │   ├── DeserializationSchema.java
│       │                       │   ├── SerializationSchema.java
│       │                       │   └── Serializer.java
│       │                       ├── sink/
│       │                       │   ├── DataSaveMode.java
│       │                       │   ├── DefaultSaveModeHandler.java
│       │                       │   ├── DefaultSinkWriterContext.java
│       │                       │   ├── MultiTableResourceManager.java
│       │                       │   ├── SaveModeExecuteLocation.java
│       │                       │   ├── SaveModeExecuteWrapper.java
│       │                       │   ├── SaveModeHandler.java
│       │                       │   ├── SaveModePlaceHolder.java
│       │                       │   ├── SchemaSaveMode.java
│       │                       │   ├── SeaTunnelSink.java
│       │                       │   ├── SinkAggregatedCommitter.java
│       │                       │   ├── SinkCommitter.java
│       │                       │   ├── SinkWriter.java
│       │                       │   ├── SupportMultiTableSink.java
│       │                       │   ├── SupportMultiTableSinkAggregatedCommitter.java
│       │                       │   ├── SupportMultiTableSinkWriter.java
│       │                       │   ├── SupportResourceShare.java
│       │                       │   ├── SupportSaveMode.java
│       │                       │   ├── SupportSchemaEvolutionSink.java
│       │                       │   ├── SupportSchemaEvolutionSinkWriter.java
│       │                       │   ├── TablePlaceholder.java
│       │                       │   ├── TablePlaceholderProcessor.java
│       │                       │   ├── event/
│       │                       │   │   └── WriterCloseEvent.java
│       │                       │   └── multitablesink/
│       │                       │       ├── MultiTableAggregatedCommitInfo.java
│       │                       │       ├── MultiTableCommitInfo.java
│       │                       │       ├── MultiTableSink.java
│       │                       │       ├── MultiTableSinkAggregatedCommitter.java
│       │                       │       ├── MultiTableSinkCommitter.java
│       │                       │       ├── MultiTableSinkFactory.java
│       │                       │       ├── MultiTableSinkWriter.java
│       │                       │       ├── MultiTableState.java
│       │                       │       ├── MultiTableWriterRunnable.java
│       │                       │       ├── SinkContextProxy.java
│       │                       │       └── SinkIdentifier.java
│       │                       ├── source/
│       │                       │   ├── Boundedness.java
│       │                       │   ├── Collector.java
│       │                       │   ├── SeaTunnelJobAware.java
│       │                       │   ├── SeaTunnelSource.java
│       │                       │   ├── SourceEvent.java
│       │                       │   ├── SourceReader.java
│       │                       │   ├── SourceSplit.java
│       │                       │   ├── SourceSplitEnumerator.java
│       │                       │   ├── SupportColumnProjection.java
│       │                       │   ├── SupportCoordinate.java
│       │                       │   ├── SupportParallelism.java
│       │                       │   ├── SupportSchemaEvolution.java
│       │                       │   └── event/
│       │                       │       ├── EnumeratorCloseEvent.java
│       │                       │       ├── EnumeratorOpenEvent.java
│       │                       │       ├── MessageDelayedEvent.java
│       │                       │       ├── ReaderCloseEvent.java
│       │                       │       └── ReaderOpenEvent.java
│       │                       ├── state/
│       │                       │   └── CheckpointListener.java
│       │                       ├── table/
│       │                       │   ├── catalog/
│       │                       │   │   ├── AbstractSchema.java
│       │                       │   │   ├── Catalog.java
│       │                       │   │   ├── CatalogTable.java
│       │                       │   │   ├── CatalogTableUtil.java
│       │                       │   │   ├── Column.java
│       │                       │   │   ├── ConstraintKey.java
│       │                       │   │   ├── DataTypeConvertor.java
│       │                       │   │   ├── InfoPreviewResult.java
│       │                       │   │   ├── MetadataColumn.java
│       │                       │   │   ├── MetadataSchema.java
│       │                       │   │   ├── PhysicalColumn.java
│       │                       │   │   ├── PreviewResult.java
│       │                       │   │   ├── PrimaryKey.java
│       │                       │   │   ├── SQLPreviewResult.java
│       │                       │   │   ├── SeaTunnelDataTypeConvertorUtil.java
│       │                       │   │   ├── TableIdentifier.java
│       │                       │   │   ├── TablePath.java
│       │                       │   │   ├── TableSchema.java
│       │                       │   │   ├── VectorIndex.java
│       │                       │   │   ├── exception/
│       │                       │   │   │   ├── CatalogException.java
│       │                       │   │   │   ├── DatabaseAlreadyExistException.java
│       │                       │   │   │   ├── DatabaseNotExistException.java
│       │                       │   │   │   ├── TableAlreadyExistException.java
│       │                       │   │   │   └── TableNotExistException.java
│       │                       │   │   └── schema/
│       │                       │   │       ├── ReadonlyConfigParser.java
│       │                       │   │       └── TableSchemaParser.java
│       │                       │   ├── connector/
│       │                       │   │   ├── DeserializationFormat.java
│       │                       │   │   ├── SerializationFormat.java
│       │                       │   │   ├── SupportReadingMetadata.java
│       │                       │   │   ├── TableSink.java
│       │                       │   │   ├── TableSource.java
│       │                       │   │   └── TableTransform.java
│       │                       │   ├── converter/
│       │                       │   │   ├── BasicDataConverter.java
│       │                       │   │   ├── BasicDataTypeConverter.java
│       │                       │   │   ├── BasicTypeConverter.java
│       │                       │   │   ├── BasicTypeDefine.java
│       │                       │   │   ├── ConverterLoader.java
│       │                       │   │   ├── DataConverter.java
│       │                       │   │   ├── DataTypeConverter.java
│       │                       │   │   └── TypeConverter.java
│       │                       │   ├── factory/
│       │                       │   │   ├── CatalogFactory.java
│       │                       │   │   ├── ChangeStreamTableSourceCheckpoint.java
│       │                       │   │   ├── ChangeStreamTableSourceFactory.java
│       │                       │   │   ├── ChangeStreamTableSourceState.java
│       │                       │   │   ├── DataTypeConvertorFactory.java
│       │                       │   │   ├── Factory.java
│       │                       │   │   ├── FactoryException.java
│       │                       │   │   ├── FactoryUtil.java
│       │                       │   │   ├── MultiTableFactoryContext.java
│       │                       │   │   ├── SerializationFormatFactory.java
│       │                       │   │   ├── TableFactoryContext.java
│       │                       │   │   ├── TableSinkFactory.java
│       │                       │   │   ├── TableSinkFactoryContext.java
│       │                       │   │   ├── TableSourceFactory.java
│       │                       │   │   ├── TableSourceFactoryContext.java
│       │                       │   │   ├── TableTransformFactory.java
│       │                       │   │   └── TableTransformFactoryContext.java
│       │                       │   ├── schema/
│       │                       │   │   ├── SchemaChangeType.java
│       │                       │   │   ├── event/
│       │                       │   │   │   ├── AlterTableAddColumnEvent.java
│       │                       │   │   │   ├── AlterTableChangeColumnEvent.java
│       │                       │   │   │   ├── AlterTableColumnEvent.java
│       │                       │   │   │   ├── AlterTableColumnsEvent.java
│       │                       │   │   │   ├── AlterTableDropColumnEvent.java
│       │                       │   │   │   ├── AlterTableEvent.java
│       │                       │   │   │   ├── AlterTableModifyColumnEvent.java
│       │                       │   │   │   ├── AlterTableNameEvent.java
│       │                       │   │   │   ├── SchemaChangeEvent.java
│       │                       │   │   │   └── TableEvent.java
│       │                       │   │   ├── exception/
│       │                       │   │   │   ├── SchemaCoordinationException.java
│       │                       │   │   │   ├── SchemaEvolutionErrorCode.java
│       │                       │   │   │   ├── SchemaEvolutionException.java
│       │                       │   │   │   ├── SchemaValidationException.java
│       │                       │   │   │   └── SinkWriterSchemaException.java
│       │                       │   │   └── handler/
│       │                       │   │       ├── AlterTableEventHandler.java
│       │                       │   │       ├── AlterTableSchemaEventHandler.java
│       │                       │   │       ├── DataTypeChangeEventDispatcher.java
│       │                       │   │       ├── DataTypeChangeEventHandler.java
│       │                       │   │       ├── SchemaChangeEventHandler.java
│       │                       │   │       ├── TableSchemaChangeEventDispatcher.java
│       │                       │   │       └── TableSchemaChangeEventHandler.java
│       │                       │   └── type/
│       │                       │       ├── ArrayType.java
│       │                       │       ├── BasicType.java
│       │                       │       ├── CommonOptions.java
│       │                       │       ├── CompositeType.java
│       │                       │       ├── DecimalArrayType.java
│       │                       │       ├── DecimalType.java
│       │                       │       ├── LocalTimeType.java
│       │                       │       ├── MapType.java
│       │                       │       ├── MetadataUtil.java
│       │                       │       ├── MultipleRowType.java
│       │                       │       ├── PrimitiveByteArrayType.java
│       │                       │       ├── Record.java
│       │                       │       ├── RowKind.java
│       │                       │       ├── SeaTunnelDataType.java
│       │                       │       ├── SeaTunnelRow.java
│       │                       │       ├── SeaTunnelRowAccessor.java
│       │                       │       ├── SeaTunnelRowType.java
│       │                       │       ├── SqlType.java
│       │                       │       ├── TypeUtil.java
│       │                       │       └── VectorType.java
│       │                       ├── tracing/
│       │                       │   ├── MDCCallable.java
│       │                       │   ├── MDCComparator.java
│       │                       │   ├── MDCConsumer.java
│       │                       │   ├── MDCContext.java
│       │                       │   ├── MDCExecutor.java
│       │                       │   ├── MDCExecutorService.java
│       │                       │   ├── MDCFunction.java
│       │                       │   ├── MDCPredicate.java
│       │                       │   ├── MDCRunnable.java
│       │                       │   ├── MDCScheduledExecutorService.java
│       │                       │   ├── MDCStream.java
│       │                       │   ├── MDCSupplier.java
│       │                       │   └── MDCTracer.java
│       │                       └── transform/
│       │                           ├── Collector.java
│       │                           ├── SeaTunnelFlatMapTransform.java
│       │                           ├── SeaTunnelMapTransform.java
│       │                           └── SeaTunnelTransform.java
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── seatunnel/
│           │               └── api/
│           │                   ├── configuration/
│           │                   │   ├── OptionTest.java
│           │                   │   ├── ReadableConfigTest.java
│           │                   │   └── util/
│           │                   │       ├── ConditionTest.java
│           │                   │       ├── ConfigUtilTest.java
│           │                   │       ├── ConfigValidatorTest.java
│           │                   │       ├── OptionRuleTest.java
│           │                   │       ├── OptionUtilTest.java
│           │                   │       ├── SingleChoiceOptionTest.java
│           │                   │       ├── TestOptionConfig.java
│           │                   │       └── TestOptionConfigEnum.java
│           │                   ├── env/
│           │                   │   └── EnvOptionRuleTest.java
│           │                   ├── metalake/
│           │                   │   ├── TableSchemaDiscovererTest.java
│           │                   │   └── gravitino/
│           │                   │       ├── GravitinoClientTest.java
│           │                   │       └── GravitinoTableSchemaConvertorTest.java
│           │                   ├── sink/
│           │                   │   ├── DefaultSaveModeHandlerTest.java
│           │                   │   ├── TablePlaceholderProcessorTest.java
│           │                   │   └── multitablesink/
│           │                   │       ├── MultiTableSinkAggregatedCommitterTest.java
│           │                   │       ├── MultiTableSinkCommitterTest.java
│           │                   │       └── MultiTableSinkWriterTest.java
│           │                   ├── table/
│           │                   │   ├── catalog/
│           │                   │   │   ├── CatalogTableTest.java
│           │                   │   │   ├── CatalogTableUtilTest.java
│           │                   │   │   ├── InMemoryCatalog.java
│           │                   │   │   ├── InMemoryCatalogFactory.java
│           │                   │   │   ├── InMemoryCatalogOptionRule.java
│           │                   │   │   ├── SeaTunnelDataTypeConvertorUtilTest.java
│           │                   │   │   └── schema/
│           │                   │   │       ├── BaseConfigParserTest.java
│           │                   │   │       └── ReadonlyConfigParserTest.java
│           │                   │   ├── schema/
│           │                   │   │   └── event/
│           │                   │   │       └── EventTest.java
│           │                   │   └── type/
│           │                   │       └── SeaTunnelRowTest.java
│           │                   └── tracing/
│           │                       └── MDCTracerTest.java
│           └── resources/
│               └── conf/
│                   ├── catalog/
│                   │   ├── schema_column.conf
│                   │   └── schema_field.conf
│                   ├── complex.schema.conf
│                   ├── config_special_schema.conf
│                   ├── default_tablepath.conf
│                   ├── generic_row.schema.conf
│                   ├── getCatalogTable.conf
│                   ├── json/
│                   │   ├── metadata_json_from_meta_lake_hive.json
│                   │   └── metadata_json_from_meta_lake_pgsql.json
│                   ├── option-test.conf
│                   ├── partition_keys.schema.conf
│                   ├── simple.schema.conf
│                   └── table_schema_discoverer/
│                       ├── multiple_tables_fields.conf
│                       ├── multiple_tables_mixed.conf
│                       ├── multiple_tables_no_schema_mixed_format.conf
│                       ├── multiple_tables_schema_url.conf
│                       ├── single_no_schema.conf
│                       ├── single_schema_field.conf
│                       └── single_schema_url.conf
├── seatunnel-ci-tools/
│   ├── pom.xml
│   └── src/
│       └── test/
│           └── java/
│               └── org/
│                   └── apache/
│                       └── seatunnel/
│                           └── api/
│                               ├── ChineseCharacterCheckTest.java
│                               ├── ConnectorOptionCheckTest.java
│                               ├── ImportClassCheckTest.java
│                               ├── SerialVersionUIDCheckerTest.java
│                               ├── SpotlessImportReplacementTest.java
│                               ├── UTClassNameCheckTest.java
│                               └── file/
│                                   ├── AllFileSpecificationCheckTest.java
│                                   └── MarkdownTest.java
├── seatunnel-common/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── org/
│       │           └── apache/
│       │               └── seatunnel/
│       │                   └── common/
│       │                       ├── Constants.java
│       │                       ├── Handover.java
│       │                       ├── config/
│       │                       │   ├── CheckConfigUtil.java
│       │                       │   ├── CheckResult.java
│       │                       │   ├── Common.java
│       │                       │   ├── ConfigRuntimeException.java
│       │                       │   ├── DeployMode.java
│       │                       │   └── TypesafeConfigUtils.java
│       │                       ├── constants/
│       │                       │   ├── CollectionConstants.java
│       │                       │   ├── EngineType.java
│       │                       │   ├── JobMode.java
│       │                       │   ├── MetaLakeType.java
│       │                       │   └── PluginType.java
│       │                       ├── exception/
│       │                       │   ├── CommonError.java
│       │                       │   ├── CommonErrorCode.java
│       │                       │   ├── CommonErrorCodeDeprecated.java
│       │                       │   ├── ExceptionParamsUtil.java
│       │                       │   ├── SeaTunnelErrorCode.java
│       │                       │   └── SeaTunnelRuntimeException.java
│       │                       └── utils/
│       │                           ├── DateTimeUtils.java
│       │                           ├── DateUtils.java
│       │                           ├── EncodingUtils.java
│       │                           ├── ExceptionUtils.java
│       │                           ├── FileUtils.java
│       │                           ├── JdbcUrlUtil.java
│       │                           ├── JsonUtils.java
│       │                           ├── ParserException.java
│       │                           ├── PlaceholderUtils.java
│       │                           ├── ReflectionUtils.java
│       │                           ├── RetryUtils.java
│       │                           ├── SeaTunnelException.java
│       │                           ├── SerializationException.java
│       │                           ├── SerializationUtils.java
│       │                           ├── StringFormatUtils.java
│       │                           ├── TemporaryClassLoaderContext.java
│       │                           ├── TimeUtils.java
│       │                           ├── VariablesSubstitute.java
│       │                           ├── VectorUtils.java
│       │                           └── function/
│       │                               ├── ConsumerWithException.java
│       │                               ├── FunctionWithException.java
│       │                               ├── RunnableWithException.java
│       │                               └── SupplierWithException.java
│       └── test/
│           └── java/
│               └── org/
│                   └── apache/
│                       └── seatunnel/
│                           └── common/
│                               ├── HandoverTest.java
│                               ├── config/
│                               │   ├── CheckConfigUtilTest.java
│                               │   ├── CommonTest.java
│                               │   └── TypesafeConfigUtilsTest.java
│                               ├── exception/
│                               │   └── ExceptionParamsUtilTest.java
│                               └── utils/
│                                   ├── DateTimeUtilsTest.java
│                                   ├── DateUtilsTest.java
│                                   ├── ExceptionUtilsTest.java
│                                   ├── FileUtilsTest.java
│                                   ├── JdbcUrlUtilTest.java
│                                   ├── ReflectionUtilsTest.java
│                                   ├── SerializationUtilsTest.java
│                                   ├── StringFormatUtilsTest.java
│                                   ├── TimeUtilsTest.java
│                                   ├── VariablesSubstituteTest.java
│                                   └── VectorUtilsTest.java
├── seatunnel-config/
│   ├── README.md
│   ├── pom.xml
│   ├── seatunnel-config-base/
│   │   └── pom.xml
│   ├── seatunnel-config-shade/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── shade/
│   │       │                       └── com/
│   │       │                           └── typesafe/
│   │       │                               └── config/
│   │       │                                   ├── ConfigMergeable.java
│   │       │                                   ├── ConfigParseOptions.java
│   │       │                                   └── impl/
│   │       │                                       ├── ConfigImpl.java
│   │       │                                       ├── ConfigNodePath.java
│   │       │                                       ├── ConfigParser.java
│   │       │                                       ├── Path.java
│   │       │                                       ├── PathParser.java
│   │       │                                       ├── PropertiesParser.java
│   │       │                                       ├── SimpleConfigObject.java
│   │       │                                       └── Tokenizer.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── seatunnel/
│   │           │               ├── config/
│   │           │               │   ├── CompleteTest.java
│   │           │               │   ├── ConfigFactoryTest.java
│   │           │               │   ├── ConfigTest.java
│   │           │               │   ├── JsonFormatTest.java
│   │           │               │   ├── SerializeTest.java
│   │           │               │   └── utils/
│   │           │               │       └── FileUtils.java
│   │           │               └── shade/
│   │           │                   └── com/
│   │           │                       └── typesafe/
│   │           │                           └── config/
│   │           │                               └── impl/
│   │           │                                   └── ConfigTest.java
│   │           └── resources/
│   │               ├── factory/
│   │               │   └── config.conf
│   │               ├── json/
│   │               │   ├── spark.batch.conf
│   │               │   └── spark.batch.json
│   │               └── seatunnel/
│   │                   ├── configWithSpecialKey.conf
│   │                   ├── schema_columns.conf
│   │                   ├── schema_fields.conf
│   │                   ├── serialize.conf
│   │                   └── variables.conf
│   └── seatunnel-config-sql/
│       ├── pom.xml
│       └── src/
│           ├── main/
│           │   └── java/
│           │       └── org/
│           │           └── apache/
│           │               └── seatunnel/
│           │                   └── config/
│           │                       └── sql/
│           │                           ├── ConfigTemplate.java
│           │                           ├── SqlConfigAdapter.java
│           │                           ├── SqlConfigBuilder.java
│           │                           ├── model/
│           │                           │   ├── BaseConfig.java
│           │                           │   ├── Option.java
│           │                           │   ├── SeaTunnelConfig.java
│           │                           │   ├── SinkConfig.java
│           │                           │   ├── SourceConfig.java
│           │                           │   └── TransformConfig.java
│           │                           └── utils/
│           │                               └── Constant.java
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── apache/
│               │           └── seatunnel/
│               │               └── config/
│               │                   └── sql/
│               │                       └── SqlConfigBuilderTest.java
│               └── resources/
│                   └── sql-config.sql
├── seatunnel-connectors-v2/
│   ├── README.md
│   ├── README.zh.md
│   ├── connector-activemq/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── activemq/
│   │       │                               ├── client/
│   │       │                               │   └── ActivemqClient.java
│   │       │                               ├── config/
│   │       │                               │   └── ActivemqSinkOptions.java
│   │       │                               ├── exception/
│   │       │                               │   ├── ActivemqConnectorErrorCode.java
│   │       │                               │   └── ActivemqConnectorException.java
│   │       │                               └── sink/
│   │       │                                   ├── ActivemqSink.java
│   │       │                                   ├── ActivemqSinkFactory.java
│   │       │                                   └── ActivemqSinkWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── activemq/
│   │                                       └── ActivemqFactoryTest.java
│   ├── connector-aerospike/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── aerospike/
│   │       │                               ├── config/
│   │       │                               │   ├── AerospikeDataType.java
│   │       │                               │   ├── AerospikeSinkOptions.java
│   │       │                               │   └── DataFormatType.java
│   │       │                               ├── exception/
│   │       │                               │   ├── AerospikeConnectorException.java
│   │       │                               │   └── AerospikeErrorCode.java
│   │       │                               └── sink/
│   │       │                                   ├── AerospikeSink.java
│   │       │                                   ├── AerospikeSinkFactory.java
│   │       │                                   ├── AerospikeSinkWriter.java
│   │       │                                   └── AerospikeTypeConverter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── aerospike/
│   │                                       └── AerospikeFactoryTest.java
│   ├── connector-amazondynamodb/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── amazondynamodb/
│   │       │                               ├── config/
│   │       │                               │   ├── AmazonDynamoDBBaseOptions.java
│   │       │                               │   ├── AmazonDynamoDBConfig.java
│   │       │                               │   ├── AmazonDynamoDBSinkOptions.java
│   │       │                               │   └── AmazonDynamoDBSourceOptions.java
│   │       │                               ├── exception/
│   │       │                               │   └── AmazonDynamoDBConnectorException.java
│   │       │                               ├── serialize/
│   │       │                               │   ├── DefaultSeaTunnelRowDeserializer.java
│   │       │                               │   ├── DefaultSeaTunnelRowSerializer.java
│   │       │                               │   ├── SeaTunnelRowDeserializer.java
│   │       │                               │   └── SeaTunnelRowSerializer.java
│   │       │                               ├── sink/
│   │       │                               │   ├── AmazonDynamoDBSink.java
│   │       │                               │   ├── AmazonDynamoDBSinkFactory.java
│   │       │                               │   ├── AmazonDynamoDBWriter.java
│   │       │                               │   └── DynamoDbSinkClient.java
│   │       │                               └── source/
│   │       │                                   ├── AmazonDynamoDBSource.java
│   │       │                                   ├── AmazonDynamoDBSourceFactory.java
│   │       │                                   ├── AmazonDynamoDBSourceReader.java
│   │       │                                   ├── AmazonDynamoDBSourceSplit.java
│   │       │                                   ├── AmazonDynamoDBSourceSplitEnumerator.java
│   │       │                                   └── AmazonDynamoDBSourceState.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── amazondynamodb/
│   │                                       └── AmazonDynamoDBSourceFactoryTest.java
│   ├── connector-amazonsqs/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── amazonsqs/
│   │       │                               ├── config/
│   │       │                               │   ├── AmazonSqsBaseOptions.java
│   │       │                               │   ├── AmazonSqsSinkOptions.java
│   │       │                               │   ├── AmazonSqsSourceConfig.java
│   │       │                               │   ├── AmazonSqsSourceOptions.java
│   │       │                               │   └── MessageFormat.java
│   │       │                               ├── deserialize/
│   │       │                               │   ├── AmazonSqsDeserializer.java
│   │       │                               │   └── SeaTunnelRowDeserializer.java
│   │       │                               ├── exception/
│   │       │                               │   └── AmazonSqsConnectorException.java
│   │       │                               ├── sink/
│   │       │                               │   ├── AmazonSqsSink.java
│   │       │                               │   ├── AmazonSqsSinkFactory.java
│   │       │                               │   └── AmazonSqsSinkWriter.java
│   │       │                               └── source/
│   │       │                                   ├── AmazonSqsSource.java
│   │       │                                   ├── AmazonSqsSourceFactory.java
│   │       │                                   └── AmazonSqsSourceReader.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── amazonsqs/
│   │                                       └── AmazonSqsSourceFactoryTest.java
│   ├── connector-assert/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── assertion/
│   │       │                               ├── excecutor/
│   │       │                               │   └── AssertExecutor.java
│   │       │                               ├── exception/
│   │       │                               │   ├── AssertConnectorErrorCode.java
│   │       │                               │   └── AssertConnectorException.java
│   │       │                               ├── rule/
│   │       │                               │   ├── AssertCatalogTableRule.java
│   │       │                               │   ├── AssertCatalogTableRuleParser.java
│   │       │                               │   ├── AssertFieldRule.java
│   │       │                               │   ├── AssertRuleParser.java
│   │       │                               │   └── AssertTableRule.java
│   │       │                               └── sink/
│   │       │                                   ├── AssertConfig.java
│   │       │                                   ├── AssertSink.java
│   │       │                                   ├── AssertSinkFactory.java
│   │       │                                   ├── AssertSinkOptions.java
│   │       │                                   ├── AssertSinkWriter.java
│   │       │                                   ├── FieldRule.java
│   │       │                                   ├── RowRule.java
│   │       │                                   └── Rules.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── flink/
│   │                               └── assertion/
│   │                                   ├── AssertExecutorTest.java
│   │                                   ├── AssertFactoryTest.java
│   │                                   └── rule/
│   │                                       └── AssertRuleParserTest.java
│   ├── connector-cassandra/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── cassandra/
│   │       │                               ├── client/
│   │       │                               │   └── CassandraClient.java
│   │       │                               ├── config/
│   │       │                               │   ├── CassandraBaseOptions.java
│   │       │                               │   ├── CassandraParameters.java
│   │       │                               │   ├── CassandraSinkOptions.java
│   │       │                               │   └── CassandraSourceOptions.java
│   │       │                               ├── exception/
│   │       │                               │   ├── CassandraConnectorErrorCode.java
│   │       │                               │   └── CassandraConnectorException.java
│   │       │                               ├── sink/
│   │       │                               │   ├── CassandraSink.java
│   │       │                               │   ├── CassandraSinkFactory.java
│   │       │                               │   └── CassandraSinkWriter.java
│   │       │                               ├── source/
│   │       │                               │   ├── CassandraSource.java
│   │       │                               │   ├── CassandraSourceFactory.java
│   │       │                               │   └── CassandraSourceReader.java
│   │       │                               └── util/
│   │       │                                   └── TypeConvertUtil.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── cassandra/
│   │                                       └── CassandraFactoryTest.java
│   ├── connector-cdc/
│   │   ├── connector-cdc-base/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── io/
│   │   │       │       │   └── debezium/
│   │   │       │       │       ├── connector/
│   │   │       │       │       │   └── base/
│   │   │       │       │       │       └── ChangeEventQueue.java
│   │   │       │       │       ├── heartbeat/
│   │   │       │       │       │   ├── DefaultHeartbeatConnectionProvider.java
│   │   │       │       │       │   └── HeartbeatFactory.java
│   │   │       │       │       └── relational/
│   │   │       │       │           ├── HistorizedRelationalDatabaseConnectorConfig.java
│   │   │       │       │           └── TableId.java
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── cdc/
│   │   │       │                           ├── base/
│   │   │       │                           │   ├── config/
│   │   │       │                           │   │   ├── BaseSourceConfig.java
│   │   │       │                           │   │   ├── JdbcSourceConfig.java
│   │   │       │                           │   │   ├── JdbcSourceConfigFactory.java
│   │   │       │                           │   │   ├── JdbcSourceTableConfig.java
│   │   │       │                           │   │   ├── SourceConfig.java
│   │   │       │                           │   │   ├── StartupConfig.java
│   │   │       │                           │   │   └── StopConfig.java
│   │   │       │                           │   ├── dialect/
│   │   │       │                           │   │   ├── DataSourceDialect.java
│   │   │       │                           │   │   └── JdbcDataSourceDialect.java
│   │   │       │                           │   ├── option/
│   │   │       │                           │   │   ├── JdbcSourceOptions.java
│   │   │       │                           │   │   ├── SourceOptions.java
│   │   │       │                           │   │   ├── StartupMode.java
│   │   │       │                           │   │   └── StopMode.java
│   │   │       │                           │   ├── relational/
│   │   │       │                           │   │   ├── JdbcSourceEventDispatcher.java
│   │   │       │                           │   │   └── connection/
│   │   │       │                           │   │       ├── ConnectionPoolId.java
│   │   │       │                           │   │       ├── ConnectionPools.java
│   │   │       │                           │   │       ├── JdbcConnectionFactory.java
│   │   │       │                           │   │       ├── JdbcConnectionPoolFactory.java
│   │   │       │                           │   │       └── JdbcConnectionPools.java
│   │   │       │                           │   ├── schema/
│   │   │       │                           │   │   ├── AbstractSchemaChangeResolver.java
│   │   │       │                           │   │   └── SchemaChangeResolver.java
│   │   │       │                           │   ├── source/
│   │   │       │                           │   │   ├── BaseChangeStreamTableSourceFactory.java
│   │   │       │                           │   │   ├── IncrementalSource.java
│   │   │       │                           │   │   ├── enumerator/
│   │   │       │                           │   │   │   ├── HybridSplitAssigner.java
│   │   │       │                           │   │   │   ├── IncrementalSourceEnumerator.java
│   │   │       │                           │   │   │   ├── IncrementalSplitAssigner.java
│   │   │       │                           │   │   │   ├── SnapshotSplitAssigner.java
│   │   │       │                           │   │   │   ├── SplitAssigner.java
│   │   │       │                           │   │   │   ├── splitter/
│   │   │       │                           │   │   │   │   ├── AbstractJdbcSourceChunkSplitter.java
│   │   │       │                           │   │   │   │   ├── ChunkRange.java
│   │   │       │                           │   │   │   │   ├── ChunkSplitter.java
│   │   │       │                           │   │   │   │   └── JdbcSourceChunkSplitter.java
│   │   │       │                           │   │   │   └── state/
│   │   │       │                           │   │   │       ├── HybridPendingSplitsState.java
│   │   │       │                           │   │   │       ├── IncrementalPhaseState.java
│   │   │       │                           │   │   │       ├── PendingSplitsState.java
│   │   │       │                           │   │   │       └── SnapshotPhaseState.java
│   │   │       │                           │   │   ├── event/
│   │   │       │                           │   │   │   ├── CompletedSnapshotPhaseEvent.java
│   │   │       │                           │   │   │   ├── CompletedSnapshotSplitsAckEvent.java
│   │   │       │                           │   │   │   ├── CompletedSnapshotSplitsReportEvent.java
│   │   │       │                           │   │   │   └── SnapshotSplitWatermark.java
│   │   │       │                           │   │   ├── offset/
│   │   │       │                           │   │   │   ├── Offset.java
│   │   │       │                           │   │   │   └── OffsetFactory.java
│   │   │       │                           │   │   ├── parser/
│   │   │       │                           │   │   │   └── SeatunnelDDLParser.java
│   │   │       │                           │   │   ├── reader/
│   │   │       │                           │   │   │   ├── IncrementalSourceReader.java
│   │   │       │                           │   │   │   ├── IncrementalSourceRecordEmitter.java
│   │   │       │                           │   │   │   ├── IncrementalSourceSplitReader.java
│   │   │       │                           │   │   │   └── external/
│   │   │       │                           │   │   │       ├── FetchTask.java
│   │   │       │                           │   │   │       ├── Fetcher.java
│   │   │       │                           │   │   │       ├── IncrementalSourceScanFetcher.java
│   │   │       │                           │   │   │       ├── IncrementalSourceStreamFetcher.java
│   │   │       │                           │   │   │       └── JdbcSourceFetchTaskContext.java
│   │   │       │                           │   │   └── split/
│   │   │       │                           │   │       ├── ChangeEventRecords.java
│   │   │       │                           │   │       ├── CompletedSnapshotSplitInfo.java
│   │   │       │                           │   │       ├── IncrementalSplit.java
│   │   │       │                           │   │       ├── SnapshotSplit.java
│   │   │       │                           │   │       ├── SourceRecords.java
│   │   │       │                           │   │       ├── SourceSplitBase.java
│   │   │       │                           │   │       ├── state/
│   │   │       │                           │   │       │   ├── IncrementalSplitState.java
│   │   │       │                           │   │       │   ├── SnapshotSplitState.java
│   │   │       │                           │   │       │   └── SourceSplitStateBase.java
│   │   │       │                           │   │       └── wartermark/
│   │   │       │                           │   │           ├── WatermarkEvent.java
│   │   │       │                           │   │           └── WatermarkKind.java
│   │   │       │                           │   └── utils/
│   │   │       │                           │       ├── CatalogTableUtils.java
│   │   │       │                           │       ├── MessageDelayedEventLimiter.java
│   │   │       │                           │       ├── ObjectUtils.java
│   │   │       │                           │       └── SourceRecordUtils.java
│   │   │       │                           └── debezium/
│   │   │       │                               ├── AbstractDebeziumDeserializationSchema.java
│   │   │       │                               ├── ConnectTableChangeSerializer.java
│   │   │       │                               ├── DebeziumDeserializationConverter.java
│   │   │       │                               ├── DebeziumDeserializationConverterFactory.java
│   │   │       │                               ├── DebeziumDeserializationSchema.java
│   │   │       │                               ├── DeserializeFormat.java
│   │   │       │                               ├── EmbeddedDatabaseHistory.java
│   │   │       │                               ├── MetadataConverter.java
│   │   │       │                               ├── row/
│   │   │       │                               │   ├── DebeziumJsonDeserializeSchema.java
│   │   │       │                               │   ├── SeaTunnelRowDebeziumDeserializationConverters.java
│   │   │       │                               │   └── SeaTunnelRowDebeziumDeserializeSchema.java
│   │   │       │                               └── utils/
│   │   │       │                                   └── TemporalConversions.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               ├── jdbc/
│   │   │               │   └── source/
│   │   │               │       └── JdbcSourceChunkSplitterTest.java
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── cdc/
│   │   │                                   ├── base/
│   │   │                                   │   ├── schema/
│   │   │                                   │   │   └── AbstractSchemaChangeResolverTest.java
│   │   │                                   │   ├── source/
│   │   │                                   │   │   ├── enumerator/
│   │   │                                   │   │   │   ├── HybridSplitAssignerTest.java
│   │   │                                   │   │   │   └── splitter/
│   │   │                                   │   │   │       └── AbstractJdbcSourceChunkSplitterTest.java
│   │   │                                   │   │   ├── reader/
│   │   │                                   │   │   │   ├── IncrementalSourceSplitReaderTest.java
│   │   │                                   │   │   │   └── external/
│   │   │                                   │   │   │       └── IncrementalSourceStreamFetcherTest.java
│   │   │                                   │   │   └── split/
│   │   │                                   │   │       └── state/
│   │   │                                   │   │           └── IncrementalSplitStateTest.java
│   │   │                                   │   └── utils/
│   │   │                                   │       └── MessageDelayedEventLimiterTest.java
│   │   │                                   └── debezium/
│   │   │                                       ├── format/
│   │   │                                       │   └── DebeziumJsonFormatTest.java
│   │   │                                       └── row/
│   │   │                                           ├── DebeziumJsonDeserializeSchemaTest.java
│   │   │                                           └── SeaTunnelRowDebeziumDeserializationConvertersTest.java
│   │   ├── connector-cdc-mongodb/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── cdc/
│   │   │       │                               └── mongodb/
│   │   │       │                                   ├── MongodbIncrementalSource.java
│   │   │       │                                   ├── MongodbIncrementalSourceFactory.java
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── MongodbIncrementalSourceOptions.java
│   │   │       │                                   │   ├── MongodbSourceConfig.java
│   │   │       │                                   │   ├── MongodbSourceConfigProvider.java
│   │   │       │                                   │   └── MongodbSourceConstants.java
│   │   │       │                                   ├── exception/
│   │   │       │                                   │   └── MongodbConnectorException.java
│   │   │       │                                   ├── internal/
│   │   │       │                                   │   └── MongodbClientProvider.java
│   │   │       │                                   ├── sender/
│   │   │       │                                   │   ├── MongoDBConnectorDeserializationSchema.java
│   │   │       │                                   │   └── SerializableFunction.java
│   │   │       │                                   ├── source/
│   │   │       │                                   │   ├── MongoDBRecordEmitter.java
│   │   │       │                                   │   ├── dialect/
│   │   │       │                                   │   │   └── MongodbDialect.java
│   │   │       │                                   │   ├── fetch/
│   │   │       │                                   │   │   ├── MongodbFetchTaskContext.java
│   │   │       │                                   │   │   ├── MongodbScanFetchTask.java
│   │   │       │                                   │   │   └── MongodbStreamFetchTask.java
│   │   │       │                                   │   ├── offset/
│   │   │       │                                   │   │   ├── ChangeStreamDescriptor.java
│   │   │       │                                   │   │   ├── ChangeStreamOffset.java
│   │   │       │                                   │   │   └── ChangeStreamOffsetFactory.java
│   │   │       │                                   │   └── splitters/
│   │   │       │                                   │       ├── MongodbChunkSplitter.java
│   │   │       │                                   │       ├── SampleBucketSplitStrategy.java
│   │   │       │                                   │       ├── ShardedSplitStrategy.java
│   │   │       │                                   │       ├── SingleSplitStrategy.java
│   │   │       │                                   │       ├── SplitContext.java
│   │   │       │                                   │       ├── SplitStrategy.java
│   │   │       │                                   │       └── SplitVectorSplitStrategy.java
│   │   │       │                                   └── utils/
│   │   │       │                                       ├── BsonUtils.java
│   │   │       │                                       ├── ChunkUtils.java
│   │   │       │                                       ├── CollectionDiscoveryUtils.java
│   │   │       │                                       ├── MongodbRecordUtils.java
│   │   │       │                                       ├── MongodbUtils.java
│   │   │       │                                       └── ResumeToken.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── mongodb/
│   │   │                   ├── sender/
│   │   │                   │   └── MongoDBConnectorDeserializationSchemaTest.java
│   │   │                   ├── source/
│   │   │                   │   └── MongodbIncrementalSourceFactoryTest.java
│   │   │                   └── utils/
│   │   │                       └── MongodbRecordUtilsHeartbeatTest.java
│   │   ├── connector-cdc-mysql/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── com/
│   │   │       │       │   └── github/
│   │   │       │       │       └── shyiko/
│   │   │       │       │           └── mysql/
│   │   │       │       │               └── binlog/
│   │   │       │       │                   └── io/
│   │   │       │       │                       └── BufferedSocketInputStream.java
│   │   │       │       ├── io/
│   │   │       │       │   └── debezium/
│   │   │       │       │       └── connector/
│   │   │       │       │           └── mysql/
│   │   │       │       │               ├── GtidUtils.java
│   │   │       │       │               ├── MySqlConnection.java
│   │   │       │       │               ├── MySqlReadOnlyIncrementalSnapshotChangeEventSource.java
│   │   │       │       │               ├── MySqlSnapshotChangeEventSource.java
│   │   │       │       │               ├── MySqlStreamingChangeEventSource.java
│   │   │       │       │               └── legacy/
│   │   │       │       │                   ├── MySqlJdbcContext.java
│   │   │       │       │                   └── SnapshotReader.java
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── cdc/
│   │   │       │                               └── mysql/
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── CustomMySqlConnectionConfiguration.java
│   │   │       │                                   │   ├── MySqlIncrementalSourceOptions.java
│   │   │       │                                   │   ├── MySqlSourceConfig.java
│   │   │       │                                   │   ├── MySqlSourceConfigFactory.java
│   │   │       │                                   │   └── ServerIdRange.java
│   │   │       │                                   ├── source/
│   │   │       │                                   │   ├── MySqlDialect.java
│   │   │       │                                   │   ├── MySqlIncrementalSource.java
│   │   │       │                                   │   ├── MySqlIncrementalSourceFactory.java
│   │   │       │                                   │   ├── MySqlSchemaChangeResolver.java
│   │   │       │                                   │   ├── enumerator/
│   │   │       │                                   │   │   └── MySqlChunkSplitter.java
│   │   │       │                                   │   ├── offset/
│   │   │       │                                   │   │   ├── BinlogOffset.java
│   │   │       │                                   │   │   └── BinlogOffsetFactory.java
│   │   │       │                                   │   ├── parser/
│   │   │       │                                   │   │   ├── CustomAlterTableParserListener.java
│   │   │       │                                   │   │   ├── CustomColumnDefinitionParserListener.java
│   │   │       │                                   │   │   ├── CustomDefaultValueParserListener.java
│   │   │       │                                   │   │   ├── CustomMySqlAntlrDdlParser.java
│   │   │       │                                   │   │   └── CustomMySqlAntlrDdlParserListener.java
│   │   │       │                                   │   └── reader/
│   │   │       │                                   │       └── fetch/
│   │   │       │                                   │           ├── MySqlSourceFetchTaskContext.java
│   │   │       │                                   │           ├── binlog/
│   │   │       │                                   │           │   └── MySqlBinlogFetchTask.java
│   │   │       │                                   │           └── scan/
│   │   │       │                                   │               ├── MySqlSnapshotFetchTask.java
│   │   │       │                                   │               ├── MySqlSnapshotSplitReadTask.java
│   │   │       │                                   │               └── SnapshotSplitChangeEventSourceContext.java
│   │   │       │                                   └── utils/
│   │   │       │                                       ├── ErrorMessageUtils.java
│   │   │       │                                       ├── MySqlConnectionUtils.java
│   │   │       │                                       ├── MySqlDdlBuilder.java
│   │   │       │                                       ├── MySqlSchema.java
│   │   │       │                                       ├── MySqlTypeUtils.java
│   │   │       │                                       ├── MySqlUtils.java
│   │   │       │                                       └── TableDiscoveryUtils.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               ├── com/
│   │   │               │   └── github/
│   │   │               │       └── shyiko/
│   │   │               │           └── mysql/
│   │   │               │               └── binlog/
│   │   │               │                   └── io/
│   │   │               │                       └── BufferedSocketInputStreamTest.java
│   │   │               ├── io/
│   │   │               │   └── debezium/
│   │   │               │       └── connector/
│   │   │               │           └── mysql/
│   │   │               │               └── GtidUtilsTest.java
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── mysql/
│   │   │                                           ├── source/
│   │   │                                           │   └── MySqlIncrementalSourceFactoryTest.java
│   │   │                                           ├── testutils/
│   │   │                                           │   ├── MySqlContainer.java
│   │   │                                           │   ├── MySqlVersion.java
│   │   │                                           │   └── UniqueDatabase.java
│   │   │                                           └── utils/
│   │   │                                               ├── MySqlSchemaTest.java
│   │   │                                               └── MySqlUtilsTest.java
│   │   ├── connector-cdc-opengauss/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               ├── io/
│   │   │               │   └── debezium/
│   │   │               │       └── connector/
│   │   │               │           └── postgresql/
│   │   │               │               └── connection/
│   │   │               │                   ├── PostgresConnection.java
│   │   │               │                   └── PostgresReplicationConnection.java
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── opengauss/
│   │   │                                           └── OpengaussIncrementalSourceFactory.java
│   │   ├── connector-cdc-oracle/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── io/
│   │   │       │       │   └── debezium/
│   │   │       │       │       └── connector/
│   │   │       │       │           └── oracle/
│   │   │       │       │               └── logminer/
│   │   │       │       │                   ├── LogMinerAdapter.java
│   │   │       │       │                   ├── LogMinerStreamingChangeEventSource.java
│   │   │       │       │                   ├── logwriter/
│   │   │       │       │                   │   └── ReadOnlyLogWriterFlushStrategy.java
│   │   │       │       │                   └── processor/
│   │   │       │       │                       └── AbstractLogMinerEventProcessor.java
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── cdc/
│   │   │       │                               └── oracle/
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── OracleSourceConfig.java
│   │   │       │                                   │   └── OracleSourceConfigFactory.java
│   │   │       │                                   ├── source/
│   │   │       │                                   │   ├── OracleDialect.java
│   │   │       │                                   │   ├── OracleIncrementalSource.java
│   │   │       │                                   │   ├── OracleIncrementalSourceFactory.java
│   │   │       │                                   │   ├── OracleIncrementalSourceOptions.java
│   │   │       │                                   │   ├── OracleSchemaChangeResolver.java
│   │   │       │                                   │   ├── enumerator/
│   │   │       │                                   │   │   └── OracleChunkSplitter.java
│   │   │       │                                   │   ├── offset/
│   │   │       │                                   │   │   ├── RedoLogOffset.java
│   │   │       │                                   │   │   └── RedoLogOffsetFactory.java
│   │   │       │                                   │   ├── parser/
│   │   │       │                                   │   │   ├── BaseParserListener.java
│   │   │       │                                   │   │   ├── CustomAlterTableParserListener.java
│   │   │       │                                   │   │   ├── CustomColumnDefinitionParserListener.java
│   │   │       │                                   │   │   ├── CustomOracleAntlrDdlParser.java
│   │   │       │                                   │   │   └── CustomOracleAntlrDdlParserListener.java
│   │   │       │                                   │   └── reader/
│   │   │       │                                   │       └── fetch/
│   │   │       │                                   │           ├── OracleSourceFetchTaskContext.java
│   │   │       │                                   │           ├── logminer/
│   │   │       │                                   │           │   ├── EventProcessorFactory.java
│   │   │       │                                   │           │   └── OracleRedoLogFetchTask.java
│   │   │       │                                   │           └── scan/
│   │   │       │                                   │               ├── OracleSnapshotFetchTask.java
│   │   │       │                                   │               ├── OracleSnapshotSplitReadTask.java
│   │   │       │                                   │               └── SnapshotSplitChangeEventSourceContext.java
│   │   │       │                                   └── utils/
│   │   │       │                                       ├── OracleConnectionUtils.java
│   │   │       │                                       ├── OracleSchema.java
│   │   │       │                                       ├── OracleTypeUtils.java
│   │   │       │                                       └── OracleUtils.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               ├── io/
│   │   │               │   └── debezium/
│   │   │               │       └── connector/
│   │   │               │           └── oracle/
│   │   │               │               └── logminer/
│   │   │               │                   ├── logwriter/
│   │   │               │                   │   └── ReadOnlyLogWriterFlushStrategyTest.java
│   │   │               │                   └── processor/
│   │   │               │                       └── AbstractLogMinerEventProcessorTest.java
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── oracle/
│   │   │                                           ├── source/
│   │   │                                           │   ├── OracleIncrementalSourceFactoryTest.java
│   │   │                                           │   └── parser/
│   │   │                                           │       └── OracleDdlParserTest.java
│   │   │                                           └── utils/
│   │   │                                               └── OracleUtilsTest.java
│   │   ├── connector-cdc-postgres/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── io/
│   │   │       │       │   └── debezium/
│   │   │       │       │       └── connector/
│   │   │       │       │           └── postgresql/
│   │   │       │       │               ├── CustomPostgresValueConverter.java
│   │   │       │       │               ├── PostgresObjectUtils.java
│   │   │       │       │               ├── PostgresOffsetContext.java
│   │   │       │       │               └── TypeRegistry.java
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── cdc/
│   │   │       │                               └── postgres/
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── PostgresIncrementalSourceOptions.java
│   │   │       │                                   │   ├── PostgresSourceConfig.java
│   │   │       │                                   │   └── PostgresSourceConfigFactory.java
│   │   │       │                                   ├── exception/
│   │   │       │                                   │   └── PostgresConnectorErrorCode.java
│   │   │       │                                   ├── source/
│   │   │       │                                   │   ├── PostgresDialect.java
│   │   │       │                                   │   ├── PostgresIncrementalSource.java
│   │   │       │                                   │   ├── PostgresIncrementalSourceFactory.java
│   │   │       │                                   │   ├── PostgresSourceOptions.java
│   │   │       │                                   │   ├── enumerator/
│   │   │       │                                   │   │   └── PostgresChunkSplitter.java
│   │   │       │                                   │   ├── offset/
│   │   │       │                                   │   │   ├── LsnOffset.java
│   │   │       │                                   │   │   └── LsnOffsetFactory.java
│   │   │       │                                   │   └── reader/
│   │   │       │                                   │       ├── PostgresSourceFetchTaskContext.java
│   │   │       │                                   │       ├── snapshot/
│   │   │       │                                   │       │   ├── PostgresSnapshotFetchTask.java
│   │   │       │                                   │       │   ├── PostgresSnapshotSplitReadTask.java
│   │   │       │                                   │       │   └── SnapshotSplitChangeEventSourceContext.java
│   │   │       │                                   │       └── wal/
│   │   │       │                                   │           └── PostgresWalFetchTask.java
│   │   │       │                                   └── utils/
│   │   │       │                                       ├── PostgresConnectionUtils.java
│   │   │       │                                       ├── PostgresSchema.java
│   │   │       │                                       ├── PostgresTypeUtils.java
│   │   │       │                                       ├── PostgresUtils.java
│   │   │       │                                       └── TableDiscoveryUtils.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── postgres/
│   │   │                                           └── utils/
│   │   │                                               └── PostgresUtilsTest.java
│   │   ├── connector-cdc-sqlserver/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── io/
│   │   │       │       │   └── debezium/
│   │   │       │       │       └── connector/
│   │   │       │       │           └── sqlserver/
│   │   │       │       │               ├── SqlServerConnection.java
│   │   │       │       │               └── SqlServerStreamingChangeEventSource.java
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── cdc/
│   │   │       │                               └── sqlserver/
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── SqlServerSourceConfig.java
│   │   │       │                                   │   └── SqlServerSourceConfigFactory.java
│   │   │       │                                   ├── source/
│   │   │       │                                   │   ├── SqlServerDialect.java
│   │   │       │                                   │   ├── SqlServerIncrementalSource.java
│   │   │       │                                   │   ├── SqlServerIncrementalSourceFactory.java
│   │   │       │                                   │   ├── SqlServerIncrementalSourceOptions.java
│   │   │       │                                   │   ├── enumerator/
│   │   │       │                                   │   │   └── SqlServerChunkSplitter.java
│   │   │       │                                   │   ├── offset/
│   │   │       │                                   │   │   ├── LsnOffset.java
│   │   │       │                                   │   │   └── LsnOffsetFactory.java
│   │   │       │                                   │   └── reader/
│   │   │       │                                   │       └── fetch/
│   │   │       │                                   │           ├── SqlServerSourceFetchTaskContext.java
│   │   │       │                                   │           ├── scan/
│   │   │       │                                   │           │   ├── SnapshotSplitChangeEventSourceContext.java
│   │   │       │                                   │           │   ├── SqlServerSnapshotFetchTask.java
│   │   │       │                                   │           │   └── SqlServerSnapshotSplitReadTask.java
│   │   │       │                                   │           └── transactionlog/
│   │   │       │                                   │               └── SqlServerTransactionLogFetchTask.java
│   │   │       │                                   └── utils/
│   │   │       │                                       ├── SqlServerConnectionUtils.java
│   │   │       │                                       ├── SqlServerSchema.java
│   │   │       │                                       ├── SqlServerTypeUtils.java
│   │   │       │                                       ├── SqlServerUtils.java
│   │   │       │                                       └── TableDiscoveryUtils.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               ├── io/
│   │   │               │   └── debezium/
│   │   │               │       └── connector/
│   │   │               │           └── sqlserver/
│   │   │               │               └── SqlServerConnectionTest.java
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── sqlserver/
│   │   │                                           ├── source/
│   │   │                                           │   ├── SqlServerIncrementalSourceFactoryTest.java
│   │   │                                           │   └── offset/
│   │   │                                           │       └── LsnOffsetTest.java
│   │   │                                           └── utils/
│   │   │                                               └── SqlServerUtilsTest.java
│   │   ├── connector-cdc-tidb/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           ├── apache/
│   │   │       │           │   └── seatunnel/
│   │   │       │           │       └── connectors/
│   │   │       │           │           └── seatunnel/
│   │   │       │           │               └── cdc/
│   │   │       │           │                   └── tidb/
│   │   │       │           │                       └── source/
│   │   │       │           │                           ├── TiDBSource.java
│   │   │       │           │                           ├── TiDBSourceFactory.java
│   │   │       │           │                           ├── config/
│   │   │       │           │                           │   ├── TiDBSourceConfig.java
│   │   │       │           │                           │   └── TiDBSourceOptions.java
│   │   │       │           │                           ├── converter/
│   │   │       │           │                           │   ├── DataConverter.java
│   │   │       │           │                           │   └── DefaultDataConverter.java
│   │   │       │           │                           ├── deserializer/
│   │   │       │           │                           │   ├── AbstractSeaTunnelRowDeserializer.java
│   │   │       │           │                           │   ├── SeaTunnelRowSnapshotRecordDeserializer.java
│   │   │       │           │                           │   └── SeaTunnelRowStreamingRecordDeserializer.java
│   │   │       │           │                           ├── enumerator/
│   │   │       │           │                           │   ├── TiDBSourceCheckpointState.java
│   │   │       │           │                           │   └── TiDBSourceSplitEnumerator.java
│   │   │       │           │                           ├── reader/
│   │   │       │           │                           │   ├── RowKeyWithTs.java
│   │   │       │           │                           │   └── TiDBSourceReader.java
│   │   │       │           │                           ├── split/
│   │   │       │           │                           │   └── TiDBSourceSplit.java
│   │   │       │           │                           └── utils/
│   │   │       │           │                               └── TableKeyRangeUtils.java
│   │   │       │           └── tikv/
│   │   │       │               └── common/
│   │   │       │                   └── iterator/
│   │   │       │                       └── ScanIterator.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── tidb/
│   │   │                                           └── source/
│   │   │                                               └── SqlServerIncrementalSourceFactoryTest.java
│   │   └── pom.xml
│   ├── connector-clickhouse/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── clickhouse/
│   │       │                               ├── catalog/
│   │       │                               │   ├── ClickhouseCatalog.java
│   │       │                               │   ├── ClickhouseCatalogFactory.java
│   │       │                               │   └── ClickhouseTypeConverter.java
│   │       │                               ├── config/
│   │       │                               │   ├── ClickhouseBaseOptions.java
│   │       │                               │   ├── ClickhouseFileCopyMethod.java
│   │       │                               │   ├── ClickhouseFileSinkOptions.java
│   │       │                               │   ├── ClickhouseSinkOptions.java
│   │       │                               │   ├── ClickhouseSourceConfig.java
│   │       │                               │   ├── ClickhouseSourceOptions.java
│   │       │                               │   ├── ClickhouseTableConfig.java
│   │       │                               │   ├── ClickhouseType.java
│   │       │                               │   ├── FileReaderOption.java
│   │       │                               │   ├── NodePassConfig.java
│   │       │                               │   └── ReaderOption.java
│   │       │                               ├── exception/
│   │       │                               │   ├── ClickhouseConnectorErrorCode.java
│   │       │                               │   └── ClickhouseConnectorException.java
│   │       │                               ├── shard/
│   │       │                               │   ├── Shard.java
│   │       │                               │   └── ShardMetadata.java
│   │       │                               ├── sink/
│   │       │                               │   ├── client/
│   │       │                               │   │   ├── ClickhouseBatchStatement.java
│   │       │                               │   │   ├── ClickhouseSink.java
│   │       │                               │   │   ├── ClickhouseSinkFactory.java
│   │       │                               │   │   ├── ClickhouseSinkWriter.java
│   │       │                               │   │   ├── ShardRouter.java
│   │       │                               │   │   └── executor/
│   │       │                               │   │       ├── BufferedBatchStatementExecutor.java
│   │       │                               │   │       ├── FieldNamedPreparedStatement.java
│   │       │                               │   │       ├── InsertOrUpdateBatchStatementExecutor.java
│   │       │                               │   │       ├── JdbcBatchStatementExecutor.java
│   │       │                               │   │       ├── JdbcBatchStatementExecutorBuilder.java
│   │       │                               │   │       ├── JdbcRowConverter.java
│   │       │                               │   │       ├── ReduceBufferedBatchStatementExecutor.java
│   │       │                               │   │       ├── SimpleBatchStatementExecutor.java
│   │       │                               │   │       ├── SqlUtils.java
│   │       │                               │   │       └── StatementFactory.java
│   │       │                               │   ├── file/
│   │       │                               │   │   ├── ClickhouseFileSink.java
│   │       │                               │   │   ├── ClickhouseFileSinkAggCommitter.java
│   │       │                               │   │   ├── ClickhouseFileSinkFactory.java
│   │       │                               │   │   ├── ClickhouseFileSinkWriter.java
│   │       │                               │   │   ├── ClickhouseTable.java
│   │       │                               │   │   ├── FileTransfer.java
│   │       │                               │   │   ├── FileTransferFactory.java
│   │       │                               │   │   ├── RsyncFileTransfer.java
│   │       │                               │   │   └── ScpFileTransfer.java
│   │       │                               │   └── inject/
│   │       │                               │       ├── ArrayInjectFunction.java
│   │       │                               │       ├── BigDecimalInjectFunction.java
│   │       │                               │       ├── ClickhouseFieldInjectFunction.java
│   │       │                               │       ├── DateInjectFunction.java
│   │       │                               │       ├── DateTimeInjectFunction.java
│   │       │                               │       ├── DoubleInjectFunction.java
│   │       │                               │       ├── FloatInjectFunction.java
│   │       │                               │       ├── IntInjectFunction.java
│   │       │                               │       ├── LongInjectFunction.java
│   │       │                               │       ├── MapInjectFunction.java
│   │       │                               │       └── StringInjectFunction.java
│   │       │                               ├── source/
│   │       │                               │   ├── ClickhousePart.java
│   │       │                               │   ├── ClickhouseSource.java
│   │       │                               │   ├── ClickhouseSourceFactory.java
│   │       │                               │   ├── ClickhouseSourceReader.java
│   │       │                               │   ├── ClickhouseSourceTable.java
│   │       │                               │   ├── ClickhouseValueReader.java
│   │       │                               │   └── split/
│   │       │                               │       ├── ClickhouseSourceSplit.java
│   │       │                               │       ├── ClickhouseSourceSplitEnumerator.java
│   │       │                               │       ├── PartStrategySplitter.java
│   │       │                               │       ├── Splitter.java
│   │       │                               │       └── SqlStrategySplitter.java
│   │       │                               ├── state/
│   │       │                               │   ├── CKAggCommitInfo.java
│   │       │                               │   ├── CKCommitInfo.java
│   │       │                               │   ├── CKFileAggCommitInfo.java
│   │       │                               │   ├── CKFileCommitInfo.java
│   │       │                               │   ├── ClickhouseSinkState.java
│   │       │                               │   └── ClickhouseSourceState.java
│   │       │                               └── util/
│   │       │                                   ├── ClickhouseCatalogUtil.java
│   │       │                                   ├── ClickhouseProxy.java
│   │       │                                   ├── ClickhouseUtil.java
│   │       │                                   ├── CreateTableParser.java
│   │       │                                   ├── DistributedEngine.java
│   │       │                                   ├── IntHolder.java
│   │       │                                   └── TypeConvertUtil.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── clickhouse/
│   │                                       ├── ClickhouseCreateTableTest.java
│   │                                       ├── ClickhouseFactoryTest.java
│   │                                       ├── ShardRouterTest.java
│   │                                       ├── source/
│   │                                       │   ├── ClickhouseValueReaderTest.java
│   │                                       │   └── split/
│   │                                       │       └── PartStrategySplitterTest.java
│   │                                       └── util/
│   │                                           ├── ClickhouseCatalogUtilTest.java
│   │                                           └── ClickhouseUtilTest.java
│   ├── connector-common/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── seatunnel/
│   │       │   │               └── connectors/
│   │       │   │                   └── seatunnel/
│   │       │   │                       └── common/
│   │       │   │                           ├── sink/
│   │       │   │                           │   ├── AbstractSimpleSink.java
│   │       │   │                           │   └── AbstractSinkWriter.java
│   │       │   │                           ├── source/
│   │       │   │                           │   ├── AbstractSingleSplitReader.java
│   │       │   │                           │   ├── AbstractSingleSplitSource.java
│   │       │   │                           │   ├── SingleSplit.java
│   │       │   │                           │   ├── SingleSplitEnumerator.java
│   │       │   │                           │   ├── SingleSplitEnumeratorState.java
│   │       │   │                           │   ├── SingleSplitReaderContext.java
│   │       │   │                           │   ├── TypeDefineUtils.java
│   │       │   │                           │   ├── arrow/
│   │       │   │                           │   │   ├── converter/
│   │       │   │                           │   │   │   ├── Converter.java
│   │       │   │                           │   │   │   ├── DateMilliConvertor.java
│   │       │   │                           │   │   │   ├── DefaultConverter.java
│   │       │   │                           │   │   │   ├── FixedSizeListConverter.java
│   │       │   │                           │   │   │   ├── LargeListConverter.java
│   │       │   │                           │   │   │   ├── ListConverter.java
│   │       │   │                           │   │   │   ├── MapConverter.java
│   │       │   │                           │   │   │   ├── NullConverter.java
│   │       │   │                           │   │   │   ├── StructConverter.java
│   │       │   │                           │   │   │   ├── TimeStampMicroConverter.java
│   │       │   │                           │   │   │   ├── TimeStampMilliConverter.java
│   │       │   │                           │   │   │   ├── TimeStampNanoConverter.java
│   │       │   │                           │   │   │   └── TimeStampSecConverter.java
│   │       │   │                           │   │   └── reader/
│   │       │   │                           │   │       └── ArrowToSeatunnelRowReader.java
│   │       │   │                           │   └── reader/
│   │       │   │                           │       ├── RecordEmitter.java
│   │       │   │                           │       ├── RecordsBySplits.java
│   │       │   │                           │       ├── RecordsWithSplitIds.java
│   │       │   │                           │       ├── SingleThreadMultiplexSourceReaderBase.java
│   │       │   │                           │       ├── SourceReaderBase.java
│   │       │   │                           │       ├── SourceReaderOptions.java
│   │       │   │                           │       ├── fetcher/
│   │       │   │                           │       │   ├── AddSplitsTask.java
│   │       │   │                           │       │   ├── FetchTask.java
│   │       │   │                           │       │   ├── SingleThreadFetcherManager.java
│   │       │   │                           │       │   ├── SplitFetcher.java
│   │       │   │                           │       │   ├── SplitFetcherManager.java
│   │       │   │                           │       │   └── SplitFetcherTask.java
│   │       │   │                           │       └── splitreader/
│   │       │   │                           │           ├── SplitReader.java
│   │       │   │                           │           ├── SplitsAddition.java
│   │       │   │                           │           └── SplitsChange.java
│   │       │   │                           ├── sql/
│   │       │   │                           │   └── template/
│   │       │   │                           │       └── SqlTemplate.java
│   │       │   │                           └── util/
│   │       │   │                               ├── CatalogUtil.java
│   │       │   │                               └── CreateTableParser.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.Converter
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   ├── common/
│   │                                   │   └── source/
│   │                                   │       └── arrow/
│   │                                   │           ├── ArrowToSeatunnelRowReaderTest.java
│   │                                   │           └── SeaTunnelDataTypeHolder.java
│   │                                   ├── sink/
│   │                                   │   └── SinkFlowTestUtils.java
│   │                                   └── source/
│   │                                       └── SourceFlowTestUtils.java
│   ├── connector-console/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── console/
│   │       │                               └── sink/
│   │       │                                   ├── ConsoleSink.java
│   │       │                                   ├── ConsoleSinkFactory.java
│   │       │                                   ├── ConsoleSinkOptions.java
│   │       │                                   └── ConsoleSinkWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── console/
│   │                                       ├── ConsoleFactoryTest.java
│   │                                       └── sink/
│   │                                           └── ConsoleSinkWriterTest.java
│   ├── connector-databend/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── seatunnel/
│   │       │   │               └── connectors/
│   │       │   │                   └── seatunnel/
│   │       │   │                       └── databend/
│   │       │   │                           ├── catalog/
│   │       │   │                           │   ├── DatabendCatalog.java
│   │       │   │                           │   └── DatabendCatalogFactory.java
│   │       │   │                           ├── config/
│   │       │   │                           │   ├── DatabendOptions.java
│   │       │   │                           │   ├── DatabendSinkConfig.java
│   │       │   │                           │   ├── DatabendSinkOptions.java
│   │       │   │                           │   ├── DatabendSourceConfig.java
│   │       │   │                           │   └── DatabendSourceOptions.java
│   │       │   │                           ├── exception/
│   │       │   │                           │   ├── DatabendConnectorErrorCode.java
│   │       │   │                           │   └── DatabendConnectorException.java
│   │       │   │                           ├── schema/
│   │       │   │                           │   └── SchemaChangeManager.java
│   │       │   │                           ├── sink/
│   │       │   │                           │   ├── DatabendSink.java
│   │       │   │                           │   ├── DatabendSinkAggregatedCommitInfo.java
│   │       │   │                           │   ├── DatabendSinkAggregatedCommitter.java
│   │       │   │                           │   ├── DatabendSinkCommitterInfo.java
│   │       │   │                           │   ├── DatabendSinkFactory.java
│   │       │   │                           │   └── DatabendSinkWriter.java
│   │       │   │                           ├── source/
│   │       │   │                           │   ├── DatabendSource.java
│   │       │   │                           │   ├── DatabendSourceFactory.java
│   │       │   │                           │   └── DatabendSourceReader.java
│   │       │   │                           ├── state/
│   │       │   │                           │   ├── DatabendSinkState.java
│   │       │   │                           │   └── DatabendSourceState.java
│   │       │   │                           └── util/
│   │       │   │                               ├── DatabendTypeConverter.java
│   │       │   │                               └── DatabendUtil.java
│   │       │   └── resources/
│   │       │       ├── databend_sink_example.conf
│   │       │       ├── databend_source_example.conf
│   │       │       ├── databend_to_databend_example.conf
│   │       │       └── mysql_to_databend_example.conf
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── databend/
│   │                                       ├── DatabendFactoryTest.java
│   │                                       └── sink/
│   │                                           └── DatabendSinkWriterTest.java
│   ├── connector-datahub/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── datahub/
│   │       │                               ├── config/
│   │       │                               │   └── DataHubSinkOptions.java
│   │       │                               ├── exception/
│   │       │                               │   └── DataHubConnectorException.java
│   │       │                               └── sink/
│   │       │                                   ├── DataHubSink.java
│   │       │                                   ├── DataHubSinkFactory.java
│   │       │                                   └── DataHubWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── datahub/
│   │                                       └── DataHubFactoryTest.java
│   ├── connector-dingtalk/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           ├── config/
│   │       │                           │   └── DingTalkSinkOptions.java
│   │       │                           ├── exception/
│   │       │                           │   ├── DingTalkConnectorErrorCode.java
│   │       │                           │   └── DingTalkConnectorException.java
│   │       │                           └── sink/
│   │       │                               ├── DingTalkSink.java
│   │       │                               ├── DingTalkSinkFactory.java
│   │       │                               └── DingTalkWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── DingTalkFactoryTest.java
│   ├── connector-doris/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── doris/
│   │       │                           ├── backend/
│   │       │                           │   └── BackendClient.java
│   │       │                           ├── catalog/
│   │       │                           │   ├── DorisCatalog.java
│   │       │                           │   └── DorisCatalogFactory.java
│   │       │                           ├── config/
│   │       │                           │   ├── DorisBaseOptions.java
│   │       │                           │   ├── DorisSinkConfig.java
│   │       │                           │   ├── DorisSinkOptions.java
│   │       │                           │   ├── DorisSourceConfig.java
│   │       │                           │   ├── DorisSourceOptions.java
│   │       │                           │   └── DorisTableConfig.java
│   │       │                           ├── datatype/
│   │       │                           │   ├── AbstractDorisTypeConverter.java
│   │       │                           │   ├── DorisTypeConverterFactory.java
│   │       │                           │   ├── DorisTypeConverterV1.java
│   │       │                           │   └── DorisTypeConverterV2.java
│   │       │                           ├── exception/
│   │       │                           │   ├── DorisConnectorErrorCode.java
│   │       │                           │   ├── DorisConnectorException.java
│   │       │                           │   └── DorisSchemaChangeException.java
│   │       │                           ├── rest/
│   │       │                           │   ├── PartitionDefinition.java
│   │       │                           │   ├── RestService.java
│   │       │                           │   └── models/
│   │       │                           │       ├── Field.java
│   │       │                           │       ├── QueryPlan.java
│   │       │                           │       ├── RespContent.java
│   │       │                           │       ├── Schema.java
│   │       │                           │       └── Tablet.java
│   │       │                           ├── schema/
│   │       │                           │   └── SchemaChangeManager.java
│   │       │                           ├── serialize/
│   │       │                           │   ├── DorisSerializer.java
│   │       │                           │   ├── SeaTunnelRowSerializer.java
│   │       │                           │   └── SeaTunnelRowSerializerFactory.java
│   │       │                           ├── sink/
│   │       │                           │   ├── DorisSink.java
│   │       │                           │   ├── DorisSinkFactory.java
│   │       │                           │   ├── HttpPutBuilder.java
│   │       │                           │   ├── LoadStatus.java
│   │       │                           │   ├── committer/
│   │       │                           │   │   ├── DorisCommitInfo.java
│   │       │                           │   │   ├── DorisCommitInfoSerializer.java
│   │       │                           │   │   └── DorisCommitter.java
│   │       │                           │   └── writer/
│   │       │                           │       ├── DorisSinkState.java
│   │       │                           │       ├── DorisSinkStateSerializer.java
│   │       │                           │       ├── DorisSinkWriter.java
│   │       │                           │       ├── DorisStreamLoad.java
│   │       │                           │       ├── LabelGenerator.java
│   │       │                           │       ├── LoadConstants.java
│   │       │                           │       ├── RecordBuffer.java
│   │       │                           │       └── RecordStream.java
│   │       │                           ├── source/
│   │       │                           │   ├── DorisSource.java
│   │       │                           │   ├── DorisSourceFactory.java
│   │       │                           │   ├── DorisSourceState.java
│   │       │                           │   ├── DorisSourceTable.java
│   │       │                           │   ├── reader/
│   │       │                           │   │   ├── DorisSourceReader.java
│   │       │                           │   │   └── DorisValueReader.java
│   │       │                           │   ├── serialization/
│   │       │                           │   │   └── Routing.java
│   │       │                           │   └── split/
│   │       │                           │       ├── DorisSourceSplit.java
│   │       │                           │       └── DorisSourceSplitEnumerator.java
│   │       │                           └── util/
│   │       │                               ├── DorisCatalogUtil.java
│   │       │                               ├── ErrorMessages.java
│   │       │                               ├── HttpUtil.java
│   │       │                               ├── ResponseUtil.java
│   │       │                               ├── SchemaUtils.java
│   │       │                               └── UnsupportedTypeConverterUtils.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── doris/
│   │                                   ├── catalog/
│   │                                   │   ├── DorisCreateTableTest.java
│   │                                   │   └── PreviewActionTest.java
│   │                                   ├── datatype/
│   │                                   │   ├── DorisTypeConvertorV1Test.java
│   │                                   │   └── DorisTypeConvertorV2Test.java
│   │                                   ├── split/
│   │                                   │   └── DorisSourceSplitEnumeratorTest.java
│   │                                   └── util/
│   │                                       └── DorisCatalogUtilTest.java
│   ├── connector-druid/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── druid/
│   │       │                           ├── config/
│   │       │                           │   └── DruidSinkOptions.java
│   │       │                           ├── exception/
│   │       │                           │   └── DruidConnectorException.java
│   │       │                           └── sink/
│   │       │                               ├── DruidSink.java
│   │       │                               ├── DruidSinkFactory.java
│   │       │                               └── DruidWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── druid/
│   │                                       └── DruidFactoryTest.java
│   ├── connector-easysearch/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── easysearch/
│   │       │                               ├── catalog/
│   │       │                               │   ├── EasysearchCatalog.java
│   │       │                               │   ├── EasysearchCatalogFactory.java
│   │       │                               │   └── EasysearchDataTypeConvertor.java
│   │       │                               ├── client/
│   │       │                               │   └── EasysearchClient.java
│   │       │                               ├── config/
│   │       │                               │   ├── EasysearchSinkCommonOptions.java
│   │       │                               │   ├── EasysearchSinkOptions.java
│   │       │                               │   └── EasysearchSourceOptions.java
│   │       │                               ├── constant/
│   │       │                               │   └── EzsTypeMappingSeaTunnelType.java
│   │       │                               ├── dto/
│   │       │                               │   ├── BulkResponse.java
│   │       │                               │   ├── EasysearchClusterInfo.java
│   │       │                               │   ├── IndexInfo.java
│   │       │                               │   └── source/
│   │       │                               │       ├── IndexDocsCount.java
│   │       │                               │       ├── ScrollResult.java
│   │       │                               │       └── SourceIndexInfo.java
│   │       │                               ├── exception/
│   │       │                               │   ├── EasysearchConnectorErrorCode.java
│   │       │                               │   └── EasysearchConnectorException.java
│   │       │                               ├── serialize/
│   │       │                               │   ├── EasysearchRowSerializer.java
│   │       │                               │   ├── KeyExtractor.java
│   │       │                               │   ├── SeaTunnelRowSerializer.java
│   │       │                               │   ├── index/
│   │       │                               │   │   ├── IndexSerializer.java
│   │       │                               │   │   ├── IndexSerializerFactory.java
│   │       │                               │   │   └── impl/
│   │       │                               │   │       ├── FixedValueIndexSerializer.java
│   │       │                               │   │       └── VariableIndexSerializer.java
│   │       │                               │   └── source/
│   │       │                               │       ├── DefaultSeaTunnelRowDeserializer.java
│   │       │                               │       ├── EasysearchRecord.java
│   │       │                               │       └── SeaTunnelRowDeserializer.java
│   │       │                               ├── sink/
│   │       │                               │   ├── EasysearchSink.java
│   │       │                               │   ├── EasysearchSinkFactory.java
│   │       │                               │   └── EasysearchSinkWriter.java
│   │       │                               ├── source/
│   │       │                               │   ├── EasysearchSource.java
│   │       │                               │   ├── EasysearchSourceFactory.java
│   │       │                               │   ├── EasysearchSourceReader.java
│   │       │                               │   ├── EasysearchSourceSplit.java
│   │       │                               │   ├── EasysearchSourceSplitEnumerator.java
│   │       │                               │   └── EasysearchSourceState.java
│   │       │                               ├── state/
│   │       │                               │   ├── EasysearchAggregatedCommitInfo.java
│   │       │                               │   ├── EasysearchCommitInfo.java
│   │       │                               │   └── EasysearchSinkState.java
│   │       │                               └── util/
│   │       │                                   ├── RegexUtils.java
│   │       │                                   └── SSLUtils.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── easysearch/
│   │                                       ├── EasysearchFactoryTest.java
│   │                                       └── EasysearchSourceTest.java
│   ├── connector-elasticsearch/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── elasticsearch/
│   │       │                               ├── catalog/
│   │       │                               │   ├── ElasticSearchCatalog.java
│   │       │                               │   ├── ElasticSearchCatalogFactory.java
│   │       │                               │   ├── ElasticSearchDataTypeConvertor.java
│   │       │                               │   └── ElasticSearchTypeConverter.java
│   │       │                               ├── client/
│   │       │                               │   ├── EsRestClient.java
│   │       │                               │   ├── EsType.java
│   │       │                               │   └── auth/
│   │       │                               │       ├── AbstractAuthenticationProvider.java
│   │       │                               │       ├── ApiKeyAuthProvider.java
│   │       │                               │       ├── ApiKeyEncodedAuthProvider.java
│   │       │                               │       ├── AuthenticationProvider.java
│   │       │                               │       ├── AuthenticationProviderFactory.java
│   │       │                               │       └── BasicAuthProvider.java
│   │       │                               ├── config/
│   │       │                               │   ├── AuthTypeEnum.java
│   │       │                               │   ├── ElasticsearchBaseOptions.java
│   │       │                               │   ├── ElasticsearchConfig.java
│   │       │                               │   ├── ElasticsearchSinkOptions.java
│   │       │                               │   ├── ElasticsearchSourceOptions.java
│   │       │                               │   ├── SearchApiTypeEnum.java
│   │       │                               │   └── SearchTypeEnum.java
│   │       │                               ├── constant/
│   │       │                               │   ├── ElasticsearchVersion.java
│   │       │                               │   └── EsTypeMappingSeaTunnelType.java
│   │       │                               ├── dto/
│   │       │                               │   ├── BulkResponse.java
│   │       │                               │   ├── ElasticsearchClusterInfo.java
│   │       │                               │   ├── IndexInfo.java
│   │       │                               │   └── source/
│   │       │                               │       ├── IndexDocsCount.java
│   │       │                               │       ├── PointInTimeResult.java
│   │       │                               │       └── ScrollResult.java
│   │       │                               ├── exception/
│   │       │                               │   ├── ElasticsearchConnectorErrorCode.java
│   │       │                               │   └── ElasticsearchConnectorException.java
│   │       │                               ├── serialize/
│   │       │                               │   ├── ElasticsearchRowSerializer.java
│   │       │                               │   ├── KeyExtractor.java
│   │       │                               │   ├── SeaTunnelRowSerializer.java
│   │       │                               │   ├── index/
│   │       │                               │   │   ├── IndexSerializer.java
│   │       │                               │   │   ├── IndexSerializerFactory.java
│   │       │                               │   │   └── impl/
│   │       │                               │   │       ├── FixedValueIndexSerializer.java
│   │       │                               │   │       └── VariableIndexSerializer.java
│   │       │                               │   ├── source/
│   │       │                               │   │   ├── DefaultSeaTunnelRowDeserializer.java
│   │       │                               │   │   ├── ElasticsearchRecord.java
│   │       │                               │   │   └── SeaTunnelRowDeserializer.java
│   │       │                               │   └── type/
│   │       │                               │       ├── IndexTypeSerializer.java
│   │       │                               │       ├── IndexTypeSerializerFactory.java
│   │       │                               │       └── impl/
│   │       │                               │           ├── NotIndexTypeSerializer.java
│   │       │                               │           └── RequiredIndexTypeSerializer.java
│   │       │                               ├── sink/
│   │       │                               │   ├── ElasticsearchSink.java
│   │       │                               │   ├── ElasticsearchSinkFactory.java
│   │       │                               │   └── ElasticsearchSinkWriter.java
│   │       │                               ├── source/
│   │       │                               │   ├── ElasticsearchSource.java
│   │       │                               │   ├── ElasticsearchSourceFactory.java
│   │       │                               │   ├── ElasticsearchSourceReader.java
│   │       │                               │   ├── ElasticsearchSourceSplit.java
│   │       │                               │   ├── ElasticsearchSourceSplitEnumerator.java
│   │       │                               │   └── ElasticsearchSourceState.java
│   │       │                               ├── state/
│   │       │                               │   ├── ElasticsearchAggregatedCommitInfo.java
│   │       │                               │   ├── ElasticsearchCommitInfo.java
│   │       │                               │   └── ElasticsearchSinkState.java
│   │       │                               └── util/
│   │       │                                   ├── RegexUtils.java
│   │       │                                   └── SSLUtils.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── elasticsearch/
│   │                                       ├── ElasticsearchFactoryTest.java
│   │                                       ├── ElasticsearchSourceTest.java
│   │                                       ├── catalog/
│   │                                       │   └── PreviewActionTest.java
│   │                                       └── serialize/
│   │                                           └── ElasticsearchRowSerializerTest.java
│   ├── connector-email/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── seatunnel/
│   │       │   │               └── connectors/
│   │       │   │                   └── seatunnel/
│   │       │   │                       └── email/
│   │       │   │                           ├── config/
│   │       │   │                           │   ├── EmailSinkConfig.java
│   │       │   │                           │   └── EmailSinkOptions.java
│   │       │   │                           ├── exception/
│   │       │   │                           │   ├── EmailConnectorErrorCode.java
│   │       │   │                           │   └── EmailConnectorException.java
│   │       │   │                           └── sink/
│   │       │   │                               ├── EmailSink.java
│   │       │   │                               ├── EmailSinkFactory.java
│   │       │   │                               └── EmailSinkWriter.java
│   │       │   └── resources/
│   │       │       └── fake_to_emailsink_flink.conf
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── email/
│   │                                       ├── EmailFactoryTest.java
│   │                                       └── EmailSinkWriterTest.java
│   ├── connector-fake/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── fake/
│   │       │                               ├── config/
│   │       │                               │   ├── FakeConfig.java
│   │       │                               │   ├── FakeSourceOptions.java
│   │       │                               │   └── MultipleTableFakeSourceConfig.java
│   │       │                               ├── exception/
│   │       │                               │   └── FakeConnectorException.java
│   │       │                               ├── source/
│   │       │                               │   ├── FakeDataGenerator.java
│   │       │                               │   ├── FakeSource.java
│   │       │                               │   ├── FakeSourceFactory.java
│   │       │                               │   ├── FakeSourceReader.java
│   │       │                               │   ├── FakeSourceSplit.java
│   │       │                               │   └── FakeSourceSplitEnumerator.java
│   │       │                               ├── state/
│   │       │                               │   └── FakeSourceState.java
│   │       │                               └── utils/
│   │       │                                   ├── AutoIncrementIdGenerator.java
│   │       │                                   ├── FakeDataRandomUtils.java
│   │       │                                   └── IdGeneratorUtils.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── seatunnel/
│   │           │               └── connectors/
│   │           │                   └── seatunnel/
│   │           │                       └── fake/
│   │           │                           ├── config/
│   │           │                           │   └── MultipleTableFakeSourceConfigTest.java
│   │           │                           └── source/
│   │           │                               ├── FakeDataGeneratorTest.java
│   │           │                               ├── FakeFactoryTest.java
│   │           │                               └── FakeSourceSplitEnumeratorTest.java
│   │           └── resources/
│   │               ├── complex.schema.conf
│   │               ├── fake-auto-increment-id.conf
│   │               ├── fake-data.column.conf
│   │               ├── fake-data.schema.conf
│   │               ├── fake-data.schema.default.conf
│   │               ├── fake-vector.conf
│   │               ├── multiple_table.conf
│   │               └── simple.schema.conf
│   ├── connector-file/
│   │   ├── connector-file-base/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── file/
│   │   │       │                               ├── catalog/
│   │   │       │                               │   └── AbstractFileCatalog.java
│   │   │       │                               ├── config/
│   │   │       │                               │   ├── ArchiveCompressFormat.java
│   │   │       │                               │   ├── BaseFileSinkConfig.java
│   │   │       │                               │   ├── BaseFileSourceConfig.java
│   │   │       │                               │   ├── BaseMultipleTableFileSourceConfig.java
│   │   │       │                               │   ├── CompressFormat.java
│   │   │       │                               │   ├── DelimiterConfig.java
│   │   │       │                               │   ├── ExcelEngine.java
│   │   │       │                               │   ├── FileBaseOptions.java
│   │   │       │                               │   ├── FileBaseSinkOptions.java
│   │   │       │                               │   ├── FileBaseSourceOptions.java
│   │   │       │                               │   ├── FileCompareMode.java
│   │   │       │                               │   ├── FileFormat.java
│   │   │       │                               │   ├── FileSyncMode.java
│   │   │       │                               │   ├── FileSystemType.java
│   │   │       │                               │   ├── FileUpdateStrategy.java
│   │   │       │                               │   ├── HadoopConf.java
│   │   │       │                               │   └── PartitionConfig.java
│   │   │       │                               ├── excel/
│   │   │       │                               │   ├── ExcelCellUtils.java
│   │   │       │                               │   └── ExcelReaderListener.java
│   │   │       │                               ├── exception/
│   │   │       │                               │   ├── FileConnectorErrorCode.java
│   │   │       │                               │   └── FileConnectorException.java
│   │   │       │                               ├── factory/
│   │   │       │                               │   └── BaseMultipleTableFileSinkFactory.java
│   │   │       │                               ├── hadoop/
│   │   │       │                               │   ├── HadoopFileSystemProxy.java
│   │   │       │                               │   └── HadoopLoginFactory.java
│   │   │       │                               ├── sink/
│   │   │       │                               │   ├── BaseFileSink.java
│   │   │       │                               │   ├── BaseFileSinkWriter.java
│   │   │       │                               │   ├── BaseMultipleTableFileSink.java
│   │   │       │                               │   ├── commit/
│   │   │       │                               │   │   ├── FileAggregatedCommitInfo.java
│   │   │       │                               │   │   ├── FileCommitInfo.java
│   │   │       │                               │   │   └── FileSinkAggregatedCommitter.java
│   │   │       │                               │   ├── config/
│   │   │       │                               │   │   ├── FileSinkConfig.java
│   │   │       │                               │   │   └── SaveMode.java
│   │   │       │                               │   ├── state/
│   │   │       │                               │   │   └── FileSinkState.java
│   │   │       │                               │   ├── util/
│   │   │       │                               │   │   ├── ExcelGenerator.java
│   │   │       │                               │   │   └── XmlWriter.java
│   │   │       │                               │   └── writer/
│   │   │       │                               │       ├── AbstractWriteStrategy.java
│   │   │       │                               │       ├── BinaryWriteStrategy.java
│   │   │       │                               │       ├── CanalJsonWriteStrategy.java
│   │   │       │                               │       ├── CsvWriteStrategy.java
│   │   │       │                               │       ├── DebeziumJsonWriteStrategy.java
│   │   │       │                               │       ├── ExcelWriteStrategy.java
│   │   │       │                               │       ├── JsonWriteStrategy.java
│   │   │       │                               │       ├── MaxWellJsonWriteStrategy.java
│   │   │       │                               │       ├── OrcWriteStrategy.java
│   │   │       │                               │       ├── ParquetWriteStrategy.java
│   │   │       │                               │       ├── TextWriteStrategy.java
│   │   │       │                               │       ├── Transaction.java
│   │   │       │                               │       ├── WriteStrategy.java
│   │   │       │                               │       ├── WriteStrategyFactory.java
│   │   │       │                               │       └── XmlWriteStrategy.java
│   │   │       │                               └── source/
│   │   │       │                                   ├── BaseFileSource.java
│   │   │       │                                   ├── BaseFileSourceReader.java
│   │   │       │                                   ├── BaseMultipleTableFileSource.java
│   │   │       │                                   ├── reader/
│   │   │       │                                   │   ├── AbstractReadStrategy.java
│   │   │       │                                   │   ├── BinaryReadStrategy.java
│   │   │       │                                   │   ├── CsvReadStrategy.java
│   │   │       │                                   │   ├── ExcelReadStrategy.java
│   │   │       │                                   │   ├── JsonReadStrategy.java
│   │   │       │                                   │   ├── MarkdownReadStrategy.java
│   │   │       │                                   │   ├── MultipleTableFileSourceReader.java
│   │   │       │                                   │   ├── OrcReadStrategy.java
│   │   │       │                                   │   ├── ParquetReadStrategy.java
│   │   │       │                                   │   ├── ReadStrategy.java
│   │   │       │                                   │   ├── ReadStrategyFactory.java
│   │   │       │                                   │   ├── TextReadStrategy.java
│   │   │       │                                   │   └── XmlReadStrategy.java
│   │   │       │                                   ├── split/
│   │   │       │                                   │   ├── AccordingToSplitSizeSplitStrategy.java
│   │   │       │                                   │   ├── DefaultFileSplitStrategy.java
│   │   │       │                                   │   ├── FileSourceSplit.java
│   │   │       │                                   │   ├── FileSourceSplitEnumerator.java
│   │   │       │                                   │   ├── FileSplitStrategy.java
│   │   │       │                                   │   ├── FileSplitStrategyFactory.java
│   │   │       │                                   │   ├── MultipleTableFileSourceSplitEnumerator.java
│   │   │       │                                   │   ├── MultipleTableFileSplitStrategy.java
│   │   │       │                                   │   └── ParquetFileSplitStrategy.java
│   │   │       │                                   └── state/
│   │   │       │                                       └── FileSourceState.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── seatunnel/
│   │   │           │               └── connectors/
│   │   │           │                   └── seatunnel/
│   │   │           │                       └── file/
│   │   │           │                           ├── hadoop/
│   │   │           │                           │   ├── HadoopFileSystemProxyKerberosRenewTest.java
│   │   │           │                           │   └── HadoopLoginFactoryTest.java
│   │   │           │                           ├── reader/
│   │   │           │                           │   ├── BinaryReadStrategyTest.java
│   │   │           │                           │   ├── ExcelReadStrategyTest.java
│   │   │           │                           │   ├── FileFilterPatternTest.java
│   │   │           │                           │   └── StreamLineSplitterTest.java
│   │   │           │                           ├── source/
│   │   │           │                           │   ├── reader/
│   │   │           │                           │   │   ├── AbstractReadStrategyTest.java
│   │   │           │                           │   │   ├── CsvReadStrategyTest.java
│   │   │           │                           │   │   ├── MarkdownReadStrategyTest.java
│   │   │           │                           │   │   ├── ReadStrategySplitFallbackTest.java
│   │   │           │                           │   │   ├── TempCollector.java
│   │   │           │                           │   │   └── UpdateSyncModeTest.java
│   │   │           │                           │   └── split/
│   │   │           │                           │       ├── FileSourceSplitCompatibilityTest.java
│   │   │           │                           │       ├── FileSourceSplitEnumeratorTest.java
│   │   │           │                           │       ├── FileSplitStrategyFactoryTest.java
│   │   │           │                           │       ├── MultipleTableFileSourceSplitEnumeratorTest.java
│   │   │           │                           │       └── ParquetFileSplitStrategyTest.java
│   │   │           │                           ├── util/
│   │   │           │                           │   └── FileSystemUtilsTest.java
│   │   │           │                           └── writer/
│   │   │           │                               ├── CsvWriteStrategyTest.java
│   │   │           │                               ├── ExcelGeneratorTest.java
│   │   │           │                               ├── FileSinkConfigTest.java
│   │   │           │                               ├── OrcReadStrategyTest.java
│   │   │           │                               ├── OrcWriteStrategyTest.java
│   │   │           │                               ├── ParquetReadStrategyTest.java
│   │   │           │                               ├── ParquetWriteStrategyTest.java
│   │   │           │                               ├── ReadStrategyEncodingTest.java
│   │   │           │                               └── XmlReadStrategyTest.java
│   │   │           └── resources/
│   │   │               ├── csv/
│   │   │               │   ├── special_quote_char_break_line.csv
│   │   │               │   ├── utf8_bom_with_header.csv
│   │   │               │   └── utf8_bom_without_header.csv
│   │   │               ├── encoding/
│   │   │               │   ├── gbk.json
│   │   │               │   ├── gbk.txt
│   │   │               │   ├── gbk.xml
│   │   │               │   ├── gbk_use_attr_format.xml
│   │   │               │   ├── test_read_json.conf
│   │   │               │   ├── test_read_text.conf
│   │   │               │   ├── test_read_xml.conf
│   │   │               │   └── test_read_xml_use_attr_format.conf
│   │   │               ├── excel/
│   │   │               │   ├── e2e.xls
│   │   │               │   ├── e2e.xlsx
│   │   │               │   ├── e2exls.conf
│   │   │               │   ├── test_read_excel.conf
│   │   │               │   ├── test_read_excel.xlsx
│   │   │               │   ├── test_read_excel_data_string.conf
│   │   │               │   ├── test_read_excel_date_string.xlsx
│   │   │               │   ├── test_read_excel_formula.xlsx
│   │   │               │   ├── test_read_excel_large.conf
│   │   │               │   └── test_read_formula.xls
│   │   │               ├── filter-pattern/
│   │   │               │   └── json/
│   │   │               │       ├── json2024/
│   │   │               │       │   └── 202401.json
│   │   │               │       ├── json2025/
│   │   │               │       │   ├── 202501.json
│   │   │               │       │   └── test_read_json.conf
│   │   │               │       └── people.json
│   │   │               ├── hive.parquet
│   │   │               ├── test-csv.csv
│   │   │               ├── test.csv
│   │   │               ├── test.md
│   │   │               ├── test.orc
│   │   │               ├── test_read_orc.conf
│   │   │               ├── test_read_parquet.conf
│   │   │               ├── test_read_parquet2.conf
│   │   │               ├── test_user_config_read_parquet.conf
│   │   │               ├── test_write_hdfs.conf
│   │   │               ├── test_write_hdfs_default_format.conf
│   │   │               ├── test_write_hive.conf
│   │   │               ├── timestamp_as_int64.parquet
│   │   │               ├── timestamp_as_int96.parquet
│   │   │               └── xml/
│   │   │                   ├── name=xmlTest/
│   │   │                   │   └── test_read.xml
│   │   │                   └── test_read_xml.conf
│   │   ├── connector-file-base-hadoop/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── hdfs/
│   │   │                                           ├── sink/
│   │   │                                           │   └── BaseHdfsFileSink.java
│   │   │                                           └── source/
│   │   │                                               ├── BaseHdfsFileSource.java
│   │   │                                               └── config/
│   │   │                                                   └── HdfsSourceConfigOptions.java
│   │   ├── connector-file-cos/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── cos/
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── CosConf.java
│   │   │       │   │                               │   ├── CosFileBaseOptions.java
│   │   │       │   │                               │   ├── CosFileSinkOptions.java
│   │   │       │   │                               │   └── CosFileSourceOptions.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── CosFileSink.java
│   │   │       │   │                               │   └── CosFileSinkFactory.java
│   │   │       │   │                               └── source/
│   │   │       │   │                                   ├── CosFileSource.java
│   │   │       │   │                                   └── CosFileSourceFactory.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── cos/
│   │   │                                           └── CosFileFactoryTest.java
│   │   ├── connector-file-ftp/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── ftp/
│   │   │       │   │                               ├── catalog/
│   │   │       │   │                               │   ├── FtpFileCatalog.java
│   │   │       │   │                               │   └── FtpFileCatalogFactory.java
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── FTPFileSourceConfig.java
│   │   │       │   │                               │   ├── FtpConf.java
│   │   │       │   │                               │   ├── FtpFileBaseOptions.java
│   │   │       │   │                               │   ├── FtpFileSinkOptions.java
│   │   │       │   │                               │   ├── FtpFileSourceOptions.java
│   │   │       │   │                               │   └── MultipleTableFTPFileSourceConfig.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── FtpFileSink.java
│   │   │       │   │                               │   └── FtpFileSinkFactory.java
│   │   │       │   │                               ├── source/
│   │   │       │   │                               │   ├── FtpFileSource.java
│   │   │       │   │                               │   └── FtpFileSourceFactory.java
│   │   │       │   │                               └── system/
│   │   │       │   │                                   ├── FtpConnectionMode.java
│   │   │       │   │                                   └── SeaTunnelFTPFileSystem.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── ftp/
│   │   │                                           ├── FtpFileFactoryTest.java
│   │   │                                           └── system/
│   │   │                                               └── SeaTunnelFTPFileSystemTest.java
│   │   ├── connector-file-hadoop/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── file/
│   │   │       │                               └── hdfs/
│   │   │       │                                   ├── catalog/
│   │   │       │                                   │   ├── HdfsFileCatalog.java
│   │   │       │                                   │   └── HdfsFileCatalogFactory.java
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── HdfsFileHadoopConfig.java
│   │   │       │                                   │   ├── HdfsFileSinkOptions.java
│   │   │       │                                   │   ├── HdfsFileSourceConfig.java
│   │   │       │                                   │   └── MultipleTableHdfsFileSourceConfig.java
│   │   │       │                                   ├── sink/
│   │   │       │                                   │   ├── HdfsFileSink.java
│   │   │       │                                   │   └── HdfsFileSinkFactory.java
│   │   │       │                                   └── source/
│   │   │       │                                       ├── HdfsFileSource.java
│   │   │       │                                       └── HdfsFileSourceFactory.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── hdfs/
│   │   │                                           ├── HdfsFileFactoryTest.java
│   │   │                                           ├── HdfsFileSinkTest.java
│   │   │                                           ├── HdfsFileSourceConfigTest.java
│   │   │                                           └── source/
│   │   │                                               └── split/
│   │   │                                                   ├── HdfsFileAccordingToSplitSizeSplitStrategyTest.java
│   │   │                                                   └── HdfsFileSplitStrategyFactoryTest.java
│   │   ├── connector-file-jindo-oss/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── oss/
│   │   │       │   │                               └── jindo/
│   │   │       │   │                                   ├── config/
│   │   │       │   │                                   │   ├── OssConf.java
│   │   │       │   │                                   │   ├── OssFileBaseOptions.java
│   │   │       │   │                                   │   ├── OssFileSinkOptions.java
│   │   │       │   │                                   │   └── OssFileSourceOptions.java
│   │   │       │   │                                   ├── exception/
│   │   │       │   │                                   │   └── OssJindoConnectorException.java
│   │   │       │   │                                   ├── sink/
│   │   │       │   │                                   │   ├── OssFileSink.java
│   │   │       │   │                                   │   └── OssFileSinkFactory.java
│   │   │       │   │                                   └── source/
│   │   │       │   │                                       ├── OssFileSource.java
│   │   │       │   │                                       └── OssFileSourceFactory.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── test/
│   │   │                                   └── OssJindoFactoryTest.java
│   │   ├── connector-file-local/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── file/
│   │   │       │                               └── local/
│   │   │       │                                   ├── catalog/
│   │   │       │                                   │   ├── LocalFileCatalog.java
│   │   │       │                                   │   └── LocalFileCatalogFactory.java
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── LocalFileHadoopConf.java
│   │   │       │                                   │   ├── LocalFileSinkOptions.java
│   │   │       │                                   │   └── LocalFileSourceOptions.java
│   │   │       │                                   ├── sink/
│   │   │       │                                   │   ├── LocalFileSink.java
│   │   │       │                                   │   └── LocalFileSinkFactory.java
│   │   │       │                                   └── source/
│   │   │       │                                       ├── LocalFileSource.java
│   │   │       │                                       ├── LocalFileSourceFactory.java
│   │   │       │                                       ├── config/
│   │   │       │                                       │   ├── LocalFileSourceConfig.java
│   │   │       │                                       │   └── MultipleTableLocalFileSourceConfig.java
│   │   │       │                                       └── split/
│   │   │       │                                           └── LocalFileAccordingToSplitSizeSplitStrategy.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── seatunnel/
│   │   │           │               └── connectors/
│   │   │           │                   └── seatunnel/
│   │   │           │                       └── file/
│   │   │           │                           └── local/
│   │   │           │                               ├── LocalFileFactoryTest.java
│   │   │           │                               ├── LocalFileSourceTest.java
│   │   │           │                               ├── LocalFileTest.java
│   │   │           │                               └── SplitFileStrategyTest.java
│   │   │           └── resources/
│   │   │               ├── test_data.txt
│   │   │               ├── test_split_csv_data.csv
│   │   │               ├── test_split_empty_data.csv
│   │   │               ├── test_split_special_row_delimiter_data.txt
│   │   │               └── utf8_bom_split.csv
│   │   ├── connector-file-obs/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── obs/
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── ObsConf.java
│   │   │       │   │                               │   ├── ObsFileBaseOptions.java
│   │   │       │   │                               │   ├── ObsFileSinkOptions.java
│   │   │       │   │                               │   └── ObsFileSourceOptions.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── ObsFileSink.java
│   │   │       │   │                               │   └── ObsFileSinkFactory.java
│   │   │       │   │                               └── source/
│   │   │       │   │                                   ├── ObsFileSource.java
│   │   │       │   │                                   └── ObsFileSourceFactory.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── obs/
│   │   │                                           └── ObsFileFactoryTest.java
│   │   ├── connector-file-oss/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── oss/
│   │   │       │   │                               ├── catalog/
│   │   │       │   │                               │   ├── OssFileCatalog.java
│   │   │       │   │                               │   └── OssFileCatalogFactory.java
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── OssFileBaseOptions.java
│   │   │       │   │                               │   ├── OssFileSinkOptions.java
│   │   │       │   │                               │   ├── OssFileSourceOptions.java
│   │   │       │   │                               │   └── OssHadoopConf.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── OssFileSink.java
│   │   │       │   │                               │   └── OssFileSinkFactory.java
│   │   │       │   │                               └── source/
│   │   │       │   │                                   ├── OssFileSource.java
│   │   │       │   │                                   ├── OssFileSourceFactory.java
│   │   │       │   │                                   └── config/
│   │   │       │   │                                       ├── MultipleTableOssFileSourceConfig.java
│   │   │       │   │                                       └── OssFileSourceConfig.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── oss/
│   │   │                                           └── OssFileFactoryTest.java
│   │   ├── connector-file-s3/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── s3/
│   │   │       │   │                               ├── catalog/
│   │   │       │   │                               │   ├── S3FileCatalog.java
│   │   │       │   │                               │   └── S3FileCatalogFactory.java
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── S3FileBaseOptions.java
│   │   │       │   │                               │   ├── S3FileSinkOptions.java
│   │   │       │   │                               │   ├── S3FileSourceOptions.java
│   │   │       │   │                               │   └── S3HadoopConf.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── S3FileSink.java
│   │   │       │   │                               │   └── S3FileSinkFactory.java
│   │   │       │   │                               └── source/
│   │   │       │   │                                   ├── S3FileSource.java
│   │   │       │   │                                   ├── S3FileSourceFactory.java
│   │   │       │   │                                   └── config/
│   │   │       │   │                                       ├── MultipleTableS3FileSourceConfig.java
│   │   │       │   │                                       └── S3FileSourceConfig.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── s3/
│   │   │                                           ├── S3FileFactoryTest.java
│   │   │                                           └── config/
│   │   │                                               └── S3HadoopConfTest.java
│   │   ├── connector-file-sftp/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── sftp/
│   │   │       │   │                               ├── catalog/
│   │   │       │   │                               │   ├── SftpFileCatalog.java
│   │   │       │   │                               │   └── SftpFileCatalogFactory.java
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── MultipleTableSFTPFileSourceConfig.java
│   │   │       │   │                               │   ├── SFTPFileSourceConfig.java
│   │   │       │   │                               │   ├── SftpConf.java
│   │   │       │   │                               │   ├── SftpFileBaseOptions.java
│   │   │       │   │                               │   ├── SftpFileSinkOptions.java
│   │   │       │   │                               │   └── SftpFileSourceOptions.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── SftpFileSink.java
│   │   │       │   │                               │   └── SftpFileSinkFactory.java
│   │   │       │   │                               ├── source/
│   │   │       │   │                               │   ├── SftpFileSource.java
│   │   │       │   │                               │   └── SftpFileSourceFactory.java
│   │   │       │   │                               └── system/
│   │   │       │   │                                   ├── SFTPConnectionPool.java
│   │   │       │   │                                   ├── SFTPFileSystem.java
│   │   │       │   │                                   └── SFTPInputStream.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── sftp/
│   │   │                                           ├── SftpFileFactoryTest.java
│   │   │                                           └── system/
│   │   │                                               └── SftpFileSystemTest.java
│   │   └── pom.xml
│   ├── connector-fluss/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── fluss/
│   │                                       ├── config/
│   │                                       │   ├── FlussBaseOptions.java
│   │                                       │   └── FlussSinkOptions.java
│   │                                       └── sink/
│   │                                           ├── FlussSink.java
│   │                                           ├── FlussSinkFactory.java
│   │                                           └── FlussSinkWriter.java
│   ├── connector-google-firestore/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── google/
│   │       │                               └── firestore/
│   │       │                                   ├── config/
│   │       │                                   │   ├── FirestoreParameters.java
│   │       │                                   │   └── FirestoreSinkOptions.java
│   │       │                                   ├── exception/
│   │       │                                   │   ├── FirestoreConnectorErrorCode.java
│   │       │                                   │   └── FirestoreConnectorException.java
│   │       │                                   ├── serialize/
│   │       │                                   │   ├── DefaultSeaTunnelRowSerializer.java
│   │       │                                   │   └── SeaTunnelRowSerializer.java
│   │       │                                   └── sink/
│   │       │                                       ├── FirestoreSink.java
│   │       │                                       ├── FirestoreSinkFactory.java
│   │       │                                       └── FirestoreSinkWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── google/
│   │                                       └── firestore/
│   │                                           └── FirestoreFactoryTest.java
│   ├── connector-google-sheets/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── google/
│   │       │                               └── sheets/
│   │       │                                   ├── config/
│   │       │                                   │   ├── SheetsParameters.java
│   │       │                                   │   └── SheetsSourceOptions.java
│   │       │                                   ├── deserialize/
│   │       │                                   │   ├── GoogleSheetsDeserializer.java
│   │       │                                   │   └── SeaTunnelRowDeserializer.java
│   │       │                                   ├── exception/
│   │       │                                   │   ├── GoogleSheetsConnectorException.java
│   │       │                                   │   ├── GoogleSheetsError.java
│   │       │                                   │   └── GoogleSheetsErrorCode.java
│   │       │                                   └── source/
│   │       │                                       ├── SheetsSource.java
│   │       │                                       ├── SheetsSourceFactory.java
│   │       │                                       └── SheetsSourceReader.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── google/
│   │                                       └── sheets/
│   │                                           ├── SheetsFactoryTest.java
│   │                                           ├── deserialize/
│   │                                           │   └── GoogleSheetsDeserializerTest.java
│   │                                           └── exception/
│   │                                               └── GoogleSheetsErrorTest.java
│   ├── connector-graphql/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── graphql/
│   │       │                               ├── Exception/
│   │       │                               │   ├── GraphQLConnectorErrorCode.java
│   │       │                               │   └── GraphQLConnectorException.java
│   │       │                               ├── config/
│   │       │                               │   ├── GraphQLSinkOptions.java
│   │       │              

================================================
FILE CONTENTS
================================================

================================================
FILE: .asf.yaml
================================================
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

github:
  description: SeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.
  homepage: https://seatunnel.apache.org/
  labels:
    - data-integration
    - multimodal
    - llm
    - embeddings
    - change-data-capture
    - cdc
    - high-performance
    - offline
    - real-time
    - batch
    - streaming
    - data-ingestion
    - apache
    - elt
  collaborators:
    - dybyte
    - chl-wxp
    - LiJie20190102
    - yzeng1618
    - fcb-xiaobo
    - LeonYoah
    - silenceland
    - SEZ9
    - boy-xiaozhang
    - ZmmBigdata
  enabled_merge_buttons:
    squash: true
    merge: false
    rebase: false
  protected_branches:
    dev:
      required_status_checks:
        strict: true
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        required_approving_review_count: 2

notifications:
  commits:      commits@seatunnel.apache.org
  issues:       commits@seatunnel.apache.org
  pullrequests: commits@seatunnel.apache.org
  pullrequests_status:  commits@seatunnel.apache.org
  pullrequests_comment: commits@seatunnel.apache.org


================================================
FILE: .dlc.json
================================================
{
  "ignorePatterns": [
    {
      "pattern": "^http://localhost"
    },
    {
      "pattern": "^https://mvnrepository.com"
    },
    {
      "pattern": "^https://www.qutoutiao.net"
    },
    {
      "pattern": "^https://img.shields.io"
    },
    {
      "pattern": "^https://json.org/"
    },
    {
      "pattern": "^/docs/category"
    },
    {
      "pattern": "^https://opencollective.com"
    },
    {
      "pattern": "^https://twitter.com/ASFSeaTunnel"
    },
    {
      "pattern": "^https://github.com/apache/seatunnel/commit/"
    }
  ],
  "timeout": "10s",
  "retryOn429": true,
  "retryCount": 10,
  "fallbackRetryDelay": "1000s",
  "aliveStatusCodes": [
    0,
    200,
    401,
    403
  ]
}



================================================
FILE: .gitattributes
================================================
*.sh text eol=lf


================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: Bug report
title: "[Bug] [Module Name] Bug title"
description: Problems and issues with code of seatunnel
labels: ["bug"]
body:
  - type: markdown
    attributes:
      value: |
        Please make sure what you are reporting is indeed a bug with reproducible steps.
        For better global communication, Please write in English.

        If you feel the description in English is not clear, then you can append description in Chinese, thanks!

  - type: checkboxes
    attributes:
      label: Search before asking
      description: >
        Please make sure to search in the [issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22bug%22)
        first to see whether the same issue was reported already.
      options:
        - label: >
            I had searched in the [issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22bug%22) and found
            no similar issues.
          required: true

  - type: textarea
    attributes:
      label: What happened
      description: Describe what happened.
      placeholder: >
        Please provide the context in which the problem occurred and explain what happened
    validations:
      required: true

  - type: textarea
    attributes:
      label: SeaTunnel Version
      description: Provide SeaTunnel version.
      placeholder: >
        Please provide the version of SeaTunnel.
    validations:
      required: true

  - type: textarea
    attributes:
      label: SeaTunnel Config
      description: Provide SeaTunnel Config, please delete sensitive information to prevent information leakage
      placeholder: >
        Please provide the SeaTunnel Config here.
      render: conf
    validations:
      required: true

  - type: textarea
    attributes:
      label: Running Command
      description: Provide the command you begin and run SeaTunnel job.
      placeholder: >
        Please provide the running command here.
      render: shell
    validations:
      required: true

  - type: textarea
    attributes:
      label: Error Exception
      description: Provide the error exception when you run your command.
      placeholder: >
        Please provide the error exception here.
      render: log
    validations:
      required: true

  - type: textarea
    attributes:
      label: Zeta or Flink or Spark Version
      description: Provide Zeta or Flink or Spark Version.
      placeholder: >
        Please provide the version of Zeta or Flink or Spark.
    validations:
      required: false

  - type: textarea
    attributes:
      label: Java or Scala Version
      description: Provide Java or Scala Version.
      placeholder: >
        Please provide the version of Java or Scala.
    validations:
      required: false

  - type: textarea
    attributes:
      label: Screenshots
      description: Provide the screenshots if necessary.
      placeholder: >
        Please copy-paste the screenshots here.
    validations:
      required: false

  - type: checkboxes
    attributes:
      label: Are you willing to submit PR?
      description: >
        This is absolutely not required, but we are happy to guide you in the contribution process
        especially if you already have a good understanding of how to implement the fix.
        seatunnel is a totally community-driven project and we love to bring new contributors in.
      options:
        - label: Yes I am willing to submit a PR!

  - type: checkboxes
    attributes:
      label: Code of Conduct
      description: |
        The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
      options:
        - label: >
            I agree to follow this project's
            [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
          required: true

  - type: markdown
    attributes:
      value: "Thanks for completing our form, and we will reply you as soon as possible."


================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Feature request
description: Suggest an idea for seatunnel
title: "[Feature][Module Name] Feature title"
labels: ["Feature"]
body:
  - type: markdown
    attributes:
      value: |
        For better global communication, Please write in English.

        If you feel the description in English is not clear, then you can append description in Chinese, thanks!

  - type: checkboxes
    attributes:
      label: Search before asking
      description: >
        Please make sure to search in the [feature](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22Feature%22) first
        to see whether the same feature was requested already.
      options:
        - label: >
            I had searched in the [feature](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22Feature%22) and found no
            similar feature requirement.
          required: true

  - type: textarea
    attributes:
      label: Description
      description: Please describe the function you want in as much detail as possible.
      placeholder: >
        Rather than telling us how you might implement this feature, try to take a
        step back and describe what you are trying to achieve.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Usage Scenario
      description: Please describe usage scenario of this feature.

  - type: textarea
    attributes:
      label: Related issues
      description: Is there currently another issue associated with this?

  - type: checkboxes
    attributes:
      label: Are you willing to submit a PR?
      description: >
        This is absolutely not required, but we are happy to guide you in the contribution process
        especially if you already have a good understanding of how to implement the feature.
        seatunnel is a totally community-driven project and we love to bring new contributors in.
      options:
        - label: Yes I am willing to submit a PR!

  - type: checkboxes
    attributes:
      label: Code of Conduct
      description: |
        The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
      options:
        - label: |
            I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
          required: true

  - type: markdown
    attributes:
      value: "Thanks for completing our form, and we will reply you as soon as possible."


================================================
FILE: .github/ISSUE_TEMPLATE/umbrella.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: Umbrella
title: "[Umbrella] "
description: An umbrella issue with multiple sub-tasks
labels: [ "umbrella" ]
body:

  - type: checkboxes
    attributes:
      label: Code of Conduct
      description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
      options:
        - label: >
            I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
          required: true

  - type: checkboxes
    attributes:
      label: Search before asking
      description: >
        Please make sure to search in the [issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22bug%22)
        first to see whether the same issue was reported already.
      options:
        - label: >
            I had searched in the [issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22bug%22) and found
            no similar issues.
          required: true

  - type: textarea
    attributes:
      label: Describe the proposal
      placeholder: >
        Please describe the content of the proposal clearly.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Task list
      description: >
        For more details, please refer to [github docs](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-task-lists).
      placeholder: >
        Please create sub-tasks with the pre-create issues here and @ the assignees if you know any of them. A simple example is as follows:
          - [ ] #1
            - [ ] #2 @user1
            - [ ] #3
          - [ ] #2 @user2
          - [ ] #3
    validations:
      required: true

  - type: checkboxes
    attributes:
      label: Are you willing to submit PR?
      description: >
        This is absolutely not required, but we are happy to guide you in the contribution process
        especially if you already have a good understanding of how to implement the fix.
        seatunnel is a totally community-driven project and we love to bring new contributors in.
      options:
        - label: Yes I am willing to submit a PR!

  - type: markdown
    attributes:
      value: "Thanks for taking the time to propose an umbrella issue!"


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--

Thank you for contributing to SeaTunnel! Please make sure that your code changes
are covered with tests. And in case of new features or big changes
remember to adjust the documentation.

Feel free to ping committers for the review!

## Contribution Checklist
  - Make sure that the pull request corresponds to a [GITHUB issue](https://github.com/apache/seatunnel/issues).
  - Name the pull request in the form "[Feature] [component] Title of the pull request", where *Feature* can be replaced by `Hotfix`, `Bug`, etc.
  - Minor fixes should be named following this pattern: `[hotfix] [docs] Fix typo in README.md doc`.
-->

### Purpose of this pull request

<!-- Describe the purpose of this pull request. For example: This pull request adds checkstyle plugin.-->


### Does this PR introduce _any_ user-facing change?

<!--
Note that it means *any* user-facing change including all aspects such as the documentation fix.
If yes, please clarify the previous behavior and the change this PR proposes - provide the console output, description and/or an example to show the behavior difference if possible.
If possible, please also clarify if this is a user-facing change compared to the released SeaTunnel versions or within the unreleased branches such as dev.
If no, write 'No'.
If you are adding/modifying connector documents, please follow our new specifications: https://github.com/apache/seatunnel/issues/4544.
-->


### How was this patch tested?

<!--
If tests were added, say they were added here. Please make sure to add some test cases that check the changes thoroughly including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please clarify how you tested step by step, ideally copy and paste-able, so that other reviewers can test and check, and descendants can verify in the future.
If tests were not added, please describe why they were not added and/or why it was difficult to add.
If you are adding E2E test cases, maybe refer to https://github.com/apache/seatunnel/blob/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-cdc-mysql-e2e/src/test/resources/mysqlcdc_to_mysql.conf, here is a good example.
-->


### Check list

* [ ] 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/contribution/new-license.md)
* [ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/seatunnel/tree/dev/docs
* [ ] If necessary, please update `incompatible-changes.md` to describe the incompatibility caused by this PR.
* [ ] If you are contributing the connector code, please check that the following files are updated:
  1. Update [plugin-mapping.properties](https://github.com/apache/seatunnel/blob/dev/plugin-mapping.properties) and add new connector information in it
  2. Update the pom file of [seatunnel-dist](https://github.com/apache/seatunnel/blob/dev/seatunnel-dist/pom.xml)
  3. Add ci label in [label-scope-conf](https://github.com/apache/seatunnel/blob/dev/.github/workflows/labeler/label-scope-conf.yml)
  4. Add e2e testcase in [seatunnel-e2e](https://github.com/apache/seatunnel/tree/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/)
  5. Update connector [plugin_config](https://github.com/apache/seatunnel/blob/dev/config/plugin_config)

================================================
FILE: .github/workflows/add-label.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the 'License'); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: Pull Request Labeler
on:
  pull_request_target:
    types: [opened, reopened, synchronize]

jobs:
  labeler:
    permissions:
      contents: read
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/labeler@v5
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          configuration-path: '.github/workflows/labeler/label-scope-conf.yml'
          sync-labels: true

================================================
FILE: .github/workflows/approve-label-trigger.yml
================================================
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

name: Label-when-reviewed
on: pull_request_review
jobs:

  label-when-reviewed:
    name: "Label PRs when reviewed"
    runs-on: ubuntu-latest
    steps:
      - name: "Do nothing. Only trigger corresponding workflow_run event"
        run: echo


================================================
FILE: .github/workflows/approve-label.yml
================================================
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

name: "Label when approved workflow run"
on:
  workflow_run:
    workflows: [Label-when-reviewed]
    types: [requested]
permissions:
  # All other permissions are set to none
  checks: write
  contents: read
  pull-requests: write
jobs:
  label-when-approved:
    name: "Label when approved"
    runs-on: ubuntu-latest
    outputs:
      isApprovedByCommiters: ${{ steps.label-when-approved-by-commiters.outputs.isApproved }}
      isApprovedByAnyone: ${{ steps.label-when-approved-by-anyone.outputs.isApproved }}
    steps:
      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
        uses: actions/checkout@v2
        with:
          persist-credentials: false
          submodules: recursive
      - name: "Get information about the original trigger of the run"
        uses: ./.github/actions/get-workflow-origin
        id: source-run-info
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          sourceRunId: ${{ github.event.workflow_run.id }}
      - name: Label when approved by commiters
        uses: ./.github/actions/label-when-approved-action
        id: label-when-approved-by-commiters
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          label: 'approved'
          require_committers_approval: 'true'
          remove_label_when_approval_missing: 'true'
          pullRequestNumber: ${{ steps.source-run-info.outputs.pullRequestNumber }}
      - name: Label when approved by anyone
        uses: ./.github/actions/label-when-approved-action
        id: label-when-approved-by-anyone
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          label: 'reviewed'
          pullRequestNumber: ${{ steps.source-run-info.outputs.pullRequestNumber }}
          remove_label_when_approval_missing: 'true'


================================================
FILE: .github/workflows/backend.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the 'License'); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: Backend

on:
  workflow_call:
    inputs:
      TEST_IN_PR:
        required: false
        type: string
        default: 'true'

concurrency:
  group: backend-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  TEST_IN_PR: ${{ inputs.TEST_IN_PR }}

jobs:
  license-header:
    name: License header
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
      - name: Check license header
        uses: apache/skywalking-eyes@v0.5.0

  code-style:
    name: Code style
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
      - name: Check code style
        run: ./mvnw --batch-mode --quiet --no-snapshot-updates clean spotless:check
      - name: Check code specification
        run: ./mvnw -B -T 1 clean test -D"license.skipAddThirdParty"=true -pl seatunnel-ci-tools -am --no-snapshot-updates
        env:
          MAVEN_OPTS: -Xmx512m
      - name: Check for .class files in git
        run: |
          echo "Checking for .class files tracked by git..."

          # Find all .class files tracked by git
          CLASS_FILES=$(git ls-files '*.class')

          if [ -n "$CLASS_FILES" ]; then
            echo "ERROR: The following .class files are tracked by git:"
            echo "$CLASS_FILES"
            echo ""
            echo "Please remove .class files from the repository."
            echo "These files should not be committed. You can remove them using:"
            echo "  git rm --cached <file>.class"
            echo "  git commit -m 'Remove .class files'"
            echo ""
            echo "Also, consider adding '*.class' to .gitignore if not already present."
            exit 1
          else
            echo "No .class files found in git repository."
          fi

  helm-chart-check:
    name: Check Helm Chart Syntax
    needs: [ license-header, code-style]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Helm
        uses: azure/setup-helm@v4.3.0
        id: install
      - name: Lint Chart
        run: helm lint deploy/kubernetes/seatunnel

#  dead-link:
#    name: Dead links
#    runs-on: ubuntu-latest
#    timeout-minutes: 150
#    # Temporarily ignore this job to avoid blocking PRs
#    continue-on-error: true
#    steps:
#      - uses: actions/checkout@v2
#      - run: sudo npm install -g markdown-link-check@3.8.7
#      - run: |
#          for file in $(find . -name "*.md"); do
#            markdown-link-check -c .dlc.json -q "$file"
#          done

  sanity-check:
    name: Sanity check results
    needs: [ license-header, code-style ]
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: Check results
        run: |
          [[ ${{ needs.license-header.result }} == 'success' ]] || exit 1;
          [[ ${{ needs.code-style.result }} == 'success' ]] || exit 1;

  changes:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    outputs:
      api: ${{ steps.filter.outputs.api }}
      engine: ${{ steps.filter.outputs.engine }}
      engine-e2e: ${{ steps.filter.outputs.engine-e2e }}
      docs: ${{ steps.filter.outputs.docs }}
      ut-modules: ${{ steps.ut-modules.outputs.modules }}
      it-modules: ${{ steps.it-modules.outputs.modules }}
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: '2000'
      - name: checkout apache seatunnel dev branch
        id: git_init
        run: |
          /usr/bin/git remote add apache https://github.com/apache/seatunnel
          /usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=2000 apache +refs/heads/dev*:refs/remotes/apache/dev* +refs/tags/dev*:refs/tags/dev*
          /usr/bin/git checkout apache/dev
          /usr/bin/git checkout '${{ github.ref }}'
          echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
      - uses: actions/setup-python@v4
        with:
          python-version: '3.11.0'
      - name: Check for file changes by python
        id: filter
        run: |
          current_branch='${{ steps.git_init.outputs.branch }}'
          pip install GitPython
          workspace="${GITHUB_WORKSPACE}"
          repository_owner="${GITHUB_REPOSITORY_OWNER}"
          cv2_files=`python tools/update_modules_check/check_file_updates.py ua $workspace apache/dev origin/$current_branch "seatunnel-connectors-v2/**"`
          true_or_false=${cv2_files%%$'\n'*}
          file_list=${cv2_files#*$'\n'}
          echo "cv2=$true_or_false" >> $GITHUB_OUTPUT
          echo "cv2_files=$file_list" >> $GITHUB_OUTPUT
          
          cv2_e2e_files=`python tools/update_modules_check/check_file_updates.py ua $workspace apache/dev origin/$current_branch "seatunnel-e2e/seatunnel-connector-v2-e2e/**"`
          true_or_false=${cv2_e2e_files%%$'\n'*}
          file_list=${cv2_e2e_files#*$'\n'}
          echo "cv2-e2e=$true_or_false" >> $GITHUB_OUTPUT
          echo "cv2-e2e_files=$file_list" >> $GITHUB_OUTPUT
          
          engine_files=`python tools/update_modules_check/check_file_updates.py ua $workspace apache/dev origin/$current_branch "seatunnel-engine/**"`
          true_or_false=${engine_files%%$'\n'*}
          file_list=${engine_files#*$'\n'}
          echo "engine=$true_or_false" >> $GITHUB_OUTPUT
          echo "engine_files=$file_list" >> $GITHUB_OUTPUT
          
          deleted_poms_files=`python tools/update_modules_check/check_file_updates.py d $workspace apache/dev origin/$current_branch "**/pom.xml"`
          true_or_false=${deleted_poms_files%%$'\n'*}
          file_list=${deleted_poms_files#*$'\n'}
          echo "deleted-poms=$true_or_false" >> $GITHUB_OUTPUT
          echo "deleted-poms_files=$file_list" >> $GITHUB_OUTPUT
          
          doc_files=`python tools/update_modules_check/check_file_updates.py ua $workspace apache/dev origin/$current_branch "docs/**"`
          true_or_false=${doc_files%%$'\n'*}
          file_list=${doc_files#*$'\n'}
          echo "docs=$true_or_false" >> $GITHUB_OUTPUT
          echo "docs_files=$file_list" >> $GITHUB_OUTPUT
          
          engine_e2e_files=`python tools/update_modules_check/check_file_updates.py ua $workspace apache/dev origin/$current_branch "seatunnel-e2e/seatunnel-engine-e2e/**"`
          true_or_false=${engine_e2e_files%%$'\n'*}
          file_list=${engine_e2e_files#*$'\n'}
          echo "engine-e2e=$true_or_false" >> $GITHUB_OUTPUT
          echo "engine-e2e_files=$file_list" >> $GITHUB_OUTPUT
          
          api_files=`python tools/update_modules_check/check_file_updates.py ua $workspace apache/dev origin/$current_branch "seatunnel-api/**" "seatunnel-common/**" "seatunnel-config/**" "seatunnel-core/**" "seatunnel-e2e/seatunnel-e2e-common/**" "seatunnel-formats/**" "seatunnel-plugin-discovery/**" "seatunnel-transforms-v2/**" "seatunnel-translation/**" "seatunnel-e2e/seatunnel-transforms-v2-e2e/**" "pom.xml" "**/workflows/**" "tools/**" "seatunnel-dist/**"`
          true_or_false=${api_files%%$'\n'*}
          file_list=${api_files#*$'\n'}
          if [[ $repository_owner == 'apache' ]];then
            true_or_false='true'
          fi
          echo "api=$true_or_false" >> $GITHUB_OUTPUT
          echo "api_files=$file_list" >> $GITHUB_OUTPUT

      - name: Check Connector V2 Update
        id: cv2-modules
        if: ${{ steps.filter.outputs.cv2 == 'true' }}
        run: |
          update_files='${{ steps.filter.outputs.cv2_files }}'
          modules=`python tools/update_modules_check/update_modules_check.py cv2 "$update_files"`
          echo $modules
          echo "modules=$modules" >> $GITHUB_OUTPUT

      - name: Check Connector V2 E2E Update
        id: cv2-e2e-modules
        if: ${{ steps.filter.outputs.cv2-e2e == 'true' }}
        run: |
          update_files='${{ steps.filter.outputs.cv2-e2e_files }}'
          modules=`python tools/update_modules_check/update_modules_check.py cv2-e2e "$update_files"`
          echo $modules
          echo "modules=$modules" >> $GITHUB_OUTPUT

      - name: Check Engine Update
        id: engine-modules
        if: ${{ steps.filter.outputs.engine == 'true' }}
        run: |
          update_files='${{ steps.filter.outputs.engine_files }}'
          modules=`python tools/update_modules_check/update_modules_check.py engine "$update_files"`
          echo $modules
          echo "modules=$modules" >> $GITHUB_OUTPUT

      - name: Check Engine E2E Update
        id: engine-e2e-modules
        if: ${{ steps.filter.outputs.engine-e2e == 'true' }}
        run: |
          update_files='${{ steps.filter.outputs.engine-e2e_files }}'
          modules=`python tools/update_modules_check/update_modules_check.py engine-e2e "$update_files"`
          echo $modules
          echo "modules=$modules" >> $GITHUB_OUTPUT

      - name: Check Deleted Modules
        id: deleted-modules
        if: ${{ steps.filter.outputs.deleted-poms == 'true' }}
        run: |
          update_files='${{ steps.filter.outputs.deleted-poms_files }}'
          modules=`python tools/update_modules_check/update_modules_check.py delete "$update_files"`
          echo $modules
          echo "modules=$modules" >> $GITHUB_OUTPUT      

      - name: Make unit test modules
        id: ut-modules
        timeout-minutes: 60
        if: ${{ steps.filter.outputs.api == 'false' && (steps.engine-modules.outputs.modules != '' || steps.cv2-modules.outputs.modules != '') }}
        run: |
          modules='${{ steps.engine-modules.outputs.modules }}${{ steps.cv2-modules.outputs.modules }}'
          modules=${modules: 1}
          pl_modules=`python tools/update_modules_check/update_modules_check.py replace "$modules"`
          # remove deleted modules
          delete_modules='${{ steps.deleted-modules.outputs.modules }}'
          if [[ "zz"$delete_modules != "zz" ]];then
            pl_modules=`python tools/update_modules_check/update_modules_check.py rm "$pl_modules" "$delete_modules"`
          fi
          
          if [[ "zz"$pl_modules == "zz" ]];then
            exit 0
          fi
          
          ./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout -pl $pl_modules > /tmp/sub_module.txt
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
          tree_modules="$modules$sub_modules"
          includes=`python tools/update_modules_check/update_modules_check.py tree "$tree_modules"`
          ./mvnw -Pci -D"e2e.dependency.skip"=false  dependency:tree $includes -DoutputType=text -DoutputFile=/tmp/tree_out.txt
          build_modules=`python tools/update_modules_check/update_modules_check.py final_ut /tmp/tree_out.txt`
          if [[ "zz"$build_modules == "zz" ]];then
            build_modules=$pl_modules
          fi 
          echo $build_modules
          echo "modules=$build_modules" >> $GITHUB_OUTPUT

      - name: Make integration test modules
        id: it-modules
        timeout-minutes: 60
        if: ${{ steps.filter.outputs.api == 'false' && (steps.engine-modules.outputs.modules != '' || steps.cv2-modules.outputs.modules != '' || steps.cv2-e2e-modules.outputs.modules != '' || steps.cv2-flink-e2e-modules.outputs.modules != '' || steps.cv2-spark-e2e-modules.outputs.modules != '') }}
        run: |
          modules='${{ steps.cv2-e2e-modules.outputs.modules }}${{ steps.cv2-flink-e2e-modules.outputs.modules }}${{ steps.cv2-spark-e2e-modules.outputs.modules }}${{ steps.engine-e2e-modules.outputs.modules }}${{ steps.engine-modules.outputs.modules }}${{ steps.cv2-modules.outputs.modules }}'
          modules=${modules: 1}
          pl_modules=`python tools/update_modules_check/update_modules_check.py replace "$modules"`
          # remove deleted modules
          delete_modules='${{ steps.deleted-modules.outputs.modules }}'
          if [[ "zz"$delete_modules != "zz" ]];then
            pl_modules=`python tools/update_modules_check/update_modules_check.py rm "$pl_modules" "$delete_modules"`
          fi
          
          if [[ "zz"$pl_modules == "zz" ]];then
            exit 0
          fi
          
          ./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout -pl $pl_modules > /tmp/sub_module.txt
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
          tree_modules="$modules$sub_modules"
          includes=`python tools/update_modules_check/update_modules_check.py tree "$tree_modules"`
          ./mvnw -Pci -D"e2e.dependency.skip"=false  dependency:tree $includes -DoutputType=text -DoutputFile=/tmp/tree_out.txt
          build_modules=`python tools/update_modules_check/update_modules_check.py final_it /tmp/tree_out.txt`
          echo $build_modules
          echo "modules=$build_modules" >> $GITHUB_OUTPUT

  dependency-license:
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    name: Dependency licenses
    needs: [ changes, sanity-check ]
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
      - uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '8'
          cache: 'maven'
      - name: Install
        uses: nick-fields/retry@v2
        with:
          timeout_minutes: 40
          max_attempts: 3
          retry_on: error
          command: |
            ./mvnw -B install -DskipTests -D"maven.test.skip"=true -D"maven.javadoc.skip"=true -D"license.skipAddThirdParty" -D"skip.ui"=true
      - name: Check Dependencies Licenses
        run: tools/dependencies/checkLicense.sh

  document:
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.docs == 'true'
    needs: [ changes, sanity-check ]
    name: Build website
    runs-on: ubuntu-latest
    timeout-minutes: 90
    steps:
      - name: Checkout PR
        uses: actions/checkout@v3
        with:
          path: seatunnel-pr
      - name: Checkout website repo
        uses: actions/checkout@v3
        with:
          repository: apache/seatunnel-website
          path: seatunnel-website
      - name: Sync PR changes to website
        run: |
          bash seatunnel-pr/tools/documents/sync.sh seatunnel-pr seatunnel-website
      - uses: actions/setup-node@v2
        with:
          node-version: 18.20.7
      - name: Run docusaurus build
        run: |
          cd seatunnel-website
          npm set strict-ssl false
          npm install
          npm run build

  seatunnel-ui:
    if: needs.changes.outputs.api == 'true'
    needs: [ changes, sanity-check ]
    name: Build SeaTunnel UI
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Checkout PR
        uses: actions/checkout@v3
      - uses: actions/setup-node@v2
        with:
          node-version: 20.x
      - name: Install Dependencies and Check Code Style
        run: |
          cd seatunnel-engine/seatunnel-engine-ui/
          npm install
          npm run lint
      - name: Run unit tests
        run: |
          cd seatunnel-engine/seatunnel-engine-ui/
          npm run test:unit
      - name: Build SeaTunnel UI
        run: |
          cd seatunnel-engine/seatunnel-engine-ui/
          npm run build

  unit-test:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || (needs.changes.outputs.api == 'false' && needs.changes.outputs.ut-modules != '')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest', 'windows-latest' ]
    timeout-minutes: 90
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: run all modules unit test
        run: |
          ./mvnw -B -T 1 clean verify -DskipUT=false -DskipIT=true -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates
        env:
          MAVEN_OPTS: -Xmx4096m

  updated-modules-integration-test-part-1:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'false' && needs.changes.outputs.engine == 'false' && needs.changes.outputs.it-modules != ''
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 180
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run updated modules integration test (part-1)
        run: |
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub_update_it_module ${{needs.changes.outputs.it-modules}} 8 0`
          if [ ! -z $sub_modules ]; then
            echo $sub_modules
            ./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $sub_modules -am -Pci
          else
            echo "sub modules is empty, skipping"
          fi
        env:
          MAVEN_OPTS: -Xmx2048m

  updated-modules-integration-test-part-2:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'false' && needs.changes.outputs.engine == 'false' && needs.changes.outputs.it-modules != ''
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 180
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run updated modules integration test (part-2)
        run: |
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub_update_it_module ${{needs.changes.outputs.it-modules}} 8 1`
          if [ ! -z $sub_modules ]; then
            echo $sub_modules
            ./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $sub_modules -am -Pci
          else
            echo "sub modules is empty, skipping"
          fi
        env:
          MAVEN_OPTS: -Xmx4096m

  updated-modules-integration-test-part-3:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'false' && needs.changes.outputs.engine == 'false' && needs.changes.outputs.it-modules != ''
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 210
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run updated modules integration test (part-3)
        run: |
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub_update_it_module ${{needs.changes.outputs.it-modules}} 8 2`
          if [ ! -z $sub_modules ]; then
            echo $sub_modules
            ./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $sub_modules -am -Pci
          else
            echo "sub modules is empty, skipping"
          fi
        env:
          MAVEN_OPTS: -Xmx2048m

  updated-modules-integration-test-part-4:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'false' && needs.changes.outputs.engine == 'false' && needs.changes.outputs.it-modules != ''
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 200
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run updated modules integration test (part-4)
        run: |
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub_update_it_module ${{needs.changes.outputs.it-modules}} 8 3`
          if [ ! -z $sub_modules ]; then
            echo $sub_modules
            ./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $sub_modules -am -Pci
          else
            echo "sub modules is empty, skipping"
          fi
        env:
          MAVEN_OPTS: -Xmx4096m
  updated-modules-integration-test-part-5:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'false' && needs.changes.outputs.engine == 'false' && needs.changes.outputs.it-modules != ''
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 180
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run updated modules integration test (part-5)
        run: |
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub_update_it_module ${{needs.changes.outputs.it-modules}} 8 4`
          if [ ! -z $sub_modules ]; then
            echo $sub_modules
            ./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $sub_modules -am -Pci
          else
            echo "sub modules is empty, skipping"
          fi
        env:
          MAVEN_OPTS: -Xmx2048m
  updated-modules-integration-test-part-6:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'false' && needs.changes.outputs.engine == 'false' && needs.changes.outputs.it-modules != ''
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 210
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run updated modules integration test (part-6)
        run: |
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub_update_it_module ${{needs.changes.outputs.it-modules}} 8 5`
          if [ ! -z $sub_modules ]; then
            echo $sub_modules
            ./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $sub_modules -am -Pci
          else
            echo "sub modules is empty, skipping"
          fi
        env:
          MAVEN_OPTS: -Xmx2048m
  updated-modules-integration-test-part-7:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'false' && needs.changes.outputs.engine == 'false' && needs.changes.outputs.it-modules != ''
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run updated modules integration test (part-7)
        run: |
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub_update_it_module ${{needs.changes.outputs.it-modules}} 8 6`
          if [ ! -z $sub_modules ]; then
            echo $sub_modules
            ./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $sub_modules -am -Pci
          else
            echo "sub modules is empty, skipping"
          fi
        env:
          MAVEN_OPTS: -Xmx2048m

  updated-modules-integration-test-part-8:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'false' && needs.changes.outputs.engine == 'false' && needs.changes.outputs.it-modules != ''
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run updated modules integration test (part-8)
        run: |
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub_update_it_module ${{needs.changes.outputs.it-modules}} 8 7`
          if [ ! -z $sub_modules ]; then
            echo $sub_modules
            ./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $sub_modules -am -Pci
          else
            echo "sub modules is empty, skipping"
          fi
        env:
          MAVEN_OPTS: -Xmx2048m

  engine-v2-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || needs.changes.outputs.engine-e2e == 'true'
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run seatunnel zeta integration test
        run: |
          ./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true --no-snapshot-updates -pl :connector-seatunnel-e2e-base,:connector-console-seatunnel-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  engine-k8s-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || contains(needs.changes.outputs.it-modules, 'seatunnel-engine-k8s-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 45
    steps:
      - name: install k8s
        run: |
          curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE=777 sh -s - --docker
          cat /etc/rancher/k3s/k3s.yaml
          mkdir -p ~/.kube
          cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
        env:
          KUBECONFIG: /etc/rancher/k3s/k3s.yaml
      - uses: actions/checkout@v2
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: run seatunnel zeta on k8s test
        run: |
          ./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :seatunnel-engine-k8s-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m
          KUBECONFIG: /etc/rancher/k3s/k3s.yaml

  transform-v2-it-part-1:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run transform-v2 integration test (part-1)
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :seatunnel-transforms-v2-e2e-part-1 -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  transform-v2-it-part-2:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 150
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run transform-v2 integration test (part-2)
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :seatunnel-transforms-v2-e2e-part-2 -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  all-connectors-it-1:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 210
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run connector-v2 integration test (part-1)
        run: |
          ./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout -pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
          run_it_modules=`python tools/update_modules_check/update_modules_check.py sub_it_module "$sub_modules" 7 0`
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $run_it_modules -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  all-connectors-it-2:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 150
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run connector-v2 integration test (part-2)
        run: |
          ./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout -pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
          run_it_modules=`python tools/update_modules_check/update_modules_check.py sub_it_module "$sub_modules" 7 1`
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $run_it_modules -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  all-connectors-it-3:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 210
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run connector-v2 integration test (part-3)
        run: |
          ./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout -pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
          run_it_modules=`python tools/update_modules_check/update_modules_check.py sub_it_module "$sub_modules" 7 2`
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $run_it_modules -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  all-connectors-it-4:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 210
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run connector-v2 integration test (part-4)
        run: |
          ./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout -pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
          run_it_modules=`python tools/update_modules_check/update_modules_check.py sub_it_module "$sub_modules" 7 3`
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $run_it_modules -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  all-connectors-it-5:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 180
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run connector-v2 integration test (part-5)
        run: |
          ./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout -pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
          run_it_modules=`python tools/update_modules_check/update_modules_check.py sub_it_module "$sub_modules" 7 4`
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $run_it_modules -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  all-connectors-it-6:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 210
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run connector-v2 integration test (part-6)
        run: |
          ./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout -pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
          run_it_modules=`python tools/update_modules_check/update_modules_check.py sub_it_module "$sub_modules" 7 5`
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $run_it_modules -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  all-connectors-it-7:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 210
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run connector-v2 integration test (part-7)
        run: |
          ./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout -pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
          sub_modules=`python tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
          run_it_modules=`python tools/update_modules_check/update_modules_check.py sub_it_module "$sub_modules" 7 6`
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl $run_it_modules -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  jdbc-connectors-it-part-1:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run jdbc connectors integration test (part-1)
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-jdbc-e2e-part-1 -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  jdbc-connectors-it-part-2:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run jdbc connectors integration test (part-2)
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-jdbc-e2e-part-2 -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  jdbc-connectors-it-part-3:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run jdbc connectors integration test (part-3)
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-jdbc-e2e-part-3 -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  jdbc-connectors-it-part-4:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run jdbc connectors integration test (part-4)
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-jdbc-e2e-part-4 -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  jdbc-connectors-it-part-5:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run jdbc connectors integration test (part-5)
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-jdbc-e2e-part-5 -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  jdbc-connectors-it-part-6:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run jdbc connectors integration test (part-6)
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-jdbc-e2e-part-6 -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  jdbc-connectors-it-part-7:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run jdbc connectors integration test (part-7)
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-jdbc-e2e-part-7 -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  jdbc-connectors-it-ddl:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true'
    runs-on: ${{ matrix.os }}
    env:
      RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
      RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 180
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run jdbc connectors integration test (sink ddl)
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-jdbc-e2e-ddl -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  kudu-connector-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || contains(needs.changes.outputs.it-modules, 'connector-kudu-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run kudu connector integration test
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-kudu-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  amazonSqs-connector-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || contains(needs.changes.outputs.it-modules, 'connector-amazonsqs-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run amazonsqs connector integration test
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-amazonsqs-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  kafka-connector-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || contains(needs.changes.outputs.it-modules, 'connector-kafka-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 210
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run kafka connector integration test
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-kafka-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  rocketmq-connector-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || contains(needs.changes.outputs.it-modules, 'connector-rocketmq-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run rocket connector integration test
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-rocketmq-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m


  doris-connector-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || contains(needs.changes.outputs.it-modules, 'connector-doris-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 180
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run doris connector integration test
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-doris-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  paimon-connector-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || contains(needs.changes.outputs.it-modules, 'connector-paimon-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 180
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run paimon connector integration test
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-paimon-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  oracle-cdc-connector-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || contains(needs.changes.outputs.it-modules, 'connector-cdc-oracle-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 210
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run oracle cdc connector integration test
        uses: nick-fields/retry@v3
        with:
          timeout_seconds: 9000
          max_attempts: 3
          retry_on: error
          command: |
            echo 'running oracle cdc connector integration test...' && \
            ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-cdc-oracle-e2e -am -Pci

  connector-file-local-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || contains(needs.changes.outputs.it-modules, 'connector-file-local-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run file local connector integration test
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-file-local-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  connector-file-sftp-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || contains(needs.changes.outputs.it-modules, 'connector-file-sftp-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run file sftp connector integration test
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-file-sftp-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  connector-redis-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine == 'true' || contains(needs.changes.outputs.it-modules, 'connector-redis-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 210
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run redis connector integration test
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-redis-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m

  connector-sensorsdata-it:
    needs: [ changes, sanity-check ]
    if: needs.changes.outputs.api == 'true' || contains(needs.changes.outputs.it-modules, 'connector-sensorsdata-e2e')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        java: [ '8', '11' ]
        os: [ 'ubuntu-latest' ]
    timeout-minutes: 180
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK ${{ matrix.java }}
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.java }}
          distribution: 'temurin'
          cache: 'maven'
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - name: run sensorsdata connector integration test
        run: |
          ./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false -D"license.skipAddThirdParty"=true -D"skip.ui"=true --no-snapshot-updates -pl :connector-sensorsdata-e2e -am -Pci
        env:
          MAVEN_OPTS: -Xmx4096m


================================================
FILE: .github/workflows/build_main.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

name: "Build"

on:
  push:
    branches:
    - '**'

jobs:
  call-build-and-test:
    permissions:
      packages: write
    name: Run
    uses: ./.github/workflows/backend.yml


================================================
FILE: .github/workflows/codeql.yaml
================================================
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: "CodeQL"

on:
  schedule:
    - cron: '0 0 12 * *'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    timeout-minutes: 120
    env:
      JAVA_TOOL_OPTIONS: -Xmx2G -Xms2G -Dhttp.keepAlive=false -Dmaven.test.skip=true -Dlicense.skipAddThirdParty=true -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.count=3 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120

    strategy:
      fail-fast: false
      matrix:
        language: ['java']

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
        with:
          submodules: true
      - name: Set up JDK 1.8
        uses: actions/setup-java@v2
        with:
          java-version:  8
          distribution: 'adopt'
      - name: Cache local Maven repository
        uses: actions/cache@v4
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v2
        with:
          languages: ${{ matrix.language }}
      - name: Autobuild
        uses: github/codeql-action/autobuild@v2
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v2


================================================
FILE: .github/workflows/labeler/label-scope-conf.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the 'License'); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

CI&CD:
  - changed-files:
      - any-glob-to-any-file:
          - .github/**
Zeta:
  - changed-files:
      - any-glob-to-any-file: seatunnel-engine/**
e2e:
  - changed-files:
      - any-glob-to-any-file: seatunnel-e2e/**
document:
  - changed-files:
      - any-glob-to-any-file: docs/**
flink:
  - changed-files:
      - any-glob-to-any-file:
          - seatunnel-translation/seatunnel-translation-flink/**
spark:
  - changed-files:
      - any-glob-to-any-file:
          - seatunnel-translation/seatunnel-translation-spark/**

Zeta Rest API:
  - changed-files:
      - any-glob-to-any-file: seatunnel-engine/**/server/rest/**
api:
  - changed-files:
      - any-glob-to-any-file:
          - seatunnel-api/**
          - seatunnel-common/**
core:
  - changed-files:
      - any-glob-to-any-file:
          - seatunnel-core/**
          - seatunnel-config/**
          - seatunnel-dist/**
          - seatunnel-plugin-discovery/**
          - seatunnel-shade/**
format:
  - changed-files:
      - any-glob-to-any-file: seatunnel-formats/**
dependencies:
  - changed-files:
      - any-glob-to-any-file: tools/dependencies/**

connectors-v2:
  - changed-files:
      - any-glob-to-any-file: seatunnel-connectors-v2/**
transform-v2:
  - changed-files:
      - any-glob-to-any-file: seatunnel-transforms-v2/**

# Connectors
amazondynamodb:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-amazondynamodb/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(amazondynamodb)/**'
amazonsqs:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-amazonsqs/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(amazonsqs)/**'
cassandra:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-cassandra/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(cassandra)/**'
cdc:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-cdc/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(cdc)/**'
clickhouse:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-clickhouse/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(clickhouse)/**'
databend:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-databend/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(databend)/**'
datahub:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-datahub/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(datahub)/**'
dingtalk:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-dingtalk/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(dingtalk)/**'
doris:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-doris/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(doris)/**'
druid:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-druid/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(druid)/**'
easysearch:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-easysearch/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(easysearch)/**'
elasticsearch:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-elasticsearch/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(elasticsearch)/**'
email:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-email/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(email)/**'
file:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-file/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(file)/**'
google-firestore:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-google-firestore/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(google-firestore)/**'
google-sheets:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-google-sheets/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(google-sheets)/**'
graphql:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-graphql/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(graphql)/**'
hbase:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-hbase/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(hbase)/**'
hive:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-hive/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(hive)/**'
http:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-http/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(http)/**'
prometheus:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-prometheus/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(prometheus)/**'
hudi:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-hudi/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(hudi)/**'
iceberg:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-iceberg/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(iceberg)/**'
influxdb:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-influxdb/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(influxdb)/**'
iotdb:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-iotdb/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(iotdb)/**'
jdbc:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-jdbc/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(jdbc)/**'
kafka:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-kafka/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(kafka)/**'
maxcompute:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-maxcompute/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(maxcompute)/**'
mongodb:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-mongodb/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(mongodb)/**'
neo4j:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-neo4j/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(neo4j)/**'
openmldb:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-openmldb/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(openmldb)/**'
paimon:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-paimon/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(paimon)/**'
pulsar:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-pulsar/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(pulsar)/**'
rabbitmq:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-rabbitmq/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(rabbitmq)/**'
redis:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-redis/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(redis)/**'
rocketmq:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-rocketmq/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(rocketmq)/**'
s3-redshift:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-s3-redshift/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(s3-redshift)/**'
selectdb-cloud:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-selectdb-cloud/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(selectdb-cloud)/**'
sentry:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-sentry/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(sentry)/**'
socket:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-socket/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(socket)/**'
starrocks:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-starrocks/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(starrocks)/**'
tablestore:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-tablestore/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(tablestore)/**'
tdengine:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-tdengine/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(tdengine)/**'
web3j:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-web3j/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(web3j)/**'
Milvus:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-milvus/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(milvus)/**'
activemq:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-activemq/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(activemq)/**'

qdrant:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-qdrant/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(qdrant)/**'

typesense:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-typesense/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(typesense)/**'

sls:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-sls/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(sls)/**'
aerospike:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-aerospike/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(aerospike)/**'

sensorsdata:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-sensorsdata/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(sensorsdata)/**'

hugegraph:
  - all:
      - changed-files:
          - any-glob-to-any-file: seatunnel-connectors-v2/connector-hugegraph/**
          - all-globs-to-all-files: '!seatunnel-connectors-v2/connector-!(hugegraph)/**'


================================================
FILE: .github/workflows/notify_test_workflow.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

# Intentionally has a general name.
# because the test status check created in GitHub Actions
# currently randomly picks any associated workflow.
# So, the name was changed to make sense in that context too.
# See also https://github.community/t/specify-check-suite-when-creating-a-checkrun/118380/10
name: On pull request update
on:
  pull_request_target:
    types: [opened, reopened, synchronize]

jobs:
  notify:
    name: Notify test workflow
    runs-on: ubuntu-latest
    permissions:
      actions: read
      checks: write
    steps:
      - name: "Notify test workflow"
        uses: actions/github-script@v6
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const endpoint = 'GET /repos/:owner/:repo/actions/workflows/:id/runs?&branch=:branch'
            const check_run_endpoint = 'GET /repos/:owner/:repo/commits/:ref/check-runs?per_page=100'

            // TODO: Should use pull_request.user and pull_request.user.repos_url?
            // If a different person creates a commit to another forked repo,
            // it wouldn't be able to detect.
            const params = {
              owner: context.payload.pull_request.head.repo.owner.login,
              repo: context.payload.pull_request.head.repo.name,
              id: 'build_main.yml',
              branch: context.payload.pull_request.head.ref,
            }
            const check_run_params = {
              owner: context.payload.pull_request.head.repo.owner.login,
              repo: context.payload.pull_request.head.repo.name,
              ref: context.payload.pull_request.head.ref,
            }

            console.log('Ref: ' + context.payload.pull_request.head.ref)
            console.log('SHA: ' + context.payload.pull_request.head.sha)

            // Wait 3 seconds to make sure the fork repository triggered a workflow.
            await new Promise(r => setTimeout(r, 3000))

            let runs
            try {
              runs = await github.request(endpoint, params)
            } catch (error) {
              console.error(error)
              // Assume that runs were not found.
            }

            const name = 'Build'
            const head_sha = context.payload.pull_request.head.sha
            let status = 'queued'
            console.log('runs: ' + JSON.stringify(runs))
            if (!runs || runs.data.workflow_runs.length === 0) {
              status = 'completed'
              const conclusion = 'action_required'

              await github.rest.checks.create({
                owner: context.repo.owner,
                repo: context.repo.repo,
                name: name,
                head_sha: head_sha,
                status: status,
                conclusion: conclusion,
                output: {
                  title: 'Workflow run detection failed',
                  summary: `
            Unable to detect the workflow run for testing the changes in your PR.

            1. If you did not enable GitHub Actions in your forked repository, please enable it by clicking the button as shown in the image below. See also [Disabling or limiting GitHub Actions for a repository](https://docs.github.com/en/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository) for more details.
            2. Create and push an empty commit to trigger the workflow.
            3. It is possible your branch is based on the old \`dev\` branch in Apache SeaTunnel, please sync your branch to the latest dev branch. For example as below:
                \`\`\`bash
                git fetch upstream
                git rebase upstream/dev
                git push origin YOUR_BRANCH --force
                \`\`\``,
                  images: [
                    {
                      alt: 'enabling workflows button',
                      image_url: 'https://raw.githubusercontent.com/apache/spark/master/.github/workflows/images/workflow-enable-button.png'
                    }
                  ]
                }
              })
            } else {
              const run_id = runs.data.workflow_runs[0].id

              if (runs.data.workflow_runs[0].head_sha != context.payload.pull_request.head.sha) {
                throw new Error('There was a new unsynced commit pushed. Please retrigger the workflow.');
              }

              // Here we get check run ID to provide Check run view instead of Actions view, see also SPARK-37879.
              const check_runs = await github.request(check_run_endpoint, check_run_params)
              console.log('check_runs: ' + JSON.stringify(check_runs))
              const check_run_head = check_runs.data.check_runs.filter(r => r.name === "Run / License header")[0]

              console.log('check_run_head: ' + JSON.stringify(check_run_head))
              if (check_run_head.head_sha != context.payload.pull_request.head.sha) {
                throw new Error('There was a new unsynced commit pushed. Please retrigger the workflow.');
              }

              const check_run_url = 'https://github.com/'
                + context.payload.pull_request.head.repo.full_name
                + '/runs/'
                + check_run_head.id

              const actions_url = 'https://github.com/'
                + context.payload.pull_request.head.repo.full_name
                + '/actions/runs/'
                + run_id

              await github.rest.checks.create({
                owner: context.repo.owner,
                repo: context.repo.repo,
                name: name,
                head_sha: head_sha,
                status: status,
                output: {
                  title: 'Test results',
                  summary: '[See test results](' + check_run_url + ')',
                  text: JSON.stringify({
                    owner: context.payload.pull_request.head.repo.owner.login,
                    repo: context.payload.pull_request.head.repo.name,
                    run_id: run_id
                  })
                },
                details_url: actions_url,
              })
            }


================================================
FILE: .github/workflows/publish-docker.yaml
================================================
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: publish-docker

on:
  push:
    tags:
      - '*'
    paths-ignore:
      - 'docs/**'
      - '**/*.md'

env:
  DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USER }}
  DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}

jobs:
  build:
    if: github.repository == 'apache/seatunnel'
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: true
      - name: free disk space
        run: tools/github/free_disk_space.sh
      - uses: actions/checkout@v4
      - name: Cache local Maven repository
        uses: actions/cache@v4
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      - name: Set up JDK 1.8
        uses: actions/setup-java@v2
        with:
          java-version:  8
          distribution: 'adopt'

      - name: Log in to the Container registry
        uses: docker/login-action@v3
        with:
          username: ${{ env.DOCKER_USERNAME }}
          password: ${{ env.DOCKER_PASSWORD }}
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
      - name: Build and push docker images
        env:
          MAVEN_OPTS: -Xmx4096m
        run: |
          ./mvnw -B clean install \
          -Dmaven.test.skip=true \
          -Dmaven.javadoc.skip=true \
          -Dlicense.skipAddThirdParty=true \
          -D"docker.build.skip"=false \
          -D"docker.verify.skip"=false \
          -D"docker.push.skip"=false \
          -D"skip.spotless"=true \
          -Dmaven.deploy.skip \
          --no-snapshot-updates \
          -Pdocker,seatunnel

================================================
FILE: .github/workflows/publish-helm-chart.yaml
================================================
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: publish-helm-chart

on:
  push:
    tags:
      - '*'
    paths-ignore:
      - 'docs/**'
      - '**/*.md'

env:
  DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USER }}
  DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
  DOCKER_REGISTRY: docker.io
  HUB: registry-1.docker.io/apache

jobs:
  build:
    if: github.repository == 'apache/seatunnel'
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - name: Log in to the Container registry
        uses: docker/login-action@v3
        with:
          registry: ${{ env.DOCKER_REGISTRY }}
          username: ${{ env.DOCKER_USERNAME }}
          password: ${{ env.DOCKER_PASSWORD }}
      - name: Publish Helm Chart
        working-directory: deploy/kubernetes
        run: |
          helm dep up seatunnel
          helm package seatunnel
          helm push seatunnel-helm-*.tgz oci://${{ env.HUB }}


================================================
FILE: .github/workflows/schedule_backend.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the 'License'); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: Schedule Backend
on:
  schedule:
    - cron: '0 16 * * *'

concurrency:
  group: schedule-backend-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: false

jobs:
  call-build-and-test:
    permissions:
      packages: write
    name: Run
    uses: ./.github/workflows/backend.yml
    with:
      TEST_IN_PR: false


================================================
FILE: .github/workflows/stale.yml
================================================
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


# https://github.com/actions/stale
name: 'Close stale issues and PRs'
on:
  schedule:
    - cron: '0 0 * * *'
permissions:
  # Stale recommended permissions
  pull-requests: write
  issues: write
jobs:
  stale:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/stale@v4
        with:
          # Stale Issues
          days-before-issue-stale: -1
          days-before-issue-close: -1
          # We do not stale Issues with label `Waiting for reply`, `Waiting for code update`,`Waiting for users feedback`, `New feature` and `STIP`
          exempt-issue-labels: 'Waiting for reply,Waiting for code update,Waiting for users feedback,New feature,STIP,security'
          stale-issue-message: >
            This issue has been automatically marked as stale because it has not had recent activity
            for 30 days. It will be closed in next 7 days if no further activity occurs.
          close-issue-message: >
            This issue has been closed because it has not received response for too long time. You could
            reopen it if you encountered similar problems in the future.
          # Stale PRs
          days-before-pr-stale: 120
          days-before-pr-close: 7
          stale-pr-message: >
            This pull request has been automatically marked as stale because it has not had recent
            activity for 120 days. It will be closed in 7 days if no further activity occurs.
          close-pr-message: >
            This pull request has been closed because it has not had recent activity. You could reopen it
            if you try to continue your work, and anyone who are interested in it are encouraged to continue
            work on this pull request.
          remove-pr-stale-when-updated: true
          remove-issue-stale-when-updated: true
          operations-per-run: 1000


================================================
FILE: .github/workflows/update_build_status.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

name: Update build status workflow

on:
  schedule:
  - cron: "*/15 * * * *"

jobs:
  update:
    name: Update build status
    runs-on: ubuntu-latest
    permissions:
      actions: read
      checks: write
    steps:
      - name: "Update build status"
        uses: actions/github-script@v6
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const endpoint = 'GET /repos/:owner/:repo/pulls?state=:state'
            const params = {
              owner: context.repo.owner,
              repo: context.repo.repo,
              state: 'open'
            }

            // See https://docs.github.com/en/graphql/reference/enums#mergestatestatus
            const maybeReady = ['behind', 'clean', 'draft', 'has_hooks', 'unknown', 'unstable'];

            // Iterate open PRs
            for await (const prs of github.paginate.iterator(endpoint,params)) {
              // Each page
              for await (const pr of prs.data) {
                console.log('SHA: ' + pr.head.sha)
                console.log('  Mergeable status: ' + pr.mergeable_state)
                if (pr.mergeable_state == null || maybeReady.includes(pr.mergeable_state)) {
                  const checkRuns = await github.request('GET /repos/{owner}/{repo}/commits/{ref}/check-runs', {
                    owner: context.repo.owner,
                    repo: context.repo.repo,
                    ref: pr.head.sha
                  })

                  // Iterator GitHub Checks in the PR
                  for await (const cr of checkRuns.data.check_runs) {
                    if (cr.name == 'Build' && cr.conclusion != "action_required") {
                      // text contains parameters to make request in JSON.
                      const params = JSON.parse(cr.output.text)

                      // Get the workflow run in the forked repository
                      let run
                      try {
                        run = await github.request('GET /repos/{owner}/{repo}/actions/runs/{run_id}', params)
                      } catch (error) {
                        console.error(error)
                        // Run not found. This can happen when the PR author removes GitHub Actions runs or
                        // disalbes GitHub Actions.
                        continue
                      }

                      // Keep syncing the status of the checks
                      try {
                        if (run.data.status == 'completed') {
                          console.log('    Run ' + cr.id + ': set status (' + run.data.status + ') and conclusion (' + run.data.conclusion + ')')
                          const response = await github.request('PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}', {
                            owner: context.repo.owner,
                            repo: context.repo.repo,
                            check_run_id: cr.id,
                            output: cr.output,
                            status: run.data.status,
                            conclusion: run.data.conclusion,
                            details_url: run.data.details_url
                          })
                        } else {
                          console.log('    Run ' + cr.id + ': set status (' + run.data.status + ')')
                          const response = await github.request('PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}', {
                            owner: context.repo.owner,
                            repo: context.repo.repo,
                            check_run_id: cr.id,
                            output: cr.output,
                            status: run.data.status,
                            details_url: run.data.details_url
                          })
                        }
                      } catch (error) {
                        console.error(error)
                        continue
                      }
                      break
                    }
                  }
                }
              }
            }

================================================
FILE: .gitignore
================================================
# Package Files #
*.jar
*.class
*.zip
*.tar.gz

# see JDK-8214300
.attach_pid*

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

# build targets
target/

# Log file
*.log
/logs
logs.zip

# Intellij Idea files
.idea/
*.iml
.idea/*

.DS_Store

metastore_db/

work_dir

all-dependencies.txt
self-modules.txt
third-party-dependencies.txt

*.keytab
/derby.log

dependency-reduced-pom.xml

apidoc

# Python
*.py[cod]

Test.java
Test.scala
test.conf
spark-warehouse
*.flattened-pom.xml

seatunnel-examples

# vscode
.vscode

/lib/*
version.properties
node/

dist/

seatunnel-engine/seatunnel-engine-server/**/ui/*

================================================
FILE: .gitmodules
================================================
[submodule ".github/actions/get-workflow-origin"]
	path = .github/actions/get-workflow-origin
	url = https://github.com/potiuk/get-workflow-origin.git
[submodule ".github/actions/label-when-approved-action"]
	path = .github/actions/label-when-approved-action
	url = https://github.com/TobKed/label-when-approved-action


================================================
FILE: .licenserc.yaml
================================================
# Licensed to Apache Software Foundation (ASF) under one or more contributor
# license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright
# ownership. Apache Software Foundation (ASF) licenses this file to you under
# the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

header:
  license:
    spdx-id: Apache-2.0
    copyright-owner: Apache Software Foundation

  paths-ignore:
    - seatunnel-dist
    - NOTICE
    - LICENSE
    - DISCLAIMER
    - mvnw.cmd
    - .mvn
    - .gitmodules
    - .gitattributes
    - .github/actions
    - '**/known-dependencies-*.txt'
    - '**/*.md'
    - '**/*.mdx'
    - '**/*.json'
    - '**/*.iml'
    - '**/*.ini'
    - '**/*.svg'
    - '**/*.txt'
    - '**/*.csv'
    - '**/.gitignore'
    - '**/LICENSE'
    - '**/NOTICE'
    - '**/.gitkeep'
    - '**/com/typesafe/config/**'
    - 'seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/config/ConfigProvider.java'
    - 'seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/config/SeaTunnelConfigSections.java'
    - 'seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/config/YamlSeaTunnelConfigBuilder.java'
    - 'seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/utils/ExceptionUtil.java'
    - 'seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/operation/AsyncOperation.java'
    - 'seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/protocol/task/AbstractSeaTunnelMessageTask.java'
    - 'seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/utils/PassiveCompletableFuture.java'
    - 'seatunnel-connectors-v2/connector-cdc/connector-cdc-postgres/src/main/java/io/debezium/connector/postgresql/connection/PostgresReplicationConnection.java'
    - 'seatunnel-shade/seatunnel-hazelcast/seatunnel-hazelcast-shade/src/main/java/com/hazelcast/**'

  comment: on-failure


================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar


================================================
FILE: AGENTS.md
================================================
# LLM Context Guide for Apache SeaTunnel

This guide helps AI assistants (LLMs / Agents) make **safe, consistent, and verifiable** changes to the Apache SeaTunnel codebase. It mirrors practices from mature Apache projects and adapts them to SeaTunnel’s **build, testing, architecture, and documentation conventions**.

## ⚠️ CRITICAL: Validate Before Proposing Changes

**Agents MUST run verification commands locally before suggesting or finalizing changes.**

```bash
# Format code (mandatory)
./mvnw spotless:apply

# Quick verification (mandatory)
./mvnw -q -DskipTests verify

# Unit tests (strongly recommended)
./mvnw test
```

Failure to meet these requirements will likely result in PR rejection.

## Git Commit Message Convention

SeaTunnel follows a **strict commit message format** to maintain a clean and searchable history.

**Format**:

```
[Type][Module] Description
```

### Types

* `Feature`  – New features
* `Fix`      – Bug fixes
* `Improve`  – Improvements to existing behavior
* `Docs`     – Documentation-only changes
* `Test`     – Test cases or test framework changes
* `Chore`    – Build, dependency, or maintenance tasks

### Modules

* `Connector-V2`  – seatunnel-connectors-v2
* `Zeta`          – seatunnel-engine (Zeta engine)
* `Core`          – seatunnel-core
* `API`           – seatunnel-api
* `Transform-V2`  – seatunnel-transforms-v2
* `Format`        – seatunnel-formats
* `Translation`   – seatunnel-translation
* `E2E`           – seatunnel-e2e

### Examples

* `[Fix][Connector-V2] Fix MySQL source split enumeration bug`
* `[Fix][Zeta] Fix checkpoint timeout under heavy backpressure`
* `[Feature][Transform-V2] Add LLM transform plugin`
* `[Improve][Core] Optimize jar package loading speed`
* `[Docs] Update quick start guide`

## Repository Structure

```text
seatunnel/
├── seatunnel-api/              # Core API definitions
├── seatunnel-connectors-v2/    # Source & Sink connectors (main contribution area)
├── seatunnel-transforms-v2/    # Transform plugins (including LLM)
├── seatunnel-engine/           # Zeta engine & Web UI
├── seatunnel-core/             # Job submission & CLI entry points
├── seatunnel-translation/      # Flink & Spark adapters
├── seatunnel-formats/          # Data formats (JSON, Avro, etc.)
├── seatunnel-e2e/              # End-to-End integration tests
├── docs/                       # Documentation (en & zh)
└── config/                     # Default configurations
```

## Code Standards

### Java Backend

* **Formatting**: Google Java Format (AOSP style), enforced by Spotless
* **Imports**:
    * No wildcard imports
    * Use shaded dependencies: `org.apache.seatunnel.shade.*`
* **Nullability**: Avoid implicit null assumptions
* **Visibility**: Keep APIs minimal; prefer package-private when possible
* **Comments**: Add comments for important methods (public APIs, complex logic). Important methods include public APIs, lifecycle hooks (initialization, start/stop, checkpoint), and complex or performance-critical logic. Example:

```java
/**
 * Enumerates source splits for parallel reading.
 * Called once during job initialization.
 *
 * @param context Split enumeration context
 * @return Collection of discovered splits
 */
@Override
public List<SourceSplit> enumerateSplits(SplitEnumerationContext context) {
    // Implementation
}
```

### Apache License Header (MANDATORY)

All **new files** MUST include the ASF license header:

```java
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
```

## 🚨 Backward Compatibility (VERY IMPORTANT)

Agents MUST treat backward compatibility as a **hard constraint**.

* DO NOT remove or rename existing config options
* DO NOT change default values casually
* DO NOT break public APIs or SPI contracts

Any incompatible change MUST:

* Be explicitly documented
* Be documented in `docs/en/introduction/concepts/incompatible-changes.md`
* Include migration guidance
* Be clearly explained in the PR description

## Dependency Rules

* DO NOT introduce new dependencies unless absolutely necessary
* Prefer existing shaded dependencies under `org.apache.seatunnel.shade.*`
* Any new dependency MUST:
    * Be justified in the PR description
    * Consider shading, size, and conflict risks

## Architecture Guidelines

### Connector (V2)

* Implement `SeaTunnelSource` or `SeaTunnelSink`
* Define configs using `Option`
* Support parallelism via `SourceSplitEnumerator`
* Avoid connector-specific logic leaking into engine or core

### Zeta Engine

* **Client**: Submits job config
* **Master**: Schedules & coordinates
* **Worker**: Executes tasks (Source → Transform → Sink)

Respect task boundaries and lifecycle semantics.

## Configuration (Option) Rules

* All user-facing configs MUST be defined using `Option`
* Each option MUST include:
    * name
    * type
    * default value (if applicable)
    * clear description
* Option names are **stable contracts** and must not be renamed lightly

## Error Handling & Logging

* Exceptions MUST include sufficient context (table, task, config key)
* Avoid swallowing exceptions
* Use proper log levels:
    * INFO  – lifecycle events
    * WARN  – recoverable issues
    * ERROR – task-failing errors
* NEVER log sensitive information (passwords, tokens, credentials)

## Documentation Rules

* Any user-visible change MUST update:

    * `docs/en`
    * `docs/zh`
* Config names, defaults, and examples MUST match the code exactly
* Documentation is part of the feature, not an afterthought

## Testing Guidelines

### Unit Tests

* Located under `src/test/java`
* Validate behavior, not implementation details
* Prefer deterministic and minimal tests

Command:

```bash
./mvnw test
```

### E2E Tests

* Located in `seatunnel-e2e`
* Uses Testcontainers
* Extend `TestSuiteBase`

Command:

```bash
./mvnw -DskipUT -DskipIT=false verify
```

## Performance Awareness

Agents MUST consider performance implications:

* Avoid unnecessary object creation in hot paths
* Be cautious with large in-memory buffers
* Consider parallelism and resource usage

## PR Scope Rule

* Keep changes minimal and focused
* Avoid unrelated refactors or formatting-only changes
* One PR should solve **one problem**

## Running & Debugging

### Build from Source

```bash
./mvnw clean install -DskipTests -Dskip.spotless=true
```

### Install Connectors

```bash
sh bin/install-plugin.sh $current_version
```

### Run Job (Zeta)

```bash
sh bin/seatunnel.sh --config config/v2.batch.config.template -e local
```


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
   
========================================================================
Apache 2.0 licenses
========================================================================

The following components are provided under the Apache License. See project link for details.
The text of each license is the standard Apache 2.0 license.

tools/dependencies/checkLicense.sh files from https://github.com/apache/skywalking
mvnw files from https://github.com/apache/maven-wrapper Apache 2.0
seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/RowKind.java from https://github.com/apache/flink
seatunnel-api/src/main/java/org/apache/seatunnel/api/state/CheckpointListener.java from https://github.com/apache/flink
seatunnel-config/seatunnel-config-shade/src/main/java/org/apache/seatunnel/shade/com/typesafe/config/    from  https://github.com/lightbend/config
seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/  from https://github.com/apache/flink
seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/reader/  from https://github.com/apache/flink
seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/source/enumerator/   from https://github.com/apache/iceberg
seatunnel-connectors-v2/connector-cdc/connector-base/src/main/java/org/apache/seatunnel/connectors/cdc/base from https://github.com/ververica/flink-cdc-connectors
seatunnel-connectors-v2/connector-cdc/connector-cdc-mysql/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/mysql from https://github.com/ververica/flink-cdc-connectors
seatunnel-connectors-v2/connector-cdc/connector-base/src/main/java/org/apache/seatunnel/connectors/cdc/debezium from https://github.com/ververica/flink-cdc-connectors
seatunnel-connectors-v2/connector-cdc/connector-cdc-sqlserver/src/main/java/io/debezium/connector/sqlserver/SqlServerStreamingChangeEventSource.java   from https://github.com/debezium/debezium
seatunnel-connectors-v2/connector-cdc/connector-cdc-mongodb/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/mongodb from https://github.com/ververica/flink-cdc-connectors
seatunnel-connectors-v2/connector-cdc/connector-cdc-postgres/src/main/java/io/debezium/connector/postgresql/connection/PostgresReplicationConnection.java     from https://github.com/debezium/debezium
generate_client_protocol.sh                                                                                                                 from https://github.com/hazelcast/hazelcast
seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/utils/ExceptionUtil.java                          from https://github.com/hazelcast/hazelcast
seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/protocol/task/AbstractSeaTunnelMessageTask.java   from https://github.com/hazelcast/hazelcast
seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/operation/AsyncOperation.java                     from https://github.com/hazelcast/hazelcast
seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/operation/AbstractJobAsyncOperation.java          from https://github.com/hazelcast/hazelcast
seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/config/ConfigProvider.java                        from https://github.com/hazelcast/hazelcast
seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/config/SeaTunnelConfigSections.java               from https://github.com/hazelcast/hazelcast
seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/config/YamlSeaTunnelConfigBuilder.java            from https://github.com/hazelcast/hazelcast
seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/job/JobStatus.java                                    from https://github.com/apache/flink
seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/execution/ExecutionState.java                     from https://github.com/apache/flink
seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/utils/PassiveCompletableFuture.java               from https://github.com/hazelcast/hazelcast
seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/checkpoint/CheckpointException.java               from https://github.com/apache/flink
seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/checkpoint/CheckpointIDCounter.java                   from https://github.com/apache/flink
seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/checkpoint/InternalCheckpointListener.java            from https://github.com/apache/flink
seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/checkpoint/StandaloneCheckpointIDCounter.java     from https://github.com/apache/flink
seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/metrics                                           from https://github.com/hazelcast/hazelcast
seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics                                                                         from https://github.com/hazelcast/hazelcast
seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/sqlengine/zeta/ZetaSQLEngine.java                                      from https://github.com/JSQLParser/JSqlParser
seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/sqlengine/zeta/ZetaSQLType.java                                        from https://github.com/JSQLParser/JSqlParser
seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/sqlengine/zeta/ZetaSQLFilter.java                                      from https://github.com/JSQLParser/JSqlParser
seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/sqlengine/zeta/ZetaSQLFunction.java                                    from https://github.com/JSQLParser/JSqlParser
seatunnel-shade/seatunnel-hazelcast/seatunnel-hazelcast-shade/src/main/java/com/hazelcast/**                                                from https://github.com/hazelcast/hazelcast
seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/LiteNodeDropOutTcpIpJoiner.java                   from https://github.com/hazelcast/hazelcast


================================================
FILE: NOTICE
================================================
Apache SeaTunnel
Copyright 2021-2024 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).


// ------------------------------------------------------------------
// NOTICE file corresponding to the section 4d of The Apache License,
// Version 2.0, in this case for Apache Flink
// ------------------------------------------------------------------

Apache Flink
Copyright 2006-2022 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).


Flink : Connectors : JDBC
Copyright 2014-2022 The Apache Software Foundation



// ------------------------------------------------------------------
// NOTICE file corresponding to the section 4d of The Apache License,
// Version 2.0, in this case for Apache Iceberg
// ------------------------------------------------------------------

Apache Iceberg
Copyright 2017-2022 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).


Iceberg : Flink
Copyright 2017-2022 The Apache Software Foundation

// ------------------------------------------------------------------
// NOTICE file corresponding to the section 4d of The Apache License,
// Version 2.0, in this case for Apache Iceberg
// ------------------------------------------------------------------
-----------------------------------------------------------------------
This product contains code form the Apache Maven Wrapper Project:
-----------------------------------------------------------------------

Apache Maven Wrapper
Copyright 2013-2022 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

The original idea and initial implementation of the maven-wrapper module is derived 
from the Gradle Wrapper which was written originally by Hans Dockter and Adam Murdoch.
Copyright 2007 the original author or authors.
-----------------------------------------------------------------------
This product contains code form the Hazelcast Project:

The packages:

com.hazelcast.internal.util.collection
com.hazelcast.internal.util.concurrent

and the classes:

com.hazelcast.internal.util.QuickMath
com.hazelcast.client.impl.protocol.util.UnsafeBuffer
com.hazelcast.client.impl.protocol.util.BufferBuilder

contain code originating from the Agrona project
(https://github.com/real-logic/Agrona).

The class com.hazelcast.internal.util.HashUtil contains code originating
from the Koloboke project (https://github.com/OpenHFT/Koloboke).

The class classloading.ThreadLocalLeakTestUtils contains code originating
from the Tomcat project (https://github.com/apache/tomcat).

com.hazelcast.internal.cluster.fd.PhiAccrualFailureDetector contains code originating
from the Akka project (https://github.com/akka/akka/).

The package com.hazelcast.internal.json contains code originating
from minimal-json project (https://github.com/ralfstx/minimal-json).

The class com.hazelcast.instance.impl.MobyNames contains code originating
from The Moby Project (https://github.com/moby/moby).

The class com.hazelcast.internal.util.graph.BronKerboschCliqueFinder contains code
originating from The JGraphT Project (https://github.com/jgrapht/jgrapht).

The packages:
com.hazelcast.sql
com.hazelcast.jet.sql

contain code originating from the Apache Calcite (https://github.com/apache/calcite)

The class com.hazelcast.jet.kafka.impl.ResumeTransactionUtil contains
code derived from the Apache Flink project.

The class com.hazelcast.internal.util.ConcurrentReferenceHashMap contains code written by Doug Lea
and updated within the WildFly project (https://github.com/wildfly/wildfly).

The class org.apache.calcite.linq4j.tree.ConstantExpression contains code
originating from the Calcite project (https://github.com/apache/calcite).

Aerospike Sink Connector
Copyright 2023 The original authors.
Contains Aerospike Client Library (https://www.aerospike.com/)
which is licensed under the AGPL 3.0 License (https://www.aerospike.com/terms/download/3rd-party-licenses)

================================================
FILE: README.md
================================================
# Apache SeaTunnel

<img src="https://seatunnel.apache.org/image/logo.png" alt="SeaTunnel Logo" height="200px" align="right" />

[![Build Workflow](https://github.com/apache/seatunnel/actions/workflows/build_main.yml/badge.svg?branch=dev)](https://github.com/apache/seatunnel/actions/workflows/build_main.yml)
[![Join Slack](https://img.shields.io/badge/slack-%23seatunnel-4f8eba?logo=slack)](https://s.apache.org/seatunnel-slack)
[![Twitter Follow](https://img.shields.io/twitter/follow/ASFSeaTunnel.svg?label=Follow&logo=twitter)](https://twitter.com/ASFSeaTunnel)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/apache/seatunnel)

## Overview
SeaTunnel is a multimodal, high-performance, distributed data integration tool, capable of synchronizing vast amounts of data daily. It's trusted by numerous companies for its efficiency and stability.

## Why Choose SeaTunnel
SeaTunnel addresses common data integration challenges:
- **Diverse Data Sources**: Seamlessly integrates with hundreds of evolving data sources.
- **Multimodal Data Integration**: Supports the integration of video, images, binary files, structured and unstructured text data.
- **Complex Synchronization Scenarios**: Supports various synchronization methods, including real-time, CDC, and full database synchronization.
- **Resource Efficiency**: Minimizes computing resources and JDBC connections for real-time synchronization.
- **Quality and Monitoring**: Provides data quality and monitoring to prevent data loss or duplication.

## Key Features
- **Diverse Connectors**: Offers support for over 160 connectors, with ongoing expansion.
- **Batch-Stream Integration**: Easily adaptable connectors simplify data integration management.
- **Distributed Snapshot Algorithm**: Ensures data consistency across synchronized data.
- **Multi-Engine Support**: Works with SeaTunnel Zeta Engine, Flink, and Spark.
- **JDBC Multiplexing and Log Parsing**: Efficiently synchronizes multi-tables and databases.
- **High Throughput and Low Latency**: Provides high-throughput data synchronization with low latency.
- **Real-Time Monitoring**: Offers detailed insights during synchronization.

## SeaTunnel Workflow
![SeaTunnel Workflow](docs/images/architecture_diagram.png)

Configure jobs, select execution engines, and parallelize data using Source Connectors. Easily develop and extend connectors to meet your needs.

## Supported Connectors
- [Source Connectors](https://seatunnel.apache.org/docs/connectors/source)
- [Sink Connectors](https://seatunnel.apache.org/docs/connectors/sink)
- [Transform Connectors](https://seatunnel.apache.org/docs/transforms)

## Getting Started
Download SeaTunnel from the [Official Website](https://seatunnel.apache.org/download).
Choose your runtime execution engine:
- [SeaTunnel Zeta Engine](https://seatunnel.apache.org/docs/getting-started/locally/quick-start-seatunnel-engine)
- [Spark](https://seatunnel.apache.org/docs/getting-started/locally/quick-start-spark)
- [Flink](https://seatunnel.apache.org/docs/getting-started/locally/quick-start-flink)

## Multimodal Data Integration
- Most data integration tools support structured and unstructured text data, and SeaTunnel does as well. Simply refer to the desired Source/Sink to use.
- For integrating video, images, and binary files with SeaTunnel, please refer to the documentation for detailed instructions.

## Apache SeaTunnel Tools
SeaTunnel Tools provides a range of peripheral tools, including Apache SeaTunnel Mcp Server, etc,please refer to [SeaTunnel Tools](https://github.com/apache/seatunnel-tools).

## Users
Companies and organizations worldwide use SeaTunnel for research, production, and commercial products. 
Explore real-world use cases of SeaTunnel, such as JP morgan, S7, JDT, Bytedance, Tencent Cloud. More use cases can be found on the [SeaTunnel Users](https://seatunnel.apache.org/user).

## Code of Conduct
Participate in this project in accordance with the Contributor Covenant [Code of Conduct](https://www.apache.org/foundation/policies/conduct).

## Contributors
We appreciate all developers for their contributions. See the [List Of Contributors](https://github.com/apache/seatunnel/graphs/contributors).

## How to Compile
Refer to this [Setup](https://seatunnel.apache.org/docs/developer/setup) for compilation instructions.

## Contact Us
- Mail list: **dev@seatunnel.apache.org**. Subscribe by sending an email to `dev-subscribe@seatunnel.apache.org`.
- Slack: [Join SeaTunnel Slack](https://s.apache.org/seatunnel-slack)
- Twitter: [ASFSeaTunnel on Twitter](https://twitter.com/ASFSeaTunnel)

## Landscapes
SeaTunnel enriches the [CNCF CLOUD NATIVE Landscape](https://landscape.cncf.io/?landscape=observability-and-analysis&license=apache-license-2-0).

## License
[Apache 2.0 License](LICENSE)

## Frequently Asked Questions

### 1. How do I install SeaTunnel?

Follow the [Local Deployment](https://seatunnel.apache.org/docs/getting-started/locally/deployment) on SeaTunnel website to get 
started quickly.
Please refer to the [Cluster Deployment](https://seatunnel.apache.org/docs/engines/zeta/hybrid-cluster-deployment)

### 2. Where can I find documentation and tutorials?
[Official Documentation](https://seatunnel.apache.org/docs) includes detailed guides and tutorials to help you get started.

### 3. Is there a community or support channel?
You can submit an issue on [GitHub Issues](https://github.com/apache/seatunnel/issues).
Join our Slack community [SeaTunnel Slack](https://s.apache.org/seatunnel-slack).
More information, please refer to [FAQ](https://seatunnel.apache.org/docs/faq). 

### 4. How can I contribute to SeaTunnel?
We welcome contributions! Please refer to our [Contribution Guidelines](https://seatunnel.apache.org/docs/developer/coding-guide) for details.



================================================
FILE: bin/install-plugin.cmd
================================================
@echo off
REM Licensed to the Apache Software Foundation (ASF) under one or more
REM contributor license agreements.  See the NOTICE file distributed with
REM this work for additional information regarding copyright ownership.
REM The ASF licenses this file to You under the Apache License, Version 2.0
REM (the "License"); you may not use this file except in compliance with
REM the License.  You may obtain a copy of the License at
REM
REM    http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing, software
REM distributed under the License is distributed on an "AS IS" BASIS,
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
REM See the License for the specific language governing permissions and
REM limitations under the License.

REM This script is used to download the connector plug-ins required during the running process.
REM All are downloaded by default. You can also choose what you need.
REM You only need to configure the plug-in name in config\plugin_config.txt.

REM Get seatunnel home
set "SEATUNNEL_HOME=%~dp0..\"
echo Set SEATUNNEL_HOME to [%SEATUNNEL_HOME%]

REM Connector default version is 3.0.0, you can also choose a custom version. eg: 3.0.0:  install-plugin.bat 3.0.0
set "version=3.0.0"
if not "%~1"=="" set "version=%~1"

REM Create the lib directory
if not exist "%SEATUNNEL_HOME%\lib" (
    mkdir "%SEATUNNEL_HOME%\lib"
    echo create lib directory
)

echo Install SeaTunnel connectors plugins, usage version is %version%

REM Create the connectors directory
if not exist "%SEATUNNEL_HOME%\connectors" (
    mkdir "%SEATUNNEL_HOME%\connectors"
    echo create connectors directory
)

for /f "usebackq delims=" %%a in ("%SEATUNNEL_HOME%\config\plugin_config") do (
    set "line=%%a"
    setlocal enabledelayedexpansion
    if "!line:~0,1!" neq "-" if "!line:~0,1!" neq "#" (
        echo install connector : !line!
        call "%SEATUNNEL_HOME%\mvnw.cmd" dependency:get -Dtransitive=false -DgroupId="org.apache.seatunnel" -DartifactId="!line!" -Dversion="%version%" -Ddest="%SEATUNNEL_HOME%\connectors"
    )
    endlocal
)


================================================
FILE: bin/install-plugin.sh
================================================
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

#This script is used to download the connector plug-ins required during the running process. 
#All are downloaded by default. You can also choose what you need. 
#You only need to configure the plug-in name in config/plugin_config.

# get seatunnel home
SEATUNNEL_HOME=$(cd $(dirname $0);cd ../;pwd)

# connector default version is 3.0.0, you can also choose a custom version. eg: 3.0.0:  sh install-plugin.sh 3.0.0
version=3.0.0

if [ -n "$1" ]; then
    version="$1"
fi

echo "Install SeaTunnel connectors plugins, usage version is ${version}"

# create the connectors directory
if [ ! -d ${SEATUNNEL_HOME}/connectors ];
  then
      mkdir ${SEATUNNEL_HOME}/connectors
      echo "create connectors directory"
fi

while read line; do
    first_char=$(echo "$line" | cut -c 1)

    if [ "$first_char" != "-" ] && [ "$first_char" != "#" ] && [ ! -z $first_char ]
      	then
      		echo "install connector : " $line
      		${SEATUNNEL_HOME}/mvnw dependency:get -Dtransitive=false -DgroupId=org.apache.seatunnel -DartifactId=${line} -Dversion=${version} -Ddest=${SEATUNNEL_HOME}/connectors
    fi

done < ${SEATUNNEL_HOME}/config/plugin_config



================================================
FILE: config/hazelcast-client.yaml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

hazelcast-client:
  cluster-name: seatunnel
  properties:
    hazelcast.logging.type: log4j2
  connection-strategy:
    connection-retry:
      cluster-connect-timeout-millis: 3000
  network:
    cluster-members:
      - localhost:5801

================================================
FILE: config/hazelcast-master.yaml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

hazelcast:
  cluster-name: seatunnel
  network:
    rest-api:
      enabled: false
      endpoint-groups:
        CLUSTER_WRITE:
          enabled: true
        DATA:
          enabled: true
    join:
      tcp-ip:
        enabled: true
        member-list:
          - localhost:5801
          - localhost:5802
    port:
      auto-increment: false
      port: 5801
  properties:
    hazelcast.invocation.max.retry.count: 20
    hazelcast.tcp.join.port.try.count: 30
    hazelcast.logging.type: log4j2
    hazelcast.operation.generic.thread.count: 50
    hazelcast.heartbeat.failuredetector.type: phi-accrual
    hazelcast.heartbeat.interval.seconds: 2
    hazelcast.max.no.heartbeat.seconds: 180
    hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 10
    hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200
    hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 100



================================================
FILE: config/hazelcast-worker.yaml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

hazelcast:
  cluster-name: seatunnel
  network:
    join:
      tcp-ip:
        enabled: true
        member-list:
          - localhost:5801
          - localhost:5802
    port:
      auto-increment: false
      port: 5802
  properties:
    hazelcast.invocation.max.retry.count: 20
    hazelcast.tcp.join.port.try.count: 30
    hazelcast.logging.type: log4j2
    hazelcast.operation.generic.thread.count: 50
    hazelcast.heartbeat.failuredetector.type: phi-accrual
    hazelcast.heartbeat.interval.seconds: 2
    hazelcast.max.no.heartbeat.seconds: 180
    hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 10
    hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200
    hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 100



================================================
FILE: config/hazelcast.yaml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

hazelcast:
  cluster-name: seatunnel
  network:
    rest-api:
      enabled: false
      endpoint-groups:
        CLUSTER_WRITE:
          enabled: true
        DATA:
          enabled: true
    join:
      tcp-ip:
        enabled: true
        member-list:
          - localhost
    port:
      auto-increment: false
      port: 5801
  properties:
    hazelcast.invocation.max.retry.count: 20
    hazelcast.tcp.join.port.try.count: 30
    hazelcast.logging.type: log4j2
    hazelcast.operation.generic.thread.count: 50
    hazelcast.heartbeat.failuredetector.type: phi-accrual
    hazelcast.heartbeat.interval.seconds: 2
    hazelcast.max.no.heartbeat.seconds: 180
    hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 10
    hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200
    hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 100



================================================
FILE: config/jvm_client_options
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# JVM Heap
-Xms256m
-Xmx512m

# JVM Dump
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-client

================================================
FILE: config/jvm_master_options
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# JVM Heap
# -Xms2g
# -Xmx2g

# JVM Dump
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server

# Metaspace
-XX:MaxMetaspaceSize=2g

# G1GC
-XX:+UseG1GC


================================================
FILE: config/jvm_options
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# JVM Heap
# -Xms2g
# -Xmx2g

# JVM Dump
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server

# Metaspace
-XX:MaxMetaspaceSize=2g

# G1GC
-XX:+UseG1GC

# GC Logging
# Uncomment the following options to enable GC logging for troubleshooting and performance analysis.
# The GC log directory will be automatically created on startup if it doesn't exist.
# -XX:+PrintGCDetails
# -XX:+PrintGCDateStamps
# -XX:+PrintGCTimeStamps
# -Xloggc:/tmp/seatunnel/gc/gc.log
# -XX:+UseGCLogFileRotation
# -XX:NumberOfGCLogFiles=10
# -XX:GCLogFileSize=200M
# -XX:+PrintGCApplicationStoppedTime


================================================
FILE: config/jvm_worker_options
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# JVM Heap
# -Xms2g
# -Xmx2g

# JVM Dump
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server

# Metaspace
-XX:MaxMetaspaceSize=2g

# G1GC
-XX:+UseG1GC


================================================
FILE: config/log4j2.properties
================================================
################################################################################
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
# limitations under the License.
################################################################################

# The minimum amount of time, in seconds, that must elapse before the file configuration is checked for changes.
monitorInterval = 60

property.file_path = ${sys:seatunnel.logs.path:-/tmp/seatunnel/logs}
property.file_name = ${sys:seatunnel.logs.file_name:-seatunnel}
property.file_split_size = 100MB
property.file_count = 100
property.file_ttl = 7d

rootLogger.level = INFO

logger.zeta.name=org.apache.seatunnel.engine
logger.zeta.level=INFO

logger.debezium.name=io.debezium.connector
logger.debezium.level=WARN

############################ log output to console #############################
#rootLogger.appenderRef.consoleStdout.ref = consoleStdoutAppender
#rootLogger.appenderRef.consoleStderr.ref = consoleStderrAppender
############################ log output to console #############################
############################ log output to file    #############################
rootLogger.appenderRef.file.ref = fileAppender
############################ log output to file    #############################

appender.consoleStdout.name = consoleStdoutAppender
appender.consoleStdout.type = CONSOLE
appender.consoleStdout.target = SYSTEM_OUT
appender.consoleStdout.layout.type = PatternLayout
appender.consoleStdout.layout.pattern = [%X{ST-JID}] %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n
appender.consoleStdout.filter.acceptLtWarn.type = ThresholdFilter
appender.consoleStdout.filter.acceptLtWarn.level = WARN
appender.consoleStdout.filter.acceptLtWarn.onMatch = DENY
appender.consoleStdout.filter.acceptLtWarn.onMismatch = ACCEPT

appender.consoleStderr.name = consoleStderrAppender
appender.consoleStderr.type = CONSOLE
appender.consoleStderr.target = SYSTEM_ERR
appender.consoleStderr.layout.type = PatternLayout
appender.consoleStderr.layout.pattern = [%X{ST-JID}] %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n
appender.consoleStderr.filter.acceptGteWarn.type = ThresholdFilter
appender.consoleStderr.filter.acceptGteWarn.level = WARN
appender.consoleStderr.filter.acceptGteWarn.onMatch = ACCEPT
appender.consoleStderr.filter.acceptGteWarn.onMismatch = DENY

appender.routing.name = routingAppender
appender.routing.type = Routing
appender.routing.purge.type = IdlePurgePolicy
appender.routing.purge.timeToLive = 60
appender.routing.purge.checkInterval = 1
appender.routing.route.type = Routes
appender.routing.route.pattern = $${ctx:ST-JID}
appender.routing.route.system.type = Route
appender.routing.route.system.key = $${ctx:ST-JID}
appender.routing.route.system.ref = fileAppender
appender.routing.route.job.type = Route
appender.routing.route.job.appender.type = File
appender.routing.route.job.appender.name = job-${ctx:ST-JID}
appender.routing.route.job.appender.fileName = ${file_path}/job-${ctx:ST-JID}.log
appender.routing.route.job.appender.layout.type = PatternLayout
appender.routing.route.job.appender.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n

appender.file.name = fileAppender
appender.file.type = RollingFile
appender.file.fileName = ${file_path}/${file_name}.log
appender.file.filePattern = ${file_path}/${file_name}.log.%d{yyyy-MM-dd}-%i
appender.file.append = true
appender.file.layout.type = PatternLayout
appender.file.layout.pattern = [%X{ST-JID}] %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n
appender.file.policies.type = Policies
appender.file.policies.time.type = TimeBasedTriggeringPolicy
appender.file.policies.time.modulate = true
appender.file.policies.size.type = SizeBasedTriggeringPolicy
appender.file.policies.size.size = ${file_split_size}
appender.file.strategy.type = DefaultRolloverStrategy
appender.file.strategy.fileIndex = nomax
appender.file.strategy.action.type = Delete
appender.file.strategy.action.basepath = ${file_path}
appender.file.strategy.action.maxDepth = 1
appender.file.strategy.action.condition.type = IfFileName
appender.file.strategy.action.condition.glob = ${file_name}.log*
appender.file.strategy.action.condition.nested_condition.type = IfAny
appender.file.strategy.action.condition.nested_condition.lastModify.type = IfLastModified
appender.file.strategy.action.condition.nested_condition.lastModify.age = ${file_ttl}
appender.file.strategy.action.condition.nested_condition.fileCount.type = IfAccumulatedFileCount
appender.file.strategy.action.condition.nested_condition.fileCount.exceeds = ${file_count}


================================================
FILE: config/log4j2_client.properties
================================================
################################################################################
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
# limitations under the License.
################################################################################

# The minimum amount of time, in seconds, that must elapse before the file configuration is checked for changes.
monitorInterval = 60

property.file_path = ${sys:seatunnel.logs.path:-/tmp/seatunnel/logs}
property.file_name = ${sys:seatunnel.logs.file_name:-seatunnel}
property.file_split_size = 100MB
property.file_count = 100
property.file_ttl = 7d

rootLogger.level = INFO

############################ log output to console #############################
rootLogger.appenderRef.consoleStdout.ref = consoleStdoutAppender
rootLogger.appenderRef.consoleStderr.ref = consoleStderrAppender
############################ log output to console #############################
############################ log output to file    #############################
#rootLogger.appenderRef.file.ref = fileAppender
############################ log output to file    #############################

appender.consoleStdout.name = consoleStdoutAppender
appender.consoleStdout.type = CONSOLE
appender.consoleStdout.target = SYSTEM_OUT
appender.consoleStdout.layout.type = PatternLayout
appender.consoleStdout.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n
appender.consoleStdout.filter.acceptLtWarn.type = ThresholdFilter
appender.consoleStdout.filter.acceptLtWarn.level = WARN
appender.consoleStdout.filter.acceptLtWarn.onMatch = DENY
appender.consoleStdout.filter.acceptLtWarn.onMismatch = ACCEPT

appender.consoleStderr.name = consoleStderrAppender
appender.consoleStderr.type = CONSOLE
appender.consoleStderr.target = SYSTEM_ERR
appender.consoleStderr.layout.type = PatternLayout
appender.consoleStderr.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n
appender.consoleStderr.filter.acceptGteWarn.type = ThresholdFilter
appender.consoleStderr.filter.acceptGteWarn.level = WARN
appender.consoleStderr.filter.acceptGteWarn.onMatch = ACCEPT
appender.consoleStderr.filter.acceptGteWarn.onMismatch = DENY

#appender.file.name = fileAppender
#appender.file.type = RollingFile
#appender.file.fileName = ${file_path}/${file_name}.log
#appender.file.filePattern = ${file_path}/${file_name}.log.%d{yyyy-MM-dd}-%i
#appender.file.append = true
#appender.file.layout.type = PatternLayout
#appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n
#appender.file.policies.type = Policies
#appender.file.policies.time.type = TimeBasedTriggeringPolicy
#appender.file.policies.time.modulate = true
#appender.file.policies.size.type = SizeBasedTriggeringPolicy
#appender.file.policies.size.size = ${file_split_size}
#appender.file.strategy.type = DefaultRolloverStrategy
#appender.file.strategy.fileIndex = nomax
#appender.file.strategy.action.type = Delete
#appender.file.strategy.action.basepath = ${file_path}
#appender.file.strategy.action.maxDepth = 1
#appender.file.strategy.action.condition.type = IfFileName
#appender.file.strategy.action.condition.glob = ${file_name}.log*
#appender.file.strategy.action.condition.nested_condition.type = IfAny
#appender.file.strategy.action.condition.nested_condition.lastModify.type = IfLastModified
#appender.file.strategy.action.condition.nested_condition.lastModify.age = ${file_ttl}
#appender.file.strategy.action.condition.nested_condition.fileCount.type = IfAccumulatedFileCount
#appender.file.strategy.action.condition.nested_condition.fileCount.exceeds = ${file_count}

================================================
FILE: config/plugin_config
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# This mapping is used to resolve the Jar package name without version (or call artifactId)
#
# corresponding to the module in the user Config, helping SeaTunnel to load the correct Jar package.
# Don't modify the delimiter " -- ", just select the plugin you need
--connectors-v2--
connector-amazondynamodb
connector-assert
connector-cassandra
connector-cdc-mysql
connector-cdc-mongodb
connector-cdc-sqlserver
connector-cdc-postgres
connector-cdc-oracle
connector-cdc-tidb
connector-clickhouse
connector-datahub
connector-databend
connector-dingtalk
connector-doris
connector-elasticsearch
connector-email
connector-file-ftp
connector-file-hadoop
connector-file-local
connector-file-oss
connector-file-jindo-oss
connector-file-s3
connector-file-sftp
connector-file-obs
connector-google-sheets
connector-google-firestore
connector-graphql
connector-hive
connector-http-base
connector-http-feishu
connector-http-gitlab
connector-http-github
connector-http-jira
connector-http-klaviyo
connector-http-lemlist
connector-http-myhours
connector-http-notion
connector-http-onesignal
connector-http-wechat
connector-http-airtable
connector-hudi
connector-iceberg
connector-influxdb
connector-iotdb
connector-jdbc
connector-kafka
connector-kudu
connector-maxcompute
connector-mongodb
connector-neo4j
connector-openmldb
connector-pulsar
connector-rabbitmq
connector-redis
connector-druid
connector-s3-redshift
connector-sentry
connector-slack
connector-socket
connector-starrocks
connector-tablestore
connector-selectdb-cloud
connector-hbase
connector-amazonsqs
connector-easysearch
connector-paimon
connector-rocketmq
connector-tdengine
connector-web3j
connector-milvus
connector-activemq
connector-prometheus
connector-sls
connector-qdrant
connector-typesense
connector-cdc-opengauss
connector-sensorsdata
connector-hugegraph
connector-lance

================================================
FILE: config/seatunnel-env.cmd
================================================
@echo off
REM Licensed to the Apache Software Foundation (ASF) under one or more
REM contributor license agreements.  See the NOTICE file distributed with
REM this work for additional information regarding copyright ownership.
REM The ASF licenses this file to You under the Apache License, Version 2.0
REM (the "License"); you may not use this file except in compliance with
REM the License.  You may obtain a copy of the License at
REM
REM    http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing, software
REM distributed under the License is distributed on an "AS IS" BASIS,
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
REM See the License for the specific language governing permissions and
REM limitations under the License.

REM Home directory of spark distribution.
if "%SPARK_HOME%" == "" set "SPARK_HOME=C:\Program Files\spark"

REM Home directory of flink distribution.
if "%FLINK_HOME%" == "" set "FLINK_HOME=C:\Program Files\flink"

REM Whether to enable metalake (true/false).
if "%METALAKE_ENABLED%" == "" set "META_LAKE_ENABLED=false"

REM Type of metalake implementation. 
if "%METALAKE_TYPE%" == "" set "METALAKE_TYPE=gravitino"

REM Metalake service URL, format: http://host:port/api/metalakes/{metalake_name}/catalogs/
if "%METALAKE_URL%" == "" set "METALAKE_URL=http://localhost:8090/api/metalakes/default_metalake_name/catalogs/"

================================================
FILE: config/seatunnel-env.sh
================================================
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# Home directory of spark distribution.
SPARK_HOME=${SPARK_HOME:-/opt/spark}
# Home directory of flink distribution.
FLINK_HOME=${FLINK_HOME:-/opt/flink}
# Whether to enable metalake (true/false).
METALAKE_ENABLED=${METALAKE_ENABLED:-false}
# Type of metalake implementation.
METALAKE_TYPE=${METALAKE_TYPE:-gravitino}
# Metalake service URL, format: http://host:port/api/metalakes/{metalake_name}/catalogs/.
METALAKE_URL=${METALAKE_URL:-http://localhost:8090/api/metalakes/default_metalake_name/catalogs/}


================================================
FILE: config/seatunnel.yaml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

seatunnel:
  engine:
    classloader-cache-mode: true
    history-job-expire-minutes: 1440
    backup-count: 1
    queue-type: blockingqueue
    print-execution-info-interval: 60
    print-job-metrics-info-interval: 60
    slot-service:
      dynamic-slot: true
    checkpoint:
      interval: 10000
      timeout: 60000
      storage:
        type: hdfs
        max-retained: 3
        plugin-config:
          namespace: /tmp/seatunnel/checkpoint_snapshot
          storage.type: hdfs
          fs.defaultFS: file:///tmp/ # Ensure that the directory has written permission
    telemetry:
      metric:
        enabled: false
      logs:
        scheduled-deletion-enable: true
    http:
      enable-http: true
      port: 8080
      enable-dynamic-port: false
      # Uncomment the following lines to enable basic authentication for web UI
      # enable-basic-auth: true
      # basic-auth-username: admin
      # basic-auth-password: admin


================================================
FILE: config/v2.batch.config.template
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
######
###### This config file is a demonstration of streaming processing in SeaTunnel config
######

env {
  # You can set SeaTunnel environment configuration here
  parallelism = 2
  job.mode = "BATCH"
  checkpoint.interval = 10000
}

source {
  # This is a example source plugin **only for test and demonstrate the feature source plugin**
  FakeSource {
    parallelism = 2
    plugin_output = "fake"
    row.num = 16
    schema = {
      fields {
        name = "string"
        age = "int"
      }
    }
  }

  # If you would like to get more information about how to configure SeaTunnel and see full list of source plugins,
  # please go to https://seatunnel.apache.org/docs/connector-v2/source
}

sink {
  Console {
  }

  # If you would like to get more information about how to configure SeaTunnel and see full list of sink plugins,
  # please go to https://seatunnel.apache.org/docs/connector-v2/sink
}


================================================
FILE: config/v2.streaming.conf.template
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
######
###### This config file is a demonstration of streaming processing in SeaTunnel config
######

env {
  # You can set SeaTunnel environment configuration here
  parallelism = 2
  job.mode = "STREAMING"
  checkpoint.interval = 2000
}

source {
  # This is a example source plugin **only for test and demonstrate the feature source plugin**
  FakeSource {
    parallelism = 2
    plugin_output = "fake"
    row.num = 16
    schema = {
      fields {
        name = "string"
        age = "int"
      }
    }
  }

  # If you would like to get more information about how to configure SeaTunnel and see full list of source plugins,
  # please go to https://seatunnel.apache.org/docs/connector-v2/source
}

sink {
  Console {
  }

  # If you would like to get more information about how to configure SeaTunnel and see full list of sink plugins,
  # please go to https://seatunnel.apache.org/docs/connector-v2/sink
}


================================================
FILE: deploy/kubernetes/seatunnel/Chart.yaml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#


apiVersion: v2
name: seatunnel-helm
description: SeaTunnel is a next-generation, high-performance, distributed data integration tool, capable of synchronizing vast amounts of data daily. It's trusted by numerous companies for its efficiency and stability.
home: https://seatunnel.apache.org
icon: https://seatunnel.apache.org/image/logo.png
keywords:
  - seatunnel
  - integration
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 2.3.10

# This is the version number of the application being deployed. This version number should be
# incremen
Download .txt
Showing preview only (661K chars total). Download the full file or copy to clipboard to get everything.
gitextract_vzl20rdb/

├── .asf.yaml
├── .dlc.json
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.yml
│   │   ├── feature-request.yml
│   │   └── umbrella.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── add-label.yml
│       ├── approve-label-trigger.yml
│       ├── approve-label.yml
│       ├── backend.yml
│       ├── build_main.yml
│       ├── codeql.yaml
│       ├── labeler/
│       │   └── label-scope-conf.yml
│       ├── notify_test_workflow.yml
│       ├── publish-docker.yaml
│       ├── publish-helm-chart.yaml
│       ├── schedule_backend.yml
│       ├── stale.yml
│       └── update_build_status.yml
├── .gitignore
├── .gitmodules
├── .licenserc.yaml
├── .mvn/
│   └── wrapper/
│       └── maven-wrapper.properties
├── AGENTS.md
├── LICENSE
├── NOTICE
├── README.md
├── bin/
│   ├── install-plugin.cmd
│   └── install-plugin.sh
├── config/
│   ├── hazelcast-client.yaml
│   ├── hazelcast-master.yaml
│   ├── hazelcast-worker.yaml
│   ├── hazelcast.yaml
│   ├── jvm_client_options
│   ├── jvm_master_options
│   ├── jvm_options
│   ├── jvm_worker_options
│   ├── log4j2.properties
│   ├── log4j2_client.properties
│   ├── plugin_config
│   ├── seatunnel-env.cmd
│   ├── seatunnel-env.sh
│   ├── seatunnel.yaml
│   ├── v2.batch.config.template
│   └── v2.streaming.conf.template
├── deploy/
│   └── kubernetes/
│       └── seatunnel/
│           ├── Chart.yaml
│           ├── conf/
│           │   ├── hazelcast-client.yaml
│           │   ├── hazelcast-master.yaml
│           │   ├── hazelcast-worker.yaml
│           │   ├── jvm_client_options
│           │   ├── jvm_master_options
│           │   ├── jvm_worker_options
│           │   ├── log4j2.properties
│           │   └── seatunnel.yaml
│           ├── templates/
│           │   ├── NOTES.txt
│           │   ├── _helpers.tpl
│           │   ├── configmap.yaml
│           │   ├── deployment-seatunnel-master.yaml
│           │   ├── deployment-seatunnel-worker.yaml
│           │   ├── ingress.yaml
│           │   ├── rbac.yaml
│           │   ├── service-headless.yaml
│           │   └── service-master-headless.yaml
│           └── values.yaml
├── docs/
│   ├── en/
│   │   ├── architecture/
│   │   │   ├── api-design/
│   │   │   │   ├── catalog-table.md
│   │   │   │   ├── sink-architecture.md
│   │   │   │   ├── source-architecture.md
│   │   │   │   └── translation-layer.md
│   │   │   ├── design-philosophy.md
│   │   │   ├── engine/
│   │   │   │   ├── dag-execution.md
│   │   │   │   ├── engine-architecture.md
│   │   │   │   └── resource-management.md
│   │   │   ├── fault-tolerance/
│   │   │   │   ├── checkpoint-mechanism.md
│   │   │   │   └── exactly-once.md
│   │   │   ├── features/
│   │   │   │   └── multi-table.md
│   │   │   └── overview.md
│   │   ├── connectors/
│   │   │   ├── changelog/
│   │   │   │   ├── connector-activemq.md
│   │   │   │   ├── connector-aerospike.md
│   │   │   │   ├── connector-amazondynamodb.md
│   │   │   │   ├── connector-amazonsqs.md
│   │   │   │   ├── connector-assert.md
│   │   │   │   ├── connector-cassandra.md
│   │   │   │   ├── connector-cdc-base.md
│   │   │   │   ├── connector-cdc-mongodb.md
│   │   │   │   ├── connector-cdc-mysql.md
│   │   │   │   ├── connector-cdc-opengauss.md
│   │   │   │   ├── connector-cdc-oracle.md
│   │   │   │   ├── connector-cdc-postgres.md
│   │   │   │   ├── connector-cdc-sqlserver.md
│   │   │   │   ├── connector-cdc-tidb.md
│   │   │   │   ├── connector-cdc.md
│   │   │   │   ├── connector-clickhouse.md
│   │   │   │   ├── connector-cloudberry.md
│   │   │   │   ├── connector-common.md
│   │   │   │   ├── connector-console.md
│   │   │   │   ├── connector-databend.md
│   │   │   │   ├── connector-datahub.md
│   │   │   │   ├── connector-dingtalk.md
│   │   │   │   ├── connector-doris.md
│   │   │   │   ├── connector-druid.md
│   │   │   │   ├── connector-easysearch.md
│   │   │   │   ├── connector-elasticsearch.md
│   │   │   │   ├── connector-email.md
│   │   │   │   ├── connector-fake.md
│   │   │   │   ├── connector-file-base-hadoop.md
│   │   │   │   ├── connector-file-base.md
│   │   │   │   ├── connector-file-cos.md
│   │   │   │   ├── connector-file-ftp.md
│   │   │   │   ├── connector-file-hadoop.md
│   │   │   │   ├── connector-file-jindo-oss.md
│   │   │   │   ├── connector-file-local.md
│   │   │   │   ├── connector-file-obs.md
│   │   │   │   ├── connector-file-oss-jindo.md
│   │   │   │   ├── connector-file-oss.md
│   │   │   │   ├── connector-file-s3.md
│   │   │   │   ├── connector-file-sftp.md
│   │   │   │   ├── connector-file.md
│   │   │   │   ├── connector-fluss.md
│   │   │   │   ├── connector-google-firestore.md
│   │   │   │   ├── connector-google-sheets.md
│   │   │   │   ├── connector-graphql.md
│   │   │   │   ├── connector-hbase.md
│   │   │   │   ├── connector-hive.md
│   │   │   │   ├── connector-http-airtable.md
│   │   │   │   ├── connector-http-base.md
│   │   │   │   ├── connector-http-feishu.md
│   │   │   │   ├── connector-http-github.md
│   │   │   │   ├── connector-http-gitlab.md
│   │   │   │   ├── connector-http-jira.md
│   │   │   │   ├── connector-http-klaviyo.md
│   │   │   │   ├── connector-http-lemlist.md
│   │   │   │   ├── connector-http-myhours.md
│   │   │   │   ├── connector-http-notion.md
│   │   │   │   ├── connector-http-onesignal.md
│   │   │   │   ├── connector-http-persistiq.md
│   │   │   │   ├── connector-http-wechat.md
│   │   │   │   ├── connector-http.md
│   │   │   │   ├── connector-hudi.md
│   │   │   │   ├── connector-hugegraph.md
│   │   │   │   ├── connector-iceberg.md
│   │   │   │   ├── connector-influxdb.md
│   │   │   │   ├── connector-iotdb.md
│   │   │   │   ├── connector-jdbc.md
│   │   │   │   ├── connector-kafka.md
│   │   │   │   ├── connector-kudu.md
│   │   │   │   ├── connector-lance.md
│   │   │   │   ├── connector-maxcompute.md
│   │   │   │   ├── connector-milvus.md
│   │   │   │   ├── connector-mongodb.md
│   │   │   │   ├── connector-neo4j.md
│   │   │   │   ├── connector-openmldb.md
│   │   │   │   ├── connector-paimon.md
│   │   │   │   ├── connector-prometheus.md
│   │   │   │   ├── connector-pulsar.md
│   │   │   │   ├── connector-qdrant.md
│   │   │   │   ├── connector-rabbitmq.md
│   │   │   │   ├── connector-redis.md
│   │   │   │   ├── connector-rocketmq.md
│   │   │   │   ├── connector-s3-redshift.md
│   │   │   │   ├── connector-selectdb-cloud.md
│   │   │   │   ├── connector-sensorsdata.md
│   │   │   │   ├── connector-sentry.md
│   │   │   │   ├── connector-slack.md
│   │   │   │   ├── connector-sls.md
│   │   │   │   ├── connector-socket.md
│   │   │   │   ├── connector-starrocks.md
│   │   │   │   ├── connector-tablestore.md
│   │   │   │   ├── connector-tdengine.md
│   │   │   │   ├── connector-typesense.md
│   │   │   │   └── connector-web3j.md
│   │   │   ├── common-options/
│   │   │   │   ├── sink-common-options.md
│   │   │   │   └── source-common-options.md
│   │   │   ├── connector-isolated-dependency.md
│   │   │   ├── formats/
│   │   │   │   ├── avro.md
│   │   │   │   ├── canal-json.md
│   │   │   │   ├── cdc-compatible-debezium-json.md
│   │   │   │   ├── debezium-json.md
│   │   │   │   ├── kafka-compatible-kafkaconnect-json.md
│   │   │   │   ├── maxwell-json.md
│   │   │   │   ├── ogg-json.md
│   │   │   │   └── protobuf.md
│   │   │   ├── sink/
│   │   │   │   ├── Activemq.md
│   │   │   │   ├── Aerospike.md
│   │   │   │   ├── Airtable.md
│   │   │   │   ├── AmazonDynamoDB.md
│   │   │   │   ├── AmazonSqs.md
│   │   │   │   ├── Assert.md
│   │   │   │   ├── Cassandra.md
│   │   │   │   ├── Clickhouse.md
│   │   │   │   ├── ClickhouseFile.md
│   │   │   │   ├── Cloudberry.md
│   │   │   │   ├── Console.md
│   │   │   │   ├── CosFile.md
│   │   │   │   ├── DB2.md
│   │   │   │   ├── Databend.md
│   │   │   │   ├── Datahub.md
│   │   │   │   ├── DingTalk.md
│   │   │   │   ├── Doris.md
│   │   │   │   ├── Druid.md
│   │   │   │   ├── DuckDB.md
│   │   │   │   ├── Easysearch.md
│   │   │   │   ├── Elasticsearch.md
│   │   │   │   ├── Email.md
│   │   │   │   ├── Enterprise-WeChat.md
│   │   │   │   ├── Feishu.md
│   │   │   │   ├── Fluss.md
│   │   │   │   ├── FtpFile.md
│   │   │   │   ├── GoogleFirestore.md
│   │   │   │   ├── GraphQL.md
│   │   │   │   ├── Greenplum.md
│   │   │   │   ├── Hbase.md
│   │   │   │   ├── HdfsFile.md
│   │   │   │   ├── Hive.md
│   │   │   │   ├── Http.md
│   │   │   │   ├── Hudi.md
│   │   │   │   ├── HugeGraph.md
│   │   │   │   ├── Iceberg.md
│   │   │   │   ├── InfluxDB.md
│   │   │   │   ├── IoTDB.md
│   │   │   │   ├── IoTDBv2.md
│   │   │   │   ├── Jdbc.md
│   │   │   │   ├── Kafka.md
│   │   │   │   ├── Kingbase.md
│   │   │   │   ├── Kudu.md
│   │   │   │   ├── Lance.md
│   │   │   │   ├── LocalFile.md
│   │   │   │   ├── Maxcompute.md
│   │   │   │   ├── Milvus.md
│   │   │   │   ├── MongoDB.md
│   │   │   │   ├── Mysql.md
│   │   │   │   ├── Neo4j.md
│   │   │   │   ├── ObsFile.md
│   │   │   │   ├── OceanBase.md
│   │   │   │   ├── Oracle.md
│   │   │   │   ├── OssFile.md
│   │   │   │   ├── OssJindoFile.md
│   │   │   │   ├── Paimon.md
│   │   │   │   ├── Phoenix.md
│   │   │   │   ├── PostgreSql.md
│   │   │   │   ├── Prometheus.md
│   │   │   │   ├── Pulsar.md
│   │   │   │   ├── Qdrant.md
│   │   │   │   ├── Rabbitmq.md
│   │   │   │   ├── Redis.md
│   │   │   │   ├── Redshift.md
│   │   │   │   ├── RocketMQ.md
│   │   │   │   ├── S3-Redshift.md
│   │   │   │   ├── S3File.md
│   │   │   │   ├── SelectDB-Cloud.md
│   │   │   │   ├── SensorsData.md
│   │   │   │   ├── Sentry.md
│   │   │   │   ├── SftpFile.md
│   │   │   │   ├── Slack.md
│   │   │   │   ├── Sls.md
│   │   │   │   ├── Snowflake.md
│   │   │   │   ├── Socket.md
│   │   │   │   ├── SqlServer.md
│   │   │   │   ├── StarRocks.md
│   │   │   │   ├── TDengine.md
│   │   │   │   ├── Tablestore.md
│   │   │   │   ├── Typesense.md
│   │   │   │   └── Vertica.md
│   │   │   └── source/
│   │   │       ├── Airtable.md
│   │   │       ├── AmazonDynamoDB.md
│   │   │       ├── AmazonSqs.md
│   │   │       ├── Cassandra.md
│   │   │       ├── Clickhouse.md
│   │   │       ├── Cloudberry.md
│   │   │       ├── CosFile.md
│   │   │       ├── DB2.md
│   │   │       ├── Databend.md
│   │   │       ├── Doris.md
│   │   │       ├── DuckDB.md
│   │   │       ├── Easysearch.md
│   │   │       ├── Elasticsearch.md
│   │   │       ├── FakeSource.md
│   │   │       ├── FtpFile.md
│   │   │       ├── Github.md
│   │   │       ├── Gitlab.md
│   │   │       ├── GoogleSheets.md
│   │   │       ├── GraphQL.md
│   │   │       ├── Greenplum.md
│   │   │       ├── Hbase.md
│   │   │       ├── HdfsFile.md
│   │   │       ├── Hive.md
│   │   │       ├── HiveJdbc.md
│   │   │       ├── Http.md
│   │   │       ├── Iceberg.md
│   │   │       ├── InfluxDB.md
│   │   │       ├── IoTDB.md
│   │   │       ├── IoTDBv2.md
│   │   │       ├── Jdbc.md
│   │   │       ├── Jira.md
│   │   │       ├── Kafka.md
│   │   │       ├── Kingbase.md
│   │   │       ├── Klaviyo.md
│   │   │       ├── Kudu.md
│   │   │       ├── Lemlist.md
│   │   │       ├── LocalFile.md
│   │   │       ├── Maxcompute.md
│   │   │       ├── Milvus.md
│   │   │       ├── MongoDB-CDC.md
│   │   │       ├── MongoDB.md
│   │   │       ├── MyHours.md
│   │   │       ├── MySQL-CDC.md
│   │   │       ├── Mysql.md
│   │   │       ├── Neo4j.md
│   │   │       ├── Notion.md
│   │   │       ├── ObsFile.md
│   │   │       ├── OceanBase.md
│   │   │       ├── OneSignal.md
│   │   │       ├── OpenMldb.md
│   │   │       ├── Opengauss-CDC.md
│   │   │       ├── Oracle-CDC.md
│   │   │       ├── Oracle.md
│   │   │       ├── OssFile.md
│   │   │       ├── OssJindoFile.md
│   │   │       ├── Paimon.md
│   │   │       ├── Persistiq.md
│   │   │       ├── Phoenix.md
│   │   │       ├── PostgreSQL-CDC.md
│   │   │       ├── PostgreSQL.md
│   │   │       ├── Prometheus.md
│   │   │       ├── Pulsar.md
│   │   │       ├── Qdrant.md
│   │   │       ├── Rabbitmq.md
│   │   │       ├── Redis.md
│   │   │       ├── Redshift.md
│   │   │       ├── RocketMQ.md
│   │   │       ├── S3File.md
│   │   │       ├── SftpFile.md
│   │   │       ├── Sls.md
│   │   │       ├── Snowflake.md
│   │   │       ├── Socket.md
│   │   │       ├── SqlServer-CDC.md
│   │   │       ├── SqlServer.md
│   │   │       ├── StarRocks.md
│   │   │       ├── TDengine.md
│   │   │       ├── Tablestore.md
│   │   │       ├── TiDB-CDC.md
│   │   │       ├── Typesense.md
│   │   │       ├── Vertica.md
│   │   │       └── Web3j.md
│   │   ├── developer/
│   │   │   ├── coding-guide.md
│   │   │   ├── contribute-plugin.md
│   │   │   ├── contribute-transform-v2-guide.md
│   │   │   ├── docs-format-specification.md
│   │   │   ├── how-to-create-your-connector.md
│   │   │   ├── new-license.md
│   │   │   └── setup.md
│   │   ├── engines/
│   │   │   ├── command/
│   │   │   │   ├── connector-check.md
│   │   │   │   └── usage.mdx
│   │   │   ├── event-listener.md
│   │   │   ├── flink.md
│   │   │   ├── overview.md
│   │   │   ├── spark.md
│   │   │   └── zeta/
│   │   │       ├── about.md
│   │   │       ├── checkpoint-storage.md
│   │   │       ├── deployment.md
│   │   │       ├── download-seatunnel.md
│   │   │       ├── engine-jar-storage-mode.md
│   │   │       ├── hybrid-cluster-deployment.md
│   │   │       ├── local-mode-deployment.md
│   │   │       ├── logging.md
│   │   │       ├── resource-isolation.md
│   │   │       ├── rest-api-v1.md
│   │   │       ├── rest-api-v2.md
│   │   │       ├── security.md
│   │   │       ├── separated-cluster-deployment.md
│   │   │       ├── slot-allocation-strategy.md
│   │   │       ├── tcp.md
│   │   │       ├── telemetry.md
│   │   │       ├── tuning-guide.md
│   │   │       ├── user-command.md
│   │   │       └── web-ui.md
│   │   ├── faq.md
│   │   ├── getting-started/
│   │   │   ├── docker/
│   │   │   │   └── docker.md
│   │   │   ├── kubernetes/
│   │   │   │   ├── helm.md
│   │   │   │   └── kubernetes.mdx
│   │   │   └── locally/
│   │   │       ├── deployment.md
│   │   │       ├── quick-start-flink.md
│   │   │       ├── quick-start-seatunnel-engine.md
│   │   │       └── quick-start-spark.md
│   │   ├── introduction/
│   │   │   ├── about.md
│   │   │   ├── concepts/
│   │   │   │   ├── config.md
│   │   │   │   ├── connector-v2-features.md
│   │   │   │   ├── gravitino-type-mapping.md
│   │   │   │   ├── incompatible-changes.md
│   │   │   │   └── schema-feature.md
│   │   │   ├── configuration/
│   │   │   │   ├── JobEnvConfig.md
│   │   │   │   ├── config-encryption-decryption.md
│   │   │   │   ├── metalake.md
│   │   │   │   ├── schema-evolution.md
│   │   │   │   ├── sink-options-placeholders.md
│   │   │   │   ├── speed-limit.md
│   │   │   │   └── sql-config.md
│   │   │   └── how-it-works.md
│   │   ├── tools/
│   │   │   ├── overview.md
│   │   │   ├── seatunnel-mcp.md
│   │   │   ├── seatunnel-skill.md
│   │   │   └── x2seatunnel.md
│   │   └── transforms/
│   │       ├── common-options/
│   │       │   └── common-options.md
│   │       ├── copy.md
│   │       ├── data-validator.md
│   │       ├── define-sink-type.md
│   │       ├── dynamic-compile.md
│   │       ├── embedding.md
│   │       ├── encrypt.md
│   │       ├── field-mapper.md
│   │       ├── field-rename.md
│   │       ├── filter-rowkind.md
│   │       ├── filter.md
│   │       ├── jsonpath.md
│   │       ├── llm.md
│   │       ├── metadata.md
│   │       ├── regexextract.md
│   │       ├── replace.md
│   │       ├── rowkind-extractor.md
│   │       ├── split.md
│   │       ├── sql-functions.md
│   │       ├── sql-udf.md
│   │       ├── sql.md
│   │       ├── table-filter.md
│   │       ├── table-merge.md
│   │       ├── table-rename.md
│   │       └── transform-multi-table.md
│   ├── sidebars.js
│   └── zh/
│       ├── architecture/
│       │   ├── api-design/
│       │   │   ├── catalog-table.md
│       │   │   ├── sink-architecture.md
│       │   │   ├── source-architecture.md
│       │   │   └── translation-layer.md
│       │   ├── design-philosophy.md
│       │   ├── engine/
│       │   │   ├── dag-execution.md
│       │   │   ├── engine-architecture.md
│       │   │   └── resource-management.md
│       │   ├── fault-tolerance/
│       │   │   ├── checkpoint-mechanism.md
│       │   │   └── exactly-once.md
│       │   ├── features/
│       │   │   └── multi-table.md
│       │   └── overview.md
│       ├── connectors/
│       │   ├── changelog/
│       │   │   ├── connector-activemq.md
│       │   │   ├── connector-aerospike.md
│       │   │   ├── connector-amazondynamodb.md
│       │   │   ├── connector-amazonsqs.md
│       │   │   ├── connector-assert.md
│       │   │   ├── connector-cassandra.md
│       │   │   ├── connector-cdc-base.md
│       │   │   ├── connector-cdc-mongodb.md
│       │   │   ├── connector-cdc-mysql.md
│       │   │   ├── connector-cdc-opengauss.md
│       │   │   ├── connector-cdc-oracle.md
│       │   │   ├── connector-cdc-postgres.md
│       │   │   ├── connector-cdc-sqlserver.md
│       │   │   ├── connector-cdc-tidb.md
│       │   │   ├── connector-cdc.md
│       │   │   ├── connector-clickhouse.md
│       │   │   ├── connector-cloudberry.md
│       │   │   ├── connector-common.md
│       │   │   ├── connector-console.md
│       │   │   ├── connector-databend.md
│       │   │   ├── connector-datahub.md
│       │   │   ├── connector-dingtalk.md
│       │   │   ├── connector-doris.md
│       │   │   ├── connector-druid.md
│       │   │   ├── connector-easysearch.md
│       │   │   ├── connector-elasticsearch.md
│       │   │   ├── connector-email.md
│       │   │   ├── connector-fake.md
│       │   │   ├── connector-file-base-hadoop.md
│       │   │   ├── connector-file-base.md
│       │   │   ├── connector-file-cos.md
│       │   │   ├── connector-file-ftp.md
│       │   │   ├── connector-file-hadoop.md
│       │   │   ├── connector-file-jindo-oss.md
│       │   │   ├── connector-file-local.md
│       │   │   ├── connector-file-obs.md
│       │   │   ├── connector-file-oss-jindo.md
│       │   │   ├── connector-file-oss.md
│       │   │   ├── connector-file-s3.md
│       │   │   ├── connector-file-sftp.md
│       │   │   ├── connector-file.md
│       │   │   ├── connector-fluss.md
│       │   │   ├── connector-google-firestore.md
│       │   │   ├── connector-google-sheets.md
│       │   │   ├── connector-graphql.md
│       │   │   ├── connector-hbase.md
│       │   │   ├── connector-hive.md
│       │   │   ├── connector-http-airtable.md
│       │   │   ├── connector-http-base.md
│       │   │   ├── connector-http-feishu.md
│       │   │   ├── connector-http-github.md
│       │   │   ├── connector-http-gitlab.md
│       │   │   ├── connector-http-jira.md
│       │   │   ├── connector-http-klaviyo.md
│       │   │   ├── connector-http-lemlist.md
│       │   │   ├── connector-http-myhours.md
│       │   │   ├── connector-http-notion.md
│       │   │   ├── connector-http-onesignal.md
│       │   │   ├── connector-http-persistiq.md
│       │   │   ├── connector-http-wechat.md
│       │   │   ├── connector-http.md
│       │   │   ├── connector-hudi.md
│       │   │   ├── connector-hugegraph.md
│       │   │   ├── connector-iceberg.md
│       │   │   ├── connector-influxdb.md
│       │   │   ├── connector-iotdb.md
│       │   │   ├── connector-jdbc.md
│       │   │   ├── connector-kafka.md
│       │   │   ├── connector-kudu.md
│       │   │   ├── connector-lance.md
│       │   │   ├── connector-maxcompute.md
│       │   │   ├── connector-milvus.md
│       │   │   ├── connector-mongodb.md
│       │   │   ├── connector-neo4j.md
│       │   │   ├── connector-openmldb.md
│       │   │   ├── connector-paimon.md
│       │   │   ├── connector-prometheus.md
│       │   │   ├── connector-pulsar.md
│       │   │   ├── connector-qdrant.md
│       │   │   ├── connector-rabbitmq.md
│       │   │   ├── connector-redis.md
│       │   │   ├── connector-rocketmq.md
│       │   │   ├── connector-s3-redshift.md
│       │   │   ├── connector-selectdb-cloud.md
│       │   │   ├── connector-sensorsdata.md
│       │   │   ├── connector-sentry.md
│       │   │   ├── connector-slack.md
│       │   │   ├── connector-sls.md
│       │   │   ├── connector-socket.md
│       │   │   ├── connector-starrocks.md
│       │   │   ├── connector-tablestore.md
│       │   │   ├── connector-tdengine.md
│       │   │   ├── connector-typesense.md
│       │   │   └── connector-web3j.md
│       │   ├── common-options/
│       │   │   ├── sink-common-options.md
│       │   │   └── source-common-options.md
│       │   ├── connector-isolated-dependency.md
│       │   ├── formats/
│       │   │   ├── avro.md
│       │   │   ├── canal-json.md
│       │   │   ├── cdc-compatible-debezium-json.md
│       │   │   ├── debezium-json.md
│       │   │   ├── kafka-compatible-kafkaconnect-json.md
│       │   │   ├── maxwell-json.md
│       │   │   ├── ogg-json.md
│       │   │   └── protobuf.md
│       │   ├── sink/
│       │   │   ├── Activemq.md
│       │   │   ├── Aerospike.md
│       │   │   ├── Airtable.md
│       │   │   ├── AmazonDynamoDB.md
│       │   │   ├── AmazonSqs.md
│       │   │   ├── Assert.md
│       │   │   ├── Cassandra.md
│       │   │   ├── Clickhouse.md
│       │   │   ├── ClickhouseFile.md
│       │   │   ├── Cloudberry.md
│       │   │   ├── Console.md
│       │   │   ├── CosFile.md
│       │   │   ├── DB2.md
│       │   │   ├── Databend.md
│       │   │   ├── Datahub.md
│       │   │   ├── DingTalk.md
│       │   │   ├── Doris.md
│       │   │   ├── Druid.md
│       │   │   ├── DuckDB.md
│       │   │   ├── Easysearch.md
│       │   │   ├── Elasticsearch.md
│       │   │   ├── Email.md
│       │   │   ├── Enterprise-WeChat.md
│       │   │   ├── Feishu.md
│       │   │   ├── Fluss.md
│       │   │   ├── FtpFile.md
│       │   │   ├── GoogleFirestore.md
│       │   │   ├── GraphQL.md
│       │   │   ├── Greenplum.md
│       │   │   ├── Hbase.md
│       │   │   ├── HdfsFile.md
│       │   │   ├── Hive.md
│       │   │   ├── Http.md
│       │   │   ├── Hudi.md
│       │   │   ├── HugeGraph.md
│       │   │   ├── Iceberg.md
│       │   │   ├── InfluxDB.md
│       │   │   ├── IoTDB.md
│       │   │   ├── IoTDBv2.md
│       │   │   ├── Jdbc.md
│       │   │   ├── Kafka.md
│       │   │   ├── Kingbase.md
│       │   │   ├── Kudu.md
│       │   │   ├── Lance.md
│       │   │   ├── LocalFile.md
│       │   │   ├── Maxcompute.md
│       │   │   ├── Milvus.md
│       │   │   ├── MongoDB.md
│       │   │   ├── Mysql.md
│       │   │   ├── Neo4j.md
│       │   │   ├── ObsFile.md
│       │   │   ├── OceanBase.md
│       │   │   ├── Oracle.md
│       │   │   ├── OssFile.md
│       │   │   ├── OssJindoFile.md
│       │   │   ├── Paimon.md
│       │   │   ├── Phoenix.md
│       │   │   ├── PostgreSql.md
│       │   │   ├── Prometheus.md
│       │   │   ├── Pulsar.md
│       │   │   ├── Qdrant.md
│       │   │   ├── Rabbitmq.md
│       │   │   ├── Redis.md
│       │   │   ├── Redshift.md
│       │   │   ├── RocketMQ.md
│       │   │   ├── S3-Redshift.md
│       │   │   ├── S3File.md
│       │   │   ├── SelectDB-Cloud.md
│       │   │   ├── SensorsData.md
│       │   │   ├── Sentry.md
│       │   │   ├── SftpFile.md
│       │   │   ├── Slack.md
│       │   │   ├── Sls.md
│       │   │   ├── Snowflake.md
│       │   │   ├── Socket.md
│       │   │   ├── SqlServer.md
│       │   │   ├── StarRocks.md
│       │   │   ├── TDengine.md
│       │   │   ├── Tablestore.md
│       │   │   ├── Typesense.md
│       │   │   └── Vertica.md
│       │   └── source/
│       │       ├── Airtable.md
│       │       ├── AmazonDynamoDB.md
│       │       ├── AmazonSqs.md
│       │       ├── Cassandra.md
│       │       ├── Clickhouse.md
│       │       ├── Cloudberry.md
│       │       ├── CosFile.md
│       │       ├── DB2.md
│       │       ├── Databend.md
│       │       ├── Doris.md
│       │       ├── DuckDB.md
│       │       ├── Easysearch.md
│       │       ├── Elasticsearch.md
│       │       ├── FakeSource.md
│       │       ├── FtpFile.md
│       │       ├── Github.md
│       │       ├── Gitlab.md
│       │       ├── GoogleSheets.md
│       │       ├── GraphQL.md
│       │       ├── Greenplum.md
│       │       ├── Hbase.md
│       │       ├── HdfsFile.md
│       │       ├── Hive.md
│       │       ├── HiveJdbc.md
│       │       ├── Http.md
│       │       ├── Iceberg.md
│       │       ├── InfluxDB.md
│       │       ├── IoTDB.md
│       │       ├── IoTDBv2.md
│       │       ├── Jdbc.md
│       │       ├── Jira.md
│       │       ├── Kafka.md
│       │       ├── Kingbase.md
│       │       ├── Klaviyo.md
│       │       ├── Kudu.md
│       │       ├── Lemlist.md
│       │       ├── LocalFile.md
│       │       ├── Maxcompute.md
│       │       ├── Milvus.md
│       │       ├── MongoDB-CDC.md
│       │       ├── MongoDB.md
│       │       ├── MyHours.md
│       │       ├── MySQL-CDC.md
│       │       ├── Mysql.md
│       │       ├── Neo4j.md
│       │       ├── Notion.md
│       │       ├── ObsFile.md
│       │       ├── OceanBase.md
│       │       ├── OneSignal.md
│       │       ├── OpenMldb.md
│       │       ├── Opengauss-CDC.md
│       │       ├── Oracle-CDC.md
│       │       ├── Oracle.md
│       │       ├── OssFile.md
│       │       ├── OssJindoFile.md
│       │       ├── Paimon.md
│       │       ├── Persistiq.md
│       │       ├── Phoenix.md
│       │       ├── PostgreSQL-CDC.md
│       │       ├── PostgreSQL.md
│       │       ├── Prometheus.md
│       │       ├── Pulsar.md
│       │       ├── Qdrant.md
│       │       ├── Rabbitmq.md
│       │       ├── Redis.md
│       │       ├── Redshift.md
│       │       ├── RocketMQ.md
│       │       ├── S3File.md
│       │       ├── SftpFile.md
│       │       ├── Sls.md
│       │       ├── Snowflake.md
│       │       ├── Socket.md
│       │       ├── SqlServer-CDC.md
│       │       ├── SqlServer.md
│       │       ├── StarRocks.md
│       │       ├── TDengine.md
│       │       ├── Tablestore.md
│       │       ├── TiDB-CDC.md
│       │       ├── Typesense.md
│       │       ├── Vertica.md
│       │       └── Web3j.md
│       ├── developer/
│       │   ├── coding-guide.md
│       │   ├── contribute-plugin.md
│       │   ├── contribute-transform-v2-guide.md
│       │   ├── docs-format-specification.md
│       │   ├── how-to-create-your-connector.md
│       │   ├── new-license.md
│       │   └── setup.md
│       ├── engines/
│       │   ├── command/
│       │   │   ├── connector-check.md
│       │   │   └── usage.mdx
│       │   ├── event-listener.md
│       │   ├── flink.md
│       │   ├── overview.md
│       │   ├── spark.md
│       │   └── zeta/
│       │       ├── about.md
│       │       ├── checkpoint-storage.md
│       │       ├── deployment.md
│       │       ├── download-seatunnel.md
│       │       ├── engine-jar-storage-mode.md
│       │       ├── hybrid-cluster-deployment.md
│       │       ├── local-mode-deployment.md
│       │       ├── logging.md
│       │       ├── resource-isolation.md
│       │       ├── rest-api-v1.md
│       │       ├── rest-api-v2.md
│       │       ├── security.md
│       │       ├── separated-cluster-deployment.md
│       │       ├── slot-allocation-strategy.md
│       │       ├── tcp.md
│       │       ├── telemetry.md
│       │       ├── tuning-guide.md
│       │       ├── user-command.md
│       │       └── web-ui.md
│       ├── faq.md
│       ├── getting-started/
│       │   ├── docker/
│       │   │   └── docker.md
│       │   ├── kubernetes/
│       │   │   ├── helm.md
│       │   │   └── kubernetes.mdx
│       │   └── locally/
│       │       ├── deployment.md
│       │       ├── quick-start-flink.md
│       │       ├── quick-start-seatunnel-engine.md
│       │       └── quick-start-spark.md
│       ├── introduction/
│       │   ├── about.md
│       │   ├── concepts/
│       │   │   ├── config.md
│       │   │   ├── connector-v2-features.md
│       │   │   ├── gravitino-type-mapping.md
│       │   │   ├── incompatible-changes.md
│       │   │   └── schema-feature.md
│       │   ├── configuration/
│       │   │   ├── JobEnvConfig.md
│       │   │   ├── config-encryption-decryption.md
│       │   │   ├── metalake.md
│       │   │   ├── schema-evolution.md
│       │   │   ├── sink-options-placeholders.md
│       │   │   ├── speed-limit.md
│       │   │   └── sql-config.md
│       │   └── how-it-works.md
│       ├── tools/
│       │   ├── overview.md
│       │   ├── seatunnel-mcp.md
│       │   ├── seatunnel-skill.md
│       │   └── x2seatunnel.md
│       └── transforms/
│           ├── common-options/
│           │   └── common-options.md
│           ├── copy.md
│           ├── data-validator.md
│           ├── define-sink-type.md
│           ├── dynamic-compile.md
│           ├── embedding.md
│           ├── encrypt.md
│           ├── field-mapper.md
│           ├── field-rename.md
│           ├── filter-rowkind.md
│           ├── filter.md
│           ├── jsonpath.md
│           ├── llm.md
│           ├── metadata.md
│           ├── regexextract.md
│           ├── replace.md
│           ├── rowkind-extractor.md
│           ├── split.md
│           ├── sql-functions.md
│           ├── sql-udf.md
│           ├── sql.md
│           ├── table-filter.md
│           ├── table-merge.md
│           ├── table-rename.md
│           └── transform-multi-table.md
├── mvnw
├── mvnw.cmd
├── plugin-mapping.properties
├── plugins/
│   └── README.md
├── pom.xml
├── seatunnel-api/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── org/
│       │           └── apache/
│       │               └── seatunnel/
│       │                   └── api/
│       │                       ├── annotation/
│       │                       │   └── Experimental.java
│       │                       ├── common/
│       │                       │   ├── JobContext.java
│       │                       │   ├── PluginIdentifier.java
│       │                       │   ├── PluginIdentifierInterface.java
│       │                       │   ├── PrepareFailException.java
│       │                       │   ├── SeaTunnelAPIErrorCode.java
│       │                       │   ├── SeaTunnelPluginLifeCycle.java
│       │                       │   └── metrics/
│       │                       │       ├── AbstractMetricsContext.java
│       │                       │       ├── Counter.java
│       │                       │       ├── JobMetrics.java
│       │                       │       ├── Measurement.java
│       │                       │       ├── MeasurementPredicates.java
│       │                       │       ├── Meter.java
│       │                       │       ├── Metric.java
│       │                       │       ├── MetricNames.java
│       │                       │       ├── MetricTags.java
│       │                       │       ├── MetricsContext.java
│       │                       │       ├── RawJobMetrics.java
│       │                       │       ├── ThreadSafeCounter.java
│       │                       │       ├── ThreadSafeQPSMeter.java
│       │                       │       └── Unit.java
│       │                       ├── configuration/
│       │                       │   ├── ConfigAdapter.java
│       │                       │   ├── ConfigShade.java
│       │                       │   ├── Option.java
│       │                       │   ├── Options.java
│       │                       │   ├── ReadonlyConfig.java
│       │                       │   ├── SingleChoiceOption.java
│       │                       │   └── util/
│       │                       │       ├── Condition.java
│       │                       │       ├── ConfigUtil.java
│       │                       │       ├── ConfigValidator.java
│       │                       │       ├── Expression.java
│       │                       │       ├── OptionMark.java
│       │                       │       ├── OptionRule.java
│       │                       │       ├── OptionUtil.java
│       │                       │       ├── OptionValidationException.java
│       │                       │       └── RequiredOption.java
│       │                       ├── env/
│       │                       │   └── ParsingMode.java
│       │                       ├── event/
│       │                       │   ├── DefaultEventProcessor.java
│       │                       │   ├── Event.java
│       │                       │   ├── EventHandler.java
│       │                       │   ├── EventListener.java
│       │                       │   ├── EventProcessor.java
│       │                       │   ├── EventType.java
│       │                       │   ├── LifecycleEvent.java
│       │                       │   └── LoggingEventHandler.java
│       │                       ├── metalake/
│       │                       │   ├── MetaLakeFactory.java
│       │                       │   ├── MetaLakeTableSchemaConvertor.java
│       │                       │   ├── MetalakeClient.java
│       │                       │   ├── MetalakeConfigUtils.java
│       │                       │   ├── TableSchemaDiscoverer.java
│       │                       │   └── gravitino/
│       │                       │       ├── GravitinoClient.java
│       │                       │       └── GravitinoTableSchemaConvertor.java
│       │                       ├── options/
│       │                       │   ├── ConnectorCommonOptions.java
│       │                       │   ├── EnvCommonOptions.java
│       │                       │   ├── EnvOptionRule.java
│       │                       │   ├── SinkConnectorCommonOptions.java
│       │                       │   ├── SourceConnectorCommonOptions.java
│       │                       │   └── table/
│       │                       │       ├── CatalogOptions.java
│       │                       │       ├── ColumnOptions.java
│       │                       │       ├── ConstraintKeyOptions.java
│       │                       │       ├── FieldOptions.java
│       │                       │       ├── FormatOptions.java
│       │                       │       ├── PrimaryKeyOptions.java
│       │                       │       ├── TableIdentifierOptions.java
│       │                       │       └── TableSchemaOptions.java
│       │                       ├── serialization/
│       │                       │   ├── DefaultSerializer.java
│       │                       │   ├── DeserializationSchema.java
│       │                       │   ├── SerializationSchema.java
│       │                       │   └── Serializer.java
│       │                       ├── sink/
│       │                       │   ├── DataSaveMode.java
│       │                       │   ├── DefaultSaveModeHandler.java
│       │                       │   ├── DefaultSinkWriterContext.java
│       │                       │   ├── MultiTableResourceManager.java
│       │                       │   ├── SaveModeExecuteLocation.java
│       │                       │   ├── SaveModeExecuteWrapper.java
│       │                       │   ├── SaveModeHandler.java
│       │                       │   ├── SaveModePlaceHolder.java
│       │                       │   ├── SchemaSaveMode.java
│       │                       │   ├── SeaTunnelSink.java
│       │                       │   ├── SinkAggregatedCommitter.java
│       │                       │   ├── SinkCommitter.java
│       │                       │   ├── SinkWriter.java
│       │                       │   ├── SupportMultiTableSink.java
│       │                       │   ├── SupportMultiTableSinkAggregatedCommitter.java
│       │                       │   ├── SupportMultiTableSinkWriter.java
│       │                       │   ├── SupportResourceShare.java
│       │                       │   ├── SupportSaveMode.java
│       │                       │   ├── SupportSchemaEvolutionSink.java
│       │                       │   ├── SupportSchemaEvolutionSinkWriter.java
│       │                       │   ├── TablePlaceholder.java
│       │                       │   ├── TablePlaceholderProcessor.java
│       │                       │   ├── event/
│       │                       │   │   └── WriterCloseEvent.java
│       │                       │   └── multitablesink/
│       │                       │       ├── MultiTableAggregatedCommitInfo.java
│       │                       │       ├── MultiTableCommitInfo.java
│       │                       │       ├── MultiTableSink.java
│       │                       │       ├── MultiTableSinkAggregatedCommitter.java
│       │                       │       ├── MultiTableSinkCommitter.java
│       │                       │       ├── MultiTableSinkFactory.java
│       │                       │       ├── MultiTableSinkWriter.java
│       │                       │       ├── MultiTableState.java
│       │                       │       ├── MultiTableWriterRunnable.java
│       │                       │       ├── SinkContextProxy.java
│       │                       │       └── SinkIdentifier.java
│       │                       ├── source/
│       │                       │   ├── Boundedness.java
│       │                       │   ├── Collector.java
│       │                       │   ├── SeaTunnelJobAware.java
│       │                       │   ├── SeaTunnelSource.java
│       │                       │   ├── SourceEvent.java
│       │                       │   ├── SourceReader.java
│       │                       │   ├── SourceSplit.java
│       │                       │   ├── SourceSplitEnumerator.java
│       │                       │   ├── SupportColumnProjection.java
│       │                       │   ├── SupportCoordinate.java
│       │                       │   ├── SupportParallelism.java
│       │                       │   ├── SupportSchemaEvolution.java
│       │                       │   └── event/
│       │                       │       ├── EnumeratorCloseEvent.java
│       │                       │       ├── EnumeratorOpenEvent.java
│       │                       │       ├── MessageDelayedEvent.java
│       │                       │       ├── ReaderCloseEvent.java
│       │                       │       └── ReaderOpenEvent.java
│       │                       ├── state/
│       │                       │   └── CheckpointListener.java
│       │                       ├── table/
│       │                       │   ├── catalog/
│       │                       │   │   ├── AbstractSchema.java
│       │                       │   │   ├── Catalog.java
│       │                       │   │   ├── CatalogTable.java
│       │                       │   │   ├── CatalogTableUtil.java
│       │                       │   │   ├── Column.java
│       │                       │   │   ├── ConstraintKey.java
│       │                       │   │   ├── DataTypeConvertor.java
│       │                       │   │   ├── InfoPreviewResult.java
│       │                       │   │   ├── MetadataColumn.java
│       │                       │   │   ├── MetadataSchema.java
│       │                       │   │   ├── PhysicalColumn.java
│       │                       │   │   ├── PreviewResult.java
│       │                       │   │   ├── PrimaryKey.java
│       │                       │   │   ├── SQLPreviewResult.java
│       │                       │   │   ├── SeaTunnelDataTypeConvertorUtil.java
│       │                       │   │   ├── TableIdentifier.java
│       │                       │   │   ├── TablePath.java
│       │                       │   │   ├── TableSchema.java
│       │                       │   │   ├── VectorIndex.java
│       │                       │   │   ├── exception/
│       │                       │   │   │   ├── CatalogException.java
│       │                       │   │   │   ├── DatabaseAlreadyExistException.java
│       │                       │   │   │   ├── DatabaseNotExistException.java
│       │                       │   │   │   ├── TableAlreadyExistException.java
│       │                       │   │   │   └── TableNotExistException.java
│       │                       │   │   └── schema/
│       │                       │   │       ├── ReadonlyConfigParser.java
│       │                       │   │       └── TableSchemaParser.java
│       │                       │   ├── connector/
│       │                       │   │   ├── DeserializationFormat.java
│       │                       │   │   ├── SerializationFormat.java
│       │                       │   │   ├── SupportReadingMetadata.java
│       │                       │   │   ├── TableSink.java
│       │                       │   │   ├── TableSource.java
│       │                       │   │   └── TableTransform.java
│       │                       │   ├── converter/
│       │                       │   │   ├── BasicDataConverter.java
│       │                       │   │   ├── BasicDataTypeConverter.java
│       │                       │   │   ├── BasicTypeConverter.java
│       │                       │   │   ├── BasicTypeDefine.java
│       │                       │   │   ├── ConverterLoader.java
│       │                       │   │   ├── DataConverter.java
│       │                       │   │   ├── DataTypeConverter.java
│       │                       │   │   └── TypeConverter.java
│       │                       │   ├── factory/
│       │                       │   │   ├── CatalogFactory.java
│       │                       │   │   ├── ChangeStreamTableSourceCheckpoint.java
│       │                       │   │   ├── ChangeStreamTableSourceFactory.java
│       │                       │   │   ├── ChangeStreamTableSourceState.java
│       │                       │   │   ├── DataTypeConvertorFactory.java
│       │                       │   │   ├── Factory.java
│       │                       │   │   ├── FactoryException.java
│       │                       │   │   ├── FactoryUtil.java
│       │                       │   │   ├── MultiTableFactoryContext.java
│       │                       │   │   ├── SerializationFormatFactory.java
│       │                       │   │   ├── TableFactoryContext.java
│       │                       │   │   ├── TableSinkFactory.java
│       │                       │   │   ├── TableSinkFactoryContext.java
│       │                       │   │   ├── TableSourceFactory.java
│       │                       │   │   ├── TableSourceFactoryContext.java
│       │                       │   │   ├── TableTransformFactory.java
│       │                       │   │   └── TableTransformFactoryContext.java
│       │                       │   ├── schema/
│       │                       │   │   ├── SchemaChangeType.java
│       │                       │   │   ├── event/
│       │                       │   │   │   ├── AlterTableAddColumnEvent.java
│       │                       │   │   │   ├── AlterTableChangeColumnEvent.java
│       │                       │   │   │   ├── AlterTableColumnEvent.java
│       │                       │   │   │   ├── AlterTableColumnsEvent.java
│       │                       │   │   │   ├── AlterTableDropColumnEvent.java
│       │                       │   │   │   ├── AlterTableEvent.java
│       │                       │   │   │   ├── AlterTableModifyColumnEvent.java
│       │                       │   │   │   ├── AlterTableNameEvent.java
│       │                       │   │   │   ├── SchemaChangeEvent.java
│       │                       │   │   │   └── TableEvent.java
│       │                       │   │   ├── exception/
│       │                       │   │   │   ├── SchemaCoordinationException.java
│       │                       │   │   │   ├── SchemaEvolutionErrorCode.java
│       │                       │   │   │   ├── SchemaEvolutionException.java
│       │                       │   │   │   ├── SchemaValidationException.java
│       │                       │   │   │   └── SinkWriterSchemaException.java
│       │                       │   │   └── handler/
│       │                       │   │       ├── AlterTableEventHandler.java
│       │                       │   │       ├── AlterTableSchemaEventHandler.java
│       │                       │   │       ├── DataTypeChangeEventDispatcher.java
│       │                       │   │       ├── DataTypeChangeEventHandler.java
│       │                       │   │       ├── SchemaChangeEventHandler.java
│       │                       │   │       ├── TableSchemaChangeEventDispatcher.java
│       │                       │   │       └── TableSchemaChangeEventHandler.java
│       │                       │   └── type/
│       │                       │       ├── ArrayType.java
│       │                       │       ├── BasicType.java
│       │                       │       ├── CommonOptions.java
│       │                       │       ├── CompositeType.java
│       │                       │       ├── DecimalArrayType.java
│       │                       │       ├── DecimalType.java
│       │                       │       ├── LocalTimeType.java
│       │                       │       ├── MapType.java
│       │                       │       ├── MetadataUtil.java
│       │                       │       ├── MultipleRowType.java
│       │                       │       ├── PrimitiveByteArrayType.java
│       │                       │       ├── Record.java
│       │                       │       ├── RowKind.java
│       │                       │       ├── SeaTunnelDataType.java
│       │                       │       ├── SeaTunnelRow.java
│       │                       │       ├── SeaTunnelRowAccessor.java
│       │                       │       ├── SeaTunnelRowType.java
│       │                       │       ├── SqlType.java
│       │                       │       ├── TypeUtil.java
│       │                       │       └── VectorType.java
│       │                       ├── tracing/
│       │                       │   ├── MDCCallable.java
│       │                       │   ├── MDCComparator.java
│       │                       │   ├── MDCConsumer.java
│       │                       │   ├── MDCContext.java
│       │                       │   ├── MDCExecutor.java
│       │                       │   ├── MDCExecutorService.java
│       │                       │   ├── MDCFunction.java
│       │                       │   ├── MDCPredicate.java
│       │                       │   ├── MDCRunnable.java
│       │                       │   ├── MDCScheduledExecutorService.java
│       │                       │   ├── MDCStream.java
│       │                       │   ├── MDCSupplier.java
│       │                       │   └── MDCTracer.java
│       │                       └── transform/
│       │                           ├── Collector.java
│       │                           ├── SeaTunnelFlatMapTransform.java
│       │                           ├── SeaTunnelMapTransform.java
│       │                           └── SeaTunnelTransform.java
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── seatunnel/
│           │               └── api/
│           │                   ├── configuration/
│           │                   │   ├── OptionTest.java
│           │                   │   ├── ReadableConfigTest.java
│           │                   │   └── util/
│           │                   │       ├── ConditionTest.java
│           │                   │       ├── ConfigUtilTest.java
│           │                   │       ├── ConfigValidatorTest.java
│           │                   │       ├── OptionRuleTest.java
│           │                   │       ├── OptionUtilTest.java
│           │                   │       ├── SingleChoiceOptionTest.java
│           │                   │       ├── TestOptionConfig.java
│           │                   │       └── TestOptionConfigEnum.java
│           │                   ├── env/
│           │                   │   └── EnvOptionRuleTest.java
│           │                   ├── metalake/
│           │                   │   ├── TableSchemaDiscovererTest.java
│           │                   │   └── gravitino/
│           │                   │       ├── GravitinoClientTest.java
│           │                   │       └── GravitinoTableSchemaConvertorTest.java
│           │                   ├── sink/
│           │                   │   ├── DefaultSaveModeHandlerTest.java
│           │                   │   ├── TablePlaceholderProcessorTest.java
│           │                   │   └── multitablesink/
│           │                   │       ├── MultiTableSinkAggregatedCommitterTest.java
│           │                   │       ├── MultiTableSinkCommitterTest.java
│           │                   │       └── MultiTableSinkWriterTest.java
│           │                   ├── table/
│           │                   │   ├── catalog/
│           │                   │   │   ├── CatalogTableTest.java
│           │                   │   │   ├── CatalogTableUtilTest.java
│           │                   │   │   ├── InMemoryCatalog.java
│           │                   │   │   ├── InMemoryCatalogFactory.java
│           │                   │   │   ├── InMemoryCatalogOptionRule.java
│           │                   │   │   ├── SeaTunnelDataTypeConvertorUtilTest.java
│           │                   │   │   └── schema/
│           │                   │   │       ├── BaseConfigParserTest.java
│           │                   │   │       └── ReadonlyConfigParserTest.java
│           │                   │   ├── schema/
│           │                   │   │   └── event/
│           │                   │   │       └── EventTest.java
│           │                   │   └── type/
│           │                   │       └── SeaTunnelRowTest.java
│           │                   └── tracing/
│           │                       └── MDCTracerTest.java
│           └── resources/
│               └── conf/
│                   ├── catalog/
│                   │   ├── schema_column.conf
│                   │   └── schema_field.conf
│                   ├── complex.schema.conf
│                   ├── config_special_schema.conf
│                   ├── default_tablepath.conf
│                   ├── generic_row.schema.conf
│                   ├── getCatalogTable.conf
│                   ├── json/
│                   │   ├── metadata_json_from_meta_lake_hive.json
│                   │   └── metadata_json_from_meta_lake_pgsql.json
│                   ├── option-test.conf
│                   ├── partition_keys.schema.conf
│                   ├── simple.schema.conf
│                   └── table_schema_discoverer/
│                       ├── multiple_tables_fields.conf
│                       ├── multiple_tables_mixed.conf
│                       ├── multiple_tables_no_schema_mixed_format.conf
│                       ├── multiple_tables_schema_url.conf
│                       ├── single_no_schema.conf
│                       ├── single_schema_field.conf
│                       └── single_schema_url.conf
├── seatunnel-ci-tools/
│   ├── pom.xml
│   └── src/
│       └── test/
│           └── java/
│               └── org/
│                   └── apache/
│                       └── seatunnel/
│                           └── api/
│                               ├── ChineseCharacterCheckTest.java
│                               ├── ConnectorOptionCheckTest.java
│                               ├── ImportClassCheckTest.java
│                               ├── SerialVersionUIDCheckerTest.java
│                               ├── SpotlessImportReplacementTest.java
│                               ├── UTClassNameCheckTest.java
│                               └── file/
│                                   ├── AllFileSpecificationCheckTest.java
│                                   └── MarkdownTest.java
├── seatunnel-common/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── org/
│       │           └── apache/
│       │               └── seatunnel/
│       │                   └── common/
│       │                       ├── Constants.java
│       │                       ├── Handover.java
│       │                       ├── config/
│       │                       │   ├── CheckConfigUtil.java
│       │                       │   ├── CheckResult.java
│       │                       │   ├── Common.java
│       │                       │   ├── ConfigRuntimeException.java
│       │                       │   ├── DeployMode.java
│       │                       │   └── TypesafeConfigUtils.java
│       │                       ├── constants/
│       │                       │   ├── CollectionConstants.java
│       │                       │   ├── EngineType.java
│       │                       │   ├── JobMode.java
│       │                       │   ├── MetaLakeType.java
│       │                       │   └── PluginType.java
│       │                       ├── exception/
│       │                       │   ├── CommonError.java
│       │                       │   ├── CommonErrorCode.java
│       │                       │   ├── CommonErrorCodeDeprecated.java
│       │                       │   ├── ExceptionParamsUtil.java
│       │                       │   ├── SeaTunnelErrorCode.java
│       │                       │   └── SeaTunnelRuntimeException.java
│       │                       └── utils/
│       │                           ├── DateTimeUtils.java
│       │                           ├── DateUtils.java
│       │                           ├── EncodingUtils.java
│       │                           ├── ExceptionUtils.java
│       │                           ├── FileUtils.java
│       │                           ├── JdbcUrlUtil.java
│       │                           ├── JsonUtils.java
│       │                           ├── ParserException.java
│       │                           ├── PlaceholderUtils.java
│       │                           ├── ReflectionUtils.java
│       │                           ├── RetryUtils.java
│       │                           ├── SeaTunnelException.java
│       │                           ├── SerializationException.java
│       │                           ├── SerializationUtils.java
│       │                           ├── StringFormatUtils.java
│       │                           ├── TemporaryClassLoaderContext.java
│       │                           ├── TimeUtils.java
│       │                           ├── VariablesSubstitute.java
│       │                           ├── VectorUtils.java
│       │                           └── function/
│       │                               ├── ConsumerWithException.java
│       │                               ├── FunctionWithException.java
│       │                               ├── RunnableWithException.java
│       │                               └── SupplierWithException.java
│       └── test/
│           └── java/
│               └── org/
│                   └── apache/
│                       └── seatunnel/
│                           └── common/
│                               ├── HandoverTest.java
│                               ├── config/
│                               │   ├── CheckConfigUtilTest.java
│                               │   ├── CommonTest.java
│                               │   └── TypesafeConfigUtilsTest.java
│                               ├── exception/
│                               │   └── ExceptionParamsUtilTest.java
│                               └── utils/
│                                   ├── DateTimeUtilsTest.java
│                                   ├── DateUtilsTest.java
│                                   ├── ExceptionUtilsTest.java
│                                   ├── FileUtilsTest.java
│                                   ├── JdbcUrlUtilTest.java
│                                   ├── ReflectionUtilsTest.java
│                                   ├── SerializationUtilsTest.java
│                                   ├── StringFormatUtilsTest.java
│                                   ├── TimeUtilsTest.java
│                                   ├── VariablesSubstituteTest.java
│                                   └── VectorUtilsTest.java
├── seatunnel-config/
│   ├── README.md
│   ├── pom.xml
│   ├── seatunnel-config-base/
│   │   └── pom.xml
│   ├── seatunnel-config-shade/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── shade/
│   │       │                       └── com/
│   │       │                           └── typesafe/
│   │       │                               └── config/
│   │       │                                   ├── ConfigMergeable.java
│   │       │                                   ├── ConfigParseOptions.java
│   │       │                                   └── impl/
│   │       │                                       ├── ConfigImpl.java
│   │       │                                       ├── ConfigNodePath.java
│   │       │                                       ├── ConfigParser.java
│   │       │                                       ├── Path.java
│   │       │                                       ├── PathParser.java
│   │       │                                       ├── PropertiesParser.java
│   │       │                                       ├── SimpleConfigObject.java
│   │       │                                       └── Tokenizer.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── seatunnel/
│   │           │               ├── config/
│   │           │               │   ├── CompleteTest.java
│   │           │               │   ├── ConfigFactoryTest.java
│   │           │               │   ├── ConfigTest.java
│   │           │               │   ├── JsonFormatTest.java
│   │           │               │   ├── SerializeTest.java
│   │           │               │   └── utils/
│   │           │               │       └── FileUtils.java
│   │           │               └── shade/
│   │           │                   └── com/
│   │           │                       └── typesafe/
│   │           │                           └── config/
│   │           │                               └── impl/
│   │           │                                   └── ConfigTest.java
│   │           └── resources/
│   │               ├── factory/
│   │               │   └── config.conf
│   │               ├── json/
│   │               │   ├── spark.batch.conf
│   │               │   └── spark.batch.json
│   │               └── seatunnel/
│   │                   ├── configWithSpecialKey.conf
│   │                   ├── schema_columns.conf
│   │                   ├── schema_fields.conf
│   │                   ├── serialize.conf
│   │                   └── variables.conf
│   └── seatunnel-config-sql/
│       ├── pom.xml
│       └── src/
│           ├── main/
│           │   └── java/
│           │       └── org/
│           │           └── apache/
│           │               └── seatunnel/
│           │                   └── config/
│           │                       └── sql/
│           │                           ├── ConfigTemplate.java
│           │                           ├── SqlConfigAdapter.java
│           │                           ├── SqlConfigBuilder.java
│           │                           ├── model/
│           │                           │   ├── BaseConfig.java
│           │                           │   ├── Option.java
│           │                           │   ├── SeaTunnelConfig.java
│           │                           │   ├── SinkConfig.java
│           │                           │   ├── SourceConfig.java
│           │                           │   └── TransformConfig.java
│           │                           └── utils/
│           │                               └── Constant.java
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── apache/
│               │           └── seatunnel/
│               │               └── config/
│               │                   └── sql/
│               │                       └── SqlConfigBuilderTest.java
│               └── resources/
│                   └── sql-config.sql
├── seatunnel-connectors-v2/
│   ├── README.md
│   ├── README.zh.md
│   ├── connector-activemq/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── activemq/
│   │       │                               ├── client/
│   │       │                               │   └── ActivemqClient.java
│   │       │                               ├── config/
│   │       │                               │   └── ActivemqSinkOptions.java
│   │       │                               ├── exception/
│   │       │                               │   ├── ActivemqConnectorErrorCode.java
│   │       │                               │   └── ActivemqConnectorException.java
│   │       │                               └── sink/
│   │       │                                   ├── ActivemqSink.java
│   │       │                                   ├── ActivemqSinkFactory.java
│   │       │                                   └── ActivemqSinkWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── activemq/
│   │                                       └── ActivemqFactoryTest.java
│   ├── connector-aerospike/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── aerospike/
│   │       │                               ├── config/
│   │       │                               │   ├── AerospikeDataType.java
│   │       │                               │   ├── AerospikeSinkOptions.java
│   │       │                               │   └── DataFormatType.java
│   │       │                               ├── exception/
│   │       │                               │   ├── AerospikeConnectorException.java
│   │       │                               │   └── AerospikeErrorCode.java
│   │       │                               └── sink/
│   │       │                                   ├── AerospikeSink.java
│   │       │                                   ├── AerospikeSinkFactory.java
│   │       │                                   ├── AerospikeSinkWriter.java
│   │       │                                   └── AerospikeTypeConverter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── aerospike/
│   │                                       └── AerospikeFactoryTest.java
│   ├── connector-amazondynamodb/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── amazondynamodb/
│   │       │                               ├── config/
│   │       │                               │   ├── AmazonDynamoDBBaseOptions.java
│   │       │                               │   ├── AmazonDynamoDBConfig.java
│   │       │                               │   ├── AmazonDynamoDBSinkOptions.java
│   │       │                               │   └── AmazonDynamoDBSourceOptions.java
│   │       │                               ├── exception/
│   │       │                               │   └── AmazonDynamoDBConnectorException.java
│   │       │                               ├── serialize/
│   │       │                               │   ├── DefaultSeaTunnelRowDeserializer.java
│   │       │                               │   ├── DefaultSeaTunnelRowSerializer.java
│   │       │                               │   ├── SeaTunnelRowDeserializer.java
│   │       │                               │   └── SeaTunnelRowSerializer.java
│   │       │                               ├── sink/
│   │       │                               │   ├── AmazonDynamoDBSink.java
│   │       │                               │   ├── AmazonDynamoDBSinkFactory.java
│   │       │                               │   ├── AmazonDynamoDBWriter.java
│   │       │                               │   └── DynamoDbSinkClient.java
│   │       │                               └── source/
│   │       │                                   ├── AmazonDynamoDBSource.java
│   │       │                                   ├── AmazonDynamoDBSourceFactory.java
│   │       │                                   ├── AmazonDynamoDBSourceReader.java
│   │       │                                   ├── AmazonDynamoDBSourceSplit.java
│   │       │                                   ├── AmazonDynamoDBSourceSplitEnumerator.java
│   │       │                                   └── AmazonDynamoDBSourceState.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── amazondynamodb/
│   │                                       └── AmazonDynamoDBSourceFactoryTest.java
│   ├── connector-amazonsqs/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── amazonsqs/
│   │       │                               ├── config/
│   │       │                               │   ├── AmazonSqsBaseOptions.java
│   │       │                               │   ├── AmazonSqsSinkOptions.java
│   │       │                               │   ├── AmazonSqsSourceConfig.java
│   │       │                               │   ├── AmazonSqsSourceOptions.java
│   │       │                               │   └── MessageFormat.java
│   │       │                               ├── deserialize/
│   │       │                               │   ├── AmazonSqsDeserializer.java
│   │       │                               │   └── SeaTunnelRowDeserializer.java
│   │       │                               ├── exception/
│   │       │                               │   └── AmazonSqsConnectorException.java
│   │       │                               ├── sink/
│   │       │                               │   ├── AmazonSqsSink.java
│   │       │                               │   ├── AmazonSqsSinkFactory.java
│   │       │                               │   └── AmazonSqsSinkWriter.java
│   │       │                               └── source/
│   │       │                                   ├── AmazonSqsSource.java
│   │       │                                   ├── AmazonSqsSourceFactory.java
│   │       │                                   └── AmazonSqsSourceReader.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── amazonsqs/
│   │                                       └── AmazonSqsSourceFactoryTest.java
│   ├── connector-assert/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── assertion/
│   │       │                               ├── excecutor/
│   │       │                               │   └── AssertExecutor.java
│   │       │                               ├── exception/
│   │       │                               │   ├── AssertConnectorErrorCode.java
│   │       │                               │   └── AssertConnectorException.java
│   │       │                               ├── rule/
│   │       │                               │   ├── AssertCatalogTableRule.java
│   │       │                               │   ├── AssertCatalogTableRuleParser.java
│   │       │                               │   ├── AssertFieldRule.java
│   │       │                               │   ├── AssertRuleParser.java
│   │       │                               │   └── AssertTableRule.java
│   │       │                               └── sink/
│   │       │                                   ├── AssertConfig.java
│   │       │                                   ├── AssertSink.java
│   │       │                                   ├── AssertSinkFactory.java
│   │       │                                   ├── AssertSinkOptions.java
│   │       │                                   ├── AssertSinkWriter.java
│   │       │                                   ├── FieldRule.java
│   │       │                                   ├── RowRule.java
│   │       │                                   └── Rules.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── flink/
│   │                               └── assertion/
│   │                                   ├── AssertExecutorTest.java
│   │                                   ├── AssertFactoryTest.java
│   │                                   └── rule/
│   │                                       └── AssertRuleParserTest.java
│   ├── connector-cassandra/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── cassandra/
│   │       │                               ├── client/
│   │       │                               │   └── CassandraClient.java
│   │       │                               ├── config/
│   │       │                               │   ├── CassandraBaseOptions.java
│   │       │                               │   ├── CassandraParameters.java
│   │       │                               │   ├── CassandraSinkOptions.java
│   │       │                               │   └── CassandraSourceOptions.java
│   │       │                               ├── exception/
│   │       │                               │   ├── CassandraConnectorErrorCode.java
│   │       │                               │   └── CassandraConnectorException.java
│   │       │                               ├── sink/
│   │       │                               │   ├── CassandraSink.java
│   │       │                               │   ├── CassandraSinkFactory.java
│   │       │                               │   └── CassandraSinkWriter.java
│   │       │                               ├── source/
│   │       │                               │   ├── CassandraSource.java
│   │       │                               │   ├── CassandraSourceFactory.java
│   │       │                               │   └── CassandraSourceReader.java
│   │       │                               └── util/
│   │       │                                   └── TypeConvertUtil.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── cassandra/
│   │                                       └── CassandraFactoryTest.java
│   ├── connector-cdc/
│   │   ├── connector-cdc-base/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── io/
│   │   │       │       │   └── debezium/
│   │   │       │       │       ├── connector/
│   │   │       │       │       │   └── base/
│   │   │       │       │       │       └── ChangeEventQueue.java
│   │   │       │       │       ├── heartbeat/
│   │   │       │       │       │   ├── DefaultHeartbeatConnectionProvider.java
│   │   │       │       │       │   └── HeartbeatFactory.java
│   │   │       │       │       └── relational/
│   │   │       │       │           ├── HistorizedRelationalDatabaseConnectorConfig.java
│   │   │       │       │           └── TableId.java
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── cdc/
│   │   │       │                           ├── base/
│   │   │       │                           │   ├── config/
│   │   │       │                           │   │   ├── BaseSourceConfig.java
│   │   │       │                           │   │   ├── JdbcSourceConfig.java
│   │   │       │                           │   │   ├── JdbcSourceConfigFactory.java
│   │   │       │                           │   │   ├── JdbcSourceTableConfig.java
│   │   │       │                           │   │   ├── SourceConfig.java
│   │   │       │                           │   │   ├── StartupConfig.java
│   │   │       │                           │   │   └── StopConfig.java
│   │   │       │                           │   ├── dialect/
│   │   │       │                           │   │   ├── DataSourceDialect.java
│   │   │       │                           │   │   └── JdbcDataSourceDialect.java
│   │   │       │                           │   ├── option/
│   │   │       │                           │   │   ├── JdbcSourceOptions.java
│   │   │       │                           │   │   ├── SourceOptions.java
│   │   │       │                           │   │   ├── StartupMode.java
│   │   │       │                           │   │   └── StopMode.java
│   │   │       │                           │   ├── relational/
│   │   │       │                           │   │   ├── JdbcSourceEventDispatcher.java
│   │   │       │                           │   │   └── connection/
│   │   │       │                           │   │       ├── ConnectionPoolId.java
│   │   │       │                           │   │       ├── ConnectionPools.java
│   │   │       │                           │   │       ├── JdbcConnectionFactory.java
│   │   │       │                           │   │       ├── JdbcConnectionPoolFactory.java
│   │   │       │                           │   │       └── JdbcConnectionPools.java
│   │   │       │                           │   ├── schema/
│   │   │       │                           │   │   ├── AbstractSchemaChangeResolver.java
│   │   │       │                           │   │   └── SchemaChangeResolver.java
│   │   │       │                           │   ├── source/
│   │   │       │                           │   │   ├── BaseChangeStreamTableSourceFactory.java
│   │   │       │                           │   │   ├── IncrementalSource.java
│   │   │       │                           │   │   ├── enumerator/
│   │   │       │                           │   │   │   ├── HybridSplitAssigner.java
│   │   │       │                           │   │   │   ├── IncrementalSourceEnumerator.java
│   │   │       │                           │   │   │   ├── IncrementalSplitAssigner.java
│   │   │       │                           │   │   │   ├── SnapshotSplitAssigner.java
│   │   │       │                           │   │   │   ├── SplitAssigner.java
│   │   │       │                           │   │   │   ├── splitter/
│   │   │       │                           │   │   │   │   ├── AbstractJdbcSourceChunkSplitter.java
│   │   │       │                           │   │   │   │   ├── ChunkRange.java
│   │   │       │                           │   │   │   │   ├── ChunkSplitter.java
│   │   │       │                           │   │   │   │   └── JdbcSourceChunkSplitter.java
│   │   │       │                           │   │   │   └── state/
│   │   │       │                           │   │   │       ├── HybridPendingSplitsState.java
│   │   │       │                           │   │   │       ├── IncrementalPhaseState.java
│   │   │       │                           │   │   │       ├── PendingSplitsState.java
│   │   │       │                           │   │   │       └── SnapshotPhaseState.java
│   │   │       │                           │   │   ├── event/
│   │   │       │                           │   │   │   ├── CompletedSnapshotPhaseEvent.java
│   │   │       │                           │   │   │   ├── CompletedSnapshotSplitsAckEvent.java
│   │   │       │                           │   │   │   ├── CompletedSnapshotSplitsReportEvent.java
│   │   │       │                           │   │   │   └── SnapshotSplitWatermark.java
│   │   │       │                           │   │   ├── offset/
│   │   │       │                           │   │   │   ├── Offset.java
│   │   │       │                           │   │   │   └── OffsetFactory.java
│   │   │       │                           │   │   ├── parser/
│   │   │       │                           │   │   │   └── SeatunnelDDLParser.java
│   │   │       │                           │   │   ├── reader/
│   │   │       │                           │   │   │   ├── IncrementalSourceReader.java
│   │   │       │                           │   │   │   ├── IncrementalSourceRecordEmitter.java
│   │   │       │                           │   │   │   ├── IncrementalSourceSplitReader.java
│   │   │       │                           │   │   │   └── external/
│   │   │       │                           │   │   │       ├── FetchTask.java
│   │   │       │                           │   │   │       ├── Fetcher.java
│   │   │       │                           │   │   │       ├── IncrementalSourceScanFetcher.java
│   │   │       │                           │   │   │       ├── IncrementalSourceStreamFetcher.java
│   │   │       │                           │   │   │       └── JdbcSourceFetchTaskContext.java
│   │   │       │                           │   │   └── split/
│   │   │       │                           │   │       ├── ChangeEventRecords.java
│   │   │       │                           │   │       ├── CompletedSnapshotSplitInfo.java
│   │   │       │                           │   │       ├── IncrementalSplit.java
│   │   │       │                           │   │       ├── SnapshotSplit.java
│   │   │       │                           │   │       ├── SourceRecords.java
│   │   │       │                           │   │       ├── SourceSplitBase.java
│   │   │       │                           │   │       ├── state/
│   │   │       │                           │   │       │   ├── IncrementalSplitState.java
│   │   │       │                           │   │       │   ├── SnapshotSplitState.java
│   │   │       │                           │   │       │   └── SourceSplitStateBase.java
│   │   │       │                           │   │       └── wartermark/
│   │   │       │                           │   │           ├── WatermarkEvent.java
│   │   │       │                           │   │           └── WatermarkKind.java
│   │   │       │                           │   └── utils/
│   │   │       │                           │       ├── CatalogTableUtils.java
│   │   │       │                           │       ├── MessageDelayedEventLimiter.java
│   │   │       │                           │       ├── ObjectUtils.java
│   │   │       │                           │       └── SourceRecordUtils.java
│   │   │       │                           └── debezium/
│   │   │       │                               ├── AbstractDebeziumDeserializationSchema.java
│   │   │       │                               ├── ConnectTableChangeSerializer.java
│   │   │       │                               ├── DebeziumDeserializationConverter.java
│   │   │       │                               ├── DebeziumDeserializationConverterFactory.java
│   │   │       │                               ├── DebeziumDeserializationSchema.java
│   │   │       │                               ├── DeserializeFormat.java
│   │   │       │                               ├── EmbeddedDatabaseHistory.java
│   │   │       │                               ├── MetadataConverter.java
│   │   │       │                               ├── row/
│   │   │       │                               │   ├── DebeziumJsonDeserializeSchema.java
│   │   │       │                               │   ├── SeaTunnelRowDebeziumDeserializationConverters.java
│   │   │       │                               │   └── SeaTunnelRowDebeziumDeserializeSchema.java
│   │   │       │                               └── utils/
│   │   │       │                                   └── TemporalConversions.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               ├── jdbc/
│   │   │               │   └── source/
│   │   │               │       └── JdbcSourceChunkSplitterTest.java
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── cdc/
│   │   │                                   ├── base/
│   │   │                                   │   ├── schema/
│   │   │                                   │   │   └── AbstractSchemaChangeResolverTest.java
│   │   │                                   │   ├── source/
│   │   │                                   │   │   ├── enumerator/
│   │   │                                   │   │   │   ├── HybridSplitAssignerTest.java
│   │   │                                   │   │   │   └── splitter/
│   │   │                                   │   │   │       └── AbstractJdbcSourceChunkSplitterTest.java
│   │   │                                   │   │   ├── reader/
│   │   │                                   │   │   │   ├── IncrementalSourceSplitReaderTest.java
│   │   │                                   │   │   │   └── external/
│   │   │                                   │   │   │       └── IncrementalSourceStreamFetcherTest.java
│   │   │                                   │   │   └── split/
│   │   │                                   │   │       └── state/
│   │   │                                   │   │           └── IncrementalSplitStateTest.java
│   │   │                                   │   └── utils/
│   │   │                                   │       └── MessageDelayedEventLimiterTest.java
│   │   │                                   └── debezium/
│   │   │                                       ├── format/
│   │   │                                       │   └── DebeziumJsonFormatTest.java
│   │   │                                       └── row/
│   │   │                                           ├── DebeziumJsonDeserializeSchemaTest.java
│   │   │                                           └── SeaTunnelRowDebeziumDeserializationConvertersTest.java
│   │   ├── connector-cdc-mongodb/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── cdc/
│   │   │       │                               └── mongodb/
│   │   │       │                                   ├── MongodbIncrementalSource.java
│   │   │       │                                   ├── MongodbIncrementalSourceFactory.java
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── MongodbIncrementalSourceOptions.java
│   │   │       │                                   │   ├── MongodbSourceConfig.java
│   │   │       │                                   │   ├── MongodbSourceConfigProvider.java
│   │   │       │                                   │   └── MongodbSourceConstants.java
│   │   │       │                                   ├── exception/
│   │   │       │                                   │   └── MongodbConnectorException.java
│   │   │       │                                   ├── internal/
│   │   │       │                                   │   └── MongodbClientProvider.java
│   │   │       │                                   ├── sender/
│   │   │       │                                   │   ├── MongoDBConnectorDeserializationSchema.java
│   │   │       │                                   │   └── SerializableFunction.java
│   │   │       │                                   ├── source/
│   │   │       │                                   │   ├── MongoDBRecordEmitter.java
│   │   │       │                                   │   ├── dialect/
│   │   │       │                                   │   │   └── MongodbDialect.java
│   │   │       │                                   │   ├── fetch/
│   │   │       │                                   │   │   ├── MongodbFetchTaskContext.java
│   │   │       │                                   │   │   ├── MongodbScanFetchTask.java
│   │   │       │                                   │   │   └── MongodbStreamFetchTask.java
│   │   │       │                                   │   ├── offset/
│   │   │       │                                   │   │   ├── ChangeStreamDescriptor.java
│   │   │       │                                   │   │   ├── ChangeStreamOffset.java
│   │   │       │                                   │   │   └── ChangeStreamOffsetFactory.java
│   │   │       │                                   │   └── splitters/
│   │   │       │                                   │       ├── MongodbChunkSplitter.java
│   │   │       │                                   │       ├── SampleBucketSplitStrategy.java
│   │   │       │                                   │       ├── ShardedSplitStrategy.java
│   │   │       │                                   │       ├── SingleSplitStrategy.java
│   │   │       │                                   │       ├── SplitContext.java
│   │   │       │                                   │       ├── SplitStrategy.java
│   │   │       │                                   │       └── SplitVectorSplitStrategy.java
│   │   │       │                                   └── utils/
│   │   │       │                                       ├── BsonUtils.java
│   │   │       │                                       ├── ChunkUtils.java
│   │   │       │                                       ├── CollectionDiscoveryUtils.java
│   │   │       │                                       ├── MongodbRecordUtils.java
│   │   │       │                                       ├── MongodbUtils.java
│   │   │       │                                       └── ResumeToken.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── mongodb/
│   │   │                   ├── sender/
│   │   │                   │   └── MongoDBConnectorDeserializationSchemaTest.java
│   │   │                   ├── source/
│   │   │                   │   └── MongodbIncrementalSourceFactoryTest.java
│   │   │                   └── utils/
│   │   │                       └── MongodbRecordUtilsHeartbeatTest.java
│   │   ├── connector-cdc-mysql/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── com/
│   │   │       │       │   └── github/
│   │   │       │       │       └── shyiko/
│   │   │       │       │           └── mysql/
│   │   │       │       │               └── binlog/
│   │   │       │       │                   └── io/
│   │   │       │       │                       └── BufferedSocketInputStream.java
│   │   │       │       ├── io/
│   │   │       │       │   └── debezium/
│   │   │       │       │       └── connector/
│   │   │       │       │           └── mysql/
│   │   │       │       │               ├── GtidUtils.java
│   │   │       │       │               ├── MySqlConnection.java
│   │   │       │       │               ├── MySqlReadOnlyIncrementalSnapshotChangeEventSource.java
│   │   │       │       │               ├── MySqlSnapshotChangeEventSource.java
│   │   │       │       │               ├── MySqlStreamingChangeEventSource.java
│   │   │       │       │               └── legacy/
│   │   │       │       │                   ├── MySqlJdbcContext.java
│   │   │       │       │                   └── SnapshotReader.java
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── cdc/
│   │   │       │                               └── mysql/
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── CustomMySqlConnectionConfiguration.java
│   │   │       │                                   │   ├── MySqlIncrementalSourceOptions.java
│   │   │       │                                   │   ├── MySqlSourceConfig.java
│   │   │       │                                   │   ├── MySqlSourceConfigFactory.java
│   │   │       │                                   │   └── ServerIdRange.java
│   │   │       │                                   ├── source/
│   │   │       │                                   │   ├── MySqlDialect.java
│   │   │       │                                   │   ├── MySqlIncrementalSource.java
│   │   │       │                                   │   ├── MySqlIncrementalSourceFactory.java
│   │   │       │                                   │   ├── MySqlSchemaChangeResolver.java
│   │   │       │                                   │   ├── enumerator/
│   │   │       │                                   │   │   └── MySqlChunkSplitter.java
│   │   │       │                                   │   ├── offset/
│   │   │       │                                   │   │   ├── BinlogOffset.java
│   │   │       │                                   │   │   └── BinlogOffsetFactory.java
│   │   │       │                                   │   ├── parser/
│   │   │       │                                   │   │   ├── CustomAlterTableParserListener.java
│   │   │       │                                   │   │   ├── CustomColumnDefinitionParserListener.java
│   │   │       │                                   │   │   ├── CustomDefaultValueParserListener.java
│   │   │       │                                   │   │   ├── CustomMySqlAntlrDdlParser.java
│   │   │       │                                   │   │   └── CustomMySqlAntlrDdlParserListener.java
│   │   │       │                                   │   └── reader/
│   │   │       │                                   │       └── fetch/
│   │   │       │                                   │           ├── MySqlSourceFetchTaskContext.java
│   │   │       │                                   │           ├── binlog/
│   │   │       │                                   │           │   └── MySqlBinlogFetchTask.java
│   │   │       │                                   │           └── scan/
│   │   │       │                                   │               ├── MySqlSnapshotFetchTask.java
│   │   │       │                                   │               ├── MySqlSnapshotSplitReadTask.java
│   │   │       │                                   │               └── SnapshotSplitChangeEventSourceContext.java
│   │   │       │                                   └── utils/
│   │   │       │                                       ├── ErrorMessageUtils.java
│   │   │       │                                       ├── MySqlConnectionUtils.java
│   │   │       │                                       ├── MySqlDdlBuilder.java
│   │   │       │                                       ├── MySqlSchema.java
│   │   │       │                                       ├── MySqlTypeUtils.java
│   │   │       │                                       ├── MySqlUtils.java
│   │   │       │                                       └── TableDiscoveryUtils.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               ├── com/
│   │   │               │   └── github/
│   │   │               │       └── shyiko/
│   │   │               │           └── mysql/
│   │   │               │               └── binlog/
│   │   │               │                   └── io/
│   │   │               │                       └── BufferedSocketInputStreamTest.java
│   │   │               ├── io/
│   │   │               │   └── debezium/
│   │   │               │       └── connector/
│   │   │               │           └── mysql/
│   │   │               │               └── GtidUtilsTest.java
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── mysql/
│   │   │                                           ├── source/
│   │   │                                           │   └── MySqlIncrementalSourceFactoryTest.java
│   │   │                                           ├── testutils/
│   │   │                                           │   ├── MySqlContainer.java
│   │   │                                           │   ├── MySqlVersion.java
│   │   │                                           │   └── UniqueDatabase.java
│   │   │                                           └── utils/
│   │   │                                               ├── MySqlSchemaTest.java
│   │   │                                               └── MySqlUtilsTest.java
│   │   ├── connector-cdc-opengauss/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               ├── io/
│   │   │               │   └── debezium/
│   │   │               │       └── connector/
│   │   │               │           └── postgresql/
│   │   │               │               └── connection/
│   │   │               │                   ├── PostgresConnection.java
│   │   │               │                   └── PostgresReplicationConnection.java
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── opengauss/
│   │   │                                           └── OpengaussIncrementalSourceFactory.java
│   │   ├── connector-cdc-oracle/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── io/
│   │   │       │       │   └── debezium/
│   │   │       │       │       └── connector/
│   │   │       │       │           └── oracle/
│   │   │       │       │               └── logminer/
│   │   │       │       │                   ├── LogMinerAdapter.java
│   │   │       │       │                   ├── LogMinerStreamingChangeEventSource.java
│   │   │       │       │                   ├── logwriter/
│   │   │       │       │                   │   └── ReadOnlyLogWriterFlushStrategy.java
│   │   │       │       │                   └── processor/
│   │   │       │       │                       └── AbstractLogMinerEventProcessor.java
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── cdc/
│   │   │       │                               └── oracle/
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── OracleSourceConfig.java
│   │   │       │                                   │   └── OracleSourceConfigFactory.java
│   │   │       │                                   ├── source/
│   │   │       │                                   │   ├── OracleDialect.java
│   │   │       │                                   │   ├── OracleIncrementalSource.java
│   │   │       │                                   │   ├── OracleIncrementalSourceFactory.java
│   │   │       │                                   │   ├── OracleIncrementalSourceOptions.java
│   │   │       │                                   │   ├── OracleSchemaChangeResolver.java
│   │   │       │                                   │   ├── enumerator/
│   │   │       │                                   │   │   └── OracleChunkSplitter.java
│   │   │       │                                   │   ├── offset/
│   │   │       │                                   │   │   ├── RedoLogOffset.java
│   │   │       │                                   │   │   └── RedoLogOffsetFactory.java
│   │   │       │                                   │   ├── parser/
│   │   │       │                                   │   │   ├── BaseParserListener.java
│   │   │       │                                   │   │   ├── CustomAlterTableParserListener.java
│   │   │       │                                   │   │   ├── CustomColumnDefinitionParserListener.java
│   │   │       │                                   │   │   ├── CustomOracleAntlrDdlParser.java
│   │   │       │                                   │   │   └── CustomOracleAntlrDdlParserListener.java
│   │   │       │                                   │   └── reader/
│   │   │       │                                   │       └── fetch/
│   │   │       │                                   │           ├── OracleSourceFetchTaskContext.java
│   │   │       │                                   │           ├── logminer/
│   │   │       │                                   │           │   ├── EventProcessorFactory.java
│   │   │       │                                   │           │   └── OracleRedoLogFetchTask.java
│   │   │       │                                   │           └── scan/
│   │   │       │                                   │               ├── OracleSnapshotFetchTask.java
│   │   │       │                                   │               ├── OracleSnapshotSplitReadTask.java
│   │   │       │                                   │               └── SnapshotSplitChangeEventSourceContext.java
│   │   │       │                                   └── utils/
│   │   │       │                                       ├── OracleConnectionUtils.java
│   │   │       │                                       ├── OracleSchema.java
│   │   │       │                                       ├── OracleTypeUtils.java
│   │   │       │                                       └── OracleUtils.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               ├── io/
│   │   │               │   └── debezium/
│   │   │               │       └── connector/
│   │   │               │           └── oracle/
│   │   │               │               └── logminer/
│   │   │               │                   ├── logwriter/
│   │   │               │                   │   └── ReadOnlyLogWriterFlushStrategyTest.java
│   │   │               │                   └── processor/
│   │   │               │                       └── AbstractLogMinerEventProcessorTest.java
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── oracle/
│   │   │                                           ├── source/
│   │   │                                           │   ├── OracleIncrementalSourceFactoryTest.java
│   │   │                                           │   └── parser/
│   │   │                                           │       └── OracleDdlParserTest.java
│   │   │                                           └── utils/
│   │   │                                               └── OracleUtilsTest.java
│   │   ├── connector-cdc-postgres/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── io/
│   │   │       │       │   └── debezium/
│   │   │       │       │       └── connector/
│   │   │       │       │           └── postgresql/
│   │   │       │       │               ├── CustomPostgresValueConverter.java
│   │   │       │       │               ├── PostgresObjectUtils.java
│   │   │       │       │               ├── PostgresOffsetContext.java
│   │   │       │       │               └── TypeRegistry.java
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── cdc/
│   │   │       │                               └── postgres/
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── PostgresIncrementalSourceOptions.java
│   │   │       │                                   │   ├── PostgresSourceConfig.java
│   │   │       │                                   │   └── PostgresSourceConfigFactory.java
│   │   │       │                                   ├── exception/
│   │   │       │                                   │   └── PostgresConnectorErrorCode.java
│   │   │       │                                   ├── source/
│   │   │       │                                   │   ├── PostgresDialect.java
│   │   │       │                                   │   ├── PostgresIncrementalSource.java
│   │   │       │                                   │   ├── PostgresIncrementalSourceFactory.java
│   │   │       │                                   │   ├── PostgresSourceOptions.java
│   │   │       │                                   │   ├── enumerator/
│   │   │       │                                   │   │   └── PostgresChunkSplitter.java
│   │   │       │                                   │   ├── offset/
│   │   │       │                                   │   │   ├── LsnOffset.java
│   │   │       │                                   │   │   └── LsnOffsetFactory.java
│   │   │       │                                   │   └── reader/
│   │   │       │                                   │       ├── PostgresSourceFetchTaskContext.java
│   │   │       │                                   │       ├── snapshot/
│   │   │       │                                   │       │   ├── PostgresSnapshotFetchTask.java
│   │   │       │                                   │       │   ├── PostgresSnapshotSplitReadTask.java
│   │   │       │                                   │       │   └── SnapshotSplitChangeEventSourceContext.java
│   │   │       │                                   │       └── wal/
│   │   │       │                                   │           └── PostgresWalFetchTask.java
│   │   │       │                                   └── utils/
│   │   │       │                                       ├── PostgresConnectionUtils.java
│   │   │       │                                       ├── PostgresSchema.java
│   │   │       │                                       ├── PostgresTypeUtils.java
│   │   │       │                                       ├── PostgresUtils.java
│   │   │       │                                       └── TableDiscoveryUtils.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── postgres/
│   │   │                                           └── utils/
│   │   │                                               └── PostgresUtilsTest.java
│   │   ├── connector-cdc-sqlserver/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       ├── io/
│   │   │       │       │   └── debezium/
│   │   │       │       │       └── connector/
│   │   │       │       │           └── sqlserver/
│   │   │       │       │               ├── SqlServerConnection.java
│   │   │       │       │               └── SqlServerStreamingChangeEventSource.java
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── cdc/
│   │   │       │                               └── sqlserver/
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── SqlServerSourceConfig.java
│   │   │       │                                   │   └── SqlServerSourceConfigFactory.java
│   │   │       │                                   ├── source/
│   │   │       │                                   │   ├── SqlServerDialect.java
│   │   │       │                                   │   ├── SqlServerIncrementalSource.java
│   │   │       │                                   │   ├── SqlServerIncrementalSourceFactory.java
│   │   │       │                                   │   ├── SqlServerIncrementalSourceOptions.java
│   │   │       │                                   │   ├── enumerator/
│   │   │       │                                   │   │   └── SqlServerChunkSplitter.java
│   │   │       │                                   │   ├── offset/
│   │   │       │                                   │   │   ├── LsnOffset.java
│   │   │       │                                   │   │   └── LsnOffsetFactory.java
│   │   │       │                                   │   └── reader/
│   │   │       │                                   │       └── fetch/
│   │   │       │                                   │           ├── SqlServerSourceFetchTaskContext.java
│   │   │       │                                   │           ├── scan/
│   │   │       │                                   │           │   ├── SnapshotSplitChangeEventSourceContext.java
│   │   │       │                                   │           │   ├── SqlServerSnapshotFetchTask.java
│   │   │       │                                   │           │   └── SqlServerSnapshotSplitReadTask.java
│   │   │       │                                   │           └── transactionlog/
│   │   │       │                                   │               └── SqlServerTransactionLogFetchTask.java
│   │   │       │                                   └── utils/
│   │   │       │                                       ├── SqlServerConnectionUtils.java
│   │   │       │                                       ├── SqlServerSchema.java
│   │   │       │                                       ├── SqlServerTypeUtils.java
│   │   │       │                                       ├── SqlServerUtils.java
│   │   │       │                                       └── TableDiscoveryUtils.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               ├── io/
│   │   │               │   └── debezium/
│   │   │               │       └── connector/
│   │   │               │           └── sqlserver/
│   │   │               │               └── SqlServerConnectionTest.java
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── sqlserver/
│   │   │                                           ├── source/
│   │   │                                           │   ├── SqlServerIncrementalSourceFactoryTest.java
│   │   │                                           │   └── offset/
│   │   │                                           │       └── LsnOffsetTest.java
│   │   │                                           └── utils/
│   │   │                                               └── SqlServerUtilsTest.java
│   │   ├── connector-cdc-tidb/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           ├── apache/
│   │   │       │           │   └── seatunnel/
│   │   │       │           │       └── connectors/
│   │   │       │           │           └── seatunnel/
│   │   │       │           │               └── cdc/
│   │   │       │           │                   └── tidb/
│   │   │       │           │                       └── source/
│   │   │       │           │                           ├── TiDBSource.java
│   │   │       │           │                           ├── TiDBSourceFactory.java
│   │   │       │           │                           ├── config/
│   │   │       │           │                           │   ├── TiDBSourceConfig.java
│   │   │       │           │                           │   └── TiDBSourceOptions.java
│   │   │       │           │                           ├── converter/
│   │   │       │           │                           │   ├── DataConverter.java
│   │   │       │           │                           │   └── DefaultDataConverter.java
│   │   │       │           │                           ├── deserializer/
│   │   │       │           │                           │   ├── AbstractSeaTunnelRowDeserializer.java
│   │   │       │           │                           │   ├── SeaTunnelRowSnapshotRecordDeserializer.java
│   │   │       │           │                           │   └── SeaTunnelRowStreamingRecordDeserializer.java
│   │   │       │           │                           ├── enumerator/
│   │   │       │           │                           │   ├── TiDBSourceCheckpointState.java
│   │   │       │           │                           │   └── TiDBSourceSplitEnumerator.java
│   │   │       │           │                           ├── reader/
│   │   │       │           │                           │   ├── RowKeyWithTs.java
│   │   │       │           │                           │   └── TiDBSourceReader.java
│   │   │       │           │                           ├── split/
│   │   │       │           │                           │   └── TiDBSourceSplit.java
│   │   │       │           │                           └── utils/
│   │   │       │           │                               └── TableKeyRangeUtils.java
│   │   │       │           └── tikv/
│   │   │       │               └── common/
│   │   │       │                   └── iterator/
│   │   │       │                       └── ScanIterator.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── cdc/
│   │   │                                       └── tidb/
│   │   │                                           └── source/
│   │   │                                               └── SqlServerIncrementalSourceFactoryTest.java
│   │   └── pom.xml
│   ├── connector-clickhouse/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── clickhouse/
│   │       │                               ├── catalog/
│   │       │                               │   ├── ClickhouseCatalog.java
│   │       │                               │   ├── ClickhouseCatalogFactory.java
│   │       │                               │   └── ClickhouseTypeConverter.java
│   │       │                               ├── config/
│   │       │                               │   ├── ClickhouseBaseOptions.java
│   │       │                               │   ├── ClickhouseFileCopyMethod.java
│   │       │                               │   ├── ClickhouseFileSinkOptions.java
│   │       │                               │   ├── ClickhouseSinkOptions.java
│   │       │                               │   ├── ClickhouseSourceConfig.java
│   │       │                               │   ├── ClickhouseSourceOptions.java
│   │       │                               │   ├── ClickhouseTableConfig.java
│   │       │                               │   ├── ClickhouseType.java
│   │       │                               │   ├── FileReaderOption.java
│   │       │                               │   ├── NodePassConfig.java
│   │       │                               │   └── ReaderOption.java
│   │       │                               ├── exception/
│   │       │                               │   ├── ClickhouseConnectorErrorCode.java
│   │       │                               │   └── ClickhouseConnectorException.java
│   │       │                               ├── shard/
│   │       │                               │   ├── Shard.java
│   │       │                               │   └── ShardMetadata.java
│   │       │                               ├── sink/
│   │       │                               │   ├── client/
│   │       │                               │   │   ├── ClickhouseBatchStatement.java
│   │       │                               │   │   ├── ClickhouseSink.java
│   │       │                               │   │   ├── ClickhouseSinkFactory.java
│   │       │                               │   │   ├── ClickhouseSinkWriter.java
│   │       │                               │   │   ├── ShardRouter.java
│   │       │                               │   │   └── executor/
│   │       │                               │   │       ├── BufferedBatchStatementExecutor.java
│   │       │                               │   │       ├── FieldNamedPreparedStatement.java
│   │       │                               │   │       ├── InsertOrUpdateBatchStatementExecutor.java
│   │       │                               │   │       ├── JdbcBatchStatementExecutor.java
│   │       │                               │   │       ├── JdbcBatchStatementExecutorBuilder.java
│   │       │                               │   │       ├── JdbcRowConverter.java
│   │       │                               │   │       ├── ReduceBufferedBatchStatementExecutor.java
│   │       │                               │   │       ├── SimpleBatchStatementExecutor.java
│   │       │                               │   │       ├── SqlUtils.java
│   │       │                               │   │       └── StatementFactory.java
│   │       │                               │   ├── file/
│   │       │                               │   │   ├── ClickhouseFileSink.java
│   │       │                               │   │   ├── ClickhouseFileSinkAggCommitter.java
│   │       │                               │   │   ├── ClickhouseFileSinkFactory.java
│   │       │                               │   │   ├── ClickhouseFileSinkWriter.java
│   │       │                               │   │   ├── ClickhouseTable.java
│   │       │                               │   │   ├── FileTransfer.java
│   │       │                               │   │   ├── FileTransferFactory.java
│   │       │                               │   │   ├── RsyncFileTransfer.java
│   │       │                               │   │   └── ScpFileTransfer.java
│   │       │                               │   └── inject/
│   │       │                               │       ├── ArrayInjectFunction.java
│   │       │                               │       ├── BigDecimalInjectFunction.java
│   │       │                               │       ├── ClickhouseFieldInjectFunction.java
│   │       │                               │       ├── DateInjectFunction.java
│   │       │                               │       ├── DateTimeInjectFunction.java
│   │       │                               │       ├── DoubleInjectFunction.java
│   │       │                               │       ├── FloatInjectFunction.java
│   │       │                               │       ├── IntInjectFunction.java
│   │       │                               │       ├── LongInjectFunction.java
│   │       │                               │       ├── MapInjectFunction.java
│   │       │                               │       └── StringInjectFunction.java
│   │       │                               ├── source/
│   │       │                               │   ├── ClickhousePart.java
│   │       │                               │   ├── ClickhouseSource.java
│   │       │                               │   ├── ClickhouseSourceFactory.java
│   │       │                               │   ├── ClickhouseSourceReader.java
│   │       │                               │   ├── ClickhouseSourceTable.java
│   │       │                               │   ├── ClickhouseValueReader.java
│   │       │                               │   └── split/
│   │       │                               │       ├── ClickhouseSourceSplit.java
│   │       │                               │       ├── ClickhouseSourceSplitEnumerator.java
│   │       │                               │       ├── PartStrategySplitter.java
│   │       │                               │       ├── Splitter.java
│   │       │                               │       └── SqlStrategySplitter.java
│   │       │                               ├── state/
│   │       │                               │   ├── CKAggCommitInfo.java
│   │       │                               │   ├── CKCommitInfo.java
│   │       │                               │   ├── CKFileAggCommitInfo.java
│   │       │                               │   ├── CKFileCommitInfo.java
│   │       │                               │   ├── ClickhouseSinkState.java
│   │       │                               │   └── ClickhouseSourceState.java
│   │       │                               └── util/
│   │       │                                   ├── ClickhouseCatalogUtil.java
│   │       │                                   ├── ClickhouseProxy.java
│   │       │                                   ├── ClickhouseUtil.java
│   │       │                                   ├── CreateTableParser.java
│   │       │                                   ├── DistributedEngine.java
│   │       │                                   ├── IntHolder.java
│   │       │                                   └── TypeConvertUtil.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── clickhouse/
│   │                                       ├── ClickhouseCreateTableTest.java
│   │                                       ├── ClickhouseFactoryTest.java
│   │                                       ├── ShardRouterTest.java
│   │                                       ├── source/
│   │                                       │   ├── ClickhouseValueReaderTest.java
│   │                                       │   └── split/
│   │                                       │       └── PartStrategySplitterTest.java
│   │                                       └── util/
│   │                                           ├── ClickhouseCatalogUtilTest.java
│   │                                           └── ClickhouseUtilTest.java
│   ├── connector-common/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── seatunnel/
│   │       │   │               └── connectors/
│   │       │   │                   └── seatunnel/
│   │       │   │                       └── common/
│   │       │   │                           ├── sink/
│   │       │   │                           │   ├── AbstractSimpleSink.java
│   │       │   │                           │   └── AbstractSinkWriter.java
│   │       │   │                           ├── source/
│   │       │   │                           │   ├── AbstractSingleSplitReader.java
│   │       │   │                           │   ├── AbstractSingleSplitSource.java
│   │       │   │                           │   ├── SingleSplit.java
│   │       │   │                           │   ├── SingleSplitEnumerator.java
│   │       │   │                           │   ├── SingleSplitEnumeratorState.java
│   │       │   │                           │   ├── SingleSplitReaderContext.java
│   │       │   │                           │   ├── TypeDefineUtils.java
│   │       │   │                           │   ├── arrow/
│   │       │   │                           │   │   ├── converter/
│   │       │   │                           │   │   │   ├── Converter.java
│   │       │   │                           │   │   │   ├── DateMilliConvertor.java
│   │       │   │                           │   │   │   ├── DefaultConverter.java
│   │       │   │                           │   │   │   ├── FixedSizeListConverter.java
│   │       │   │                           │   │   │   ├── LargeListConverter.java
│   │       │   │                           │   │   │   ├── ListConverter.java
│   │       │   │                           │   │   │   ├── MapConverter.java
│   │       │   │                           │   │   │   ├── NullConverter.java
│   │       │   │                           │   │   │   ├── StructConverter.java
│   │       │   │                           │   │   │   ├── TimeStampMicroConverter.java
│   │       │   │                           │   │   │   ├── TimeStampMilliConverter.java
│   │       │   │                           │   │   │   ├── TimeStampNanoConverter.java
│   │       │   │                           │   │   │   └── TimeStampSecConverter.java
│   │       │   │                           │   │   └── reader/
│   │       │   │                           │   │       └── ArrowToSeatunnelRowReader.java
│   │       │   │                           │   └── reader/
│   │       │   │                           │       ├── RecordEmitter.java
│   │       │   │                           │       ├── RecordsBySplits.java
│   │       │   │                           │       ├── RecordsWithSplitIds.java
│   │       │   │                           │       ├── SingleThreadMultiplexSourceReaderBase.java
│   │       │   │                           │       ├── SourceReaderBase.java
│   │       │   │                           │       ├── SourceReaderOptions.java
│   │       │   │                           │       ├── fetcher/
│   │       │   │                           │       │   ├── AddSplitsTask.java
│   │       │   │                           │       │   ├── FetchTask.java
│   │       │   │                           │       │   ├── SingleThreadFetcherManager.java
│   │       │   │                           │       │   ├── SplitFetcher.java
│   │       │   │                           │       │   ├── SplitFetcherManager.java
│   │       │   │                           │       │   └── SplitFetcherTask.java
│   │       │   │                           │       └── splitreader/
│   │       │   │                           │           ├── SplitReader.java
│   │       │   │                           │           ├── SplitsAddition.java
│   │       │   │                           │           └── SplitsChange.java
│   │       │   │                           ├── sql/
│   │       │   │                           │   └── template/
│   │       │   │                           │       └── SqlTemplate.java
│   │       │   │                           └── util/
│   │       │   │                               ├── CatalogUtil.java
│   │       │   │                               └── CreateTableParser.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.Converter
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   ├── common/
│   │                                   │   └── source/
│   │                                   │       └── arrow/
│   │                                   │           ├── ArrowToSeatunnelRowReaderTest.java
│   │                                   │           └── SeaTunnelDataTypeHolder.java
│   │                                   ├── sink/
│   │                                   │   └── SinkFlowTestUtils.java
│   │                                   └── source/
│   │                                       └── SourceFlowTestUtils.java
│   ├── connector-console/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── console/
│   │       │                               └── sink/
│   │       │                                   ├── ConsoleSink.java
│   │       │                                   ├── ConsoleSinkFactory.java
│   │       │                                   ├── ConsoleSinkOptions.java
│   │       │                                   └── ConsoleSinkWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── console/
│   │                                       ├── ConsoleFactoryTest.java
│   │                                       └── sink/
│   │                                           └── ConsoleSinkWriterTest.java
│   ├── connector-databend/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── seatunnel/
│   │       │   │               └── connectors/
│   │       │   │                   └── seatunnel/
│   │       │   │                       └── databend/
│   │       │   │                           ├── catalog/
│   │       │   │                           │   ├── DatabendCatalog.java
│   │       │   │                           │   └── DatabendCatalogFactory.java
│   │       │   │                           ├── config/
│   │       │   │                           │   ├── DatabendOptions.java
│   │       │   │                           │   ├── DatabendSinkConfig.java
│   │       │   │                           │   ├── DatabendSinkOptions.java
│   │       │   │                           │   ├── DatabendSourceConfig.java
│   │       │   │                           │   └── DatabendSourceOptions.java
│   │       │   │                           ├── exception/
│   │       │   │                           │   ├── DatabendConnectorErrorCode.java
│   │       │   │                           │   └── DatabendConnectorException.java
│   │       │   │                           ├── schema/
│   │       │   │                           │   └── SchemaChangeManager.java
│   │       │   │                           ├── sink/
│   │       │   │                           │   ├── DatabendSink.java
│   │       │   │                           │   ├── DatabendSinkAggregatedCommitInfo.java
│   │       │   │                           │   ├── DatabendSinkAggregatedCommitter.java
│   │       │   │                           │   ├── DatabendSinkCommitterInfo.java
│   │       │   │                           │   ├── DatabendSinkFactory.java
│   │       │   │                           │   └── DatabendSinkWriter.java
│   │       │   │                           ├── source/
│   │       │   │                           │   ├── DatabendSource.java
│   │       │   │                           │   ├── DatabendSourceFactory.java
│   │       │   │                           │   └── DatabendSourceReader.java
│   │       │   │                           ├── state/
│   │       │   │                           │   ├── DatabendSinkState.java
│   │       │   │                           │   └── DatabendSourceState.java
│   │       │   │                           └── util/
│   │       │   │                               ├── DatabendTypeConverter.java
│   │       │   │                               └── DatabendUtil.java
│   │       │   └── resources/
│   │       │       ├── databend_sink_example.conf
│   │       │       ├── databend_source_example.conf
│   │       │       ├── databend_to_databend_example.conf
│   │       │       └── mysql_to_databend_example.conf
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── databend/
│   │                                       ├── DatabendFactoryTest.java
│   │                                       └── sink/
│   │                                           └── DatabendSinkWriterTest.java
│   ├── connector-datahub/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── datahub/
│   │       │                               ├── config/
│   │       │                               │   └── DataHubSinkOptions.java
│   │       │                               ├── exception/
│   │       │                               │   └── DataHubConnectorException.java
│   │       │                               └── sink/
│   │       │                                   ├── DataHubSink.java
│   │       │                                   ├── DataHubSinkFactory.java
│   │       │                                   └── DataHubWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── datahub/
│   │                                       └── DataHubFactoryTest.java
│   ├── connector-dingtalk/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           ├── config/
│   │       │                           │   └── DingTalkSinkOptions.java
│   │       │                           ├── exception/
│   │       │                           │   ├── DingTalkConnectorErrorCode.java
│   │       │                           │   └── DingTalkConnectorException.java
│   │       │                           └── sink/
│   │       │                               ├── DingTalkSink.java
│   │       │                               ├── DingTalkSinkFactory.java
│   │       │                               └── DingTalkWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── DingTalkFactoryTest.java
│   ├── connector-doris/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── doris/
│   │       │                           ├── backend/
│   │       │                           │   └── BackendClient.java
│   │       │                           ├── catalog/
│   │       │                           │   ├── DorisCatalog.java
│   │       │                           │   └── DorisCatalogFactory.java
│   │       │                           ├── config/
│   │       │                           │   ├── DorisBaseOptions.java
│   │       │                           │   ├── DorisSinkConfig.java
│   │       │                           │   ├── DorisSinkOptions.java
│   │       │                           │   ├── DorisSourceConfig.java
│   │       │                           │   ├── DorisSourceOptions.java
│   │       │                           │   └── DorisTableConfig.java
│   │       │                           ├── datatype/
│   │       │                           │   ├── AbstractDorisTypeConverter.java
│   │       │                           │   ├── DorisTypeConverterFactory.java
│   │       │                           │   ├── DorisTypeConverterV1.java
│   │       │                           │   └── DorisTypeConverterV2.java
│   │       │                           ├── exception/
│   │       │                           │   ├── DorisConnectorErrorCode.java
│   │       │                           │   ├── DorisConnectorException.java
│   │       │                           │   └── DorisSchemaChangeException.java
│   │       │                           ├── rest/
│   │       │                           │   ├── PartitionDefinition.java
│   │       │                           │   ├── RestService.java
│   │       │                           │   └── models/
│   │       │                           │       ├── Field.java
│   │       │                           │       ├── QueryPlan.java
│   │       │                           │       ├── RespContent.java
│   │       │                           │       ├── Schema.java
│   │       │                           │       └── Tablet.java
│   │       │                           ├── schema/
│   │       │                           │   └── SchemaChangeManager.java
│   │       │                           ├── serialize/
│   │       │                           │   ├── DorisSerializer.java
│   │       │                           │   ├── SeaTunnelRowSerializer.java
│   │       │                           │   └── SeaTunnelRowSerializerFactory.java
│   │       │                           ├── sink/
│   │       │                           │   ├── DorisSink.java
│   │       │                           │   ├── DorisSinkFactory.java
│   │       │                           │   ├── HttpPutBuilder.java
│   │       │                           │   ├── LoadStatus.java
│   │       │                           │   ├── committer/
│   │       │                           │   │   ├── DorisCommitInfo.java
│   │       │                           │   │   ├── DorisCommitInfoSerializer.java
│   │       │                           │   │   └── DorisCommitter.java
│   │       │                           │   └── writer/
│   │       │                           │       ├── DorisSinkState.java
│   │       │                           │       ├── DorisSinkStateSerializer.java
│   │       │                           │       ├── DorisSinkWriter.java
│   │       │                           │       ├── DorisStreamLoad.java
│   │       │                           │       ├── LabelGenerator.java
│   │       │                           │       ├── LoadConstants.java
│   │       │                           │       ├── RecordBuffer.java
│   │       │                           │       └── RecordStream.java
│   │       │                           ├── source/
│   │       │                           │   ├── DorisSource.java
│   │       │                           │   ├── DorisSourceFactory.java
│   │       │                           │   ├── DorisSourceState.java
│   │       │                           │   ├── DorisSourceTable.java
│   │       │                           │   ├── reader/
│   │       │                           │   │   ├── DorisSourceReader.java
│   │       │                           │   │   └── DorisValueReader.java
│   │       │                           │   ├── serialization/
│   │       │                           │   │   └── Routing.java
│   │       │                           │   └── split/
│   │       │                           │       ├── DorisSourceSplit.java
│   │       │                           │       └── DorisSourceSplitEnumerator.java
│   │       │                           └── util/
│   │       │                               ├── DorisCatalogUtil.java
│   │       │                               ├── ErrorMessages.java
│   │       │                               ├── HttpUtil.java
│   │       │                               ├── ResponseUtil.java
│   │       │                               ├── SchemaUtils.java
│   │       │                               └── UnsupportedTypeConverterUtils.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── doris/
│   │                                   ├── catalog/
│   │                                   │   ├── DorisCreateTableTest.java
│   │                                   │   └── PreviewActionTest.java
│   │                                   ├── datatype/
│   │                                   │   ├── DorisTypeConvertorV1Test.java
│   │                                   │   └── DorisTypeConvertorV2Test.java
│   │                                   ├── split/
│   │                                   │   └── DorisSourceSplitEnumeratorTest.java
│   │                                   └── util/
│   │                                       └── DorisCatalogUtilTest.java
│   ├── connector-druid/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── druid/
│   │       │                           ├── config/
│   │       │                           │   └── DruidSinkOptions.java
│   │       │                           ├── exception/
│   │       │                           │   └── DruidConnectorException.java
│   │       │                           └── sink/
│   │       │                               ├── DruidSink.java
│   │       │                               ├── DruidSinkFactory.java
│   │       │                               └── DruidWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── druid/
│   │                                       └── DruidFactoryTest.java
│   ├── connector-easysearch/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── easysearch/
│   │       │                               ├── catalog/
│   │       │                               │   ├── EasysearchCatalog.java
│   │       │                               │   ├── EasysearchCatalogFactory.java
│   │       │                               │   └── EasysearchDataTypeConvertor.java
│   │       │                               ├── client/
│   │       │                               │   └── EasysearchClient.java
│   │       │                               ├── config/
│   │       │                               │   ├── EasysearchSinkCommonOptions.java
│   │       │                               │   ├── EasysearchSinkOptions.java
│   │       │                               │   └── EasysearchSourceOptions.java
│   │       │                               ├── constant/
│   │       │                               │   └── EzsTypeMappingSeaTunnelType.java
│   │       │                               ├── dto/
│   │       │                               │   ├── BulkResponse.java
│   │       │                               │   ├── EasysearchClusterInfo.java
│   │       │                               │   ├── IndexInfo.java
│   │       │                               │   └── source/
│   │       │                               │       ├── IndexDocsCount.java
│   │       │                               │       ├── ScrollResult.java
│   │       │                               │       └── SourceIndexInfo.java
│   │       │                               ├── exception/
│   │       │                               │   ├── EasysearchConnectorErrorCode.java
│   │       │                               │   └── EasysearchConnectorException.java
│   │       │                               ├── serialize/
│   │       │                               │   ├── EasysearchRowSerializer.java
│   │       │                               │   ├── KeyExtractor.java
│   │       │                               │   ├── SeaTunnelRowSerializer.java
│   │       │                               │   ├── index/
│   │       │                               │   │   ├── IndexSerializer.java
│   │       │                               │   │   ├── IndexSerializerFactory.java
│   │       │                               │   │   └── impl/
│   │       │                               │   │       ├── FixedValueIndexSerializer.java
│   │       │                               │   │       └── VariableIndexSerializer.java
│   │       │                               │   └── source/
│   │       │                               │       ├── DefaultSeaTunnelRowDeserializer.java
│   │       │                               │       ├── EasysearchRecord.java
│   │       │                               │       └── SeaTunnelRowDeserializer.java
│   │       │                               ├── sink/
│   │       │                               │   ├── EasysearchSink.java
│   │       │                               │   ├── EasysearchSinkFactory.java
│   │       │                               │   └── EasysearchSinkWriter.java
│   │       │                               ├── source/
│   │       │                               │   ├── EasysearchSource.java
│   │       │                               │   ├── EasysearchSourceFactory.java
│   │       │                               │   ├── EasysearchSourceReader.java
│   │       │                               │   ├── EasysearchSourceSplit.java
│   │       │                               │   ├── EasysearchSourceSplitEnumerator.java
│   │       │                               │   └── EasysearchSourceState.java
│   │       │                               ├── state/
│   │       │                               │   ├── EasysearchAggregatedCommitInfo.java
│   │       │                               │   ├── EasysearchCommitInfo.java
│   │       │                               │   └── EasysearchSinkState.java
│   │       │                               └── util/
│   │       │                                   ├── RegexUtils.java
│   │       │                                   └── SSLUtils.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── easysearch/
│   │                                       ├── EasysearchFactoryTest.java
│   │                                       └── EasysearchSourceTest.java
│   ├── connector-elasticsearch/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── elasticsearch/
│   │       │                               ├── catalog/
│   │       │                               │   ├── ElasticSearchCatalog.java
│   │       │                               │   ├── ElasticSearchCatalogFactory.java
│   │       │                               │   ├── ElasticSearchDataTypeConvertor.java
│   │       │                               │   └── ElasticSearchTypeConverter.java
│   │       │                               ├── client/
│   │       │                               │   ├── EsRestClient.java
│   │       │                               │   ├── EsType.java
│   │       │                               │   └── auth/
│   │       │                               │       ├── AbstractAuthenticationProvider.java
│   │       │                               │       ├── ApiKeyAuthProvider.java
│   │       │                               │       ├── ApiKeyEncodedAuthProvider.java
│   │       │                               │       ├── AuthenticationProvider.java
│   │       │                               │       ├── AuthenticationProviderFactory.java
│   │       │                               │       └── BasicAuthProvider.java
│   │       │                               ├── config/
│   │       │                               │   ├── AuthTypeEnum.java
│   │       │                               │   ├── ElasticsearchBaseOptions.java
│   │       │                               │   ├── ElasticsearchConfig.java
│   │       │                               │   ├── ElasticsearchSinkOptions.java
│   │       │                               │   ├── ElasticsearchSourceOptions.java
│   │       │                               │   ├── SearchApiTypeEnum.java
│   │       │                               │   └── SearchTypeEnum.java
│   │       │                               ├── constant/
│   │       │                               │   ├── ElasticsearchVersion.java
│   │       │                               │   └── EsTypeMappingSeaTunnelType.java
│   │       │                               ├── dto/
│   │       │                               │   ├── BulkResponse.java
│   │       │                               │   ├── ElasticsearchClusterInfo.java
│   │       │                               │   ├── IndexInfo.java
│   │       │                               │   └── source/
│   │       │                               │       ├── IndexDocsCount.java
│   │       │                               │       ├── PointInTimeResult.java
│   │       │                               │       └── ScrollResult.java
│   │       │                               ├── exception/
│   │       │                               │   ├── ElasticsearchConnectorErrorCode.java
│   │       │                               │   └── ElasticsearchConnectorException.java
│   │       │                               ├── serialize/
│   │       │                               │   ├── ElasticsearchRowSerializer.java
│   │       │                               │   ├── KeyExtractor.java
│   │       │                               │   ├── SeaTunnelRowSerializer.java
│   │       │                               │   ├── index/
│   │       │                               │   │   ├── IndexSerializer.java
│   │       │                               │   │   ├── IndexSerializerFactory.java
│   │       │                               │   │   └── impl/
│   │       │                               │   │       ├── FixedValueIndexSerializer.java
│   │       │                               │   │       └── VariableIndexSerializer.java
│   │       │                               │   ├── source/
│   │       │                               │   │   ├── DefaultSeaTunnelRowDeserializer.java
│   │       │                               │   │   ├── ElasticsearchRecord.java
│   │       │                               │   │   └── SeaTunnelRowDeserializer.java
│   │       │                               │   └── type/
│   │       │                               │       ├── IndexTypeSerializer.java
│   │       │                               │       ├── IndexTypeSerializerFactory.java
│   │       │                               │       └── impl/
│   │       │                               │           ├── NotIndexTypeSerializer.java
│   │       │                               │           └── RequiredIndexTypeSerializer.java
│   │       │                               ├── sink/
│   │       │                               │   ├── ElasticsearchSink.java
│   │       │                               │   ├── ElasticsearchSinkFactory.java
│   │       │                               │   └── ElasticsearchSinkWriter.java
│   │       │                               ├── source/
│   │       │                               │   ├── ElasticsearchSource.java
│   │       │                               │   ├── ElasticsearchSourceFactory.java
│   │       │                               │   ├── ElasticsearchSourceReader.java
│   │       │                               │   ├── ElasticsearchSourceSplit.java
│   │       │                               │   ├── ElasticsearchSourceSplitEnumerator.java
│   │       │                               │   └── ElasticsearchSourceState.java
│   │       │                               ├── state/
│   │       │                               │   ├── ElasticsearchAggregatedCommitInfo.java
│   │       │                               │   ├── ElasticsearchCommitInfo.java
│   │       │                               │   └── ElasticsearchSinkState.java
│   │       │                               └── util/
│   │       │                                   ├── RegexUtils.java
│   │       │                                   └── SSLUtils.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── elasticsearch/
│   │                                       ├── ElasticsearchFactoryTest.java
│   │                                       ├── ElasticsearchSourceTest.java
│   │                                       ├── catalog/
│   │                                       │   └── PreviewActionTest.java
│   │                                       └── serialize/
│   │                                           └── ElasticsearchRowSerializerTest.java
│   ├── connector-email/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── seatunnel/
│   │       │   │               └── connectors/
│   │       │   │                   └── seatunnel/
│   │       │   │                       └── email/
│   │       │   │                           ├── config/
│   │       │   │                           │   ├── EmailSinkConfig.java
│   │       │   │                           │   └── EmailSinkOptions.java
│   │       │   │                           ├── exception/
│   │       │   │                           │   ├── EmailConnectorErrorCode.java
│   │       │   │                           │   └── EmailConnectorException.java
│   │       │   │                           └── sink/
│   │       │   │                               ├── EmailSink.java
│   │       │   │                               ├── EmailSinkFactory.java
│   │       │   │                               └── EmailSinkWriter.java
│   │       │   └── resources/
│   │       │       └── fake_to_emailsink_flink.conf
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── email/
│   │                                       ├── EmailFactoryTest.java
│   │                                       └── EmailSinkWriterTest.java
│   ├── connector-fake/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── fake/
│   │       │                               ├── config/
│   │       │                               │   ├── FakeConfig.java
│   │       │                               │   ├── FakeSourceOptions.java
│   │       │                               │   └── MultipleTableFakeSourceConfig.java
│   │       │                               ├── exception/
│   │       │                               │   └── FakeConnectorException.java
│   │       │                               ├── source/
│   │       │                               │   ├── FakeDataGenerator.java
│   │       │                               │   ├── FakeSource.java
│   │       │                               │   ├── FakeSourceFactory.java
│   │       │                               │   ├── FakeSourceReader.java
│   │       │                               │   ├── FakeSourceSplit.java
│   │       │                               │   └── FakeSourceSplitEnumerator.java
│   │       │                               ├── state/
│   │       │                               │   └── FakeSourceState.java
│   │       │                               └── utils/
│   │       │                                   ├── AutoIncrementIdGenerator.java
│   │       │                                   ├── FakeDataRandomUtils.java
│   │       │                                   └── IdGeneratorUtils.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── seatunnel/
│   │           │               └── connectors/
│   │           │                   └── seatunnel/
│   │           │                       └── fake/
│   │           │                           ├── config/
│   │           │                           │   └── MultipleTableFakeSourceConfigTest.java
│   │           │                           └── source/
│   │           │                               ├── FakeDataGeneratorTest.java
│   │           │                               ├── FakeFactoryTest.java
│   │           │                               └── FakeSourceSplitEnumeratorTest.java
│   │           └── resources/
│   │               ├── complex.schema.conf
│   │               ├── fake-auto-increment-id.conf
│   │               ├── fake-data.column.conf
│   │               ├── fake-data.schema.conf
│   │               ├── fake-data.schema.default.conf
│   │               ├── fake-vector.conf
│   │               ├── multiple_table.conf
│   │               └── simple.schema.conf
│   ├── connector-file/
│   │   ├── connector-file-base/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── file/
│   │   │       │                               ├── catalog/
│   │   │       │                               │   └── AbstractFileCatalog.java
│   │   │       │                               ├── config/
│   │   │       │                               │   ├── ArchiveCompressFormat.java
│   │   │       │                               │   ├── BaseFileSinkConfig.java
│   │   │       │                               │   ├── BaseFileSourceConfig.java
│   │   │       │                               │   ├── BaseMultipleTableFileSourceConfig.java
│   │   │       │                               │   ├── CompressFormat.java
│   │   │       │                               │   ├── DelimiterConfig.java
│   │   │       │                               │   ├── ExcelEngine.java
│   │   │       │                               │   ├── FileBaseOptions.java
│   │   │       │                               │   ├── FileBaseSinkOptions.java
│   │   │       │                               │   ├── FileBaseSourceOptions.java
│   │   │       │                               │   ├── FileCompareMode.java
│   │   │       │                               │   ├── FileFormat.java
│   │   │       │                               │   ├── FileSyncMode.java
│   │   │       │                               │   ├── FileSystemType.java
│   │   │       │                               │   ├── FileUpdateStrategy.java
│   │   │       │                               │   ├── HadoopConf.java
│   │   │       │                               │   └── PartitionConfig.java
│   │   │       │                               ├── excel/
│   │   │       │                               │   ├── ExcelCellUtils.java
│   │   │       │                               │   └── ExcelReaderListener.java
│   │   │       │                               ├── exception/
│   │   │       │                               │   ├── FileConnectorErrorCode.java
│   │   │       │                               │   └── FileConnectorException.java
│   │   │       │                               ├── factory/
│   │   │       │                               │   └── BaseMultipleTableFileSinkFactory.java
│   │   │       │                               ├── hadoop/
│   │   │       │                               │   ├── HadoopFileSystemProxy.java
│   │   │       │                               │   └── HadoopLoginFactory.java
│   │   │       │                               ├── sink/
│   │   │       │                               │   ├── BaseFileSink.java
│   │   │       │                               │   ├── BaseFileSinkWriter.java
│   │   │       │                               │   ├── BaseMultipleTableFileSink.java
│   │   │       │                               │   ├── commit/
│   │   │       │                               │   │   ├── FileAggregatedCommitInfo.java
│   │   │       │                               │   │   ├── FileCommitInfo.java
│   │   │       │                               │   │   └── FileSinkAggregatedCommitter.java
│   │   │       │                               │   ├── config/
│   │   │       │                               │   │   ├── FileSinkConfig.java
│   │   │       │                               │   │   └── SaveMode.java
│   │   │       │                               │   ├── state/
│   │   │       │                               │   │   └── FileSinkState.java
│   │   │       │                               │   ├── util/
│   │   │       │                               │   │   ├── ExcelGenerator.java
│   │   │       │                               │   │   └── XmlWriter.java
│   │   │       │                               │   └── writer/
│   │   │       │                               │       ├── AbstractWriteStrategy.java
│   │   │       │                               │       ├── BinaryWriteStrategy.java
│   │   │       │                               │       ├── CanalJsonWriteStrategy.java
│   │   │       │                               │       ├── CsvWriteStrategy.java
│   │   │       │                               │       ├── DebeziumJsonWriteStrategy.java
│   │   │       │                               │       ├── ExcelWriteStrategy.java
│   │   │       │                               │       ├── JsonWriteStrategy.java
│   │   │       │                               │       ├── MaxWellJsonWriteStrategy.java
│   │   │       │                               │       ├── OrcWriteStrategy.java
│   │   │       │                               │       ├── ParquetWriteStrategy.java
│   │   │       │                               │       ├── TextWriteStrategy.java
│   │   │       │                               │       ├── Transaction.java
│   │   │       │                               │       ├── WriteStrategy.java
│   │   │       │                               │       ├── WriteStrategyFactory.java
│   │   │       │                               │       └── XmlWriteStrategy.java
│   │   │       │                               └── source/
│   │   │       │                                   ├── BaseFileSource.java
│   │   │       │                                   ├── BaseFileSourceReader.java
│   │   │       │                                   ├── BaseMultipleTableFileSource.java
│   │   │       │                                   ├── reader/
│   │   │       │                                   │   ├── AbstractReadStrategy.java
│   │   │       │                                   │   ├── BinaryReadStrategy.java
│   │   │       │                                   │   ├── CsvReadStrategy.java
│   │   │       │                                   │   ├── ExcelReadStrategy.java
│   │   │       │                                   │   ├── JsonReadStrategy.java
│   │   │       │                                   │   ├── MarkdownReadStrategy.java
│   │   │       │                                   │   ├── MultipleTableFileSourceReader.java
│   │   │       │                                   │   ├── OrcReadStrategy.java
│   │   │       │                                   │   ├── ParquetReadStrategy.java
│   │   │       │                                   │   ├── ReadStrategy.java
│   │   │       │                                   │   ├── ReadStrategyFactory.java
│   │   │       │                                   │   ├── TextReadStrategy.java
│   │   │       │                                   │   └── XmlReadStrategy.java
│   │   │       │                                   ├── split/
│   │   │       │                                   │   ├── AccordingToSplitSizeSplitStrategy.java
│   │   │       │                                   │   ├── DefaultFileSplitStrategy.java
│   │   │       │                                   │   ├── FileSourceSplit.java
│   │   │       │                                   │   ├── FileSourceSplitEnumerator.java
│   │   │       │                                   │   ├── FileSplitStrategy.java
│   │   │       │                                   │   ├── FileSplitStrategyFactory.java
│   │   │       │                                   │   ├── MultipleTableFileSourceSplitEnumerator.java
│   │   │       │                                   │   ├── MultipleTableFileSplitStrategy.java
│   │   │       │                                   │   └── ParquetFileSplitStrategy.java
│   │   │       │                                   └── state/
│   │   │       │                                       └── FileSourceState.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── seatunnel/
│   │   │           │               └── connectors/
│   │   │           │                   └── seatunnel/
│   │   │           │                       └── file/
│   │   │           │                           ├── hadoop/
│   │   │           │                           │   ├── HadoopFileSystemProxyKerberosRenewTest.java
│   │   │           │                           │   └── HadoopLoginFactoryTest.java
│   │   │           │                           ├── reader/
│   │   │           │                           │   ├── BinaryReadStrategyTest.java
│   │   │           │                           │   ├── ExcelReadStrategyTest.java
│   │   │           │                           │   ├── FileFilterPatternTest.java
│   │   │           │                           │   └── StreamLineSplitterTest.java
│   │   │           │                           ├── source/
│   │   │           │                           │   ├── reader/
│   │   │           │                           │   │   ├── AbstractReadStrategyTest.java
│   │   │           │                           │   │   ├── CsvReadStrategyTest.java
│   │   │           │                           │   │   ├── MarkdownReadStrategyTest.java
│   │   │           │                           │   │   ├── ReadStrategySplitFallbackTest.java
│   │   │           │                           │   │   ├── TempCollector.java
│   │   │           │                           │   │   └── UpdateSyncModeTest.java
│   │   │           │                           │   └── split/
│   │   │           │                           │       ├── FileSourceSplitCompatibilityTest.java
│   │   │           │                           │       ├── FileSourceSplitEnumeratorTest.java
│   │   │           │                           │       ├── FileSplitStrategyFactoryTest.java
│   │   │           │                           │       ├── MultipleTableFileSourceSplitEnumeratorTest.java
│   │   │           │                           │       └── ParquetFileSplitStrategyTest.java
│   │   │           │                           ├── util/
│   │   │           │                           │   └── FileSystemUtilsTest.java
│   │   │           │                           └── writer/
│   │   │           │                               ├── CsvWriteStrategyTest.java
│   │   │           │                               ├── ExcelGeneratorTest.java
│   │   │           │                               ├── FileSinkConfigTest.java
│   │   │           │                               ├── OrcReadStrategyTest.java
│   │   │           │                               ├── OrcWriteStrategyTest.java
│   │   │           │                               ├── ParquetReadStrategyTest.java
│   │   │           │                               ├── ParquetWriteStrategyTest.java
│   │   │           │                               ├── ReadStrategyEncodingTest.java
│   │   │           │                               └── XmlReadStrategyTest.java
│   │   │           └── resources/
│   │   │               ├── csv/
│   │   │               │   ├── special_quote_char_break_line.csv
│   │   │               │   ├── utf8_bom_with_header.csv
│   │   │               │   └── utf8_bom_without_header.csv
│   │   │               ├── encoding/
│   │   │               │   ├── gbk.json
│   │   │               │   ├── gbk.txt
│   │   │               │   ├── gbk.xml
│   │   │               │   ├── gbk_use_attr_format.xml
│   │   │               │   ├── test_read_json.conf
│   │   │               │   ├── test_read_text.conf
│   │   │               │   ├── test_read_xml.conf
│   │   │               │   └── test_read_xml_use_attr_format.conf
│   │   │               ├── excel/
│   │   │               │   ├── e2e.xls
│   │   │               │   ├── e2e.xlsx
│   │   │               │   ├── e2exls.conf
│   │   │               │   ├── test_read_excel.conf
│   │   │               │   ├── test_read_excel.xlsx
│   │   │               │   ├── test_read_excel_data_string.conf
│   │   │               │   ├── test_read_excel_date_string.xlsx
│   │   │               │   ├── test_read_excel_formula.xlsx
│   │   │               │   ├── test_read_excel_large.conf
│   │   │               │   └── test_read_formula.xls
│   │   │               ├── filter-pattern/
│   │   │               │   └── json/
│   │   │               │       ├── json2024/
│   │   │               │       │   └── 202401.json
│   │   │               │       ├── json2025/
│   │   │               │       │   ├── 202501.json
│   │   │               │       │   └── test_read_json.conf
│   │   │               │       └── people.json
│   │   │               ├── hive.parquet
│   │   │               ├── test-csv.csv
│   │   │               ├── test.csv
│   │   │               ├── test.md
│   │   │               ├── test.orc
│   │   │               ├── test_read_orc.conf
│   │   │               ├── test_read_parquet.conf
│   │   │               ├── test_read_parquet2.conf
│   │   │               ├── test_user_config_read_parquet.conf
│   │   │               ├── test_write_hdfs.conf
│   │   │               ├── test_write_hdfs_default_format.conf
│   │   │               ├── test_write_hive.conf
│   │   │               ├── timestamp_as_int64.parquet
│   │   │               ├── timestamp_as_int96.parquet
│   │   │               └── xml/
│   │   │                   ├── name=xmlTest/
│   │   │                   │   └── test_read.xml
│   │   │                   └── test_read_xml.conf
│   │   ├── connector-file-base-hadoop/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── hdfs/
│   │   │                                           ├── sink/
│   │   │                                           │   └── BaseHdfsFileSink.java
│   │   │                                           └── source/
│   │   │                                               ├── BaseHdfsFileSource.java
│   │   │                                               └── config/
│   │   │                                                   └── HdfsSourceConfigOptions.java
│   │   ├── connector-file-cos/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── cos/
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── CosConf.java
│   │   │       │   │                               │   ├── CosFileBaseOptions.java
│   │   │       │   │                               │   ├── CosFileSinkOptions.java
│   │   │       │   │                               │   └── CosFileSourceOptions.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── CosFileSink.java
│   │   │       │   │                               │   └── CosFileSinkFactory.java
│   │   │       │   │                               └── source/
│   │   │       │   │                                   ├── CosFileSource.java
│   │   │       │   │                                   └── CosFileSourceFactory.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── cos/
│   │   │                                           └── CosFileFactoryTest.java
│   │   ├── connector-file-ftp/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── ftp/
│   │   │       │   │                               ├── catalog/
│   │   │       │   │                               │   ├── FtpFileCatalog.java
│   │   │       │   │                               │   └── FtpFileCatalogFactory.java
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── FTPFileSourceConfig.java
│   │   │       │   │                               │   ├── FtpConf.java
│   │   │       │   │                               │   ├── FtpFileBaseOptions.java
│   │   │       │   │                               │   ├── FtpFileSinkOptions.java
│   │   │       │   │                               │   ├── FtpFileSourceOptions.java
│   │   │       │   │                               │   └── MultipleTableFTPFileSourceConfig.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── FtpFileSink.java
│   │   │       │   │                               │   └── FtpFileSinkFactory.java
│   │   │       │   │                               ├── source/
│   │   │       │   │                               │   ├── FtpFileSource.java
│   │   │       │   │                               │   └── FtpFileSourceFactory.java
│   │   │       │   │                               └── system/
│   │   │       │   │                                   ├── FtpConnectionMode.java
│   │   │       │   │                                   └── SeaTunnelFTPFileSystem.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── ftp/
│   │   │                                           ├── FtpFileFactoryTest.java
│   │   │                                           └── system/
│   │   │                                               └── SeaTunnelFTPFileSystemTest.java
│   │   ├── connector-file-hadoop/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── file/
│   │   │       │                               └── hdfs/
│   │   │       │                                   ├── catalog/
│   │   │       │                                   │   ├── HdfsFileCatalog.java
│   │   │       │                                   │   └── HdfsFileCatalogFactory.java
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── HdfsFileHadoopConfig.java
│   │   │       │                                   │   ├── HdfsFileSinkOptions.java
│   │   │       │                                   │   ├── HdfsFileSourceConfig.java
│   │   │       │                                   │   └── MultipleTableHdfsFileSourceConfig.java
│   │   │       │                                   ├── sink/
│   │   │       │                                   │   ├── HdfsFileSink.java
│   │   │       │                                   │   └── HdfsFileSinkFactory.java
│   │   │       │                                   └── source/
│   │   │       │                                       ├── HdfsFileSource.java
│   │   │       │                                       └── HdfsFileSourceFactory.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── hdfs/
│   │   │                                           ├── HdfsFileFactoryTest.java
│   │   │                                           ├── HdfsFileSinkTest.java
│   │   │                                           ├── HdfsFileSourceConfigTest.java
│   │   │                                           └── source/
│   │   │                                               └── split/
│   │   │                                                   ├── HdfsFileAccordingToSplitSizeSplitStrategyTest.java
│   │   │                                                   └── HdfsFileSplitStrategyFactoryTest.java
│   │   ├── connector-file-jindo-oss/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── oss/
│   │   │       │   │                               └── jindo/
│   │   │       │   │                                   ├── config/
│   │   │       │   │                                   │   ├── OssConf.java
│   │   │       │   │                                   │   ├── OssFileBaseOptions.java
│   │   │       │   │                                   │   ├── OssFileSinkOptions.java
│   │   │       │   │                                   │   └── OssFileSourceOptions.java
│   │   │       │   │                                   ├── exception/
│   │   │       │   │                                   │   └── OssJindoConnectorException.java
│   │   │       │   │                                   ├── sink/
│   │   │       │   │                                   │   ├── OssFileSink.java
│   │   │       │   │                                   │   └── OssFileSinkFactory.java
│   │   │       │   │                                   └── source/
│   │   │       │   │                                       ├── OssFileSource.java
│   │   │       │   │                                       └── OssFileSourceFactory.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── test/
│   │   │                                   └── OssJindoFactoryTest.java
│   │   ├── connector-file-local/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── org/
│   │   │       │           └── apache/
│   │   │       │               └── seatunnel/
│   │   │       │                   └── connectors/
│   │   │       │                       └── seatunnel/
│   │   │       │                           └── file/
│   │   │       │                               └── local/
│   │   │       │                                   ├── catalog/
│   │   │       │                                   │   ├── LocalFileCatalog.java
│   │   │       │                                   │   └── LocalFileCatalogFactory.java
│   │   │       │                                   ├── config/
│   │   │       │                                   │   ├── LocalFileHadoopConf.java
│   │   │       │                                   │   ├── LocalFileSinkOptions.java
│   │   │       │                                   │   └── LocalFileSourceOptions.java
│   │   │       │                                   ├── sink/
│   │   │       │                                   │   ├── LocalFileSink.java
│   │   │       │                                   │   └── LocalFileSinkFactory.java
│   │   │       │                                   └── source/
│   │   │       │                                       ├── LocalFileSource.java
│   │   │       │                                       ├── LocalFileSourceFactory.java
│   │   │       │                                       ├── config/
│   │   │       │                                       │   ├── LocalFileSourceConfig.java
│   │   │       │                                       │   └── MultipleTableLocalFileSourceConfig.java
│   │   │       │                                       └── split/
│   │   │       │                                           └── LocalFileAccordingToSplitSizeSplitStrategy.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── seatunnel/
│   │   │           │               └── connectors/
│   │   │           │                   └── seatunnel/
│   │   │           │                       └── file/
│   │   │           │                           └── local/
│   │   │           │                               ├── LocalFileFactoryTest.java
│   │   │           │                               ├── LocalFileSourceTest.java
│   │   │           │                               ├── LocalFileTest.java
│   │   │           │                               └── SplitFileStrategyTest.java
│   │   │           └── resources/
│   │   │               ├── test_data.txt
│   │   │               ├── test_split_csv_data.csv
│   │   │               ├── test_split_empty_data.csv
│   │   │               ├── test_split_special_row_delimiter_data.txt
│   │   │               └── utf8_bom_split.csv
│   │   ├── connector-file-obs/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── obs/
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── ObsConf.java
│   │   │       │   │                               │   ├── ObsFileBaseOptions.java
│   │   │       │   │                               │   ├── ObsFileSinkOptions.java
│   │   │       │   │                               │   └── ObsFileSourceOptions.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── ObsFileSink.java
│   │   │       │   │                               │   └── ObsFileSinkFactory.java
│   │   │       │   │                               └── source/
│   │   │       │   │                                   ├── ObsFileSource.java
│   │   │       │   │                                   └── ObsFileSourceFactory.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── obs/
│   │   │                                           └── ObsFileFactoryTest.java
│   │   ├── connector-file-oss/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── oss/
│   │   │       │   │                               ├── catalog/
│   │   │       │   │                               │   ├── OssFileCatalog.java
│   │   │       │   │                               │   └── OssFileCatalogFactory.java
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── OssFileBaseOptions.java
│   │   │       │   │                               │   ├── OssFileSinkOptions.java
│   │   │       │   │                               │   ├── OssFileSourceOptions.java
│   │   │       │   │                               │   └── OssHadoopConf.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── OssFileSink.java
│   │   │       │   │                               │   └── OssFileSinkFactory.java
│   │   │       │   │                               └── source/
│   │   │       │   │                                   ├── OssFileSource.java
│   │   │       │   │                                   ├── OssFileSourceFactory.java
│   │   │       │   │                                   └── config/
│   │   │       │   │                                       ├── MultipleTableOssFileSourceConfig.java
│   │   │       │   │                                       └── OssFileSourceConfig.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── oss/
│   │   │                                           └── OssFileFactoryTest.java
│   │   ├── connector-file-s3/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── s3/
│   │   │       │   │                               ├── catalog/
│   │   │       │   │                               │   ├── S3FileCatalog.java
│   │   │       │   │                               │   └── S3FileCatalogFactory.java
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── S3FileBaseOptions.java
│   │   │       │   │                               │   ├── S3FileSinkOptions.java
│   │   │       │   │                               │   ├── S3FileSourceOptions.java
│   │   │       │   │                               │   └── S3HadoopConf.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── S3FileSink.java
│   │   │       │   │                               │   └── S3FileSinkFactory.java
│   │   │       │   │                               └── source/
│   │   │       │   │                                   ├── S3FileSource.java
│   │   │       │   │                                   ├── S3FileSourceFactory.java
│   │   │       │   │                                   └── config/
│   │   │       │   │                                       ├── MultipleTableS3FileSourceConfig.java
│   │   │       │   │                                       └── S3FileSourceConfig.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── s3/
│   │   │                                           ├── S3FileFactoryTest.java
│   │   │                                           └── config/
│   │   │                                               └── S3HadoopConfTest.java
│   │   ├── connector-file-sftp/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── seatunnel/
│   │   │       │   │               └── connectors/
│   │   │       │   │                   └── seatunnel/
│   │   │       │   │                       └── file/
│   │   │       │   │                           └── sftp/
│   │   │       │   │                               ├── catalog/
│   │   │       │   │                               │   ├── SftpFileCatalog.java
│   │   │       │   │                               │   └── SftpFileCatalogFactory.java
│   │   │       │   │                               ├── config/
│   │   │       │   │                               │   ├── MultipleTableSFTPFileSourceConfig.java
│   │   │       │   │                               │   ├── SFTPFileSourceConfig.java
│   │   │       │   │                               │   ├── SftpConf.java
│   │   │       │   │                               │   ├── SftpFileBaseOptions.java
│   │   │       │   │                               │   ├── SftpFileSinkOptions.java
│   │   │       │   │                               │   └── SftpFileSourceOptions.java
│   │   │       │   │                               ├── sink/
│   │   │       │   │                               │   ├── SftpFileSink.java
│   │   │       │   │                               │   └── SftpFileSinkFactory.java
│   │   │       │   │                               ├── source/
│   │   │       │   │                               │   ├── SftpFileSource.java
│   │   │       │   │                               │   └── SftpFileSourceFactory.java
│   │   │       │   │                               └── system/
│   │   │       │   │                                   ├── SFTPConnectionPool.java
│   │   │       │   │                                   ├── SFTPFileSystem.java
│   │   │       │   │                                   └── SFTPInputStream.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.apache.hadoop.fs.FileSystem
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── seatunnel/
│   │   │                           └── connectors/
│   │   │                               └── seatunnel/
│   │   │                                   └── file/
│   │   │                                       └── sftp/
│   │   │                                           ├── SftpFileFactoryTest.java
│   │   │                                           └── system/
│   │   │                                               └── SftpFileSystemTest.java
│   │   └── pom.xml
│   ├── connector-fluss/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── fluss/
│   │                                       ├── config/
│   │                                       │   ├── FlussBaseOptions.java
│   │                                       │   └── FlussSinkOptions.java
│   │                                       └── sink/
│   │                                           ├── FlussSink.java
│   │                                           ├── FlussSinkFactory.java
│   │                                           └── FlussSinkWriter.java
│   ├── connector-google-firestore/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── google/
│   │       │                               └── firestore/
│   │       │                                   ├── config/
│   │       │                                   │   ├── FirestoreParameters.java
│   │       │                                   │   └── FirestoreSinkOptions.java
│   │       │                                   ├── exception/
│   │       │                                   │   ├── FirestoreConnectorErrorCode.java
│   │       │                                   │   └── FirestoreConnectorException.java
│   │       │                                   ├── serialize/
│   │       │                                   │   ├── DefaultSeaTunnelRowSerializer.java
│   │       │                                   │   └── SeaTunnelRowSerializer.java
│   │       │                                   └── sink/
│   │       │                                       ├── FirestoreSink.java
│   │       │                                       ├── FirestoreSinkFactory.java
│   │       │                                       └── FirestoreSinkWriter.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── google/
│   │                                       └── firestore/
│   │                                           └── FirestoreFactoryTest.java
│   ├── connector-google-sheets/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── google/
│   │       │                               └── sheets/
│   │       │                                   ├── config/
│   │       │                                   │   ├── SheetsParameters.java
│   │       │                                   │   └── SheetsSourceOptions.java
│   │       │                                   ├── deserialize/
│   │       │                                   │   ├── GoogleSheetsDeserializer.java
│   │       │                                   │   └── SeaTunnelRowDeserializer.java
│   │       │                                   ├── exception/
│   │       │                                   │   ├── GoogleSheetsConnectorException.java
│   │       │                                   │   ├── GoogleSheetsError.java
│   │       │                                   │   └── GoogleSheetsErrorCode.java
│   │       │                                   └── source/
│   │       │                                       ├── SheetsSource.java
│   │       │                                       ├── SheetsSourceFactory.java
│   │       │                                       └── SheetsSourceReader.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── seatunnel/
│   │                           └── connectors/
│   │                               └── seatunnel/
│   │                                   └── google/
│   │                                       └── sheets/
│   │                                           ├── SheetsFactoryTest.java
│   │                                           ├── deserialize/
│   │                                           │   └── GoogleSheetsDeserializerTest.java
│   │                                           └── exception/
│   │                                               └── GoogleSheetsErrorTest.java
│   ├── connector-graphql/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── seatunnel/
│   │       │                   └── connectors/
│   │       │                       └── seatunnel/
│   │       │                           └── graphql/
│   │       │                               ├── Exception/
│   │       │                               │   ├── GraphQLConnectorErrorCode.java
│   │       │                               │   └── GraphQLConnectorException.java
│   │       │                               ├── config/
│   │       │                               │   ├── GraphQLSinkOptions.java
│   │       │                               │   ├── GraphQLSinkParameter.java
│   │       │                               │   ├── GraphQLSource
Download .txt
Showing preview only (2,892K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (30910 symbols across 4319 files)

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/JobContext.java
  class JobContext (line 28) | @Getter
    method JobContext (line 37) | public JobContext() {
    method JobContext (line 41) | public JobContext(Long jobId) {
    method setJobMode (line 45) | public JobContext setJobMode(JobMode jobMode) {
    method setEnableCheckpoint (line 50) | public JobContext setEnableCheckpoint(boolean enableCheckpoint) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/PluginIdentifier.java
  class PluginIdentifier (line 23) | public class PluginIdentifier {
    method PluginIdentifier (line 28) | private PluginIdentifier(String engineType, String pluginType, String ...
    method of (line 34) | public static PluginIdentifier of(String engineType, String pluginType...
    method getEngineType (line 38) | public String getEngineType() {
    method getPluginType (line 42) | public String getPluginType() {
    method getPluginName (line 46) | public String getPluginName() {
    method equals (line 50) | @Override
    method hashCode (line 70) | @Override
    method toString (line 78) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/PluginIdentifierInterface.java
  type PluginIdentifierInterface (line 21) | public interface PluginIdentifierInterface {
    method getPluginName (line 29) | String getPluginName();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/PrepareFailException.java
  class PrepareFailException (line 26) | public class PrepareFailException extends SeaTunnelRuntimeException {
    method PrepareFailException (line 28) | public PrepareFailException(String pluginName, PluginType type, String...
    method PrepareFailException (line 36) | public PrepareFailException(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/SeaTunnelAPIErrorCode.java
  type SeaTunnelAPIErrorCode (line 22) | public enum SeaTunnelAPIErrorCode implements SeaTunnelErrorCode {
    method SeaTunnelAPIErrorCode (line 41) | SeaTunnelAPIErrorCode(String code, String description) {
    method getCode (line 46) | @Override
    method getDescription (line 51) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/SeaTunnelPluginLifeCycle.java
  type SeaTunnelPluginLifeCycle (line 29) | @Deprecated
    method prepare (line 41) | @Deprecated

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/AbstractMetricsContext.java
  class AbstractMetricsContext (line 26) | @Slf4j
    method counter (line 33) | @Override
    method counter (line 41) | @Override
    method meter (line 47) | @Override
    method meter (line 55) | @Override
    method addMetric (line 61) | protected void addMetric(String name, Metric metric) {
    method toString (line 78) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/Counter.java
  type Counter (line 21) | public interface Counter extends Metric {
    method inc (line 24) | void inc();
    method inc (line 31) | void inc(long n);
    method dec (line 34) | void dec();
    method dec (line 41) | void dec(long n);
    method set (line 44) | void set(long n);
    method getCount (line 51) | long getCount();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/JobMetrics.java
  class JobMetrics (line 45) | public final class JobMetrics implements Serializable {
    method JobMetrics (line 54) | JobMetrics() { // needed for deserialization
    method JobMetrics (line 57) | private JobMetrics(Map<String, List<Measurement>> metrics) {
    method empty (line 62) | public static JobMetrics empty() {
    method of (line 67) | public static JobMetrics of(Map<String, List<Measurement>> metrics) {
    method merge (line 71) | public JobMetrics merge(JobMetrics jobMetrics) {
    method areMapsEqualExcludingKeys (line 112) | public static boolean areMapsEqualExcludingKeys(
    method metrics (line 139) | public Set<String> metrics() {
    method get (line 148) | public List<Measurement> get(String metricName) {
    method filter (line 154) | public JobMetrics filter(String tagName, String tagValue) {
    method filter (line 158) | public JobMetrics filter(Predicate<Measurement> predicate) {
    method hashCode (line 169) | @Override
    method equals (line 174) | @Override
    method toString (line 187) | @Override
    method toJsonString (line 220) | public String toJsonString() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/Measurement.java
  class Measurement (line 45) | @Data
    method Measurement (line 53) | Measurement() {}
    method Measurement (line 55) | private Measurement(String metric, Object value, long timestamp, Map<S...
    method of (line 66) | public static Measurement of(
    method value (line 74) | public Object value() {
    method timestamp (line 82) | public long timestamp() {
    method metric (line 87) | public String metric() {
    method tag (line 95) | public String tag(String name) {
    method getTags (line 99) | public Map<String, String> getTags() {
    method hashCode (line 103) | @Override
    method equals (line 108) | @Override
    method toString (line 118) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/MeasurementPredicates.java
  class MeasurementPredicates (line 24) | public final class MeasurementPredicates {
    method MeasurementPredicates (line 26) | private MeasurementPredicates() {}
    method containsTag (line 34) | public static Predicate<Measurement> containsTag(String tag) {
    method tagValueEquals (line 46) | public static Predicate<Measurement> tagValueEquals(String tag, String...
    method tagValueMatches (line 58) | public static Predicate<Measurement> tagValueMatches(String tag, Strin...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/Meter.java
  type Meter (line 21) | public interface Meter extends Metric {
    method markEvent (line 23) | void markEvent();
    method markEvent (line 30) | void markEvent(long n);
    method getRate (line 37) | double getRate();
    method getCount (line 44) | long getCount();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/Metric.java
  type Metric (line 22) | public interface Metric extends Serializable {
    method name (line 25) | String name();
    method unit (line 33) | Unit unit();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/MetricNames.java
  class MetricNames (line 20) | public final class MetricNames {
    method MetricNames (line 22) | private MetricNames() {}

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/MetricTags.java
  class MetricTags (line 20) | public final class MetricTags {
    method MetricTags (line 22) | private MetricTags() {}

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/MetricsContext.java
  type MetricsContext (line 20) | public interface MetricsContext {
    method counter (line 28) | Counter counter(String name);
    method counter (line 38) | <C extends Counter> C counter(String name, C counter);
    method meter (line 46) | Meter meter(String name);
    method meter (line 56) | <M extends Meter> M meter(String name, M meter);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/RawJobMetrics.java
  class RawJobMetrics (line 23) | public final class RawJobMetrics implements Serializable {
    method RawJobMetrics (line 28) | RawJobMetrics() {}
    method RawJobMetrics (line 30) | private RawJobMetrics(long timestamp, byte[] blob) {
    method empty (line 35) | public static RawJobMetrics empty() {
    method of (line 39) | public static RawJobMetrics of(byte[] blob) {
    method getTimestamp (line 43) | public long getTimestamp() {
    method getBlob (line 47) | public byte[] getBlob() {
    method hashCode (line 51) | @Override
    method equals (line 56) | @Override
    method toString (line 71) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/ThreadSafeCounter.java
  class ThreadSafeCounter (line 23) | public class ThreadSafeCounter implements Counter, Serializable {
    method ThreadSafeCounter (line 33) | public ThreadSafeCounter(String name) {
    method inc (line 37) | @Override
    method inc (line 42) | @Override
    method dec (line 47) | @Override
    method dec (line 52) | @Override
    method set (line 57) | @Override
    method getCount (line 62) | @Override
    method name (line 67) | @Override
    method unit (line 72) | @Override
    method toString (line 77) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/ThreadSafeQPSMeter.java
  class ThreadSafeQPSMeter (line 23) | public class ThreadSafeQPSMeter implements Meter, Serializable {
    method ThreadSafeQPSMeter (line 36) | public ThreadSafeQPSMeter(String name) {
    method markEvent (line 41) | @Override
    method markEvent (line 46) | @Override
    method getRate (line 51) | @Override
    method getCount (line 57) | @Override
    method name (line 62) | @Override
    method unit (line 67) | @Override
    method toString (line 72) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/common/metrics/Unit.java
  type Unit (line 20) | public enum Unit {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/ConfigAdapter.java
  type ConfigAdapter (line 24) | public interface ConfigAdapter {
    method extensionIdentifiers (line 31) | String[] extensionIdentifiers();
    method loadConfig (line 39) | Map<String, Object> loadConfig(Path configFilePath);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/ConfigShade.java
  type ConfigShade (line 26) | public interface ConfigShade {
    method getIdentifier (line 32) | String getIdentifier();
    method encrypt (line 39) | String encrypt(String content);
    method decrypt (line 46) | String decrypt(String content);
    method sensitiveOptions (line 49) | default String[] sensitiveOptions() {
    method open (line 60) | default void open(Map<String, Object> props) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/Option.java
  class Option (line 29) | public class Option<T> {
    method Option (line 44) | public Option(String key, TypeReference<T> typeReference, T defaultVal...
    method key (line 51) | public String key() {
    method typeReference (line 55) | public TypeReference<T> typeReference() {
    method defaultValue (line 59) | public T defaultValue() {
    method getDescription (line 63) | public String getDescription() {
    method withDescription (line 67) | public Option<T> withDescription(String description) {
    method withFallbackKeys (line 72) | public Option<T> withFallbackKeys(String... fallbackKeys) {
    method equals (line 77) | @Override
    method hashCode (line 91) | @Override
    method toString (line 96) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/Options.java
  class Options (line 34) | public class Options {
    method key (line 42) | public static OptionBuilder key(String key) {
    class OptionBuilder (line 51) | public static final class OptionBuilder {
      method OptionBuilder (line 59) | OptionBuilder(String key) {
      method booleanType (line 64) | public TypedOptionBuilder<Boolean> booleanType() {
      method intType (line 69) | public TypedOptionBuilder<Integer> intType() {
      method longType (line 74) | public TypedOptionBuilder<Long> longType() {
      method bigDecimalType (line 78) | public TypedOptionBuilder<BigDecimal> bigDecimalType() {
      method floatType (line 83) | public TypedOptionBuilder<Float> floatType() {
      method doubleType (line 88) | public TypedOptionBuilder<Double> doubleType() {
      method stringType (line 93) | public TypedOptionBuilder<String> stringType() {
      method durationType (line 98) | public TypedOptionBuilder<Duration> durationType() {
      method enumType (line 107) | public <T extends Enum<T>> TypedOptionBuilder<T> enumType(Class<T> e...
      method mapType (line 122) | public TypedOptionBuilder<Map<String, String>> mapType() {
      method mapObjectType (line 130) | public TypedOptionBuilder<Map<String, Object>> mapObjectType() {
      method listType (line 138) | public TypedOptionBuilder<List<String>> listType() {
      method listType (line 146) | public <T> TypedOptionBuilder<List<T>> listType(Class<T> subClass) {
      method objectType (line 173) | public <T> TypedOptionBuilder<T> objectType(Class<T> option) {
      method singleChoice (line 185) | public <T> SingleChoiceOptionBuilder<T> singleChoice(
      method type (line 203) | public <T> TypedOptionBuilder<T> type(TypeReference<T> typeReference) {
    class TypedOptionBuilder (line 213) | public static class TypedOptionBuilder<T> {
      method TypedOptionBuilder (line 217) | TypedOptionBuilder(String key, TypeReference<T> typeReference) {
      method defaultValue (line 228) | public Option<T> defaultValue(T value) {
      method noDefaultValue (line 237) | public Option<T> noDefaultValue() {
    class SingleChoiceOptionBuilder (line 242) | public static class SingleChoiceOptionBuilder<T> {
      method SingleChoiceOptionBuilder (line 247) | SingleChoiceOptionBuilder(String key, TypeReference typeReference, L...
      method defaultValue (line 259) | public SingleChoiceOption<T> defaultValue(T value) {
      method noDefaultValue (line 268) | public SingleChoiceOption<T> noDefaultValue() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/ReadonlyConfig.java
  class ReadonlyConfig (line 38) | @Slf4j
    method ReadonlyConfig (line 46) | private ReadonlyConfig(Map<String, Object> confData) {
    method fromMap (line 50) | public static ReadonlyConfig fromMap(Map<String, Object> map) {
    method fromConfig (line 54) | public static ReadonlyConfig fromConfig(Config config) {
    method get (line 65) | public <T> T get(Option<T> option) {
    method toConfig (line 75) | @Deprecated
    method toMap (line 80) | public Map<String, String> toMap() {
    method toMap (line 90) | public void toMap(Map<String, String> result) {
    method getSourceMap (line 99) | public Map<String, Object> getSourceMap() {
    method getOptional (line 103) | public <T> Optional<T> getOptional(Option<T> option) {
    method getValue (line 126) | private Object getValue(String key) {
    method hashCode (line 147) | @Override
    method equals (line 156) | @Override
    method toString (line 168) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/SingleChoiceOption.java
  class SingleChoiceOption (line 26) | public class SingleChoiceOption<T> extends Option<T> {
    method SingleChoiceOption (line 30) | public SingleChoiceOption(
    method withDescription (line 36) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/Condition.java
  class Condition (line 24) | public class Condition<T> {
    method Condition (line 30) | Condition(Option<T> option, T expectValue) {
    method of (line 35) | public static <T> Condition<T> of(Option<T> option, T expectValue) {
    method and (line 39) | public <E> Condition<T> and(Option<E> option, E expectValue) {
    method or (line 43) | public <E> Condition<T> or(Option<E> option, E expectValue) {
    method and (line 47) | public Condition<T> and(Condition<?> next) {
    method or (line 52) | public Condition<T> or(Condition<?> next) {
    method addCondition (line 57) | private void addCondition(boolean and, Condition<?> next) {
    method getCount (line 63) | protected int getCount() {
    method getTailCondition (line 73) | Condition<?> getTailCondition() {
    method hasNext (line 77) | public boolean hasNext() {
    method getNext (line 81) | public Condition<?> getNext() {
    method getOption (line 85) | public Option<T> getOption() {
    method getExpectValue (line 89) | public T getExpectValue() {
    method and (line 93) | public Boolean and() {
    method equals (line 97) | @Override
    method hashCode (line 112) | @Override
    method toString (line 117) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/ConfigUtil.java
  class ConfigUtil (line 36) | @Slf4j
    method convertValue (line 41) | @SuppressWarnings("unchecked")
    method convertToList (line 85) | static <T> List<T> convertToList(Object rawValue, Class<T> clazz) {
    method convertValue (line 98) | @SuppressWarnings("unchecked")
    method convertToInt (line 120) | static Integer convertToInt(Object o) {
    method convertToLong (line 138) | static Long convertToLong(Object o) {
    method convertToFloat (line 148) | static Float convertToFloat(Object o) {
    method convertToDouble (line 168) | static Double convertToDouble(Object o) {
    method convertToBoolean (line 178) | static Boolean convertToBoolean(Object o) {
    method convertToEnum (line 192) | static <E extends Enum<?>> E convertToEnum(Object o, Class<E> clazz) {
    method convertToJsonString (line 208) | public static String convertToJsonString(Object o) {
    method convertToJsonString (line 222) | public static String convertToJsonString(Config config) {
    method convertToConfig (line 226) | public static Config convertToConfig(String configJson) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/ConfigValidator.java
  class ConfigValidator (line 33) | public class ConfigValidator {
    method ConfigValidator (line 36) | private ConfigValidator(ReadonlyConfig config) {
    method of (line 40) | public static ConfigValidator of(ReadonlyConfig config) {
    method validate (line 44) | public void validate(OptionRule rule) {
    method validateSingleChoice (line 69) | void validateSingleChoice(Option option) {
    method validate (line 93) | void validate(RequiredOption requiredOption) {
    method getAbsentOptions (line 116) | private List<Option<?>> getAbsentOptions(List<Option<?>> requiredOptio...
    method validate (line 127) | void validate(RequiredOption.AbsolutelyRequiredOptions requiredOption) {
    method hasOption (line 137) | boolean hasOption(Option<?> option) {
    method validate (line 141) | boolean validate(RequiredOption.BundledRequiredOptions bundledRequired...
    method validate (line 163) | void validate(RequiredOption.ExclusiveRequiredOptions exclusiveRequire...
    method validate (line 187) | void validate(RequiredOption.ConditionalRequiredOptions conditionalReq...
    method validate (line 203) | private boolean validate(Expression expression) {
    method validate (line 216) | private <T> boolean validate(Condition<T> condition) {
    method isConditionOption (line 230) | private boolean isConditionOption(RequiredOption requiredOption) {
    method matchCondition (line 234) | private boolean matchCondition(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/Expression.java
  class Expression (line 24) | public class Expression {
    method Expression (line 29) | Expression(Condition<?> condition) {
    method of (line 33) | public static <T> Expression of(Option<T> option, T expectValue) {
    method of (line 37) | public static Expression of(Condition<?> condition) {
    method and (line 41) | public Expression and(Expression next) {
    method or (line 46) | public Expression or(Expression next) {
    method addExpression (line 51) | private void addExpression(boolean and, Expression next) {
    method getTailExpression (line 57) | private Expression getTailExpression() {
    method getCondition (line 61) | public Condition<?> getCondition() {
    method hasNext (line 65) | public boolean hasNext() {
    method getNext (line 69) | public Expression getNext() {
    method and (line 73) | public Boolean and() {
    method equals (line 77) | @Override
    method hashCode (line 91) | @Override
    method toString (line 96) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/OptionRule.java
  class OptionRule (line 65) | public class OptionRule {
    method OptionRule (line 83) | OptionRule(List<Option<?>> optionalOptions, List<RequiredOption> requi...
    method getOptionalOptions (line 88) | public List<Option<?>> getOptionalOptions() {
    method getRequiredOptions (line 92) | public List<RequiredOption> getRequiredOptions() {
    method equals (line 96) | @Override
    method hashCode (line 109) | @Override
    method builder (line 114) | public static OptionRule.Builder builder() {
    class Builder (line 119) | public static class Builder {
      method Builder (line 123) | private Builder() {}
      method optional (line 132) | public Builder optional(@NonNull Option<?>... options) {
      method required (line 141) | public Builder required(@NonNull Option<?>... options) {
      method exclusive (line 150) | public Builder exclusive(@NonNull Option<?>... options) {
      method conditional (line 162) | public <T> Builder conditional(
      method conditional (line 195) | public <T> Builder conditional(
      method bundled (line 213) | public Builder bundled(@NonNull Option<?>... requiredOptions) {
      method build (line 221) | public OptionRule build() {
      method verifyRequiredOptionDefaultValue (line 225) | private void verifyRequiredOptionDefaultValue(@NonNull Option<?> opt...
      method verifyDuplicateWithOptionOptions (line 234) | private void verifyDuplicateWithOptionOptions(
      method verifyRequiredOptionDuplicate (line 244) | private void verifyRequiredOptionDuplicate(@NonNull RequiredOption r...
      method verifyRequiredOptionDuplicate (line 257) | private void verifyRequiredOptionDuplicate(
      method verifyOptionOptionsDuplicate (line 321) | private void verifyOptionOptionsDuplicate(
      method verifyConditionalExists (line 338) | private void verifyConditionalExists(@NonNull Option<?> option) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/OptionUtil.java
  class OptionUtil (line 31) | public class OptionUtil {
    method OptionUtil (line 33) | private OptionUtil() {}
    method getOptionKeys (line 35) | public static String getOptionKeys(List<Option<?>> options) {
    method getOptionKeys (line 48) | public static String getOptionKeys(
    method getOptions (line 69) | public static List<Option<?>> getOptions(Class<?> clazz)
    method formatUnderScoreCase (line 96) | private static String formatUnderScoreCase(String camel) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/OptionValidationException.java
  class OptionValidationException (line 25) | public class OptionValidationException extends SeaTunnelRuntimeException {
    method OptionValidationException (line 27) | public OptionValidationException(String message, Throwable cause) {
    method OptionValidationException (line 31) | public OptionValidationException(String message) {
    method OptionValidationException (line 35) | public OptionValidationException(String formatMessage, Object... args) {
    method OptionValidationException (line 39) | public OptionValidationException(Option<?> option) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/RequiredOption.java
  type RequiredOption (line 32) | public interface RequiredOption {
    method getOptions (line 34) | List<Option<?>> getOptions();
    class ExclusiveRequiredOptions (line 37) | @Getter
      method ExclusiveRequiredOptions (line 41) | public ExclusiveRequiredOptions(@NonNull List<Option<?>> exclusiveOp...
      method of (line 45) | public static ExclusiveRequiredOptions of(Option<?>... options) {
      method equals (line 49) | @Override
      method hashCode (line 61) | @Override
      method toString (line 66) | @Override
      method getOptions (line 72) | @Override
    class AbsolutelyRequiredOptions (line 79) | class AbsolutelyRequiredOptions implements RequiredOption {
      method AbsolutelyRequiredOptions (line 82) | AbsolutelyRequiredOptions(List<Option<?>> requiredOption) {
      method of (line 86) | public static AbsolutelyRequiredOptions of(Option<?>... requiredOpti...
      method equals (line 90) | @Override
      method hashCode (line 102) | @Override
      method toString (line 107) | @Override
      method getOptions (line 113) | @Override
    class ConditionalRequiredOptions (line 119) | class ConditionalRequiredOptions implements RequiredOption {
      method ConditionalRequiredOptions (line 123) | ConditionalRequiredOptions(Expression expression, List<Option<?>> re...
      method of (line 128) | public static ConditionalRequiredOptions of(
      method of (line 133) | public static ConditionalRequiredOptions of(
      method getExpression (line 138) | public Expression getExpression() {
      method getRequiredOption (line 142) | public List<Option<?>> getRequiredOption() {
      method equals (line 146) | @Override
      method hashCode (line 159) | @Override
      method toString (line 164) | @Override
      method getOptions (line 171) | @Override
    class BundledRequiredOptions (line 178) | class BundledRequiredOptions implements RequiredOption {
      method BundledRequiredOptions (line 181) | BundledRequiredOptions(List<Option<?>> requiredOption) {
      method of (line 185) | public static BundledRequiredOptions of(Option<?>... requiredOption) {
      method of (line 189) | public static BundledRequiredOptions of(List<Option<?>> requiredOpti...
      method getRequiredOption (line 193) | public List<Option<?>> getRequiredOption() {
      method equals (line 197) | @Override
      method hashCode (line 209) | @Override
      method toString (line 214) | @Override
      method getOptions (line 219) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/env/ParsingMode.java
  type ParsingMode (line 27) | public enum ParsingMode {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/event/DefaultEventProcessor.java
  class DefaultEventProcessor (line 25) | @Slf4j
    method DefaultEventProcessor (line 31) | public DefaultEventProcessor() {
    method DefaultEventProcessor (line 35) | public DefaultEventProcessor(String jobId) {
    method DefaultEventProcessor (line 39) | public DefaultEventProcessor(ClassLoader classLoader) {
    method process (line 43) | @Override
    method onEvent (line 48) | @Override
    method close (line 56) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/event/Event.java
  type Event (line 22) | public interface Event extends Serializable {
    method getCreatedTime (line 24) | long getCreatedTime();
    method setJobId (line 26) | void setJobId(String jobId);
    method getJobId (line 28) | String getJobId();
    method getEventType (line 30) | EventType getEventType();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/event/EventHandler.java
  type EventHandler (line 22) | public interface EventHandler extends Serializable, AutoCloseable {
    method handle (line 29) | void handle(Event event);
    method close (line 31) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/event/EventListener.java
  type EventListener (line 22) | public interface EventListener extends Serializable {
    method onEvent (line 23) | void onEvent(Event event);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/event/EventProcessor.java
  type EventProcessor (line 25) | public interface EventProcessor extends AutoCloseable {
    method process (line 26) | void process(Event event);
    method loadEventHandlers (line 28) | static List<EventHandler> loadEventHandlers(ClassLoader classLoader) {
    method close (line 40) | static void close(List<EventHandler> handlers) throws Exception {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/event/EventType.java
  type EventType (line 20) | public enum EventType {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/event/LifecycleEvent.java
  type LifecycleEvent (line 20) | public interface LifecycleEvent extends Event {}

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/event/LoggingEventHandler.java
  class LoggingEventHandler (line 23) | @Slf4j
    method handle (line 27) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/metalake/MetaLakeFactory.java
  class MetaLakeFactory (line 28) | public class MetaLakeFactory {
    method MetaLakeFactory (line 38) | private MetaLakeFactory() {}
    method register (line 40) | public static void register(String type) {
    method createClient (line 45) | public static MetalakeClient createClient(MetaLakeType metaLakeType) {
    method createTypeMapper (line 54) | public static MetaLakeTableSchemaConvertor createTypeMapper(MetaLakeTy...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/metalake/MetaLakeTableSchemaConvertor.java
  type MetaLakeTableSchemaConvertor (line 25) | public interface MetaLakeTableSchemaConvertor {
    method convertor (line 27) | TableSchema convertor(JsonNode metaInfo);
    method buildCatalogTable (line 29) | CatalogTable buildCatalogTable(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/metalake/MetalakeClient.java
  type MetalakeClient (line 26) | public interface MetalakeClient extends AutoCloseable {
    method getMetaInfo (line 28) | JsonNode getMetaInfo(String sourceId, String metalakeUrl) throws IOExc...
    method getTableSchema (line 30) | JsonNode getTableSchema(String schemaHttpUrl) throws IOException;
    method getTableSchemaPath (line 32) | TablePath getTableSchemaPath(String schemaHttpUrl);
    method close (line 34) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/metalake/MetalakeConfigUtils.java
  class MetalakeConfigUtils (line 41) | @Slf4j
    method getMetalakeConfig (line 46) | public static Config getMetalakeConfig(Config jobConfigTmp) {
    method replaceConfigList (line 80) | private static Config replaceConfigList(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/metalake/TableSchemaDiscoverer.java
  class TableSchemaDiscoverer (line 52) | @Slf4j
    method TableSchemaDiscoverer (line 61) | public TableSchemaDiscoverer(TableSourceFactoryContext context, String...
    method TableSchemaDiscoverer (line 71) | @VisibleForTesting
    method discoverTableSchemas (line 85) | public List<CatalogTable> discoverTableSchemas() {
    method discoverTableSchema (line 107) | private CatalogTable discoverTableSchema(ReadonlyConfig sourceOptions) {
    method discoverTableSchemaFromConfig (line 124) | private CatalogTable discoverTableSchemaFromConfig(ReadonlyConfig read...
    method discoverTableSchemaFromMetaLake (line 128) | private CatalogTable discoverTableSchemaFromMetaLake(String schemaUrl,...
    method buildSimpleTextTable (line 157) | private CatalogTable buildSimpleTextTable(ReadonlyConfig schemaConfig) {
    method getMetaLakeType (line 167) | @VisibleForTesting
    method enableMetaLakeClient (line 196) | @VisibleForTesting
    method getEnableMetaLakeClientPredicate (line 221) | private Predicate<ReadonlyConfig> getEnableMetaLakeClientPredicate() {
    method close (line 233) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/metalake/gravitino/GravitinoClient.java
  class GravitinoClient (line 45) | @Slf4j
    method GravitinoClient (line 62) | public GravitinoClient() {
    method GravitinoClient (line 66) | @VisibleForTesting
    method getMetaInfo (line 71) | @Override
    method getTableSchema (line 78) | @Override
    method getTableSchemaPath (line 84) | @Override
    method getMatcher (line 97) | private Matcher getMatcher(String schemaHttpUrl) {
    method executeGetRequest (line 117) | private JsonNode executeGetRequest(String url) {
    method isRetryableHttpStatus (line 166) | private boolean isRetryableHttpStatus(int httpStatus) {
    method sleepQuietly (line 184) | private void sleepQuietly(long millis) {
    method getRequiredNode (line 201) | private JsonNode getRequiredNode(JsonNode parentNode, String fieldName) {
    method close (line 210) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/metalake/gravitino/GravitinoTableSchemaConvertor.java
  class GravitinoTableSchemaConvertor (line 61) | public class GravitinoTableSchemaConvertor implements MetaLakeTableSchem...
    method convertor (line 94) | @Override
    method buildCatalogTable (line 133) | @Override
    method parseColumn (line 148) | private Column parseColumn(JsonNode columnNode) {
    method convertGravitinoType (line 184) | private SeaTunnelDataType<?> convertGravitinoType(String fieldName, Js...
    method convertComplexType (line 199) | private SeaTunnelDataType<?> convertComplexType(String fieldName, Json...
    method convertSimpleType (line 271) | private SeaTunnelDataType<?> convertSimpleType(String fieldName, JsonN...
    method extractLengthAndScale (line 347) | private Pair<Long, Integer> extractLengthAndScale(String type) {
    method parsePrimaryKey (line 395) | private PrimaryKey parsePrimaryKey(JsonNode indexNode) {
    method parseUniqueKey (line 411) | private ConstraintKey parseUniqueKey(JsonNode indexNode) {
    method getTextValue (line 430) | private String getTextValue(JsonNode node, String fieldName) {
    class Pair (line 436) | private static class Pair<L, R> {
      method Pair (line 440) | private Pair(L left, R right) {
      method of (line 445) | public static <L, R> Pair<L, R> of(L left, R right) {
      method getLeft (line 449) | public L getLeft() {
      method getRight (line 453) | public R getRight() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/ConnectorCommonOptions.java
  class ConnectorCommonOptions (line 34) | public class ConnectorCommonOptions

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/EnvCommonOptions.java
  class EnvCommonOptions (line 28) | public class EnvCommonOptions {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/EnvOptionRule.java
  class EnvOptionRule (line 25) | @AutoService(Factory.class)
    method factoryIdentifier (line 28) | @Override
    method optionRule (line 33) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/SinkConnectorCommonOptions.java
  class SinkConnectorCommonOptions (line 24) | public class SinkConnectorCommonOptions extends ConnectorCommonOptions {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/SourceConnectorCommonOptions.java
  class SourceConnectorCommonOptions (line 24) | public class SourceConnectorCommonOptions extends ConnectorCommonOptions {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/table/CatalogOptions.java
  type CatalogOptions (line 28) | public interface CatalogOptions {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/table/ColumnOptions.java
  type ColumnOptions (line 28) | public interface ColumnOptions {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/table/ConstraintKeyOptions.java
  type ConstraintKeyOptions (line 29) | public interface ConstraintKeyOptions {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/table/FieldOptions.java
  type FieldOptions (line 28) | @Deprecated

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/table/FormatOptions.java
  type FormatOptions (line 26) | public interface FormatOptions {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/table/PrimaryKeyOptions.java
  type PrimaryKeyOptions (line 28) | public interface PrimaryKeyOptions {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/table/TableIdentifierOptions.java
  type TableIdentifierOptions (line 25) | public interface TableIdentifierOptions {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/options/table/TableSchemaOptions.java
  type TableSchemaOptions (line 29) | public interface TableSchemaOptions {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/serialization/DefaultSerializer.java
  class DefaultSerializer (line 25) | public class DefaultSerializer<T extends Serializable> implements Serial...
    method serialize (line 27) | @Override
    method deserialize (line 36) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/serialization/DeserializationSchema.java
  type DeserializationSchema (line 26) | public interface DeserializationSchema<T> extends Serializable {
    method deserialize (line 35) | T deserialize(byte[] message) throws IOException;
    method deserialize (line 37) | default void deserialize(byte[] message, Collector<T> out) throws IOEx...
    method getProducedType (line 44) | SeaTunnelDataType<T> getProducedType();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/serialization/SerializationSchema.java
  type SerializationSchema (line 24) | public interface SerializationSchema extends Serializable {
    method serialize (line 31) | byte[] serialize(SeaTunnelRow element);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/serialization/Serializer.java
  type Serializer (line 22) | public interface Serializer<T> {
    method serialize (line 31) | byte[] serialize(T obj) throws IOException;
    method deserialize (line 40) | T deserialize(byte[] serialized) throws IOException;

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/DataSaveMode.java
  type DataSaveMode (line 23) | public enum DataSaveMode {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/DefaultSaveModeHandler.java
  class DefaultSaveModeHandler (line 35) | @Slf4j
    method DefaultSaveModeHandler (line 46) | public DefaultSaveModeHandler(
    method DefaultSaveModeHandler (line 61) | public DefaultSaveModeHandler(
    method open (line 76) | @Override
    method handleSchemaSaveMode (line 81) | @Override
    method handleDataSaveMode (line 100) | @Override
    method handleSchemaSaveModeWithRestore (line 120) | @Override
    method recreateSchema (line 130) | protected void recreateSchema() {
    method createSchemaWhenNotExist (line 137) | protected void createSchemaWhenNotExist() {
    method errorWhenSchemaNotExist (line 143) | protected void errorWhenSchemaNotExist() {
    method keepSchemaDropData (line 149) | protected void keepSchemaDropData() {
    method keepSchemaAndData (line 155) | protected void keepSchemaAndData() {}
    method customProcessing (line 157) | protected void customProcessing() {
    method errorWhenDataExists (line 161) | protected void errorWhenDataExists() {
    method tableExists (line 168) | protected boolean tableExists() {
    method dropTable (line 172) | protected void dropTable() {
    method createTablePreCheck (line 185) | protected void createTablePreCheck() {
    method createTable (line 211) | protected void createTable() {
    method truncateTable (line 217) | protected void truncateTable() {
    method dataExists (line 230) | protected boolean dataExists() {
    method executeCustomSql (line 234) | protected void executeCustomSql() {
    method getHandleTablePath (line 239) | @Override
    method getHandleCatalog (line 244) | @Override
    method getSchemaSaveMode (line 249) | @Override
    method getDataSaveMode (line 254) | @Override
    method close (line 259) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/DefaultSinkWriterContext.java
  class DefaultSinkWriterContext (line 26) | public class DefaultSinkWriterContext implements SinkWriter.Context {
    method DefaultSinkWriterContext (line 31) | public DefaultSinkWriterContext(int subtask, int parallelism) {
    method DefaultSinkWriterContext (line 35) | public DefaultSinkWriterContext(String jobId, int subtask, int paralle...
    method DefaultSinkWriterContext (line 39) | public DefaultSinkWriterContext(
    method getIndexOfSubtask (line 46) | @Override
    method getNumberOfParallelSubtasks (line 51) | public int getNumberOfParallelSubtasks() {
    method getMetricsContext (line 55) | @Override
    method getEventListener (line 62) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/MultiTableResourceManager.java
  type MultiTableResourceManager (line 23) | public interface MultiTableResourceManager<T> {
    method getSharedResource (line 25) | default Optional<T> getSharedResource() {
    method close (line 29) | default void close() {}

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SaveModeExecuteLocation.java
  type SaveModeExecuteLocation (line 20) | public enum SaveModeExecuteLocation {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SaveModeExecuteWrapper.java
  class SaveModeExecuteWrapper (line 22) | @Slf4j
    method SaveModeExecuteWrapper (line 25) | public SaveModeExecuteWrapper(SaveModeHandler handler) {
    method execute (line 29) | public void execute() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SaveModeHandler.java
  type SaveModeHandler (line 23) | public interface SaveModeHandler extends AutoCloseable {
    method open (line 25) | void open();
    method handleSchemaSaveMode (line 27) | void handleSchemaSaveMode();
    method handleDataSaveMode (line 29) | void handleDataSaveMode();
    method handleSchemaSaveModeWithRestore (line 31) | void handleSchemaSaveModeWithRestore();
    method getSchemaSaveMode (line 33) | SchemaSaveMode getSchemaSaveMode();
    method getDataSaveMode (line 35) | DataSaveMode getDataSaveMode();
    method getHandleTablePath (line 37) | TablePath getHandleTablePath();
    method getHandleCatalog (line 39) | Catalog getHandleCatalog();
    method handleSaveMode (line 41) | default void handleSaveMode() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SaveModePlaceHolder.java
  type SaveModePlaceHolder (line 23) | public enum SaveModePlaceHolder {
    method SaveModePlaceHolder (line 41) | SaveModePlaceHolder(String keyValue, String display) {
    method getDisplay (line 46) | public static String getDisplay(String placeholder) {
    method getPlaceHolderKey (line 60) | public String getPlaceHolderKey() {
    method getPlaceHolder (line 64) | public String getPlaceHolder() {
    method getReplacePlaceHolder (line 68) | public String getReplacePlaceHolder() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SchemaSaveMode.java
  type SchemaSaveMode (line 20) | public enum SchemaSaveMode {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SeaTunnelSink.java
  type SeaTunnelSink (line 47) | public interface SeaTunnelSink<IN, StateT, CommitInfoT, AggregatedCommit...
    method setTypeInfo (line 60) | @Deprecated
    method getConsumedType (line 71) | @Deprecated
    method createWriter (line 83) | SinkWriter<IN, CommitInfoT, StateT> createWriter(SinkWriter.Context co...
    method restoreWriter (line 85) | default SinkWriter<IN, CommitInfoT, StateT> restoreWriter(
    method getWriterStateSerializer (line 95) | default Optional<Serializer<StateT>> getWriterStateSerializer() {
    method createCommitter (line 105) | default Optional<SinkCommitter<CommitInfoT>> createCommitter() throws ...
    method getCommitInfoSerializer (line 115) | default Optional<Serializer<CommitInfoT>> getCommitInfoSerializer() {
    method createAggregatedCommitter (line 125) | default Optional<SinkAggregatedCommitter<CommitInfoT, AggregatedCommit...
    method getAggregatedCommitInfoSerializer (line 136) | default Optional<Serializer<AggregatedCommitInfoT>> getAggregatedCommi...
    method getWriteCatalogTable (line 145) | default Optional<CatalogTable> getWriteCatalogTable() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SinkAggregatedCommitter.java
  type SinkAggregatedCommitter (line 33) | public interface SinkAggregatedCommitter<CommitInfoT, AggregatedCommitIn...
    method init (line 39) | default void init() {}
    method restoreCommit (line 42) | default List<AggregatedCommitInfoT> restoreCommit(
    method commit (line 54) | List<AggregatedCommitInfoT> commit(List<AggregatedCommitInfoT> aggrega...
    method combine (line 63) | AggregatedCommitInfoT combine(List<CommitInfoT> commitInfos);
    method abort (line 72) | void abort(List<AggregatedCommitInfoT> aggregatedCommitInfo) throws Ex...
    method close (line 79) | void close() throws IOException;

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SinkCommitter.java
  type SinkCommitter (line 33) | public interface SinkCommitter<CommitInfoT> extends Serializable {
    method commit (line 42) | List<CommitInfoT> commit(List<CommitInfoT> commitInfos) throws IOExcep...
    method abort (line 51) | void abort(List<CommitInfoT> commitInfos) throws IOException;

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SinkWriter.java
  type SinkWriter (line 39) | public interface SinkWriter<T, CommitInfoT, StateT> {
    method write (line 47) | void write(T element) throws IOException;
    method applySchemaChange (line 50) | @Deprecated
    method prepareCommit (line 61) | @Deprecated
    method prepareCommit (line 74) | default Optional<CommitInfoT> prepareCommit(long checkpointId) throws ...
    method snapshotState (line 82) | default List<StateT> snapshotState(long checkpointId) throws IOExcepti...
    method abortPrepare (line 92) | void abortPrepare();
    method close (line 99) | void close() throws IOException;
    type Context (line 101) | interface Context extends Serializable {
      method getIndexOfSubtask (line 104) | int getIndexOfSubtask();
      method getNumberOfParallelSubtasks (line 107) | default int getNumberOfParallelSubtasks() {
      method getMetricsContext (line 112) | MetricsContext getMetricsContext();
      method getEventListener (line 119) | EventListener getEventListener();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SupportMultiTableSink.java
  type SupportMultiTableSink (line 21) | public interface SupportMultiTableSink {}

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SupportMultiTableSinkAggregatedCommitter.java
  type SupportMultiTableSinkAggregatedCommitter (line 21) | public interface SupportMultiTableSinkAggregatedCommitter<T> extends Sup...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SupportMultiTableSinkWriter.java
  type SupportMultiTableSinkWriter (line 23) | public interface SupportMultiTableSinkWriter<T> extends SupportResourceS...
    method primaryKey (line 29) | default Optional<Integer> primaryKey() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SupportResourceShare.java
  type SupportResourceShare (line 20) | public interface SupportResourceShare<T> {
    method initMultiTableResourceManager (line 22) | default MultiTableResourceManager<T> initMultiTableResourceManager(
    method setMultiTableResourceManager (line 27) | default void setMultiTableResourceManager(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SupportSaveMode.java
  type SupportSaveMode (line 23) | public interface SupportSaveMode {
    method getSaveModeHandler (line 30) | Optional<SaveModeHandler> getSaveModeHandler();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SupportSchemaEvolutionSink.java
  type SupportSchemaEvolutionSink (line 24) | public interface SupportSchemaEvolutionSink {
    method supports (line 31) | List<SchemaChangeType> supports();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SupportSchemaEvolutionSinkWriter.java
  type SupportSchemaEvolutionSinkWriter (line 24) | public interface SupportSchemaEvolutionSinkWriter {
    method applySchemaChange (line 32) | void applySchemaChange(SchemaChangeEvent event) throws IOException;

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/TablePlaceholder.java
  type TablePlaceholder (line 23) | public enum TablePlaceholder {
    method TablePlaceholder (line 55) | TablePlaceholder(String placeholder) {
    method getPlaceholder (line 59) | public String getPlaceholder() {
    method isSystemPlaceholder (line 63) | public static boolean isSystemPlaceholder(String str) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/TablePlaceholderProcessor.java
  class TablePlaceholderProcessor (line 40) | public class TablePlaceholderProcessor {
    method replaceTableIdentifier (line 46) | private static String replaceTableIdentifier(
    method replaceTableIdentifier (line 97) | public static String replaceTableIdentifier(String placeholder, TableI...
    method replaceTablePrimaryKey (line 101) | public static String replaceTablePrimaryKey(String placeholder, Primar...
    method replaceTableUniqueKey (line 112) | public static String replaceTableUniqueKey(
    method replaceTableFieldNames (line 135) | public static String replaceTableFieldNames(String placeholder, TableS...
    method replaceTablePartitionKeys (line 142) | public static String replaceTablePartitionKeys(String placeholder, Lis...
    method replaceTablePlaceholder (line 153) | public static ReadonlyConfig replaceTablePlaceholder(
    method replaceTablePlaceholder (line 158) | public static ReadonlyConfig replaceTablePlaceholder(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/event/WriterCloseEvent.java
  class WriterCloseEvent (line 28) | @Getter
    method WriterCloseEvent (line 37) | public WriterCloseEvent() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableAggregatedCommitInfo.java
  class MultiTableAggregatedCommitInfo (line 26) | @Getter

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableCommitInfo.java
  class MultiTableCommitInfo (line 26) | @Getter

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableSink.java
  class MultiTableSink (line 48) | public class MultiTableSink
    method MultiTableSink (line 59) | public MultiTableSink(MultiTableFactoryContext context) {
    method getPluginName (line 65) | @Override
    method createWriter (line 70) | @Override
    method restoreWriter (line 89) | @Override
    method getWriterStateSerializer (line 124) | @Override
    method createCommitter (line 129) | @Override
    method getCommitInfoSerializer (line 146) | @Override
    method createAggregatedCommitter (line 151) | @Override
    method getSinkTables (line 168) | public List<TablePath> getSinkTables() {
    method getAggregatedCommitInfoSerializer (line 183) | @Override
    method setJobContext (line 189) | @Override
    method getWriteCatalogTable (line 194) | @Override
    method supports (line 199) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableSinkAggregatedCommitter.java
  class MultiTableSinkAggregatedCommitter (line 34) | @Slf4j
    method MultiTableSinkAggregatedCommitter (line 42) | public MultiTableSinkAggregatedCommitter(
    method init (line 47) | @Override
    method initResourceManager (line 52) | private void initResourceManager() {
    method commit (line 72) | @Override
    method combine (line 104) | @Override
    method abort (line 130) | @Override
    method close (line 160) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableSinkCommitter.java
  class MultiTableSinkCommitter (line 28) | public class MultiTableSinkCommitter implements SinkCommitter<MultiTable...
    method MultiTableSinkCommitter (line 32) | public MultiTableSinkCommitter(Map<String, SinkCommitter<?>> sinkCommi...
    method commit (line 36) | @Override
    method abort (line 62) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableSinkFactory.java
  class MultiTableSinkFactory (line 29) | @AutoService(Factory.class)
    method factoryIdentifier (line 31) | @Override
    method createSink (line 36) | @Override
    method optionRule (line 46) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableSinkWriter.java
  class MultiTableSinkWriter (line 47) | @Slf4j
    method MultiTableSinkWriter (line 64) | public MultiTableSinkWriter(
    method initResourceManager (line 112) | private void initResourceManager(int queueSize) {
    method subSinkErrorCheck (line 134) | private void subSinkErrorCheck() {
    method applySchemaChange (line 145) | @Override
    method write (line 178) | @Override
    method snapshotState (line 221) | @Override
    method prepareCommit (line 240) | @Override
    method prepareCommit (line 245) | @Override
    method abortPrepare (line 293) | @Override
    method close (line 321) | @Override
    method checkQueueRemain (line 361) | private void checkQueueRemain() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableState.java
  class MultiTableState (line 27) | @Getter

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableWriterRunnable.java
  class MultiTableWriterRunnable (line 29) | @Slf4j
    method MultiTableWriterRunnable (line 37) | public MultiTableWriterRunnable(
    method run (line 44) | @Override
    method getThrowable (line 91) | public Throwable getThrowable() {
    method getCurrentTableId (line 95) | public String getCurrentTableId() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/SinkContextProxy.java
  class SinkContextProxy (line 24) | public class SinkContextProxy implements SinkWriter.Context {
    method SinkContextProxy (line 32) | public SinkContextProxy(int index, int replicaNum, SinkWriter.Context ...
    method getIndexOfSubtask (line 38) | @Override
    method getNumberOfParallelSubtasks (line 43) | @Override
    method getMetricsContext (line 48) | @Override
    method getEventListener (line 53) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/SinkIdentifier.java
  class SinkIdentifier (line 25) | @Getter
    method SinkIdentifier (line 35) | private SinkIdentifier(String tableIdentifier, int index) {
    method of (line 40) | public static SinkIdentifier of(String tableIdentifier, int index) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/Boundedness.java
  type Boundedness (line 24) | public enum Boundedness {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/Collector.java
  type Collector (line 27) | public interface Collector<T> {
    method collect (line 29) | void collect(T record);
    method markSchemaChangeBeforeCheckpoint (line 31) | default void markSchemaChangeBeforeCheckpoint() {}
    method collect (line 33) | default void collect(SchemaChangeEvent event) {}
    method markSchemaChangeAfterCheckpoint (line 35) | default void markSchemaChangeAfterCheckpoint() {}
    method getCheckpointLock (line 42) | Object getCheckpointLock();
    method isEmptyThisPollNext (line 44) | default boolean isEmptyThisPollNext() {
    method resetEmptyThisPollNext (line 48) | default void resetEmptyThisPollNext() {}

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SeaTunnelJobAware.java
  type SeaTunnelJobAware (line 23) | public interface SeaTunnelJobAware {
    method setJobContext (line 25) | default void setJobContext(JobContext jobContext) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SeaTunnelSource.java
  type SeaTunnelSource (line 38) | public interface SeaTunnelSource<T, SplitT extends SourceSplit, StateT e...
    method getBoundedness (line 49) | Boundedness getBoundedness();
    method getProducedType (line 57) | @Deprecated
    method getProducedCatalogTables (line 67) | default List<CatalogTable> getProducedCatalogTables() {
    method createReader (line 79) | SourceReader<T, SplitT> createReader(SourceReader.Context readerContex...
    method getSplitSerializer (line 87) | default Serializer<SplitT> getSplitSerializer() {
    method createEnumerator (line 99) | SourceSplitEnumerator<SplitT, StateT> createEnumerator(
    method restoreEnumerator (line 111) | SourceSplitEnumerator<SplitT, StateT> restoreEnumerator(
    method getEnumeratorStateSerializer (line 120) | default Serializer<StateT> getEnumeratorStateSerializer() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SourceEvent.java
  type SourceEvent (line 26) | public interface SourceEvent extends Serializable {}

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SourceReader.java
  type SourceReader (line 33) | public interface SourceReader<T, SplitT extends SourceSplit>
    method open (line 37) | void open() throws Exception;
    method close (line 43) | @Override
    method pollNext (line 52) | void pollNext(Collector<T> output) throws Exception;
    method snapshotState (line 63) | List<SplitT> snapshotState(long checkpointId) throws Exception;
    method addSplits (line 70) | void addSplits(List<SplitT> splits);
    method handleNoMoreSplits (line 79) | void handleNoMoreSplits();
    method handleSourceEvent (line 86) | default void handleSourceEvent(SourceEvent sourceEvent) {}
    type Context (line 88) | interface Context {
      method getIndexOfSubtask (line 91) | int getIndexOfSubtask();
      method getBoundedness (line 94) | Boundedness getBoundedness();
      method signalNoMoreElement (line 97) | void signalNoMoreElement();
      method sendSplitRequest (line 104) | void sendSplitRequest();
      method sendSourceEventToEnumerator (line 111) | void sendSourceEventToEnumerator(SourceEvent sourceEvent);
      method getMetricsContext (line 114) | MetricsContext getMetricsContext();
      method getEventListener (line 121) | EventListener getEventListener();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SourceSplit.java
  type SourceSplit (line 23) | public interface SourceSplit extends Serializable {
    method splitId (line 30) | String splitId();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SourceSplitEnumerator.java
  type SourceSplitEnumerator (line 36) | public interface SourceSplitEnumerator<SplitT extends SourceSplit, StateT>
    method open (line 39) | void open();
    method run (line 55) | void run() throws Exception;
    method close (line 61) | @Override
    method addSplitsBack (line 71) | void addSplitsBack(List<SplitT> splits, int subtaskId);
    method currentUnassignedSplitSize (line 73) | int currentUnassignedSplitSize();
    method handleSplitRequest (line 75) | void handleSplitRequest(int subtaskId);
    method registerReader (line 77) | void registerReader(int subtaskId);
    method snapshotState (line 86) | StateT snapshotState(long checkpointId) throws Exception;
    method handleSourceEvent (line 94) | default void handleSourceEvent(int subtaskId, SourceEvent sourceEvent) {}
    type Context (line 96) | interface Context<SplitT extends SourceSplit> {
      method currentParallelism (line 98) | int currentParallelism();
      method registeredReaders (line 105) | Set<Integer> registeredReaders();
      method assignSplit (line 108) | void assignSplit(int subtaskId, List<SplitT> splits);
      method assignSplit (line 120) | default void assignSplit(int subtaskId, SplitT split) {
      method signalNoMoreSplits (line 130) | void signalNoMoreSplits(int subtask);
      method sendEventToSourceReader (line 139) | void sendEventToSourceReader(int subtaskId, SourceEvent event);
      method getMetricsContext (line 142) | MetricsContext getMetricsContext();
      method getEventListener (line 149) | EventListener getEventListener();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SupportColumnProjection.java
  type SupportColumnProjection (line 21) | public interface SupportColumnProjection {}

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SupportCoordinate.java
  type SupportCoordinate (line 21) | public interface SupportCoordinate {}

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SupportParallelism.java
  type SupportParallelism (line 21) | public interface SupportParallelism {}

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SupportSchemaEvolution.java
  type SupportSchemaEvolution (line 24) | public interface SupportSchemaEvolution {
    method supports (line 31) | List<SchemaChangeType> supports();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/event/EnumeratorCloseEvent.java
  class EnumeratorCloseEvent (line 28) | @Getter
    method EnumeratorCloseEvent (line 37) | public EnumeratorCloseEvent() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/event/EnumeratorOpenEvent.java
  class EnumeratorOpenEvent (line 28) | @Getter
    method EnumeratorOpenEvent (line 37) | public EnumeratorOpenEvent() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/event/MessageDelayedEvent.java
  class MessageDelayedEvent (line 29) | @Getter
    method MessageDelayedEvent (line 42) | public MessageDelayedEvent(long delayTime) {
    method MessageDelayedEvent (line 46) | public MessageDelayedEvent(long delayTime, String record) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/event/ReaderCloseEvent.java
  class ReaderCloseEvent (line 28) | @Getter
    method ReaderCloseEvent (line 37) | public ReaderCloseEvent() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/source/event/ReaderOpenEvent.java
  class ReaderOpenEvent (line 28) | @Getter
    method ReaderOpenEvent (line 37) | public ReaderOpenEvent() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/state/CheckpointListener.java
  type CheckpointListener (line 21) | public interface CheckpointListener {
    method notifyCheckpointComplete (line 23) | void notifyCheckpointComplete(long checkpointId) throws Exception;
    method notifyCheckpointAborted (line 25) | default void notifyCheckpointAborted(long checkpointId) throws Excepti...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/AbstractSchema.java
  class AbstractSchema (line 34) | @Data
    method AbstractSchema (line 42) | public AbstractSchema(List<Column> columns) {
    method AbstractSchema (line 48) | private AbstractSchema() {
    method toPhysicalRowDataType (line 53) | public SeaTunnelRowType toPhysicalRowDataType() {
    method getFieldNames (line 67) | public String[] getFieldNames() {
    method indexOf (line 71) | public int indexOf(String columnName) {
    method getColumn (line 75) | public Column getColumn(String columnName) {
    method contains (line 79) | public boolean contains(String columnName) {
    method getColumns (line 83) | public List<Column> getColumns() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/Catalog.java
  type Catalog (line 49) | public interface Catalog extends AutoCloseable {
    method getFactory (line 51) | default Optional<Factory> getFactory() {
    method open (line 60) | void open() throws CatalogException;
    method close (line 68) | void close() throws CatalogException;
    method name (line 71) | String name();
    method getDefaultDatabase (line 86) | String getDefaultDatabase() throws CatalogException;
    method databaseExists (line 95) | boolean databaseExists(String databaseName) throws CatalogException;
    method listDatabases (line 103) | List<String> listDatabases() throws CatalogException;
    method listTables (line 115) | List<String> listTables(String databaseName) throws CatalogException, ...
    method tableExists (line 124) | boolean tableExists(TablePath tablePath) throws CatalogException;
    method getTable (line 134) | CatalogTable getTable(TablePath tablePath) throws CatalogException, Ta...
    method getTable (line 145) | default CatalogTable getTable(TablePath tablePath, List<String> fieldN...
    method getTables (line 151) | default List<CatalogTable> getTables(ReadonlyConfig config) throws Cat...
    method listTablePaths (line 190) | default List<TablePath> listTablePaths(String databaseName)
    method buildCatalogTablesWithErrorCheck (line 206) | default List<CatalogTable> buildCatalogTablesWithErrorCheck(Iterator<T...
    method buildColumnsWithErrorCheck (line 229) | default <T> void buildColumnsWithErrorCheck(
    method createTable (line 265) | void createTable(TablePath tablePath, CatalogTable table, boolean igno...
    method createTable (line 281) | default void createTable(
    method dropTable (line 297) | void dropTable(TablePath tablePath, boolean ignoreIfNotExists)
    method createDatabase (line 300) | void createDatabase(TablePath tablePath, boolean ignoreIfExists)
    method dropDatabase (line 303) | void dropDatabase(TablePath tablePath, boolean ignoreIfNotExists)
    method truncateTable (line 316) | default void truncateTable(TablePath tablePath, boolean ignoreIfNotExi...
    method isExistsData (line 319) | default boolean isExistsData(TablePath tablePath) {
    method executeSql (line 323) | default void executeSql(TablePath tablePath, String sql) {}
    method previewAction (line 325) | default PreviewResult previewAction(
    type ActionType (line 330) | enum ActionType {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/CatalogTable.java
  class CatalogTable (line 29) | public final class CatalogTable implements Serializable {
    method of (line 49) | public static CatalogTable of(TableIdentifier tableId, CatalogTable ca...
    method of (line 61) | public static CatalogTable of(
    method of (line 77) | public static CatalogTable of(
    method of (line 94) | public static CatalogTable of(
    method withMetadata (line 106) | public static CatalogTable withMetadata(CatalogTable catalogTable, Met...
    method CatalogTable (line 117) | private CatalogTable(
    method copy (line 135) | public CatalogTable copy() {
    method getTableId (line 146) | public TableIdentifier getTableId() {
    method getTablePath (line 150) | public TablePath getTablePath() {
    method getTableSchema (line 154) | public TableSchema getTableSchema() {
    method getSeaTunnelRowType (line 158) | public SeaTunnelRowType getSeaTunnelRowType() {
    method getOptions (line 162) | public Map<String, String> getOptions() {
    method getPartitionKeys (line 166) | public List<String> getPartitionKeys() {
    method getComment (line 170) | public String getComment() {
    method getCatalogName (line 174) | public String getCatalogName() {
    method getMetadataSchema (line 178) | public MetadataSchema getMetadataSchema() {
    method toString (line 182) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtil.java
  class CatalogTableUtil (line 47) | @Slf4j
    method getCatalogTable (line 54) | @Deprecated
    method getCatalogTable (line 59) | public static CatalogTable getCatalogTable(
    method getCatalogTables (line 90) | @Deprecated
    method getCatalogTables (line 100) | @Deprecated
    method buildWithConfig (line 145) | public static CatalogTable buildWithConfig(Config config) {
    method convertToDataType (line 150) | public static SeaTunnelDataType<SeaTunnelRow> convertToDataType(
    method convertToMultipleRowType (line 159) | @Deprecated
    method convertDataTypeToCatalogTables (line 171) | @Deprecated
    method buildWithConfig (line 191) | public static CatalogTable buildWithConfig(ReadonlyConfig readonlyConf...
    method buildWithConfig (line 195) | public static CatalogTable buildWithConfig(String catalogName, Readonl...
    method buildSimpleTextSchema (line 234) | public static SeaTunnelRowType buildSimpleTextSchema() {
    method buildSimpleTextTable (line 238) | public static CatalogTable buildSimpleTextTable() {
    method newCatalogTable (line 242) | public static CatalogTable newCatalogTable(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/Column.java
  class Column (line 35) | @Data
    method Column (line 100) | protected Column(String name, SeaTunnelDataType<?> dataType, Long colu...
    method Column (line 104) | protected Column(
    method Column (line 114) | protected Column(
    method Column (line 142) | protected Column(
    method Column (line 169) | @Deprecated
    method Column (line 186) | @Deprecated
    method isPhysical (line 219) | public abstract boolean isPhysical();
    method copy (line 222) | public abstract Column copy(SeaTunnelDataType<?> newType);
    method copy (line 225) | public abstract Column copy();
    method rename (line 228) | public abstract Column rename(String newColumnName);
    method reSourceType (line 231) | public abstract Column reSourceType(String sourceType);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/ConstraintKey.java
  class ConstraintKey (line 29) | @Data
    method ConstraintKey (line 39) | private ConstraintKey(
    method of (line 50) | public static ConstraintKey of(
    class ConstraintKeyColumn (line 57) | @Data
      method of (line 63) | public static ConstraintKeyColumn of(String columnName, ColumnSortTy...
      method copy (line 67) | public ConstraintKeyColumn copy() {
    type ConstraintType (line 72) | public enum ConstraintType {
    type ColumnSortType (line 79) | public enum ColumnSortType {
    method copy (line 84) | public ConstraintKey copy() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/DataTypeConvertor.java
  type DataTypeConvertor (line 29) | @Deprecated
    method toSeaTunnelType (line 39) | SeaTunnelDataType<?> toSeaTunnelType(String field, String connectorDat...
    method toSeaTunnelType (line 50) | SeaTunnelDataType<?> toSeaTunnelType(
    method toConnectorType (line 63) | T toConnectorType(
    method getIdentity (line 68) | String getIdentity();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/InfoPreviewResult.java
  class InfoPreviewResult (line 20) | public class InfoPreviewResult extends PreviewResult {
    method getInfo (line 23) | public String getInfo() {
    method InfoPreviewResult (line 27) | public InfoPreviewResult(String info) {
    method toString (line 32) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/MetadataColumn.java
  class MetadataColumn (line 27) | @EqualsAndHashCode(callSuper = true)
    method MetadataColumn (line 32) | protected MetadataColumn(
    method of (line 42) | public static MetadataColumn of(
    method isPhysical (line 52) | @Override
    method copy (line 57) | @Override
    method copy (line 62) | @Override
    method rename (line 67) | @Override
    method toPhysicalColumn (line 73) | public PhysicalColumn toPhysicalColumn() {
    method reSourceType (line 78) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/MetadataSchema.java
  class MetadataSchema (line 28) | @EqualsAndHashCode(callSuper = true)
    method MetadataSchema (line 33) | public MetadataSchema(List<Column> columns) {
    method builder (line 37) | public static Builder builder() {
    class Builder (line 41) | public static final class Builder {
      method columns (line 44) | public Builder columns(List<Column> columns) {
      method column (line 49) | public Builder column(Column column) {
      method build (line 54) | public MetadataSchema build() {
    method copy (line 59) | public MetadataSchema copy() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/PhysicalColumn.java
  class PhysicalColumn (line 31) | @EqualsAndHashCode(callSuper = true)
    method PhysicalColumn (line 37) | protected PhysicalColumn(
    method PhysicalColumn (line 42) | public PhysicalColumn(
    method PhysicalColumn (line 66) | protected PhysicalColumn(
    method PhysicalColumn (line 76) | public PhysicalColumn(
    method PhysicalColumn (line 96) | public PhysicalColumn(
    method PhysicalColumn (line 117) | @Builder
    method PhysicalColumn (line 140) | @Deprecated
    method PhysicalColumn (line 151) | @Deprecated
    method PhysicalColumn (line 180) | @Deprecated
    method of (line 213) | public static PhysicalColumn of(
    method of (line 223) | public static PhysicalColumn of(
    method of (line 235) | public static PhysicalColumn of(
    method of (line 248) | public static PhysicalColumn of(
    method of (line 270) | public static PhysicalColumn of(
    method of (line 293) | @Deprecated
    method of (line 304) | @Deprecated
    method isPhysical (line 333) | @Override
    method copy (line 338) | @Override
    method copy (line 357) | @Override
    method rename (line 376) | @Override
    method reSourceType (line 395) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/PreviewResult.java
  class PreviewResult (line 21) | public abstract class PreviewResult {
    method PreviewResult (line 25) | public PreviewResult(Type type) {
    method getType (line 29) | public Type getType() {
    type Type (line 33) | public enum Type {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/PrimaryKey.java
  class PrimaryKey (line 27) | @Data
    method PrimaryKey (line 39) | public PrimaryKey(String primaryKey, List<String> columnNames) {
    method isPrimaryKeyField (line 45) | public static boolean isPrimaryKeyField(PrimaryKey primaryKey, String ...
    method of (line 52) | public static PrimaryKey of(String primaryKey, List<String> columnName...
    method of (line 56) | public static PrimaryKey of(String primaryKey, List<String> columnName...
    method copy (line 60) | public PrimaryKey copy() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/SQLPreviewResult.java
  class SQLPreviewResult (line 20) | public class SQLPreviewResult extends PreviewResult {
    method getSql (line 24) | public String getSql() {
    method SQLPreviewResult (line 28) | public SQLPreviewResult(String sql) {
    method toString (line 33) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/SeaTunnelDataTypeConvertorUtil.java
  class SeaTunnelDataTypeConvertorUtil (line 37) | public class SeaTunnelDataTypeConvertorUtil {
    method deserializeSeaTunnelDataType (line 43) | public static SeaTunnelDataType<?> deserializeSeaTunnelDataType(
    method compatibleTypeDeclare (line 113) | @Deprecated
    method parseComplexDataType (line 127) | private static SeaTunnelDataType<?> parseComplexDataType(String field,...
    method parseRowType (line 144) | private static SeaTunnelDataType<?> parseRowType(String columnStr) {
    method parseRowType (line 156) | private static SeaTunnelDataType<?> parseRowType(ConfigObject conf) {
    method parseMapType (line 191) | private static SeaTunnelDataType<?> parseMapType(String field, String ...
    method getGenericType (line 208) | private static String getGenericType(String columnStr) {
    method parseArrayType (line 213) | private static SeaTunnelDataType<?> parseArrayType(String field, Strin...
    method parseDecimalType (line 241) | private static SeaTunnelDataType<?> parseDecimalType(String columnStr) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableIdentifier.java
  class TableIdentifier (line 28) | @Getter
    method TableIdentifier (line 41) | public TableIdentifier(
    method of (line 52) | public static TableIdentifier of(String catalogName, String databaseNa...
    method of (line 56) | public static TableIdentifier of(String catalogName, TablePath tablePa...
    method of (line 64) | public static TableIdentifier of(
    method toTablePath (line 69) | public TablePath toTablePath() {
    method copy (line 73) | public TableIdentifier copy() {
    method toString (line 77) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TablePath.java
  class TablePath (line 30) | @Getter
    method TablePath (line 38) | public TablePath(String databaseName, String schemaName, @NonNull Stri...
    method of (line 49) | public static TablePath of(String fullName) {
    method of (line 53) | public static TablePath of(String fullName, boolean schemaFirst) {
    method of (line 72) | public static TablePath of(String databaseName, String tableName) {
    method of (line 76) | public static TablePath of(String databaseName, String schemaName, Str...
    method getSchemaAndTableName (line 80) | public String getSchemaAndTableName() {
    method getSchemaAndTableName (line 84) | public String getSchemaAndTableName(String quote) {
    method getFullName (line 88) | public String getFullName() {
    method getFullNameWithQuoted (line 92) | public String getFullNameWithQuoted() {
    method getFullNameWithQuoted (line 96) | public String getFullNameWithQuoted(String quote) {
    method getFullNameWithQuoted (line 100) | public String getFullNameWithQuoted(String quoteLeft, String quoteRigh...
    method getNameCommon (line 104) | private String getNameCommon(
    method toString (line 129) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableSchema.java
  class TableSchema (line 28) | @EqualsAndHashCode(callSuper = true)
    method TableSchema (line 37) | public TableSchema(
    method builder (line 44) | public static Builder builder() {
    class Builder (line 48) | public static final class Builder {
      method columns (line 55) | public Builder columns(List<Column> columns) {
      method column (line 60) | public Builder column(Column column) {
      method primaryKey (line 65) | public Builder primaryKey(PrimaryKey primaryKey) {
      method constraintKey (line 70) | public Builder constraintKey(ConstraintKey constraintKey) {
      method constraintKey (line 75) | public Builder constraintKey(List<ConstraintKey> constraintKeys) {
      method build (line 80) | public TableSchema build() {
    method copy (line 85) | public TableSchema copy() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/VectorIndex.java
  class VectorIndex (line 26) | @EqualsAndHashCode(callSuper = true)
    method VectorIndex (line 39) | public VectorIndex(String indexName, String columnName, String indexTy...
    method VectorIndex (line 46) | public VectorIndex(
    method copy (line 54) | @Override
    type IndexType (line 59) | public enum IndexType {
      method of (line 90) | public static IndexType of(String name) {
    type MetricType (line 95) | public enum MetricType {
      method of (line 106) | public static MetricType of(String name) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/exception/CatalogException.java
  class CatalogException (line 24) | public class CatalogException extends SeaTunnelRuntimeException {
    method CatalogException (line 27) | public CatalogException(String message) {
    method CatalogException (line 32) | public CatalogException(Throwable cause) {
    method CatalogException (line 40) | public CatalogException(String message, Throwable cause) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/exception/DatabaseAlreadyExistException.java
  class DatabaseAlreadyExistException (line 24) | public class DatabaseAlreadyExistException extends SeaTunnelRuntimeExcep...
    method DatabaseAlreadyExistException (line 27) | public DatabaseAlreadyExistException(String catalogName, String databa...
    method DatabaseAlreadyExistException (line 31) | public DatabaseAlreadyExistException(String catalogName, String databa...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/exception/DatabaseNotExistException.java
  class DatabaseNotExistException (line 25) | public class DatabaseNotExistException extends SeaTunnelRuntimeException {
    method DatabaseNotExistException (line 28) | public DatabaseNotExistException(String catalogName, String databaseNa...
    method DatabaseNotExistException (line 35) | public DatabaseNotExistException(String catalogName, String databaseNa...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/exception/TableAlreadyExistException.java
  class TableAlreadyExistException (line 24) | public class TableAlreadyExistException extends SeaTunnelRuntimeException {
    method TableAlreadyExistException (line 27) | public TableAlreadyExistException(String catalogName, TablePath tableP...
    method TableAlreadyExistException (line 31) | public TableAlreadyExistException(String catalogName, TablePath tableP...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/exception/TableNotExistException.java
  class TableNotExistException (line 26) | public class TableNotExistException extends SeaTunnelRuntimeException {
    method TableNotExistException (line 30) | public TableNotExistException(String catalogName, TablePath tablePath) {
    method TableNotExistException (line 34) | public TableNotExistException(String catalogName, TablePath tablePath,...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParser.java
  class ReadonlyConfigParser (line 38) | public class ReadonlyConfigParser implements TableSchemaParser<ReadonlyC...
    method parse (line 47) | @Override
    class FieldParser (line 81) | private static class FieldParser implements TableSchemaParser.FieldPar...
      method parse (line 83) | @Override
    class ColumnParser (line 103) | private static class ColumnParser implements TableSchemaParser.ColumnP...
      method parse (line 105) | @Override
    class ConstraintKeyParser (line 154) | private static class ConstraintKeyParser
      method parse (line 157) | @Override
    class PrimaryKeyParser (line 228) | private static class PrimaryKeyParser
      method parse (line 231) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/schema/TableSchemaParser.java
  type TableSchemaParser (line 27) | public interface TableSchemaParser<T> {
    method parse (line 35) | TableSchema parse(T schemaConfig);
    type FieldParser (line 37) | @Deprecated
      method parse (line 46) | List<Column> parse(T schemaConfig);
    type ColumnParser (line 49) | interface ColumnParser<T> {
      method parse (line 57) | List<Column> parse(T schemaConfig);
    type ConstraintKeyParser (line 60) | interface ConstraintKeyParser<T> {
      method parse (line 68) | List<ConstraintKey> parse(T schemaConfig);
    type PrimaryKeyParser (line 71) | interface PrimaryKeyParser<T> {
      method parse (line 79) | PrimaryKey parse(T schemaConfig);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/connector/DeserializationFormat.java
  type DeserializationFormat (line 27) | public interface DeserializationFormat {
    method createDeserializationSchema (line 29) | DeserializationSchema createDeserializationSchema();
    method listReadableMetadata (line 31) | default Map<String, SeaTunnelDataType<?>> listReadableMetadata() {
    method applyReadableMetadata (line 35) | default void applyReadableMetadata(List<String> metadataKeys, SeaTunne...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/connector/SerializationFormat.java
  type SerializationFormat (line 22) | public interface SerializationFormat {
    method createSerializationSchema (line 24) | SerializationSchema createSerializationSchema();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/connector/SupportReadingMetadata.java
  type SupportReadingMetadata (line 27) | public interface SupportReadingMetadata {
    method listReadableMetadata (line 29) | Map<String, SeaTunnelDataType<?>> listReadableMetadata(CatalogTable ca...
    method applyReadableMetadata (line 31) | void applyReadableMetadata(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/connector/TableSink.java
  type TableSink (line 22) | public interface TableSink<IN, StateT, CommitInfoT, AggregatedCommitInfo...
    method createSink (line 24) | SeaTunnelSink<IN, StateT, CommitInfoT, AggregatedCommitInfoT> createSi...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/connector/TableSource.java
  type TableSource (line 26) | public interface TableSource<T, SplitT extends SourceSplit, StateT exten...
    method createSource (line 28) | SeaTunnelSource<T, SplitT, StateT> createSource();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/connector/TableTransform.java
  type TableTransform (line 22) | public interface TableTransform<T> {
    method createTransform (line 24) | SeaTunnelTransform<T> createTransform();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/converter/BasicDataConverter.java
  type BasicDataConverter (line 45) | public interface BasicDataConverter<T> extends DataConverter<T> {
    method convert (line 47) | @Override
    method convert (line 98) | @Override
    method convertMap (line 149) | default Map convertMap(T typeDefine, Column columnDefine, Object value)
    method convertMap (line 154) | default Map convertMap(MapType typeDefine, Object value) throws Unsupp...
    method convertArray (line 162) | default Object[] convertArray(T typeDefine, Column columnDefine, Objec...
    method convertArray (line 167) | default Object[] convertArray(ArrayType typeDefine, Object value)
    method convertRow (line 198) | default SeaTunnelRow convertRow(T typeDefine, Column columnDefine, Obj...
    method convertRow (line 203) | default SeaTunnelRow convertRow(SeaTunnelRowType typeDefine, Object va...
    method convertString (line 240) | default String convertString(T typeDefine, Object value) throws Unsupp...
    method convertString (line 268) | default String convertString(T typeDefine, Number value) {
    method convertString (line 272) | default String convertString(T typeDefine, byte[] value) {
    method convertString (line 276) | default String convertString(T typeDefine, boolean value) {
    method convertString (line 280) | default String convertString(T typeDefine, Date value) {
    method convertString (line 284) | default String convertString(T typeDefine, LocalDate value) {
    method convertString (line 288) | default String convertString(T typeDefine, Time value) {
    method convertString (line 292) | default String convertString(T typeDefine, LocalTime value) {
    method convertString (line 296) | default String convertString(T typeDefine, LocalDateTime value) {
    method convertString (line 300) | default String convertString(Object value) throws UnsupportedOperation...
    method convertString (line 328) | default String convertString(Number value) {
    method convertString (line 332) | default String convertString(byte[] value) {
    method convertString (line 336) | default String convertString(boolean value) {
    method convertString (line 340) | default String convertString(Date value) {
    method convertString (line 344) | default String convertString(LocalDate value) {
    method convertString (line 348) | default String convertString(Time value) {
    method convertString (line 352) | default String convertString(LocalTime value) {
    method convertString (line 356) | default String convertString(LocalDateTime value) {
    method convertBytes (line 360) | default byte[] convertBytes(T typeDefine, Object value) throws Unsuppo...
    method convertBytes (line 377) | default byte[] convertBytes(T typeDefine, String value) {
    method convertBytes (line 381) | default byte[] convertBytes(Object value) throws UnsupportedOperationE...
    method convertBytes (line 395) | default byte[] convertBytes(ByteBuffer value) {
    method convertBytes (line 401) | default byte[] convertBytes(String value) {
    method convertLocalDateTime (line 405) | default LocalDateTime convertLocalDateTime(T typeDefine, Object value)
    method convertOffsetDateTime (line 441) | default OffsetDateTime convertOffsetDateTime(T typeDefine, Object value)
    method convertLocalDateTime (line 485) | default LocalDateTime convertLocalDateTime(T typeDefine, Instant value) {
    method convertLocalDateTime (line 489) | default LocalDateTime convertLocalDateTime(T typeDefine, Date value) {
    method convertLocalDateTime (line 493) | default LocalDateTime convertLocalDateTime(T typeDefine, String value) {
    method convertLocalDateTime (line 497) | default LocalDateTime convertLocalDateTime(T typeDefine, Number value) {
    method convertLocalDateTime (line 501) | default LocalDateTime convertLocalDateTime(Object value) throws Unsupp...
    method convertOffsetDateTime (line 533) | default OffsetDateTime convertOffsetDateTime(Object value)
    method convertLocalDateTime (line 574) | default LocalDateTime convertLocalDateTime(Instant value) {
    method convertLocalDateTime (line 578) | default LocalDateTime convertLocalDateTime(Date value) {
    method convertLocalDateTime (line 582) | default LocalDateTime convertLocalDateTime(LocalDate value) {
    method convertLocalDateTime (line 586) | default LocalDateTime convertLocalDateTime(java.sql.Date value) {
    method convertLocalDateTime (line 591) | default LocalDateTime convertLocalDateTime(java.sql.Timestamp value) {
    method convertLocalDateTime (line 602) | default LocalDateTime convertLocalDateTime(String value) {
    method convertLocalDateTime (line 606) | default LocalDateTime convertLocalDateTime(Number value) {
    method convertTime (line 619) | default LocalTime convertTime(T typeDefine, Object value) throws Unsup...
    method convertLocalTime (line 651) | default LocalTime convertLocalTime(T typeDefine, Time value) {
    method convertLocalTime (line 655) | default LocalTime convertLocalTime(T typeDefine, String value) {
    method convertLocalTime (line 659) | default LocalTime convertLocalTime(T typeDefine, Number value) {
    method convertTime (line 663) | default LocalTime convertTime(Object value) throws UnsupportedOperatio...
    method convertLocalTime (line 692) | default LocalTime convertLocalTime(LocalDateTime value) {
    method convertLocalTime (line 696) | default LocalTime convertLocalTime(Time value) {
    method convertLocalTime (line 700) | default LocalTime convertLocalTime(java.sql.Timestamp value) {
    method convertLocalTime (line 705) | default LocalTime convertLocalTime(Date value) {
    method convertLocalTime (line 712) | default LocalTime convertLocalTime(Duration value) {
    method convertLocalTime (line 722) | default LocalTime convertLocalTime(String value) {
    method convertLocalTime (line 726) | default LocalTime convertLocalTime(Number value) {
    method convertLocalDate (line 730) | default LocalDate convertLocalDate(T typeDefine, Object value)
    method convertLocalDate (line 757) | default LocalDate convertLocalDate(T typeDefine, Date value) {
    method convertLocalDate (line 761) | default LocalDate convertLocalDate(T typeDefine, String value) {
    method convertLocalDate (line 765) | default LocalDate convertLocalDate(T typeDefine, Number value) {
    method convertLocalDate (line 769) | default LocalDate convertLocalDate(Object value) throws UnsupportedOpe...
    method convertLocalDate (line 792) | default LocalDate convertLocalDate(Date value) {
    method convertLocalDate (line 796) | default LocalDate convertLocalDate(String value) {
    method convertLocalDate (line 800) | default LocalDate convertLocalDate(Number value) {
    method convertDecimal (line 811) | default BigDecimal convertDecimal(T typeDefine, Object value)
    method convertDecimal (line 829) | default BigDecimal convertDecimal(T typeDefine, Number value) {
    method convertDecimal (line 833) | default BigDecimal convertDecimal(T typeDefine, String value) {
    method convertDecimal (line 837) | default BigDecimal convertDecimal(Object value) throws UnsupportedOper...
    method convertDecimal (line 851) | default BigDecimal convertDecimal(Number value) {
    method convertDecimal (line 855) | default BigDecimal convertDecimal(String value) {
    method convertDouble (line 859) | default double convertDouble(T typeDefine, Object value) throws Unsupp...
    method convertDouble (line 876) | default double convertDouble(T typeDefine, Number value) {
    method convertDouble (line 880) | default double convertDouble(T typeDefine, String value) {
    method convertDouble (line 884) | default double convertDouble(Object value) throws UnsupportedOperation...
    method convertDouble (line 898) | default double convertDouble(Number value) {
    method convertDouble (line 902) | default double convertDouble(String value) {
    method convertFloat (line 906) | default float convertFloat(T typeDefine, Object value) throws Unsuppor...
    method convertFloat (line 920) | default float convertFloat(T typeDefine, Number value) {
    method convertFloat (line 924) | default float convertFloat(T typeDefine, String value) {
    method convertFloat (line 928) | default float convertFloat(Object value) throws UnsupportedOperationEx...
    method convertFloat (line 942) | default float convertFloat(Number value) {
    method convertFloat (line 946) | default float convertFloat(String value) {
    method convertLong (line 950) | default long convertLong(T typeDefine, Object value) throws Unsupporte...
    method convertLong (line 979) | default long convertLong(T typeDefine, Number value) {
    method convertLong (line 983) | default long convertLong(T typeDefine, String value) {
    method convertLong (line 987) | default long convertLong(T typeDefine, Time value) {
    method convertLong (line 991) | default long convertLong(T typeDefine, LocalTime value) {
    method convertLong (line 995) | default long convertLong(T typeDefine, Date value) {
    method convertLong (line 999) | default long convertLong(T typeDefine, LocalDate value) {
    method convertLong (line 1003) | default long convertLong(T typeDefine, LocalDateTime value) {
    method convertLong (line 1007) | default long convertLong(Object value) throws UnsupportedOperationExce...
    method convertLong (line 1036) | default long convertLong(Number value) {
    method convertLong (line 1040) | default long convertLong(String value) {
    method convertLong (line 1044) | default long convertLong(Time value) {
    method convertLong (line 1048) | default long convertLong(LocalTime value) {
    method convertLong (line 1052) | default long convertLong(Date value) {
    method convertLong (line 1056) | default long convertLong(LocalDate value) {
    method convertLong (line 1060) | default long convertLong(LocalDateTime value) {
    method convertInt (line 1064) | default int convertInt(T typeDefine, Object value) throws UnsupportedO...
    method convertInt (line 1096) | default int convertInt(T typeDefine, Number value) {
    method convertInt (line 1100) | default int convertInt(T typeDefine, String value) {
    method convertInt (line 1104) | default int convertInt(T typeDefine, Time value) {
    method convertInt (line 1108) | default int convertInt(T typeDefine, LocalTime value) {
    method convertInt (line 1112) | default int convertInt(T typeDefine, Date value) {
    method convertInt (line 1116) | default int convertInt(T typeDefine, LocalDate value) {
    method convertInt (line 1120) | default int convertInt(T typeDefine, LocalDateTime value) {
    method convertInt (line 1124) | default int convertInt(Object value) throws UnsupportedOperationExcept...
    method convertInt (line 1153) | default int convertInt(Number value) {
    method convertInt (line 1157) | default int convertInt(String value) {
    method convertInt (line 1161) | default int convertInt(Time value) {
    method convertInt (line 1165) | default int convertInt(LocalTime value) {
    method convertInt (line 1169) | default int convertInt(Date value) {
    method convertInt (line 1173) | default int convertInt(LocalDateTime value) {
    method convertInt (line 1177) | default int convertInt(LocalDate value) {
    method convertShort (line 1181) | default short convertShort(T typeDefine, Object value) throws Unsuppor...
    method convertShort (line 1195) | default short convertShort(T typeDefine, Number value) {
    method convertShort (line 1199) | default short convertShort(T typeDefine, String value) {
    method convertShort (line 1203) | default short convertShort(Object value) throws UnsupportedOperationEx...
    method convertShort (line 1217) | default short convertShort(Number value) {
    method convertShort (line 1221) | default short convertShort(String value) {
    method convertByte (line 1225) | default byte convertByte(T typeDefine, Object value) throws Unsupporte...
    method convertByte (line 1242) | default byte convertByte(T typeDefine, Number value) {
    method convertByte (line 1246) | default byte convertByte(T typeDefine, String value) {
    method convertByte (line 1250) | default byte convertByte(T typeDefine, boolean value) {
    method convertByte (line 1254) | default byte convertByte(Object value) throws UnsupportedOperationExce...
    method convertByte (line 1271) | default byte convertByte(Number value) {
    method convertByte (line 1275) | default byte convertByte(String value) {
    method convertByte (line 1279) | default byte convertByte(boolean value) {
    method convertBoolean (line 1283) | default boolean convertBoolean(T typeDefine, Object value)
    method convertBoolean (line 1301) | default boolean convertBoolean(T typeDefine, Number value) {
    method convertBoolean (line 1305) | default boolean convertBoolean(T typeDefine, String value) {
    method convertBoolean (line 1309) | default boolean convertBoolean(Object value) throws UnsupportedOperati...
    method convertBoolean (line 1323) | default boolean convertBoolean(Number value) {
    method convertBoolean (line 1327) | default boolean convertBoolean(String value) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/converter/BasicDataTypeConverter.java
  type BasicDataTypeConverter (line 20) | public interface BasicDataTypeConverter<T extends BasicTypeDefine>

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/converter/BasicTypeConverter.java
  type BasicTypeConverter (line 27) | public interface BasicTypeConverter<T extends BasicTypeDefine> extends T...
    method reconvert (line 36) | default List<T> reconvert(CatalogTable table, String... identifiers) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/converter/BasicTypeDefine.java
  class BasicTypeDefine (line 26) | @Data
    method BasicTypeDefine (line 49) | @Tolerate

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/converter/ConverterLoader.java
  class ConverterLoader (line 25) | public class ConverterLoader {
    method loadDataTypeConverter (line 27) | public static DataTypeConverter<?> loadDataTypeConverter(String identi...
    method loadDataTypeConverter (line 31) | public static DataTypeConverter<?> loadDataTypeConverter(
    method loadDataConverter (line 44) | public static DataConverter<?> loadDataConverter(String identifier) {
    method loadDataConverter (line 48) | public static DataConverter<?> loadDataConverter(String identifier, Cl...
    method loadTypeConverter (line 58) | public static TypeConverter<?> loadTypeConverter(String identifier) {
    method loadTypeConverter (line 62) | public static TypeConverter<?> loadTypeConverter(String identifier, Cl...
    method discoverConverters (line 72) | private static <T> List<T> discoverConverters(Class<T> clazz, ClassLoa...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/converter/DataConverter.java
  type DataConverter (line 32) | public interface DataConverter<T> extends Serializable {
    method identifier (line 34) | String identifier();
    method convert (line 43) | Object convert(SeaTunnelDataType typeDefine, Object value);
    method convert (line 45) | default Object convert(Column columnDefine, Object value) {
    method convert (line 49) | default Object convert(T typeDefine, Column columnDefine, Object value) {
    method convert (line 53) | default Object[] convert(T[] typeDefine, Column[] columnDefine, Object...
    method convert (line 61) | default Object[] convert(Column[] columnDefine, Function<Column[], Obj...
    method convert (line 73) | default Object[] convert(
    method reconvert (line 91) | default Object reconvert(T typeDefine, Column columnDefine, Object val...
    method reconvert (line 102) | default Object reconvert(T typeDefine, Object value) {
    method reconvert (line 106) | default Object reconvert(Column columnDefine, Object value) {
    method reconvert (line 117) | default Object reconvert(SeaTunnelDataType typeDefine, Object value) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/converter/DataTypeConverter.java
  type DataTypeConverter (line 20) | public interface DataTypeConverter<T> extends TypeConverter<T>, DataConv...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/converter/TypeConverter.java
  type TypeConverter (line 31) | public interface TypeConverter<T> extends Serializable {
    method identifier (line 33) | String identifier();
    method convert (line 41) | Column convert(T typeDefine);
    method convert (line 43) | default List<Column> convert(List<T> typeDefines) {
    method reconvert (line 53) | T reconvert(Column column);
    method reconvert (line 55) | default List<T> reconvert(List<Column> columns) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/CatalogFactory.java
  type CatalogFactory (line 23) | public interface CatalogFactory extends Factory {
    method createCatalog (line 26) | Catalog createCatalog(String catalogName, ReadonlyConfig options);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/ChangeStreamTableSourceCheckpoint.java
  class ChangeStreamTableSourceCheckpoint (line 26) | @Data

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/ChangeStreamTableSourceFactory.java
  type ChangeStreamTableSourceFactory (line 37) | public interface ChangeStreamTableSourceFactory extends TableSourceFacto...
    method getSplitSerializer (line 45) | default <SplitT extends SourceSplit> Serializer<SplitT> getSplitSerial...
    method getEnumeratorStateSerializer (line 55) | default <StateT extends Serializable> Serializer<StateT> getEnumerator...
    method deserializeTableSourceState (line 74) | default <StateT extends Serializable, SplitT extends SourceSplit>
    method restoreSource (line 116) | <T, SplitT extends SourceSplit, StateT extends Serializable>

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/ChangeStreamTableSourceState.java
  class ChangeStreamTableSourceState (line 35) | @Data

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/DataTypeConvertorFactory.java
  class DataTypeConvertorFactory (line 28) | public class DataTypeConvertorFactory {
    method DataTypeConvertorFactory (line 32) | public DataTypeConvertorFactory() {
    method DataTypeConvertorFactory (line 36) | public DataTypeConvertorFactory(ClassLoader classLoader) {
    method getDataTypeConvertor (line 46) | public DataTypeConvertor<?> getDataTypeConvertor(String convertorIdent...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/Factory.java
  type Factory (line 23) | public interface Factory {
    method factoryIdentifier (line 32) | String factoryIdentifier();
    method optionRule (line 42) | OptionRule optionRule();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryException.java
  class FactoryException (line 23) | public class FactoryException extends SeaTunnelRuntimeException {
    method FactoryException (line 25) | public FactoryException(String message, Throwable cause) {
    method FactoryException (line 29) | public FactoryException(String message) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryUtil.java
  class FactoryUtil (line 72) | @Slf4j
    method createAndPrepareSource (line 79) | public static <T, SplitT extends SourceSplit, StateT extends Serializa...
    method restoreAndPrepareSource (line 97) | public static <T, SplitT extends SourceSplit, StateT extends Serializa...
    method createAndPrepareSource (line 182) | private static <T, SplitT extends SourceSplit, StateT extends Serializ...
    method restoreAndPrepareSource (line 195) | private static <T, SplitT extends SourceSplit, StateT extends Serializ...
    method createAndPrepareSink (line 208) | public static <IN, StateT, CommitInfoT, AggregatedCommitInfoT>
    method createMultiTableSink (line 268) | public static <IN, StateT, CommitInfoT, AggregatedCommitInfoT>
    method createOptionalCatalog (line 286) | public static Optional<Catalog> createOptionalCatalog(
    method getFactoryUrl (line 297) | public static <T extends Factory> URL getFactoryUrl(T factory) {
    method discoverOptionalFactory (line 301) | public static <T extends Factory> Optional<T> discoverOptionalFactory(
    method discoverOptionalFactory (line 318) | public static <T extends Factory> Optional<T> discoverOptionalFactory(
    method discoverFactory (line 335) | public static <T extends Factory> T discoverFactory(
    method checkMultipleMatchingFactories (line 371) | private static <T extends Factory> void checkMultipleMatchingFactories(
    method discoverFactories (line 388) | @SuppressWarnings("unchecked")
    method discoverFactories (line 397) | public static List<Factory> discoverFactories(ClassLoader classLoader) {
    method sourceFullOptionRule (line 413) | public static OptionRule sourceFullOptionRule(@NonNull TableSourceFact...
    method sinkFullOptionRule (line 439) | public static OptionRule sinkFullOptionRule(@NonNull TableSinkFactory ...
    method createAndPrepareMultiTableTransform (line 447) | public static SeaTunnelTransform<?> createAndPrepareMultiTableTransform(
    method isFallback (line 460) | private static <T extends Factory> boolean isFallback(
    method ensureJobModeMatch (line 482) | public static void ensureJobModeMatch(JobContext jobContext, SeaTunnel...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/MultiTableFactoryContext.java
  class MultiTableFactoryContext (line 28) | @Getter
    method MultiTableFactoryContext (line 33) | public MultiTableFactoryContext(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/SerializationFormatFactory.java
  type SerializationFormatFactory (line 22) | public interface SerializationFormatFactory extends Factory {
    method createSerializationFormat (line 23) | SerializationFormat createSerializationFormat(TableFactoryContext cont...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/TableFactoryContext.java
  class TableFactoryContext (line 31) | @Getter
    method TableFactoryContext (line 37) | public TableFactoryContext(ReadonlyConfig options, ClassLoader classLo...
    method checkCatalogTableIllegal (line 42) | protected static void checkCatalogTableIllegal(List<CatalogTable> cata...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/TableSinkFactory.java
  type TableSinkFactory (line 34) | public interface TableSinkFactory<IN, StateT, CommitInfoT, AggregatedCom...
    method createSink (line 42) | default TableSink<IN, StateT, CommitInfoT, AggregatedCommitInfoT> crea...
    method excludeTablePlaceholderReplaceKeys (line 48) | @Deprecated

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/TableSinkFactoryContext.java
  class TableSinkFactoryContext (line 31) | @Getter
    method TableSinkFactoryContext (line 36) | @VisibleForTesting
    method replacePlaceholderAndCreate (line 46) | public static TableSinkFactoryContext replacePlaceholderAndCreate(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/TableSourceFactory.java
  type TableSourceFactory (line 33) | public interface TableSourceFactory extends Factory {
    method createSource (line 40) | default <T, SplitT extends SourceSplit, StateT extends Serializable>
    method discoverTableSchemas (line 51) | default List<CatalogTable> discoverTableSchemas(TableSourceFactoryCont...
    method getSourceClass (line 62) | Class<? extends SeaTunnelSource> getSourceClass();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/TableSourceFactoryContext.java
  class TableSourceFactoryContext (line 24) | @Getter
    method TableSourceFactoryContext (line 29) | public TableSourceFactoryContext(ReadonlyConfig options, ClassLoader c...
    method TableSourceFactoryContext (line 33) | public TableSourceFactoryContext(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/TableTransformFactory.java
  type TableTransformFactory (line 27) | public interface TableTransformFactory extends Factory {
    method createTransform (line 35) | default <T> TableTransform<T> createTransform(TableTransformFactoryCon...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/TableTransformFactoryContext.java
  class TableTransformFactoryContext (line 27) | @Getter
    method TableTransformFactoryContext (line 32) | public TableTransformFactoryContext(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/SchemaChangeType.java
  type SchemaChangeType (line 20) | public enum SchemaChangeType {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/event/AlterTableAddColumnEvent.java
  class AlterTableAddColumnEvent (line 27) | @Getter
    method AlterTableAddColumnEvent (line 34) | public AlterTableAddColumnEvent(
    method addFirst (line 42) | public static AlterTableAddColumnEvent addFirst(
    method add (line 47) | public static AlterTableAddColumnEvent add(TableIdentifier tableIdenti...
    method addAfter (line 51) | public static AlterTableAddColumnEvent addAfter(
    method getEventType (line 56) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/event/AlterTableChangeColumnEvent.java
  class AlterTableChangeColumnEvent (line 27) | @Getter
    method AlterTableChangeColumnEvent (line 35) | public AlterTableChangeColumnEvent(
    method changeFirst (line 48) | public static AlterTableChangeColumnEvent changeFirst(
    method change (line 53) | public static AlterTableChangeColumnEvent change(
    method changeAfter (line 58) | public static AlterTableChangeColumnEvent changeAfter(
    method getEventType (line 64) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/event/AlterTableColumnEvent.java
  class AlterTableColumnEvent (line 24) | @ToString(callSuper = true)
    method AlterTableColumnEvent (line 27) | public AlterTableColumnEvent(TableIdentifier tableIdentifier) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/event/AlterTableColumnsEvent.java
  class AlterTableColumnsEvent (line 29) | @Getter
    method AlterTableColumnsEvent (line 34) | public AlterTableColumnsEvent(TableIdentifier tableIdentifier) {
    method AlterTableColumnsEvent (line 38) | public AlterTableColumnsEvent(
    method addEvent (line 44) | public AlterTableColumnsEvent addEvent(AlterTableColumnEvent event) {
    method getEventType (line 49) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/event/AlterTableDropColumnEvent.java
  class AlterTableDropColumnEvent (line 26) | @Getter
    method AlterTableDropColumnEvent (line 31) | public AlterTableDropColumnEvent(TableIdentifier tableIdentifier, Stri...
    method getEventType (line 36) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/event/AlterTableEvent.java
  class AlterTableEvent (line 24) | @ToString(callSuper = true)
    method AlterTableEvent (line 26) | public AlterTableEvent(TableIdentifier tableIdentifier) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/event/AlterTableModifyColumnEvent.java
  class AlterTableModifyColumnEvent (line 27) | @Getter
    method AlterTableModifyColumnEvent (line 35) | public AlterTableModifyColumnEvent(
    method setTypeChanged (line 43) | public void setTypeChanged(boolean typeChanged) {
    method modifyFirst (line 47) | public static AlterTableModifyColumnEvent modifyFirst(
    method modify (line 52) | public static AlterTableModifyColumnEvent modify(
    method modifyAfter (line 57) | public static AlterTableModifyColumnEvent modifyAfter(
    method getEventType (line 62) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/event/AlterTableNameEvent.java
  class AlterTableNameEvent (line 27) | @Getter
    method AlterTableNameEvent (line 32) | public AlterTableNameEvent(
    method getNewTablePath (line 38) | public TablePath getNewTablePath() {
    method getEventType (line 42) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/event/SchemaChangeEvent.java
  type SchemaChangeEvent (line 26) | public interface SchemaChangeEvent extends Event {
    method tablePath (line 33) | default TablePath tablePath() {
    method tableIdentifier (line 42) | TableIdentifier tableIdentifier();
    method getChangeAfter (line 49) | CatalogTable getChangeAfter();
    method setChangeAfter (line 56) | void setChangeAfter(CatalogTable table);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/event/TableEvent.java
  class TableEvent (line 29) | @Getter
    method tableIdentifier (line 40) | @Override
    method getTablePath (line 45) | public TablePath getTablePath() {
    method getCreatedTime (line 49) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/exception/SchemaCoordinationException.java
  class SchemaCoordinationException (line 26) | public class SchemaCoordinationException extends SchemaEvolutionException {
    method SchemaCoordinationException (line 28) | public SchemaCoordinationException(
    method SchemaCoordinationException (line 36) | public SchemaCoordinationException(
    method timeout (line 46) | public static SchemaCoordinationException timeout(
    method conflict (line 59) | public static SchemaCoordinationException conflict(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/exception/SchemaEvolutionErrorCode.java
  type SchemaEvolutionErrorCode (line 22) | public enum SchemaEvolutionErrorCode implements SeaTunnelErrorCode {
    method SchemaEvolutionErrorCode (line 53) | SchemaEvolutionErrorCode(String code, String description) {
    method getCode (line 58) | @Override
    method getDescription (line 63) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/exception/SchemaEvolutionException.java
  class SchemaEvolutionException (line 26) | @Getter
    method SchemaEvolutionException (line 33) | public SchemaEvolutionException(SchemaEvolutionErrorCode errorCode, St...
    method SchemaEvolutionException (line 39) | public SchemaEvolutionException(
    method SchemaEvolutionException (line 46) | public SchemaEvolutionException(
    method SchemaEvolutionException (line 56) | public SchemaEvolutionException(
    method enrichErrorMessage (line 67) | private static String enrichErrorMessage(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/exception/SchemaValidationException.java
  class SchemaValidationException (line 26) | public class SchemaValidationException extends SchemaEvolutionException {
    method SchemaValidationException (line 28) | public SchemaValidationException(
    method unsupportedChangeType (line 37) | public static SchemaValidationException unsupportedChangeType(
    method outdatedEvent (line 47) | public static SchemaValidationException outdatedEvent(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/exception/SinkWriterSchemaException.java
  class SinkWriterSchemaException (line 25) | public class SinkWriterSchemaException extends SchemaEvolutionException {
    method SinkWriterSchemaException (line 27) | public SinkWriterSchemaException(
    method applicationFailed (line 37) | public static SinkWriterSchemaException applicationFailed(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/handler/AlterTableEventHandler.java
  class AlterTableEventHandler (line 39) | @Deprecated
    method get (line 43) | @Override
    method reset (line 48) | @Override
    method apply (line 54) | @Override
    method apply (line 60) | private SeaTunnelRowType apply(SeaTunnelRowType dataType, AlterTableEv...
    method applyAddColumn (line 89) | private SeaTunnelRowType applyAddColumn(
    method applyDropColumn (line 122) | private SeaTunnelRowType applyDropColumn(
    method applyModifyColumn (line 137) | private SeaTunnelRowType applyModifyColumn(
    method applyChangeColumn (line 154) | private SeaTunnelRowType applyChangeColumn(
    method applyModifyColumn (line 176) | private SeaTunnelRowType applyModifyColumn(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/handler/AlterTableSchemaEventHandler.java
  class AlterTableSchemaEventHandler (line 40) | public class AlterTableSchemaEventHandler implements TableSchemaChangeEv...
    method get (line 43) | @Override
    method reset (line 48) | @Override
    method apply (line 54) | @Override
    method apply (line 60) | private TableSchema apply(TableSchema schema, AlterTableEvent alterTab...
    method applyAddColumn (line 89) | private TableSchema applyAddColumn(
    method applyDropColumn (line 120) | private TableSchema applyDropColumn(
    method applyModifyColumn (line 134) | private TableSchema applyModifyColumn(
    method applyChangeColumn (line 160) | private TableSchema applyChangeColumn(
    method applyModifyColumn (line 182) | private TableSchema applyModifyColumn(

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/handler/DataTypeChangeEventDispatcher.java
  class DataTypeChangeEventDispatcher (line 36) | @Deprecated
    method DataTypeChangeEventDispatcher (line 43) | public DataTypeChangeEventDispatcher() {
    method get (line 47) | @Override
    method reset (line 52) | @Override
    method apply (line 58) | @Override
    method createHandlers (line 68) | private static Map<Class, DataTypeChangeEventHandler> createHandlers() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/handler/DataTypeChangeEventHandler.java
  type DataTypeChangeEventHandler (line 24) | @Deprecated
    method get (line 27) | SeaTunnelRowType get();
    method reset (line 29) | DataTypeChangeEventHandler reset(SeaTunnelRowType dataType);
    method handle (line 31) | default SeaTunnelRowType handle(SchemaChangeEvent event) {
    method apply (line 46) | SeaTunnelRowType apply(SchemaChangeEvent event);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/handler/SchemaChangeEventHandler.java
  type SchemaChangeEventHandler (line 24) | public interface SchemaChangeEventHandler<T> extends Serializable {
    method handle (line 26) | T handle(SchemaChangeEvent event);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/handler/TableSchemaChangeEventDispatcher.java
  class TableSchemaChangeEventDispatcher (line 35) | @Slf4j
    method TableSchemaChangeEventDispatcher (line 41) | public TableSchemaChangeEventDispatcher() {
    method get (line 45) | @Override
    method reset (line 50) | @Override
    method apply (line 56) | @Override
    method createHandlers (line 66) | private static Map<Class, TableSchemaChangeEventHandler> createHandler...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/schema/handler/TableSchemaChangeEventHandler.java
  type TableSchemaChangeEventHandler (line 23) | public interface TableSchemaChangeEventHandler extends SchemaChangeEvent...
    method get (line 25) | TableSchema get();
    method reset (line 27) | TableSchemaChangeEventHandler reset(TableSchema schema);
    method handle (line 29) | default TableSchema handle(SchemaChangeEvent event) {
    method apply (line 44) | TableSchema apply(SchemaChangeEvent event);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/ArrayType.java
  class ArrayType (line 25) | public class ArrayType<T, E> implements SeaTunnelDataType<T> {
    method ArrayType (line 62) | public ArrayType(Class<T> arrayClass, SeaTunnelDataType<E> elementType) {
    method of (line 67) | @SuppressWarnings("unchecked")
    method toArrayClass (line 76) | private static Class<?> toArrayClass(SeaTunnelDataType<?> elementType) {
    method getElementType (line 81) | public SeaTunnelDataType<E> getElementType() {
    method getTypeClass (line 85) | @Override
    method getSqlType (line 90) | @Override
    method hashCode (line 95) | @Override
    method equals (line 100) | @Override
    method toString (line 113) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/BasicType.java
  class BasicType (line 23) | public class BasicType<T> implements SeaTunnelDataType<T> {
    method BasicType (line 49) | protected BasicType(Class<T> typeClass, SqlType sqlType) {
    method getTypeClass (line 54) | @Override
    method getSqlType (line 59) | @Override
    method equals (line 64) | @Override
    method hashCode (line 76) | @Override
    method toString (line 81) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/CommonOptions.java
  type CommonOptions (line 28) | @Getter
    method CommonOptions (line 74) | CommonOptions(String name, boolean supportMetadataTrans) {
    method fromName (line 79) | public static CommonOptions fromName(String name) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/CompositeType.java
  type CompositeType (line 22) | public interface CompositeType<T> extends SeaTunnelDataType<T> {
    method getChildren (line 24) | List<SeaTunnelDataType<?>> getChildren();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/DecimalArrayType.java
  class DecimalArrayType (line 20) | public class DecimalArrayType extends ArrayType {
    method DecimalArrayType (line 25) | public DecimalArrayType(DecimalType elementType) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/DecimalType.java
  class DecimalType (line 23) | public final class DecimalType extends BasicType<BigDecimal> {
    method DecimalType (line 30) | public DecimalType(int precision, int scale) {
    method equals (line 36) | @Override
    method hashCode (line 48) | @Override
    method toString (line 53) | @Override
    method getPrecision (line 58) | public int getPrecision() {
    method getScale (line 62) | public int getScale() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/LocalTimeType.java
  class LocalTimeType (line 27) | public class LocalTimeType<T extends Temporal> implements SeaTunnelDataT...
    method LocalTimeType (line 42) | private LocalTimeType(Class<T> typeClass, SqlType sqlType) {
    method getTypeClass (line 47) | @Override
    method getSqlType (line 52) | @Override
    method hashCode (line 57) | @Override
    method equals (line 62) | @Override
    method toString (line 74) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/MapType.java
  class MapType (line 30) | public class MapType<K, V> implements CompositeType<Map<K, V>> {
    method MapType (line 52) | public MapType(SeaTunnelDataType<K> keyType, SeaTunnelDataType<V> valu...
    method getKeyType (line 63) | public SeaTunnelDataType<K> getKeyType() {
    method getValueType (line 67) | public SeaTunnelDataType<V> getValueType() {
    method getTypeClass (line 71) | @SuppressWarnings("unchecked")
    method getSqlType (line 77) | @Override
    method getChildren (line 82) | @Override
    method equals (line 87) | @Override
    method hashCode (line 99) | @Override
    method toString (line 104) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/MetadataUtil.java
  class MetadataUtil (line 32) | public class MetadataUtil {
    method setDelay (line 44) | public static void setDelay(SeaTunnelRow row, Long delay) {
    method setPartition (line 48) | public static void setPartition(SeaTunnelRow row, String[] partition) {
    method setEventTime (line 52) | public static void setEventTime(SeaTunnelRow row, Long delay) {
    method setBinaryRowComplete (line 56) | public static void setBinaryRowComplete(SeaTunnelRow row) {
    method setBinaryFormat (line 60) | public static void setBinaryFormat(SeaTunnelRow row) {
    method isComplete (line 64) | public static boolean isComplete(Object row) {
    method isBinaryFormat (line 68) | public static boolean isBinaryFormat(Object row) {
    method getDatabase (line 72) | public static String getDatabase(SeaTunnelRowAccessor row) {
    method getTable (line 79) | public static String getTable(SeaTunnelRowAccessor row) {
    method getRowKind (line 86) | public static String getRowKind(SeaTunnelRowAccessor row) {
    method getPartition (line 90) | public static String[] getPartition(SeaTunnelRowAccessor row) {
    method isMetadataField (line 94) | public static boolean isMetadataField(String fieldName) {
    method checkOption (line 98) | public static <T> boolean checkOption(T row, String optionKey, boolean...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/MultipleRowType.java
  class MultipleRowType (line 26) | public class MultipleRowType
    method MultipleRowType (line 31) | public MultipleRowType(String[] tableIds, SeaTunnelRowType[] rowTypes) {
    method MultipleRowType (line 40) | public MultipleRowType(Map<String, SeaTunnelRowType> rowTypeMap) {
    method getRowType (line 45) | public SeaTunnelRowType getRowType(String tableId) {
    method getTypeClass (line 49) | @Override
    method getSqlType (line 54) | @Override
    method iterator (line 59) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/PrimitiveByteArrayType.java
  class PrimitiveByteArrayType (line 20) | public class PrimitiveByteArrayType implements SeaTunnelDataType<byte[]> {
    method PrimitiveByteArrayType (line 23) | private PrimitiveByteArrayType() {}
    method getTypeClass (line 25) | @Override
    method getSqlType (line 30) | @Override
    method hashCode (line 35) | @Override
    method equals (line 40) | @Override
    method toString (line 48) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/Record.java
  class Record (line 23) | public class Record<T> implements Serializable {
    method Record (line 27) | public Record(T data) {
    method getData (line 31) | public T getData() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/RowKind.java
  type RowKind (line 21) | public enum RowKind {
    method RowKind (line 57) | RowKind(String shortString, byte value) {
    method shortString (line 74) | public String shortString() {
    method toByteValue (line 91) | public byte toByteValue() {
    method fromByteValue (line 101) | @SuppressWarnings("MagicNumber")

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/SeaTunnelDataType.java
  type SeaTunnelDataType (line 23) | public interface SeaTunnelDataType<T> extends Serializable {
    method getTypeClass (line 26) | Class<T> getTypeClass();
    method getSqlType (line 29) | SqlType getSqlType();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/SeaTunnelRow.java
  class SeaTunnelRow (line 28) | public final class SeaTunnelRow implements Serializable {
    method SeaTunnelRow (line 41) | public SeaTunnelRow(int arity) {
    method SeaTunnelRow (line 45) | public SeaTunnelRow(Object[] fields) {
    method setField (line 49) | public void setField(int pos, Object value) {
    method setTableId (line 53) | public void setTableId(String tableId) {
    method setRowKind (line 57) | public void setRowKind(RowKind rowKind) {
    method setOptions (line 61) | public void setOptions(Map<String, Object> options) {
    method getArity (line 65) | public int getArity() {
    method getTableId (line 69) | public String getTableId() {
    method getRowKind (line 73) | public RowKind getRowKind() {
    method getOptions (line 77) | public Map<String, Object> getOptions() {
    method getFields (line 84) | public Object[] getFields() {
    method getField (line 88) | public Object getField(int pos) {
    method copy (line 92) | public SeaTunnelRow copy() {
    method copy (line 102) | public SeaTunnelRow copy(int[] indexMapping) {
    method isNullAt (line 114) | public boolean isNullAt(int pos) {
    method getBytesSize (line 118) | public int getBytesSize(SeaTunnelRowType rowType) {
    method getBytesForValue (line 130) | private int getBytesForValue(Object v, SeaTunnelDataType<?> dataType) {
    method getBytesForArray (line 214) | private int getBytesForArray(Object v, SeaTunnelDataType<?> dataType) {
    method getArrayNotNullSize (line 250) | private int getArrayNotNullSize(Object[] values) {
    method getArrayMapNotNullSize (line 260) | private int getArrayMapNotNullSize(Object v) {
    method getBytesSize (line 273) | public int getBytesSize() {
    method getBytesForValue (line 284) | private int getBytesForValue(Object v) {
    method equals (line 371) | @Override
    method hashCode (line 385) | @Override
    method toString (line 392) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/SeaTunnelRowAccessor.java
  class SeaTunnelRowAccessor (line 24) | @AllArgsConstructor
    method getArity (line 28) | public int getArity() {
    method getTableId (line 32) | public String getTableId() {
    method getRowKind (line 36) | public RowKind getRowKind() {
    method getField (line 40) | public Object getField(int pos) {
    method getFields (line 44) | public Object[] getFields() {
    method getOptions (line 48) | public Map<String, Object> getOptions() {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/SeaTunnelRowType.java
  class SeaTunnelRowType (line 25) | public class SeaTunnelRowType implements CompositeType<SeaTunnelRow> {
    method SeaTunnelRowType (line 33) | public SeaTunnelRowType(String[] fieldNames, SeaTunnelDataType<?>[] fi...
    method getTypeClass (line 41) | @Override
    method getSqlType (line 46) | @Override
    method getFieldNames (line 51) | public String[] getFieldNames() {
    method getFieldTypes (line 55) | public SeaTunnelDataType<?>[] getFieldTypes() {
    method getChildren (line 59) | @Override
    method getTotalFields (line 64) | public int getTotalFields() {
    method getFieldName (line 68) | public String getFieldName(int index) {
    method getFieldType (line 72) | public SeaTunnelDataType<?> getFieldType(int index) {
    method indexOf (line 76) | public int indexOf(String fieldName) {
    method indexOf (line 80) | public int indexOf(String fieldName, boolean throwExceptionWhenNotFoun...
    method equals (line 93) | @Override
    method hashCode (line 106) | @Override
    method toString (line 113) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/SqlType.java
  type SqlType (line 21) | public enum SqlType {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/TypeUtil.java
  class TypeUtil (line 20) | public class TypeUtil {
    method canConvert (line 23) | public static boolean canConvert(SeaTunnelDataType<?> from, SeaTunnelD...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/table/type/VectorType.java
  class VectorType (line 31) | @Experimental
    method VectorType (line 57) | protected VectorType(Class<T> typeClass, SqlType sqlType) {
    method getTypeClass (line 62) | @Override
    method getSqlType (line 67) | @Override
    method equals (line 72) | @Override
    method hashCode (line 84) | @Override
    method toString (line 89) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCCallable.java
  class MDCCallable (line 28) | public class MDCCallable<V> implements Callable<V> {
    method MDCCallable (line 32) | public MDCCallable(Callable<V> delegate) {
    method MDCCallable (line 36) | public MDCCallable(MDCContext context, Callable<V> delegate) {
    method MDCCallable (line 40) | public MDCCallable(Supplier<MDCContext> contextSupplier, Callable<V> d...
    method call (line 45) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCComparator.java
  class MDCComparator (line 23) | public class MDCComparator<T> implements Comparator<T> {
    method MDCComparator (line 27) | public MDCComparator(Comparator<T> delegate) {
    method MDCComparator (line 31) | public MDCComparator(MDCContext context, Comparator<T> delegate) {
    method MDCComparator (line 35) | public MDCComparator(Supplier<MDCContext> contextSupplier, Comparator<...
    method compare (line 40) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCConsumer.java
  class MDCConsumer (line 23) | public class MDCConsumer<T> implements Consumer<T> {
    method MDCConsumer (line 27) | public MDCConsumer(Consumer<T> delegate) {
    method MDCConsumer (line 31) | public MDCConsumer(MDCContext context, Consumer<T> delegate) {
    method MDCConsumer (line 35) | public MDCConsumer(Supplier<MDCContext> contextSupplier, Consumer<T> d...
    method accept (line 40) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCContext.java
  class MDCContext (line 49) | @Slf4j
    method MDCContext (line 64) | public MDCContext(Long jobId, Long pipelineId, Long taskId) {
    method activate (line 70) | public synchronized MDCContext activate() {
    method deactivate (line 97) | public synchronized MDCContext deactivate() {
    method close (line 122) | @Override
    method toString (line 127) | @Override
    method of (line 137) | public static MDCContext of(long jobId) {
    method of (line 141) | public static MDCContext of(long jobId, long pipelineId) {
    method of (line 145) | public static MDCContext of(long jobId, long pipelineId, long taskId) {
    method of (line 149) | public static MDCContext of(MDCContext context) {
    method current (line 153) | public static MDCContext current() {
    method valueOf (line 167) | public static MDCContext valueOf(String s) {

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCExecutor.java
  class MDCExecutor (line 23) | public class MDCExecutor implements Executor {
    method MDCExecutor (line 27) | public MDCExecutor(MDCContext context, Executor delegate) {
    method execute (line 32) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCExecutorService.java
  class MDCExecutorService (line 31) | public class MDCExecutorService extends MDCExecutor implements ExecutorS...
    method MDCExecutorService (line 35) | public MDCExecutorService(MDCContext context, ExecutorService delegate) {
    method shutdown (line 41) | @Override
    method shutdownNow (line 46) | @Override
    method isShutdown (line 51) | @Override
    method isTerminated (line 56) | @Override
    method awaitTermination (line 61) | @Override
    method submit (line 66) | @Override
    method submit (line 71) | @Override
    method submit (line 76) | @Override
    method invokeAll (line 81) | @Override
    method invokeAll (line 90) | @Override
    method invokeAny (line 102) | @Override
    method invokeAny (line 111) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCFunction.java
  class MDCFunction (line 23) | public class MDCFunction<T, R> implements Function<T, R> {
    method MDCFunction (line 27) | public MDCFunction(Function<T, R> delegate) {
    method MDCFunction (line 31) | public MDCFunction(MDCContext context, Function<T, R> delegate) {
    method MDCFunction (line 35) | public MDCFunction(Supplier<MDCContext> contextSupplier, Function<T, R...
    method apply (line 40) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCPredicate.java
  class MDCPredicate (line 23) | public class MDCPredicate<T> implements Predicate<T> {
    method MDCPredicate (line 27) | public MDCPredicate(Predicate<T> delegate) {
    method MDCPredicate (line 31) | public MDCPredicate(MDCContext context, Predicate<T> delegate) {
    method MDCPredicate (line 35) | public MDCPredicate(Supplier<MDCContext> contextSupplier, Predicate<T>...
    method test (line 40) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCRunnable.java
  class MDCRunnable (line 23) | public class MDCRunnable implements Runnable {
    method MDCRunnable (line 27) | public MDCRunnable(Runnable delegate) {
    method MDCRunnable (line 31) | public MDCRunnable(MDCContext context, Runnable delegate) {
    method MDCRunnable (line 35) | public MDCRunnable(Supplier<MDCContext> contextSupplier, Runnable dele...
    method run (line 40) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCScheduledExecutorService.java
  class MDCScheduledExecutorService (line 29) | public class MDCScheduledExecutorService extends MDCExecutorService
    method MDCScheduledExecutorService (line 34) | public MDCScheduledExecutorService(MDCContext context, ScheduledExecut...
    method schedule (line 40) | @Override
    method schedule (line 46) | @Override
    method scheduleAtFixedRate (line 52) | @Override
    method scheduleWithFixedDelay (line 59) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCStream.java
  class MDCStream (line 41) | public class MDCStream<T> implements Stream<T> {
    method MDCStream (line 45) | public MDCStream(Stream<T> delegate) {
    method MDCStream (line 49) | public MDCStream(MDCContext context, Stream<T> delegate) {
    method filter (line 54) | @Override
    method map (line 61) | @Override
    method flatMap (line 67) | @Override
    method sorted (line 73) | @Override
    method peek (line 80) | @Override
    method forEach (line 86) | @Override
    method forEachOrdered (line 91) | @Override
    method min (line 96) | @Override
    method max (line 101) | @Override
    method anyMatch (line 106) | @Override
    method allMatch (line 111) | @Override
    method noneMatch (line 116) | @Override
    method onClose (line 121) | @Override
    method sequential (line 126) | @Override
    method parallel (line 131) | @Override
    method unordered (line 136) | @Override
    method distinct (line 141) | @Override
    method sorted (line 146) | @Override
    method limit (line 151) | @Override
    method skip (line 156) | @Override
    method flatMapToInt (line 161) | @Override
    method flatMapToLong (line 166) | @Override
    method flatMapToDouble (line 171) | @Override
    method mapToInt (line 176) | @Override
    method mapToLong (line 181) | @Override
    method mapToDouble (line 186) | @Override
    method toArray (line 191) | @Override
    method toArray (line 196) | @Override
    method reduce (line 201) | @Override
    method reduce (line 206) | @Override
    method reduce (line 211) | @Override
    method collect (line 217) | @Override
    method collect (line 223) | @Override
    method count (line 228) | @Override
    method findFirst (line 233) | @Override
    method findAny (line 238) | @Override
    method iterator (line 243) | @Override
    method spliterator (line 248) | @Override
    method isParallel (line 253) | @Override
    method close (line 258) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCSupplier.java
  class MDCSupplier (line 22) | public class MDCSupplier<T> implements Supplier<T> {
    method MDCSupplier (line 26) | public MDCSupplier(Supplier<T> delegate) {
    method MDCSupplier (line 30) | public MDCSupplier(MDCContext context, Supplier<T> delegate) {
    method get (line 35) | @Override

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/tracing/MDCTracer.java
  class MDCTracer (line 54) | public class MDCTracer {
    method tracing (line 56) | public static MDCRunnable tracing(Runnable delegate) {
    method tracing (line 60) | public static MDCRunnable tracing(Long jobId, Runnable delegate) {
    method tracing (line 64) | public static MDCRunnable tracing(MDCContext context, Runnable delegat...
    method tracing (line 71) | public static <V> MDCCallable<V> tracing(Callable<V> delegate) {
    method tracing (line 75) | public static <V> MDCCallable<V> tracing(Long jobId, Callable<V> deleg...
    method tracing (line 79) | public static <V> MDCCallable<V> tracing(MDCContext context, Callable<...
    method tracing (line 86) | public static MDCExecutor tracing(Executor delegate) {
    method tracing (line 90) | public static MDCExecutor tracing(Long jobId, Executor delegate) {
    method tracing (line 94) | public static MDCExecutor tracing(MDCContext context, Executor delegat...
    method tracing (line 101) | public static MDCExecutorService tracing(ExecutorService delegate) {
    method tracing (line 105) | public static MDCExecutorService tracing(Long jobId, ExecutorService d...
    method tracing (line 109) | public static MDCExecutorService tracing(MDCContext context, ExecutorS...
    method tracing (line 116) | public static MDCScheduledExecutorService tracing(ScheduledExecutorSer...
    method tracing (line 120) | public static MDCScheduledExecutorService tracing(
    method tracing (line 125) | public static MDCScheduledExecutorService tracing(
    method tracing (line 133) | public static <T> MDCConsumer<T> tracing(Consumer<T> delegate) {
    method tracing (line 137) | public static <T> MDCConsumer<T> tracing(Long jobId, Consumer<T> deleg...
    method tracing (line 141) | public static <T> MDCConsumer<T> tracing(MDCContext context, Consumer<...
    method tracing (line 148) | public static <T, R> MDCFunction<T, R> tracing(Function<T, R> delegate) {
    method tracing (line 152) | public static <T, R> MDCFunction<T, R> tracing(Long jobId, Function<T,...
    method tracing (line 156) | public static <T, R> MDCFunction<T, R> tracing(MDCContext context, Fun...
    method tracing (line 163) | public static <T> MDCPredicate<T> tracing(Predicate<T> delegate) {
    method tracing (line 167) | public static <T> MDCPredicate<T> tracing(Long jobId, Predicate<T> del...
    method tracing (line 171) | public static <T> MDCPredicate<T> tracing(MDCContext context, Predicat...
    method tracing (line 178) | public static <T> MDCComparator<T> tracing(Comparator<T> delegate) {
    method tracing (line 182) | public static <T> MDCComparator<T> tracing(Long jobId, Comparator<T> d...
    method tracing (line 186) | public static <T> MDCComparator<T> tracing(MDCContext context, Compara...
    method tracing (line 193) | public static <T> MDCSupplier<T> tracing(Supplier<T> delegate) {
    method tracing (line 197) | public static <T> MDCSupplier<T> tracing(Long jobId, Supplier<T> deleg...
    method tracing (line 201) | public static <T> MDCSupplier<T> tracing(MDCContext context, Supplier<...
    method tracing (line 208) | public static <T> MDCStream<T> tracing(Stream<T> delegate) {
    method tracing (line 212) | public static <T> MDCStream<T> tracing(Long jobId, Stream<T> delegate) {
    method tracing (line 216) | public static <T> MDCStream<T> tracing(MDCContext context, Stream<T> d...

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/transform/Collector.java
  type Collector (line 20) | public interface Collector<T> {
    method collect (line 27) | void collect(T record);
    method close (line 30) | void close();

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/transform/SeaTunnelFlatMapTransform.java
  type SeaTunnelFlatMapTransform (line 21) | public interface SeaTunnelFlatMapTransform<T> extends SeaTunnelTransform...
    method flatMap (line 30) | List<T> flatMap(T row);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/transform/SeaTunnelMapTransform.java
  type SeaTunnelMapTransform (line 20) | public interface SeaTunnelMapTransform<T> extends SeaTunnelTransform<T> {
    method map (line 29) | T map(T row);

FILE: seatunnel-api/src/main/java/org/apache/seatunnel/api/transform/SeaTunnelTransform.java
  type SeaTunnelTransform (line 29) | public interface SeaTunnelTransform<T>
    method open (line 33) | default void open() {}
    method setTypeInfo (line 41) | @Deprecated
    method getProducedCatalogTable (line 47) | CatalogTable getProducedCatalogTable();
    method getProducedCatalogTables (line 49) | List<CatalogTable> getProducedCatalogTables();
    method mapSchemaChangeEvent (line 51) | default SchemaChangeEvent mapSchemaChangeEvent(SchemaChangeEvent schem...
    method close (line 56) | default void close() {}

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/OptionTest.java
  class OptionTest (line 23) | public class OptionTest {
    type TestMode (line 36) | public enum TestMode {
    method testEquals (line 42) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/ReadableConfigTest.java
  class ReadableConfigTest (line 37) | public class ReadableConfigTest {
    method prepare (line 42) | @BeforeAll
    method testBooleanOption (line 64) | @Test
    method testIntOption (line 79) | @Test
    method testLongOption (line 95) | @Test
    method testFloatOption (line 109) | @Test
    method testDoubleOption (line 125) | @Test
    method testStringOption (line 145) | @Test
    method testEnumOption (line 161) | @Test
    method testBasicMapOption (line 183) | @Test
    method testBasicListOption (line 208) | @Test
    method testObjectType (line 228) | @Test
    method testComplexTypeOption (line 244) | @Test
    method testEnumListOption (line 275) | @Test
    method testNumericListOption (line 288) | @Test
    method testFallbackKey (line 317) | @Test
    method testNullValue (line 332) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/util/ConditionTest.java
  class ConditionTest (line 28) | public class ConditionTest {
    method testToString (line 34) | @Test
    method testGetCount (line 41) | @Test
    method testGetTailCondition (line 46) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/util/ConfigUtilTest.java
  class ConfigUtilTest (line 30) | public class ConfigUtilTest {
    method init (line 34) | @BeforeAll
    method convertToJsonString (line 45) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/util/ConfigValidatorTest.java
  class ConfigValidatorTest (line 41) | public class ConfigValidatorTest {
    method validate (line 78) | void validate(Map<String, Object> config, OptionRule rule) {
    method testAbsolutelyRequiredOption (line 82) | @Test
    method testBundledRequiredOptions (line 105) | @Test
    method testSimpleExclusiveRequiredOptions (line 126) | @Test
    method testComplexExclusiveRequiredOptions (line 150) | @Test
    method testSimpleConditionalRequiredOptionsWithDefaultValue (line 176) | @Test
    method testSimpleConditionalRequiredOptionsWithoutDefaultValue (line 205) | @Test
    method testComplexConditionalRequiredOptions (line 234) | @Test
    method testSingleChoiceOptionDefaultValueValidator (line 271) | @Test
    method testSingleChoiceOptionValueValidator (line 282) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/util/OptionRuleTest.java
  class OptionRuleTest (line 38) | public class OptionRuleTest {
    method testBuildSuccess (line 75) | @Test
    method testVerify (line 87) | @Test
    method testEquals (line 187) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/util/OptionUtilTest.java
  class OptionUtilTest (line 29) | public class OptionUtilTest {
    method test (line 31) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/util/SingleChoiceOptionTest.java
  class SingleChoiceOptionTest (line 31) | public class SingleChoiceOptionTest {
    method test (line 33) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/util/TestOptionConfig.java
  class TestOptionConfig (line 25) | @Data

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/util/TestOptionConfigEnum.java
  type TestOptionConfigEnum (line 20) | public enum TestOptionConfigEnum {

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/env/EnvOptionRuleTest.java
  class EnvOptionRuleTest (line 26) | public class EnvOptionRuleTest {
    method testGetEnvOptionRules (line 27) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/metalake/TableSchemaDiscovererTest.java
  class TableSchemaDiscovererTest (line 52) | @ExtendWith(MockitoExtension.class)
    method testDiscoverTableSchemasWithSingleSchemaFields (line 60) | @Test
    method testDiscoverTableSchemasWithSingleSchemaSchemaUrl (line 78) | @Test
    method testDiscoverTableSchemasWithMultipleTablesFields (line 105) | @Test
    method testDiscoverTableSchemasWithMultipleTablesSchemaUrl (line 127) | @Test
    method testDiscoverTableSchemasWithMultipleTablesMixedFieldsAndSchemaUrl (line 165) | @Test
    method testGetMetaLakeTypeFromSourceOptions (line 192) | @Test
    method testGetMetaLakeTypeFromEnvOptions (line 208) | @Test
    method testGetMetaLakeTypeFromSystemEnvironment (line 224) | @Test
    method testGetMetaLakeTypeDefaultValue (line 240) | @Test
    method testGetMetaLakeTypePrioritySourceOverEnv (line 254) | @Test
    method testGetMetaLakeTypePriorityEnvOverSystem (line 272) | @Test
    method testDiscoverTableSchemaWithSingleParquetNoSchema (line 289) | @Test
    method testDiscoverTableSchemasWithMultipleTablesNoSchemaMixedFormat (line 313) | @Test
    method loadConfig (line 361) | private Config loadConfig(String configPath) throws URISyntaxException {
    method createMockTableSchemaNode (line 374) | private JsonNode createMockTableSchemaNode(String tableName) {

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/metalake/gravitino/GravitinoClientTest.java
  class GravitinoClientTest (line 45) | @ExtendWith(MockitoExtension.class)
    method testGetTableSchemaPathWithFullUrl (line 61) | @Test
    method testIOExceptionRetrySuccessAfterFailure (line 73) | @Test
    method testIOExceptionRetryExhaustedThrowsException (line 92) | @Test
    method testIOExceptionRetryWithSingleFailureThenSuccess (line 112) | @Test
    method testRetryableStatus503SuccessAfterRetry (line 129) | @Test
    method testRetryableStatus500IsRetried (line 157) | @Test
    method testNonRetryableStatus404FailsImmediately (line 174) | @Test
    method testMixedFailuresBeforeSuccess (line 188) | @Test
    method setupMockResponse (line 207) | private void setupMockResponse(int statusCode, String jsonContent) thr...
    method setupMockResponseStatusLine (line 219) | private void setupMockResponseStatusLine(int statusCode) {
    method resetMocks (line 225) | private void resetMocks() {
    method createMockResponse (line 237) | private CloseableHttpResponse createMockResponse(int statusCode, Strin...

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/metalake/gravitino/GravitinoTableSchemaConvertorTest.java
  class GravitinoTableSchemaConvertorTest (line 44) | public class GravitinoTableSchemaConvertorTest {
    method testBooleanType (line 50) | @Test
    method testByteType (line 64) | @Test
    method testByteUnsignedType (line 78) | @Test
    method testShortType (line 91) | @Test
    method testShortUnsignedType (line 104) | @Test
    method testIntegerType (line 117) | @Test
    method testIntegerUnsignedType (line 130) | @Test
    method testLongType (line 143) | @Test
    method testLongUnsignedType (line 155) | @Test
    method testFloatType (line 168) | @Test
    method testDoubleType (line 181) | @Test
    method testStringType (line 194) | @Test
    method testVarcharType (line 207) | @Test
    method testCharType (line 221) | @Test
    method testUuidType (line 235) | @Test
    method testIntervalYearType (line 247) | @Test
    method testIntervalDayType (line 260) | @Test
    method testDateType (line 273) | @Test
    method testTimeType (line 285) | @Test
    method testTimestampType (line 297) | @Test
    method testTimestampTzType (line 310) | @Test
    method testTimestampTypeWithPrecision (line 323) | @Test
    method testTimestampTzTypeWithPrecision (line 337) | @Test
    method testBinaryType (line 351) | @Test
    method testFixedType (line 364) | @Test
    method testDecimalType (line 378) | @Test
    method testDecimalTypeWithDifferentPrecision (line 392) | @Test
    method testDecimalTypeUpperCase (line 406) | @Test
    method testDecimalTypeWithSpaces (line 420) | @Test
    method testListTypeWithSimpleElementType (line 434) | @Test
    method testListTypeWithStringElementType (line 447) | @Test
    method testListTypeWithDecimalElementType (line 460) | @Test
    method testMapTypeWithStringKeyIntValue (line 473) | @Test
    method testMapTypeWithIntKeyLongValue (line 487) | @Test
    method testMapTypeWithComplexTypes (line 501) | @Test
    method testStructTypeSimple (line 515) | @Test
    method testStructTypeNested (line 532) | @Test
    method testStructTypeWithComplexFields (line 561) | @Test
    method testStructWithoutFields (line 589) | @Test
    method testUnsupportedUnionType (line 603) | @Test
    method testUnsupportedUnknownType (line 617) | @Test
    method testListWithoutElementType (line 631) | @Test
    method testMapWithoutKeyOrValueType (line 645) | @Test
    method testPrimaryKey (line 659) | @Test
    method testPrimaryKeyWithMultipleColumns (line 673) | @Test
    method testUniqueKey (line 688) | @Test
    method testMultipleUniqueKeys (line 705) | @Test
    method testPrimaryKeyAndUniqueKey (line 718) | @Test
    method testEmptyColumns (line 733) | @Test
    method testNoColumnsField (line 745) | @Test
    method testCaseInsensitiveTypeMatching (line 754) | @Test
    method testMixedCaseTypeWithParameters (line 773) | @Test
    method testBuildCatalogTableWithHiveMetadata (line 805) | @Test
    method testBuildCatalogTableWithPostgresMetadata (line 898) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/sink/DefaultSaveModeHandlerTest.java
  class DefaultSaveModeHandlerTest (line 44) | public class DefaultSaveModeHandlerTest {
    method setup (line 49) | @BeforeEach
    method shouldTruncateExistingTable (line 63) | @Test
    method shouldNotTruncateNewlyCreatedTable (line 83) | @Test
    method shouldNotTruncateRecreatedTable (line 105) | @Test
    method handlesErrorWhenSchemaNotExist (line 127) | @Test
    method createsSchemaWhenNotExist (line 143) | @Test
    method recreatesSchemaWhenNotExist (line 163) | @Test
    method createCatalogTable (line 182) | private CatalogTable createCatalogTable(String tableName) {
    method createHandler (line 186) | private DefaultSaveModeHandler createHandler(

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/sink/TablePlaceholderProcessorTest.java
  class TablePlaceholderProcessorTest (line 40) | public class TablePlaceholderProcessorTest {
    method testSinkOptions (line 63) | @Test
    method testPartitionKeysPlaceholderWithEmptyPartitionKeys (line 84) | @Test
    method testSinkOptionsWithNoTablePath (line 96) | @Test
    method testSinkOptionsWithExcludeKeys (line 117) | @Test
    method testSinkOptionsWithMultiTable (line 137) | @Test
    method createConfig (line 176) | private static ReadonlyConfig createConfig() {
    method createTestTableWithNoDatabaseAndSchemaName (line 192) | private static CatalogTable createTestTableWithNoDatabaseAndSchemaName...
    method createTestTable (line 240) | private static CatalogTable createTestTable() {

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableSinkAggregatedCommitterTest.java
  class MultiTableSinkAggregatedCommitterTest (line 33) | public class MultiTableSinkAggregatedCommitterTest {
    method testInitBeInvoked (line 35) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableSinkCommitterTest.java
  class MultiTableSinkCommitterTest (line 33) | class MultiTableSinkCommitterTest {
    method testRouteByTableIdentifierForCommitAndAbort (line 35) | @Test
    class RecordingSinkCommitter (line 69) | private static class RecordingSinkCommitter implements SinkCommitter<O...
      method commit (line 74) | @Override
      method abort (line 80) | @Override

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableSinkWriterTest.java
  class MultiTableSinkWriterTest (line 41) | public class MultiTableSinkWriterTest {
    method testPrepareCommitState (line 43) | @Test
    class TestSinkWriter (line 65) | static class TestSinkWriter
      method write (line 68) | @Override
      method prepareCommit (line 71) | @Override
      method snapshotState (line 76) | @Override
      method abortPrepare (line 81) | @Override
      method close (line 84) | @Override
    class TestSinkWriterContext (line 88) | static class TestSinkWriterContext implements SinkWriter.Context {
      method getIndexOfSubtask (line 90) | @Override
      method getMetricsContext (line 95) | @Override
      method getEventListener (line 100) | @Override
    class TestSinkState (line 106) | @Data

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/CatalogTableTest.java
  class CatalogTableTest (line 37) | public class CatalogTableTest {
    method testCatalogTableModifyOptionsOrPartitionKeys (line 39) | @Test
    method testReadCatalogTableWithUnsupportedType (line 52) | @Test
    method testCatalogTableWithIllegalFieldNames (line 99) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtilTest.java
  class CatalogTableUtilTest (line 50) | public class CatalogTableUtilTest {
    method testSimpleSchemaParse (line 51) | @Test
    method testComplexSchemaParse (line 65) | @Test
    method testSpecialSchemaParse (line 91) | @Test
    method testCatalogUtilGetCatalogTable (line 102) | @Test
    method testDefaultTablePath (line 143) | @Test
    method testGenericRowSchemaTest (line 158) | @Test
    method testPartitionKeysInSchemaConfig (line 194) | @Test
    method getTestConfigFile (line 203) | public static String getTestConfigFile(String configFile)

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/InMemoryCatalog.java
  class InMemoryCatalog (line 43) | @Slf4j
    method InMemoryCatalog (line 53) | InMemoryCatalog(String catalogName, ReadonlyConfig options) {
    method addDefaultTable (line 61) | private void addDefaultTable() {
    method open (line 139) | @Override
    method close (line 151) | @Override
    method name (line 156) | @Override
    method getDefaultDatabase (line 161) | @Override
    method truncateTable (line 166) | @Override
    method databaseExists (line 172) | @Override
    method listDatabases (line 177) | @Override
    method listTables (line 182) | @Override
    method tableExists (line 194) | @Override
    method getTable (line 203) | @Override
    method createTable (line 230) | @Override
    method dropTable (line 249) | @Override
    method createDatabase (line 268) | @Override
    method dropDatabase (line 282) | @Override

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/InMemoryCatalogFactory.java
  class InMemoryCatalogFactory (line 27) | @AutoService(Factory.class)
    method createCatalog (line 29) | @Override
    method factoryIdentifier (line 34) | @Override
    method optionRule (line 39) | @Override

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/InMemoryCatalogOptionRule.java
  class InMemoryCatalogOptionRule (line 23) | public class InMemoryCatalogOptionRule {

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/SeaTunnelDataTypeConvertorUtilTest.java
  class SeaTunnelDataTypeConvertorUtilTest (line 30) | public class SeaTunnelDataTypeConvertorUtilTest {
    method testParseWithUnsupportedType (line 32) | @Test
    method testCompatibleTypeDeclare (line 98) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/schema/BaseConfigParserTest.java
  class BaseConfigParserTest (line 32) | public class BaseConfigParserTest {
    method getConfig (line 34) | protected Config getConfig(String configFile) throws FileNotFoundExcep...
    method getReadonlyConfig (line 38) | protected ReadonlyConfig getReadonlyConfig(String configFile)
    method getTestConfigFile (line 43) | private String getTestConfigFile(String configFile)

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParserTest.java
  class ReadonlyConfigParserTest (line 35) | class ReadonlyConfigParserTest extends BaseConfigParserTest {
    method parseColumn (line 40) | @Test
    method parseField (line 51) | @Test
    method assertPrimaryKey (line 62) | private void assertPrimaryKey(TableSchema tableSchema) {
    method assertConstraintKey (line 68) | private void assertConstraintKey(TableSchema tableSchema) {
    method assertColumn (line 80) | private void assertColumn(TableSchema tableSchema, boolean comeFromCol...

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/table/schema/event/EventTest.java
  class EventTest (line 29) | public class EventTest {
    method testTableColumnEventInstanceOf (line 31) | @Test
    method getEventType (line 68) | private EventType getEventType(AlterTableColumnEvent event) {

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/table/type/SeaTunnelRowTest.java
  class SeaTunnelRowTest (line 31) | public class SeaTunnelRowTest {
    method testForRowSize (line 33) | @Test
    method testWithLinkHashMap (line 130) | @Test
    method testWithMapInterface (line 138) | @Test

FILE: seatunnel-api/src/test/java/org/apache/seatunnel/api/tracing/MDCTracerTest.java
  class MDCTracerTest (line 33) | public class MDCTracerTest {
    method testMDCTracedRunnable (line 35) | @Test
    method testMDCTracedCallable (line 61) | @Test
    method testMDCTracedSupplier (line 89) | @Test
    method testMDCTracedExecutorService (line 126) | @Test
    method testMDCTracedStream (line 255) | @Test
    method testMDCContext (line 396) | @Test

FILE: seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ChineseCharacterCheckTest.java
  class ChineseCharacterCheckTest (line 43) | @Slf4j
    type CheckScope (line 51) | public enum CheckScope {
    method checkChineseCharactersInAll (line 60) | @Disabled("Currently only checking comments")
    method checkChineseCharactersInCommentsOnly (line 66) | @Test
    method checkChineseCharactersInCodeOnly (line 71) | @Disabled("Currently only checking comments")
    method checkChineseCharacters (line 77) | private void checkChineseCharacters(CheckScope scope) {
    class ChineseCharacterVisitor (line 155) | private static class ChineseCharacterVisitor extends VoidVisitorAdapte...
      method ChineseCharacterVisitor (line 159) | public ChineseCharacterVisitor(Path filePath, List<String> filesWith...
      method visit (line 164) | @Override

FILE: seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ConnectorOptionCheckTest.java
  class ConnectorOptionCheckTest (line 43) | @Slf4j
    method checkConnectorOptionExist (line 52) | @Test

FILE: seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ImportClassCheckTest.java
  class ImportClassCheckTest (line 50) | @Slf4j
    method beforeAll (line 60) | @BeforeAll
    method commonLang2Check (line 86) | @Test
    method guavaShadeCheck (line 112) | @Test
    method jacksonShadeCheck (line 120) | @Test
    method jettyShadeCheck (line 134) | @Test
    method hikariShadeCheck (line 142) | @Test
    method janinoShadeCheck (line 150) | @Test
    method commonLang3Check (line 159) | @Test
    method javaUtilCompletableFutureCheck (line 168) | @Test
    method checkImportClassPrefixWithAll (line 184) | private Map<String, List<String>> checkImportClassPrefixWithAll(List<S...
    method checkImportClassPrefixWithExclude (line 188) | private Map<String, List<String>> checkImportClassPrefixWithExclude(
    method checkImportClassPrefixWithInclude (line 193) | private Map<String, List<String>> checkImportClassPrefixWithInclude(
    method checkImportClassPrefix (line 198) | private Map<String, List<String>> checkImportClassPrefix(
    method shadeErrorMsg (line 240) | private String shadeErrorMsg(String checkType, Map<String, List<String...
    method errorMsg (line 248) | private String errorMsg(String message, Map<String, List<String>> erro...
    method getImportClassLineNum (line 259) | private String getImportClassLineNum(ImportDeclaration importDeclarati...
    method cleanup (line 264) | @AfterAll

FILE: seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/SerialVersionUIDCheckerTest.java
  class SerialVersionUIDCheckerTest (line 58) | @ExtendWith(SerialVersionUIDCheckerTest.TestResultLogger.class)
    method setupTypeSolver (line 79) | private static void setupTypeSolver(CombinedTypeSolver typeSolver) {
    method checkSerialVersionUID (line 95) | @Test
    method findConnectorClassPaths (line 121) | private List<Path> findConnectorClassPaths() {
    method populateClassDeclarationMap (line 137) | private void populateClassDeclarationMap(Path path) {
    method checkClassPath (line 164) | private void checkClassPath(Path path, List<String> missingSerialVersi...
    method implementsSeaTunnelSourceOrSink (line 186) | private boolean implementsSeaTunnelSourceOrSink(ClassOrInterfaceDeclar...
    method checkImplementedTypes (line 196) | private void checkImplementedTypes(
    method checkClassType (line 217) | private void checkClassType(
    method isSerializable (line 251) | private boolean isSerializable(ResolvedReferenceType resolvedType) {
    method hasSerialVersionUID (line 259) | private boolean hasSerialVersionUID(ResolvedReferenceTypeDeclaration t...
    method isAbstractClass (line 265) | private boolean isAbstractClass(ResolvedReferenceTypeDeclaration typeD...
    method generateErrorMessage (line 283) | private String generateErrorMessage(List<String> missingSerialVersionU...
    class TestResultLogger (line 311) | public static class TestResultLogger implements TestWatcher {
      method testSuccessful (line 312) | @Override
      method testFailed (line 317) | @Override
    method cleanup (line 323) | @AfterAll

FILE: seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/SpotlessImportReplacementTest.java
  class SpotlessImportReplacementTest (line 29) | @Slf4j
    method testGuavaImportReplacement (line 53) | @Test
    method testJettyImportReplacement (line 73) | @Test
    method testHikariImportReplacement (line 93) | @Test
    method testJaninoImportReplacement (line 113) | @Test
    method testAllImportReplacements (line 141) | @ParameterizedTest
    method testNoReplacementForAlreadyShadedImports (line 167) | @Test

FILE: seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/UTClassNameCheckTest.java
  class UTClassNameCheckTest (line 42) | @Slf4j
    method checkUTClassName (line 47) | @Test

FILE: seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/file/AllFileSpecificationCheckTest.java
  class AllFileSpecificationCheckTest (line 40) | @Slf4j
    method beforeAll (line 46) | @BeforeAll
    method testFileNotContainsSourceTableNameAndResultTableName (line 103) | @Test

FILE: seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/file/MarkdownTest.java
  class MarkdownTest (line 38) | public class MarkdownTest {
    method setup (line 44) | @BeforeAll
    method testChineseDocFileNameContainsInEnglishVersionDoc (line 54) | @Test
    method fileName (line 90) | private List<String> fileName(Path docDirectory) {
    method testPrimaryHeadersHaveNoTextAbove (line 101) | @Test
    method testAllHeaderNotEndWithSymbol (line 166) | @Test
    method testConnectorDocWithChangeLogFlagAndFile (line 196) | @Test

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/Constants.java
  class Constants (line 20) | public final class Constants {
    method Constants (line 58) | private Constants() {}

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/Handover.java
  class Handover (line 26) | public final class Handover<T> implements Closeable {
    method isEmpty (line 33) | public boolean isEmpty() throws Exception {
    method pollNext (line 40) | public Optional<T> pollNext() throws Exception {
    method produce (line 49) | public void produce(final T element) throws InterruptedException, Clos...
    method reportError (line 56) | public void reportError(Throwable t) {
    method close (line 68) | @Override
    method rethrowException (line 78) | public static void rethrowException(Throwable t, String parentMessage)...
    class ClosedException (line 88) | public static final class ClosedException extends Exception {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/config/CheckConfigUtil.java
  class CheckConfigUtil (line 27) | public final class CheckConfigUtil {
    method CheckConfigUtil (line 29) | private CheckConfigUtil() {}
    method check (line 32) | @Deprecated
    method checkAllExists (line 37) | public static CheckResult checkAllExists(Config config, String... para...
    method checkAtLeastOneExists (line 54) | public static CheckResult checkAtLeastOneExists(Config config, String....
    method isValidParam (line 77) | public static boolean isValidParam(Config config, String param) {
    method mergeCheckResults (line 88) | public static CheckResult mergeCheckResults(CheckResult... checkResult...

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/config/CheckResult.java
  class CheckResult (line 22) | @Data
    method CheckResult (line 31) | private CheckResult(boolean success, String msg) {
    method success (line 37) | public static CheckResult success() {
    method error (line 45) | public static CheckResult error(String msg) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/config/Common.java
  class Common (line 39) | public class Common {
    method Common (line 43) | private Common() {
    method setDeployMode (line 61) | public static void setDeployMode(DeployMode mode) {
    method setStarter (line 65) | public static void setStarter(boolean inStarter) {
    method getDeployMode (line 69) | public static DeployMode getDeployMode() {
    method getSeaTunnelHome (line 73) | public static String getSeaTunnelHome() {
    method setSeaTunnelHome (line 89) | @VisibleForTesting
    method appRootDir (line 102) | public static Path appRootDir() {
    method appStarterDir (line 126) | public static Path appStarterDir() {
    method pluginRootDir (line 131) | public static Path pluginRootDir() {
    method connectorDir (line 136) | public static Path connectorDir() {
    method libDir (line 141) | public static Path libDir() {
    method getLibJars (line 146) | public static List<Path> getLibJars() {
    method getThirdPartyJars (line 161) | public static Set<Path> getThirdPartyJars(String paths) {
    method pluginTarball (line 170) | public static Path pluginTarball() {
    method getPluginsJarDependenciesWithoutConnectorDependency (line 175) | public static List<Path> getPluginsJarDependenciesWithoutConnectorDepe...

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/config/ConfigRuntimeException.java
  class ConfigRuntimeException (line 20) | public class ConfigRuntimeException extends RuntimeException {
    method ConfigRuntimeException (line 22) | public ConfigRuntimeException() {
    method ConfigRuntimeException (line 26) | public ConfigRuntimeException(String message) {
    method ConfigRuntimeException (line 30) | public ConfigRuntimeException(String message, Throwable cause) {
    method ConfigRuntimeException (line 34) | public ConfigRuntimeException(Throwable cause) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/config/DeployMode.java
  type DeployMode (line 26) | public enum DeployMode {
    method DeployMode (line 37) | DeployMode(String deployMode) {
    method getDeployMode (line 41) | public String getDeployMode() {
    method from (line 49) | public static Optional<DeployMode> from(String deployMode) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/config/TypesafeConfigUtils.java
  class TypesafeConfigUtils (line 29) | public final class TypesafeConfigUtils {
    method TypesafeConfigUtils (line 31) | private TypesafeConfigUtils() {}
    method hasSubConfig (line 40) | public static boolean hasSubConfig(Config source, String prefix) {
    method getConfig (line 56) | @SuppressWarnings("unchecked")
    method getConfigList (line 86) | public static List<? extends Config> getConfigList(
    method configToMap (line 91) | public static Map<String, String> configToMap(Config config) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/constants/CollectionConstants.java
  class CollectionConstants (line 20) | public class CollectionConstants {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/constants/EngineType.java
  type EngineType (line 21) | public enum EngineType {
    method EngineType (line 33) | EngineType(String engine, String starterJarName, String starterShellNa...
    method getEngine (line 39) | public String getEngine() {
    method getStarterJarName (line 43) | public String getStarterJarName() {
    method getStarterShellName (line 47) | public String getStarterShellName() {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/constants/JobMode.java
  type JobMode (line 20) | public enum JobMode {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/constants/MetaLakeType.java
  type MetaLakeType (line 21) | public enum MetaLakeType {
    method MetaLakeType (line 26) | MetaLakeType(String type) {
    method getType (line 30) | public String getType() {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/constants/PluginType.java
  type PluginType (line 21) | public enum PluginType {
    method PluginType (line 28) | PluginType(String type) {
    method getType (line 32) | public String getType() {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/exception/CommonError.java
  class CommonError (line 61) | public class CommonError {
    method fileOperationFailed (line 65) | public static SeaTunnelRuntimeException fileOperationFailed(
    method fileOperationFailed (line 74) | public static SeaTunnelRuntimeException fileOperationFailed(
    method fileNotExistFailed (line 83) | public static SeaTunnelRuntimeException fileNotExistFailed(
    method writeSeaTunnelRowFailed (line 92) | public static SeaTunnelRuntimeException writeSeaTunnelRowFailed(
    method unsupportedDataType (line 100) | public static SeaTunnelRuntimeException unsupportedDataType(
    method unsupportedVersion (line 109) | public static SeaTunnelRuntimeException unsupportedVersion(String iden...
    method unsupportedEncoding (line 116) | public static SeaTunnelRuntimeException unsupportedEncoding(String enc...
    method convertToSeaTunnelTypeError (line 121) | public static SeaTunnelRuntimeException convertToSeaTunnelTypeError(
    method convertToSeaTunnelTypeError (line 131) | public static SeaTunnelRuntimeException convertToSeaTunnelTypeError(
    method convertToConnectorTypeError (line 140) | public static SeaTunnelRuntimeException convertToConnectorTypeError(
    method convertToConnectorPropsBlankError (line 150) | public static SeaTunnelRuntimeException convertToConnectorPropsBlankEr...
    method convertToConnectorTypeError (line 158) | public static SeaTunnelRuntimeException convertToConnectorTypeError(
    method getCatalogTableWithUnsupportedType (line 167) | public static SeaTunnelRuntimeException getCatalogTableWithUnsupported...
    method getCatalogTablesWithUnsupportedType (line 180) | public static SeaTunnelRuntimeException getCatalogTablesWithUnsupporte...
    method jsonOperationError (line 195) | public static SeaTunnelRuntimeException jsonOperationError(String iden...
    method jsonOperationError (line 199) | public static SeaTunnelRuntimeException jsonOperationError(
    method unsupportedOperation (line 213) | public static SeaTunnelRuntimeException unsupportedOperation(
    method sqlTemplateHandledError (line 221) | public static SeaTunnelRuntimeException sqlTemplateHandledError(
    method unsupportedArrayGenericType (line 236) | public static SeaTunnelRuntimeException unsupportedArrayGenericType(
    method unsupportedRowKind (line 245) | public static SeaTunnelRuntimeException unsupportedRowKind(
    method writeRowErrorWithSchemaIncompatibleSchema (line 254) | public static SeaTunnelRuntimeException writeRowErrorWithSchemaIncompa...
    method writeRowErrorWithFieldsCountNotMatch (line 268) | public static SeaTunnelRuntimeException writeRowErrorWithFieldsCountNo...
    method formatDateTimeError (line 278) | public static SeaTunnelRuntimeException formatDateTimeError(String dat...
    method formatDateError (line 285) | public static SeaTunnelRuntimeException formatDateError(String date, S...
    method unsupportedMethod (line 292) | public static SeaTunnelRuntimeException unsupportedMethod(
    method illegalArgument (line 300) | public static SeaTunnelRuntimeException illegalArgument(String argumen...
    method closeFailed (line 307) | public static SeaTunnelRuntimeException closeFailed(String identifier,...
    method seatunnelRowSerializeFailed (line 313) | public static SeaTunnelRuntimeException seatunnelRowSerializeFailed(

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/exception/CommonErrorCode.java
  type CommonErrorCode (line 21) | public enum CommonErrorCode implements SeaTunnelErrorCode {
    method CommonErrorCode (line 89) | CommonErrorCode(String code, String description) {
    method getCode (line 94) | @Override
    method getDescription (line 99) | @Override

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/exception/CommonErrorCodeDeprecated.java
  type CommonErrorCodeDeprecated (line 25) | @Deprecated
    method CommonErrorCodeDeprecated (line 48) | CommonErrorCodeDeprecated(String code, String description) {
    method getCode (line 53) | @Override
    method getDescription (line 58) | @Override

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/exception/ExceptionParamsUtil.java
  class ExceptionParamsUtil (line 26) | public class ExceptionParamsUtil {
    method getParams (line 37) | public static List<String> getParams(String description) {
    method getDescription (line 48) | public static String getDescription(String descriptionTemplate, Map<St...
    method assertParamsMatchWithDescription (line 58) | public static void assertParamsMatchWithDescription(

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/exception/SeaTunnelErrorCode.java
  type SeaTunnelErrorCode (line 21) | public interface SeaTunnelErrorCode {
    method getCode (line 27) | String getCode();
    method getDescription (line 34) | String getDescription();
    method getErrorMessage (line 36) | default String getErrorMessage() {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/exception/SeaTunnelRuntimeException.java
  class SeaTunnelRuntimeException (line 28) | public class SeaTunnelRuntimeException extends RuntimeException {
    method SeaTunnelRuntimeException (line 35) | public SeaTunnelRuntimeException(SeaTunnelErrorCode seaTunnelErrorCode...
    method SeaTunnelRuntimeException (line 43) | public SeaTunnelRuntimeException(
    method SeaTunnelRuntimeException (line 52) | public SeaTunnelRuntimeException(SeaTunnelErrorCode seaTunnelErrorCode...
    method SeaTunnelRuntimeException (line 60) | public SeaTunnelRuntimeException(
    method SeaTunnelRuntimeException (line 67) | public SeaTunnelRuntimeException(
    method getSeaTunnelErrorCode (line 76) | public SeaTunnelErrorCode getSeaTunnelErrorCode() {
    method getParams (line 80) | public Map<String, String> getParams() {
    method getParamsValueAsMap (line 84) | public Map<String, String> getParamsValueAsMap(String key) {
    method getParamsValueAs (line 93) | public <T> T getParamsValueAs(String key) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/DateTimeUtils.java
  class DateTimeUtils (line 43) | public class DateTimeUtils {
    method matchDateTimeFormatter (line 224) | public static DateTimeFormatter matchDateTimeFormatter(String dateTime) {
    method parse (line 271) | public static LocalDateTime parse(String dateTime, DateTimeFormatter d...
    method parse (line 297) | public static LocalDateTime parse(String dateTime) {
    method parse (line 302) | public static LocalDateTime parse(String dateTime, Formatter formatter) {
    method parse (line 306) | public static LocalDateTime parse(long timestamp) {
    method parse (line 310) | public static LocalDateTime parse(long timestamp, ZoneId zoneId) {
    method toString (line 315) | public static String toString(LocalDateTime dateTime, Formatter format...
    method toString (line 319) | public static String toString(OffsetDateTime offsetDateTime, Formatter...
    method toString (line 323) | public static String toString(Temporal temporal, Formatter formatter) {
    method toString (line 333) | public static String toString(long timestamp, Formatter formatter) {
    type Formatter (line 338) | public enum Formatter {
      method Formatter (line 355) | Formatter(String value) {
      method getValue (line 359) | public String getValue() {
      method parse (line 363) | public static Formatter parse(String format) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/DateUtils.java
  class DateUtils (line 40) | public class DateUtils {
    method matchDateFormatter (line 167) | public static DateTimeFormatter matchDateFormatter(String dateTime) {
    method parse (line 176) | public static LocalDate parse(String date) {
    method parse (line 181) | public static LocalDate parse(String date, DateTimeFormatter dateTimeF...
    method parse (line 185) | public static LocalDate parse(String date, Formatter formatter) {
    method toString (line 189) | public static String toString(LocalDate date, Formatter formatter) {
    method toString (line 193) | public static String toString(Temporal temporal, Formatter formatter) {
    type Formatter (line 197) | public enum Formatter {
      method Formatter (line 204) | Formatter(String value) {
      method getValue (line 208) | public String getValue() {
      method parse (line 212) | public static Formatter parse(String format) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/EncodingUtils.java
  class EncodingUtils (line 27) | public class EncodingUtils {
    method tryParseCharset (line 35) | public static Charset tryParseCharset(String encoding) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/ExceptionUtils.java
  class ExceptionUtils (line 25) | public class ExceptionUtils {
    method ExceptionUtils (line 26) | private ExceptionUtils() {}
    method getMessage (line 28) | public static String getMessage(Throwable e) {
    method getRootException (line 44) | public static Throwable getRootException(@NonNull Throwable e) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/FileUtils.java
  class FileUtils (line 45) | @Slf4j
    method searchJarFiles (line 48) | public static List<URL> searchJarFiles(@NonNull Path directory) throws...
    method readFileToStr (line 69) | public static String readFileToStr(Path path) {
    method writeStringToFile (line 78) | public static void writeStringToFile(String filePath, String str) {
    method createParentFile (line 93) | public static void createParentFile(File file) {
    method createNewFile (line 106) | public static void createNewFile(String filePath) throws IOException {
    method getFileLineNumber (line 124) | public static Long getFileLineNumber(@NonNull String filePath) {
    method isFileExist (line 132) | public static boolean isFileExist(String filePath) {
    method getFileLineNumberFromDir (line 143) | public static Long getFileLineNumberFromDir(@NonNull String dirPath) {
    method createNewDir (line 170) | public static void createNewDir(@NonNull String dirPath) {
    method deleteFile (line 181) | public static void deleteFile(@NonNull String filePath) {
    method deleteFiles (line 191) | private static void deleteFiles(@NonNull File file) {
    method listFile (line 208) | public static List<File> listFile(String dirPath) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/JdbcUrlUtil.java
  class JdbcUrlUtil (line 29) | public final class JdbcUrlUtil {
    method JdbcUrlUtil (line 34) | private JdbcUrlUtil() {}
    method getUrlInfo (line 36) | public static JdbcUrlUtil.UrlInfo getUrlInfo(String url) {
    class UrlInfo (line 52) | @Data
      method UrlInfo (line 62) | public UrlInfo(
      method getUrlWithDatabase (line 77) | public Optional<String> getUrlWithDatabase() {
      method getDefaultDatabase (line 83) | public Optional<String> getDefaultDatabase() {
      method getUrlWithDatabase (line 89) | public String getUrlWithDatabase(String database) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/JsonUtils.java
  class JsonUtils (line 54) | public class JsonUtils {
    method JsonUtils (line 69) | private JsonUtils() {
    method createArrayNode (line 73) | public static ArrayNode createArrayNode() {
    method createObjectNode (line 77) | public static ObjectNode createObjectNode() {
    method toJsonNode (line 81) | public static JsonNode toJsonNode(Object obj) {
    method stringToJsonNode (line 85) | public static JsonNode stringToJsonNode(String obj) throws JsonProcess...
    method readTree (line 89) | public static JsonNode readTree(byte[] obj) throws IOException {
    method readTree (line 93) | public static JsonNode readTree(InputStream obj) throws IOException {
    method toJsonString (line 104) | public static String toJsonString(Object object, SerializationFeature ...
    method parseObject (line 126) | public static <T> T parseObject(String json, Class<T> clazz) {
    method toList (line 146) | public static <T> List<T> toList(String json, Class<T> clazz) {
    method findValue (line 169) | public static String findValue(JsonNode jsonNode, String fieldName) {
    method toMap (line 185) | public static Map<String, String> toMap(String json) {
    method toMap (line 189) | public static Map<String, Object> toMap(JsonNode jsonNode) {
    method toStringMap (line 194) | public static Map<String, String> toStringMap(JsonNode jsonNode) {
    method toMap (line 220) | public static <K, V> Map<K, V> toMap(String json, Class<K> classK, Cla...
    method parseObject (line 240) | public static <T> T parseObject(String json, TypeReference<T> type) {
    method toJsonString (line 258) | public static String toJsonString(Object object) {
    method parseObject (line 266) | public static ObjectNode parseObject(String text) {
    method parseObject (line 270) | public static ObjectNode parseObject(byte[] content) {
    method parseArray (line 279) | public static ArrayNode parseArray(String text) {
    class JsonDataSerializer (line 288) | public static class JsonDataSerializer extends JsonSerializer<String> {
      method serialize (line 290) | @Override
    class JsonDataDeserializer (line 298) | public static class JsonDataDeserializer extends JsonDeserializer<Stri...
      method deserialize (line 300) | @Override
    method isJsonArray (line 311) | public static boolean isJsonArray(String jsonString) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/ParserException.java
  class ParserException (line 20) | public class ParserException extends RuntimeException {
    method ParserException (line 30) | public ParserException() {}
    method ParserException (line 37) | public ParserException(final String msg) {
    method ParserException (line 46) | public ParserException(final Throwable cause) {
    method ParserException (line 57) | public ParserException(final String msg, final Throwable cause) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/PlaceholderUtils.java
  class PlaceholderUtils (line 25) | public class PlaceholderUtils {
    method replacePlaceholders (line 27) | public static String replacePlaceholders(String input, String placehol...
    method replacePlaceholders (line 31) | public static String replacePlaceholders(
    method replacePlaceholders (line 54) | public static String replacePlaceholders(String input, JsonNode suppor...

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/ReflectionUtils.java
  class ReflectionUtils (line 25) | public class ReflectionUtils {
    method getDeclaredMethod (line 27) | public static Optional<Method> getDeclaredMethod(
    method getField (line 45) | public static Optional<Object> getField(Object object, Class<?> clazz,...
    method getField (line 65) | public static Optional<Object> getField(Object object, String fieldNam...
    method setField (line 69) | public static void setField(Object object, Class<?> clazz, String fiel...
    method setField (line 79) | public static void setField(Object object, String fieldName, Object va...
    method invoke (line 83) | public static Object invoke(Object object, String methodName, Object.....
    method invoke (line 91) | public static Object invoke(

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/RetryUtils.java
  class RetryUtils (line 24) | @Slf4j
    method retryWithException (line 35) | public static <T> T retryWithException(
    class RetryMaterial (line 82) | public static class RetryMaterial {
      method RetryMaterial (line 104) | public RetryMaterial(
      method RetryMaterial (line 111) | public RetryMaterial(
      method RetryMaterial (line 119) | public RetryMaterial(
      method getRetryTimes (line 132) | public int getRetryTimes() {
      method shouldThrowException (line 136) | public boolean shouldThrowException() {
      method getRetryCondition (line 140) | public RetryCondition<Exception> getRetryCondition() {
      method getSleepTimeMillis (line 144) | public long getSleepTimeMillis() {
      method computeRetryWaitTimeMillis (line 148) | public long computeRetryWaitTimeMillis(int retryAttempts) {
    type Execution (line 164) | @FunctionalInterface
      method execute (line 166) | T execute() throws E;
    type RetryCondition (line 169) | public interface RetryCondition<T> {
      method canRetry (line 170) | boolean canRetry(T input);

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/SeaTunnelException.java
  class SeaTunnelException (line 20) | public class SeaTunnelException extends RuntimeException {
    method SeaTunnelException (line 30) | public SeaTunnelException() {}
    method SeaTunnelException (line 37) | public SeaTunnelException(final String msg) {
    method SeaTunnelException (line 46) | public SeaTunnelException(final Throwable cause) {
    method SeaTunnelException (line 57) | public SeaTunnelException(final String msg, final Throwable cause) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/SerializationException.java
  class SerializationException (line 20) | public class SerializationException extends RuntimeException {
    method SerializationException (line 30) | public SerializationException() {}
    method SerializationException (line 37) | public SerializationException(final String msg) {
    method SerializationException (line 46) | public SerializationException(final Throwable cause) {
    method SerializationException (line 57) | public SerializationException(final String msg, final Throwable cause) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/SerializationUtils.java
  class SerializationUtils (line 32) | public class SerializationUtils {
    method objectToString (line 34) | public static String objectToString(Serializable obj) {
    method stringToObject (line 41) | public static <T extends Serializable> T stringToObject(String str) {
    method serialize (line 48) | public static <T extends Serializable> byte[] serialize(T obj) {
    method deserialize (line 58) | public static <T extends Serializable> T deserialize(byte[] bytes) {
    method deserialize (line 81) | public static <T extends Serializable> T deserialize(byte[] bytes, Cla...

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/StringFormatUtils.java
  class StringFormatUtils (line 22) | public class StringFormatUtils {
    method StringFormatUtils (line 25) | private StringFormatUtils() {
    method formatTable (line 29) | public static String formatTable(Object... objects) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/TemporaryClassLoaderContext.java
  class TemporaryClassLoaderContext (line 19) | public final class TemporaryClassLoaderContext implements AutoCloseable {
    method of (line 31) | public static TemporaryClassLoaderContext of(ClassLoader cl) {
    method TemporaryClassLoaderContext (line 44) | private TemporaryClassLoaderContext(Thread thread, ClassLoader origina...
    method close (line 49) | @Override

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/TimeUtils.java
  class TimeUtils (line 26) | public class TimeUtils {
    method parse (line 37) | public static LocalTime parse(String time, Formatter formatter) {
    method parse (line 41) | public static LocalTime parse(String dateTime) {
    method matchTimeFormatter (line 51) | public static Formatter matchTimeFormatter(String dateTime) {
    method toString (line 68) | public static String toString(LocalTime time, Formatter formatter) {
    type Formatter (line 72) | public enum Formatter {
      method Formatter (line 77) | Formatter(String value) {
      method getValue (line 81) | public String getValue() {
      method parse (line 85) | public static Formatter parse(String format) {

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/VariablesSubstitute.java
  class VariablesSubstitute (line 30) | public final class VariablesSubstitute {
    method VariablesSubstitute (line 32) | private VariablesSubstitute() {}
    method substitute (line 39) | public static String substitute(String text, String timeFormat) {
    method substitute (line 55) | public static String substitute(String text, Map<String, String> value...

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/VectorUtils.java
  class VectorUtils (line 41) | public class VectorUtils {
    method toByteBuffer (line 43) | public static ByteBuffer toByteBuffer(Short[] shortArray) {
    method toShortArray (line 57) | public static Short[] toShortArray(ByteBuffer byteBuffer) {
    method toByteBuffer (line 67) | public static ByteBuffer toByteBuffer(Float[] floatArray) {
    method toFloatArray (line 79) | public static Float[] toFloatArray(ByteBuffer byteBuffer) {
    method toByteBuffer (line 89) | public static ByteBuffer toByteBuffer(Double[] doubleArray) {
    method toDoubleArray (line 101) | public static Double[] toDoubleArray(ByteBuffer byteBuffer) {
    method toByteBuffer (line 111) | public static ByteBuffer toByteBuffer(Integer[] intArray) {
    method toIntArray (line 123) | public static Integer[] toIntArray(ByteBuffer byteBuffer) {
    method convertSparseVectorToFloatArray (line 133) | public static Float[] convertSparseVectorToFloatArray(Map<?, ?> sparse...

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/function/ConsumerWithException.java
  type ConsumerWithException (line 20) | @FunctionalInterface
    method accept (line 27) | void accept(T t) throws Exception;

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/function/FunctionWithException.java
  type FunctionWithException (line 27) | @FunctionalInterface
    method apply (line 36) | R apply(T value) throws E;

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/function/RunnableWithException.java
  type RunnableWithException (line 24) | @FunctionalInterface
    method run (line 27) | void run() throws Exception;

FILE: seatunnel-common/src/main/java/org/apache/seatunnel/common/utils/function/SupplierWithException.java
  type SupplierWithException (line 27) | @FunctionalInterface
    method get (line 36) | R get() throws E;

FILE: seatunnel-common/src/test/java/org/apache/seatunnel/common/HandoverTest.java
  class HandoverTest (line 23) | public class HandoverTest {
    method testThrowExceptionWhenQueueIsEmtpy (line 25) | @Test

FILE: seatunnel-common/src/test/java/org/apache/seatunnel/common/config/CheckConfigUtilTest.java
  class CheckConfigUtilTest (line 34) | public class CheckConfigUtilTest {
    method testCheckAllExists (line 36) | @Test
    method testCheckAtLeastOneExists (line 50) | @Test
    method testMergeCheckResults (line 61) | @Test
    method getConfig (line 82) | public Config getConfig() {

FILE: seatunnel-common/src/test/java/org/apache/seatunnel/common/config/CommonTest.java
  class CommonTest (line 26) | public class CommonTest {
    method appLibDir (line 32) | @Test
    method pluginTarFile (line 39) | @Test

FILE: seatunnel-common/src/test/java/org/apache/seatunnel/common/config/TypesafeConfigUtilsTest.java
  class TypesafeConfigUtilsTest (line 31) | public class TypesafeConfigUtilsTest {
    method testHasSubConfig (line 33) | @Test
    method getConfig (line 43) | public Config getConfig() {
    method testGetConfig (line 53) | @Test

FILE: seatunnel-common/src/test/java/org/apache/seatunnel/common/exception/ExceptionParamsUtilTest.java
  class ExceptionParamsUtilTest (line 28) | public class ExceptionParamsUtilTest {
    method testGetParamsForDescription (line 30) | @Test
    method testGetDescriptionForTemplate (line 43) | @Test
    method testAssertParamsMatchWithDescription (line 60) | @Test

FILE: seatunnel-common/src/test/java/org/apache/seatunnel/common/utils/DateTimeUtilsTest.java
  class DateTimeUtilsTest (line 29) | public class DateTimeUtilsTest {
    method testParseDateString (line 31) | @Test
    method testParseTimestamp (line 44) | @Test
    method testAutoDateTimeFormatter (line 59) | @Test
    method testMatchDateTimeFormatter (line 101) | @Test
    method testPerformance (line 158) | @Test

FILE: seatunnel-common/src/test/java/org/apache/seatunnel/common/utils/DateUtilsTest.java
  class DateUtilsTest (line 29) | public class DateUtilsTest {
    method testAutoDateFormatter (line 31) | @Test
    method testMatchDateTimeFormatter (line 49) | @Test
    method testConvertDateTimeWithLocalTimeZone (line 89) | @Test

FILE: seatunnel-common/src/test/java/org/apache/seatunnel/common/utils/ExceptionUtilsTest.java
  class ExceptionUtilsTest (line 26) | public class ExceptionUtilsTest {
    method testGetRootException (line 27) | @Test

FILE: seatunnel-common/src/test/java/org/apache/seatunnel/common/utils/FileUtilsTest.java
  class FileUtilsTest (line 35) | public class FileUtilsTest {
    method testGetFileLineNumber (line 36) | @Test
    method testGetFileLineNumberFromDir (line 46) | @Test
    method throwExpectedException (line 76) | @Test
    method writeTestDataToFile (line 115) | public void writeTestDataToFile(@NonNull String filePath) throws IOExc...
    method createNewFile (line 126) | @Test

FILE: seatunnel-common/src/test/java/org/apache/seatunnel/common/utils/JdbcUrlUtilTest.java
  class JdbcUrlUtilTest (line 25) | @Slf4j
    method testMySQLUrlWithDatabase (line 28) | @Test
    method tes
Copy disabled (too large) Download .json
Condensed preview — 6942 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (39,437K chars).
[
  {
    "path": ".asf.yaml",
    "chars": 1886,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".dlc.json",
    "chars": 713,
    "preview": "{\n  \"ignorePatterns\": [\n    {\n      \"pattern\": \"^http://localhost\"\n    },\n    {\n      \"pattern\": \"^https://mvnrepository"
  },
  {
    "path": ".gitattributes",
    "chars": 17,
    "preview": "*.sh text eol=lf\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.yml",
    "chars": 4736,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.yml",
    "chars": 3258,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/umbrella.yml",
    "chars": 3053,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 3375,
    "preview": "<!--\n\nThank you for contributing to SeaTunnel! Please make sure that your code changes\nare covered with tests. And in ca"
  },
  {
    "path": ".github/workflows/add-label.yml",
    "chars": 1241,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/approve-label-trigger.yml",
    "chars": 1034,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".github/workflows/approve-label.yml",
    "chars": 2554,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".github/workflows/backend.yml",
    "chars": 59919,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/build_main.yml",
    "chars": 967,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/codeql.yaml",
    "chars": 2077,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".github/workflows/labeler/label-scope-conf.yml",
    "chars": 12976,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/notify_test_workflow.yml",
    "chars": 6912,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/publish-docker.yaml",
    "chars": 2606,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".github/workflows/publish-helm-chart.yaml",
    "chars": 1747,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".github/workflows/schedule_backend.yml",
    "chars": 1131,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/stale.yml",
    "chars": 2615,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".github/workflows/update_build_status.yml",
    "chars": 4862,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".gitignore",
    "chars": 659,
    "preview": "# Package Files #\n*.jar\n*.class\n*.zip\n*.tar.gz\n\n# see JDK-8214300\n.attach_pid*\n\n# virtual machine crash logs, see http:/"
  },
  {
    "path": ".gitmodules",
    "chars": 319,
    "preview": "[submodule \".github/actions/get-workflow-origin\"]\n\tpath = .github/actions/get-workflow-origin\n\turl = https://github.com/"
  },
  {
    "path": ".licenserc.yaml",
    "chars": 2564,
    "preview": "# Licensed to Apache Software Foundation (ASF) under one or more contributor\n# license agreements. See the NOTICE file d"
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "chars": 1021,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": "AGENTS.md",
    "chars": 7233,
    "preview": "# LLM Context Guide for Apache SeaTunnel\n\nThis guide helps AI assistants (LLMs / Agents) make **safe, consistent, and ve"
  },
  {
    "path": "LICENSE",
    "chars": 17969,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "NOTICE",
    "chars": 4166,
    "preview": "Apache SeaTunnel\nCopyright 2021-2024 The Apache Software Foundation\n\nThis product includes software developed at\nThe Apa"
  },
  {
    "path": "README.md",
    "chars": 5808,
    "preview": "# Apache SeaTunnel\n\n<img src=\"https://seatunnel.apache.org/image/logo.png\" alt=\"SeaTunnel Logo\" height=\"200px\" align=\"ri"
  },
  {
    "path": "bin/install-plugin.cmd",
    "chars": 2140,
    "preview": "@echo off\nREM Licensed to the Apache Software Foundation (ASF) under one or more\nREM contributor license agreements.  Se"
  },
  {
    "path": "bin/install-plugin.sh",
    "chars": 1943,
    "preview": "#!/bin/bash\n#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  Se"
  },
  {
    "path": "config/hazelcast-client.yaml",
    "chars": 1020,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/hazelcast-master.yaml",
    "chars": 1692,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/hazelcast-worker.yaml",
    "chars": 1549,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/hazelcast.yaml",
    "chars": 1660,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/jvm_client_options",
    "chars": 907,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/jvm_master_options",
    "chars": 966,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/jvm_options",
    "chars": 1391,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/jvm_worker_options",
    "chars": 966,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/log4j2.properties",
    "chars": 5324,
    "preview": "################################################################################\n#  Licensed to the Apache Software Foun"
  },
  {
    "path": "config/log4j2_client.properties",
    "chars": 4332,
    "preview": "################################################################################\n#  Licensed to the Apache Software Foun"
  },
  {
    "path": "config/plugin_config",
    "chars": 2618,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/seatunnel-env.cmd",
    "chars": 1438,
    "preview": "@echo off\nREM Licensed to the Apache Software Foundation (ASF) under one or more\nREM contributor license agreements.  Se"
  },
  {
    "path": "config/seatunnel-env.sh",
    "chars": 1311,
    "preview": "#!/usr/bin/env bash\n#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreeme"
  },
  {
    "path": "config/seatunnel.yaml",
    "chars": 1730,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/v2.batch.config.template",
    "chars": 1697,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "config/v2.streaming.conf.template",
    "chars": 1700,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/Chart.yaml",
    "chars": 2001,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/conf/hazelcast-client.yaml",
    "chars": 1117,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/conf/hazelcast-master.yaml",
    "chars": 1773,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/conf/hazelcast-worker.yaml",
    "chars": 1843,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/conf/jvm_client_options",
    "chars": 907,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/conf/jvm_master_options",
    "chars": 966,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/conf/jvm_worker_options",
    "chars": 966,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/conf/log4j2.properties",
    "chars": 5281,
    "preview": "################################################################################\n#  Licensed to the Apache Software Foun"
  },
  {
    "path": "deploy/kubernetes/seatunnel/conf/seatunnel.yaml",
    "chars": 1468,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/templates/NOTES.txt",
    "chars": 2159,
    "preview": "{{/*\n Licensed to the Apache Software Foundation (ASF) under one or more\n contributor license agreements.  See the NOTIC"
  },
  {
    "path": "deploy/kubernetes/seatunnel/templates/_helpers.tpl",
    "chars": 2491,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/templates/configmap.yaml",
    "chars": 1226,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/templates/deployment-seatunnel-master.yaml",
    "chars": 3490,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/templates/deployment-seatunnel-worker.yaml",
    "chars": 3426,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/templates/ingress.yaml",
    "chars": 2313,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/templates/rbac.yaml",
    "chars": 1855,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE f"
  },
  {
    "path": "deploy/kubernetes/seatunnel/templates/service-headless.yaml",
    "chars": 1177,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/templates/service-master-headless.yaml",
    "chars": 1233,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "deploy/kubernetes/seatunnel/values.yaml",
    "chars": 6644,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "docs/en/architecture/api-design/catalog-table.md",
    "chars": 17583,
    "preview": "---\nsidebar_position: 4\ntitle: CatalogTable and Metadata Management\n---\n\n# CatalogTable and Metadata Management\n\n## 1. O"
  },
  {
    "path": "docs/en/architecture/api-design/sink-architecture.md",
    "chars": 31491,
    "preview": "---\nsidebar_position: 3\ntitle: Sink Architecture\n---\n\n# Sink Architecture\n\n## 1. Overview\n\n### 1.1 Problem Background\n\nW"
  },
  {
    "path": "docs/en/architecture/api-design/source-architecture.md",
    "chars": 24898,
    "preview": "---\nsidebar_position: 2\ntitle: Source Architecture\n---\n\n# Source Architecture\n\n## 1. Overview\n\n### 1.1 Problem Backgroun"
  },
  {
    "path": "docs/en/architecture/api-design/translation-layer.md",
    "chars": 25512,
    "preview": "---\nsidebar_position: 1\ntitle: Translation Layer\n---\n\n# Translation Layer Architecture\n\n## 1. Overview\n\n### 1.1 Problem "
  },
  {
    "path": "docs/en/architecture/design-philosophy.md",
    "chars": 19230,
    "preview": "---\nsidebar_position: 2\ntitle: Design Philosophy\n---\n\n# SeaTunnel Design Philosophy\n\n## 1. Overview\n\nThis document expla"
  },
  {
    "path": "docs/en/architecture/engine/dag-execution.md",
    "chars": 19859,
    "preview": "---\nsidebar_position: 2\ntitle: DAG Execution Model\n---\n\n# DAG Execution Model\n\n## 1. Overview\n\n### 1.1 Problem Backgroun"
  },
  {
    "path": "docs/en/architecture/engine/engine-architecture.md",
    "chars": 21817,
    "preview": "---\nsidebar_position: 1\ntitle: Engine Architecture\n---\n\n# SeaTunnel Engine (Zeta) Architecture\n\n## 1. Overview\n\n### 1.1 "
  },
  {
    "path": "docs/en/architecture/engine/resource-management.md",
    "chars": 15763,
    "preview": "---\nsidebar_position: 3\ntitle: Resource Management\n---\n\n# Resource Management\n\n## 1. Overview\n\n### 1.1 Problem Backgroun"
  },
  {
    "path": "docs/en/architecture/fault-tolerance/checkpoint-mechanism.md",
    "chars": 25516,
    "preview": "---\nsidebar_position: 1\ntitle: Checkpoint Mechanism\n---\n\n# Checkpoint Mechanism\n\n## 1. Overview\n\n### 1.1 Problem Backgro"
  },
  {
    "path": "docs/en/architecture/fault-tolerance/exactly-once.md",
    "chars": 21223,
    "preview": "---\nsidebar_position: 2\ntitle: Exactly-Once Semantics\n---\n\n# Exactly-Once Semantics\n\n## 1. Overview\n\n### 1.1 Problem Bac"
  },
  {
    "path": "docs/en/architecture/features/multi-table.md",
    "chars": 21493,
    "preview": "---\nsidebar_position: 3\ntitle: Multi-Table Synchronization\n---\n\n# Multi-Table Synchronization Architecture\n\n## 1. Overvi"
  },
  {
    "path": "docs/en/architecture/overview.md",
    "chars": 18145,
    "preview": "---\nsidebar_position: 1\ntitle: Architecture Overview\n---\n\n# SeaTunnel Architecture Overview\n\n## 1. Introduction\n\n### 1.1"
  },
  {
    "path": "docs/en/connectors/changelog/connector-activemq.md",
    "chars": 840,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][connector][active"
  },
  {
    "path": "docs/en/connectors/changelog/connector-aerospike.md",
    "chars": 335,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Chore] fix typos filed -&g"
  },
  {
    "path": "docs/en/connectors/changelog/connector-amazondynamodb.md",
    "chars": 3835,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][Core] Unify the a"
  },
  {
    "path": "docs/en/connectors/changelog/connector-amazonsqs.md",
    "chars": 1412,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][Core] Unify the a"
  },
  {
    "path": "docs/en/connectors/changelog/connector-assert.md",
    "chars": 5743,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][API] Add metadata"
  },
  {
    "path": "docs/en/connectors/changelog/connector-cassandra.md",
    "chars": 1781,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] cassandra connect"
  },
  {
    "path": "docs/en/connectors/changelog/connector-cdc-base.md",
    "chars": 16308,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][MySQL CDC] MySQL "
  },
  {
    "path": "docs/en/connectors/changelog/connector-cdc-mongodb.md",
    "chars": 3779,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Core] Add plugin "
  },
  {
    "path": "docs/en/connectors/changelog/connector-cdc-mysql.md",
    "chars": 12998,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][MySQL CDC] MySQL "
  },
  {
    "path": "docs/en/connectors/changelog/connector-cdc-opengauss.md",
    "chars": 819,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Core] Add plugin "
  },
  {
    "path": "docs/en/connectors/changelog/connector-cdc-oracle.md",
    "chars": 5197,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Core] Add plugin "
  },
  {
    "path": "docs/en/connectors/changelog/connector-cdc-postgres.md",
    "chars": 3419,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Core] Add plugin "
  },
  {
    "path": "docs/en/connectors/changelog/connector-cdc-sqlserver.md",
    "chars": 8578,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Core] Add plugin "
  },
  {
    "path": "docs/en/connectors/changelog/connector-cdc-tidb.md",
    "chars": 960,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Core] Add plugin "
  },
  {
    "path": "docs/en/connectors/changelog/connector-cdc.md",
    "chars": 27785,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][MySQL CDC] MySQL "
  },
  {
    "path": "docs/en/connectors/changelog/connector-clickhouse.md",
    "chars": 13573,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][Connector-Clickho"
  },
  {
    "path": "docs/en/connectors/changelog/connector-cloudberry.md",
    "chars": 220,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Connector] Add Ap"
  },
  {
    "path": "docs/en/connectors/changelog/connector-common.md",
    "chars": 10267,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Chore] fix typos filed -&g"
  },
  {
    "path": "docs/en/connectors/changelog/connector-console.md",
    "chars": 4434,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] console sink opti"
  },
  {
    "path": "docs/en/connectors/changelog/connector-databend.md",
    "chars": 238,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Connector-V2] Sup"
  },
  {
    "path": "docs/en/connectors/changelog/connector-datahub.md",
    "chars": 1898,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Connector-V2] Mak"
  },
  {
    "path": "docs/en/connectors/changelog/connector-dingtalk.md",
    "chars": 1727,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] dingtalk sink opt"
  },
  {
    "path": "docs/en/connectors/changelog/connector-doris.md",
    "chars": 9672,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Core] Add plugin "
  },
  {
    "path": "docs/en/connectors/changelog/connector-druid.md",
    "chars": 1124,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve] restruct connecto"
  },
  {
    "path": "docs/en/connectors/changelog/connector-easysearch.md",
    "chars": 1484,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] EasySearch suppor"
  },
  {
    "path": "docs/en/connectors/changelog/connector-elasticsearch.md",
    "chars": 10437,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Transform-V2] Sup"
  },
  {
    "path": "docs/en/connectors/changelog/connector-email.md",
    "chars": 2438,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] email connector o"
  },
  {
    "path": "docs/en/connectors/changelog/connector-fake.md",
    "chars": 7952,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Transform-V2] Sup"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-base-hadoop.md",
    "chars": 4934,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Fix][Connector-File] Fix p"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-base.md",
    "chars": 24982,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Transform-V2] Sup"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-cos.md",
    "chars": 4098,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][File] Add markdow"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-ftp.md",
    "chars": 7801,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][File] Add markdow"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-hadoop.md",
    "chars": 7303,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][File] Add markdow"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-jindo-oss.md",
    "chars": 4257,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][Connector-V2] Add"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-local.md",
    "chars": 9978,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][File] Add markdow"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-obs.md",
    "chars": 1861,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][File] Add markdow"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-oss-jindo.md",
    "chars": 2021,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][File] Add markdow"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-oss.md",
    "chars": 7995,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][File] Add markdow"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-s3.md",
    "chars": 8290,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][File] Add markdow"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file-sftp.md",
    "chars": 7050,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][File] Add markdow"
  },
  {
    "path": "docs/en/connectors/changelog/connector-file.md",
    "chars": 32909,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Connector-V2] Sup"
  },
  {
    "path": "docs/en/connectors/changelog/connector-fluss.md",
    "chars": 114,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n|--------|--------|---------|\n\n</details>\n"
  },
  {
    "path": "docs/en/connectors/changelog/connector-google-firestore.md",
    "chars": 656,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve] filestore options"
  },
  {
    "path": "docs/en/connectors/changelog/connector-google-sheets.md",
    "chars": 2477,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] google sheets opt"
  },
  {
    "path": "docs/en/connectors/changelog/connector-graphql.md",
    "chars": 373,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][connector-http] P"
  },
  {
    "path": "docs/en/connectors/changelog/connector-hbase.md",
    "chars": 2689,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Checkpoint] Add c"
  },
  {
    "path": "docs/en/connectors/changelog/connector-hive.md",
    "chars": 12442,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][File] Add markdow"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-airtable.md",
    "chars": 104,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n\n</details>\n"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-base.md",
    "chars": 8921,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Fix][Connectors-v2] Fix UT"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-feishu.md",
    "chars": 1036,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] http connector op"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-github.md",
    "chars": 487,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] http connector op"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-gitlab.md",
    "chars": 1298,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] http connector op"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-jira.md",
    "chars": 1136,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] http connector op"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-klaviyo.md",
    "chars": 1284,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] http connector op"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-lemlist.md",
    "chars": 1285,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] http connector op"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-myhours.md",
    "chars": 2106,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][connector-http] P"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-notion.md",
    "chars": 738,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] http connector op"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-onesignal.md",
    "chars": 1291,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] http connector op"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-persistiq.md",
    "chars": 743,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] http connector op"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http-wechat.md",
    "chars": 1482,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] http connector op"
  },
  {
    "path": "docs/en/connectors/changelog/connector-http.md",
    "chars": 11612,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Fix][Connectors-v2] Fix UT"
  },
  {
    "path": "docs/en/connectors/changelog/connector-hudi.md",
    "chars": 4082,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Fix][Core]fix kotlin jar c"
  },
  {
    "path": "docs/en/connectors/changelog/connector-hugegraph.md",
    "chars": 284,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- |---------|\n|[Feature][Connector-V2]"
  },
  {
    "path": "docs/en/connectors/changelog/connector-iceberg.md",
    "chars": 9022,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Chore] fix typos filed -&g"
  },
  {
    "path": "docs/en/connectors/changelog/connector-influxdb.md",
    "chars": 4134,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Checkpoint] Add c"
  },
  {
    "path": "docs/en/connectors/changelog/connector-iotdb.md",
    "chars": 3962,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Checkpoint] Add c"
  },
  {
    "path": "docs/en/connectors/changelog/connector-jdbc.md",
    "chars": 45076,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Fix][Connector-xugu] Fix s"
  },
  {
    "path": "docs/en/connectors/changelog/connector-kafka.md",
    "chars": 14451,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Fix][Connector-V2] Optimiz"
  },
  {
    "path": "docs/en/connectors/changelog/connector-kudu.md",
    "chars": 5611,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Chore] fix typos filed -&g"
  },
  {
    "path": "docs/en/connectors/changelog/connector-lance.md",
    "chars": 114,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n|--------|--------|---------|\n\n</details>\n"
  },
  {
    "path": "docs/en/connectors/changelog/connector-maxcompute.md",
    "chars": 5562,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][API] Optimize the"
  },
  {
    "path": "docs/en/connectors/changelog/connector-milvus.md",
    "chars": 2898,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Transform-V2] Sup"
  },
  {
    "path": "docs/en/connectors/changelog/connector-mongodb.md",
    "chars": 5767,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][API] Optimize the"
  },
  {
    "path": "docs/en/connectors/changelog/connector-neo4j.md",
    "chars": 3162,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] neo4j options (#9"
  },
  {
    "path": "docs/en/connectors/changelog/connector-openmldb.md",
    "chars": 1124,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] openmldb options "
  },
  {
    "path": "docs/en/connectors/changelog/connector-paimon.md",
    "chars": 9258,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Connectors-v2] Cl"
  },
  {
    "path": "docs/en/connectors/changelog/connector-prometheus.md",
    "chars": 951,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Fix][Connector-V2] Fix pro"
  },
  {
    "path": "docs/en/connectors/changelog/connector-pulsar.md",
    "chars": 6122,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][API] Optimize the"
  },
  {
    "path": "docs/en/connectors/changelog/connector-qdrant.md",
    "chars": 734,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Transform-V2] Sup"
  },
  {
    "path": "docs/en/connectors/changelog/connector-rabbitmq.md",
    "chars": 3135,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Fix][connector-rabbitmq] S"
  },
  {
    "path": "docs/en/connectors/changelog/connector-redis.md",
    "chars": 6212,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][Connector-V2] Use"
  },
  {
    "path": "docs/en/connectors/changelog/connector-rocketmq.md",
    "chars": 2776,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][API] Optimize the"
  },
  {
    "path": "docs/en/connectors/changelog/connector-s3-redshift.md",
    "chars": 2013,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] update file conne"
  },
  {
    "path": "docs/en/connectors/changelog/connector-selectdb-cloud.md",
    "chars": 1911,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] selectdb options "
  },
  {
    "path": "docs/en/connectors/changelog/connector-sensorsdata.md",
    "chars": 346,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Chore] fix typos filed -&g"
  },
  {
    "path": "docs/en/connectors/changelog/connector-sentry.md",
    "chars": 1448,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] sentry options (#"
  },
  {
    "path": "docs/en/connectors/changelog/connector-slack.md",
    "chars": 1029,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] Slack connector o"
  },
  {
    "path": "docs/en/connectors/changelog/connector-sls.md",
    "chars": 1341,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Chore] fix typos filed -&g"
  },
  {
    "path": "docs/en/connectors/changelog/connector-socket.md",
    "chars": 1938,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] socket options (#"
  },
  {
    "path": "docs/en/connectors/changelog/connector-starrocks.md",
    "chars": 13357,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][Core] Add plugin "
  },
  {
    "path": "docs/en/connectors/changelog/connector-tablestore.md",
    "chars": 2318,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve] table_store optio"
  },
  {
    "path": "docs/en/connectors/changelog/connector-tdengine.md",
    "chars": 2944,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Feature][connector-tdengin"
  },
  {
    "path": "docs/en/connectors/changelog/connector-typesense.md",
    "chars": 1427,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[Improve][API] Optimize the"
  },
  {
    "path": "docs/en/connectors/changelog/connector-web3j.md",
    "chars": 344,
    "preview": "<details><summary> Change Log </summary>\n\n| Change | Commit | Version |\n| --- | --- | --- |\n|[improve] update Web3j conn"
  },
  {
    "path": "docs/en/connectors/common-options/sink-common-options.md",
    "chars": 2241,
    "preview": "---\nsidebar_position: 4\n---\n\n# Sink Common Options\n\n> Common parameters of sink connectors\n\n:::caution warn\n\nThe old con"
  },
  {
    "path": "docs/en/connectors/common-options/source-common-options.md",
    "chars": 4184,
    "preview": "---\nsidebar_position: 3\n---\n\n# Source Common Options\n\n> Common parameters of source connectors\n\n:::caution warn\n\nThe old"
  },
  {
    "path": "docs/en/connectors/connector-isolated-dependency.md",
    "chars": 3003,
    "preview": "# Connector Isolated Dependency Loading Mechanism\n\nSeaTunnel provides an isolated dependency loading mechanism for each "
  },
  {
    "path": "docs/en/connectors/formats/avro.md",
    "chars": 2275,
    "preview": "# Avro format\n\nAvro is very popular in streaming data pipeline. Now seatunnel supports Avro format in kafka connector.\n\n"
  },
  {
    "path": "docs/en/connectors/formats/canal-json.md",
    "chars": 4522,
    "preview": "# Canal Format\n\nChangelog-Data-Capture Format Format: Serialization Schema Format: Deserialization Schema\n\nCanal is a CD"
  },
  {
    "path": "docs/en/connectors/formats/cdc-compatible-debezium-json.md",
    "chars": 1094,
    "preview": "# CDC Compatible Debezium-json\n\nSeaTunnel supports to interpret cdc record as Debezium-JSON messages publish to mq(kafka"
  },
  {
    "path": "docs/en/connectors/formats/debezium-json.md",
    "chars": 4123,
    "preview": "# Debezium Format\n\nChangelog-Data-Capture Format: Serialization Schema Format: Deserialization Schema\n\nDebezium is a set"
  },
  {
    "path": "docs/en/connectors/formats/kafka-compatible-kafkaconnect-json.md",
    "chars": 965,
    "preview": "# Kafka source compatible kafka-connect-json\n\nSeatunnel connector kafka supports parsing data extracted through kafka co"
  },
  {
    "path": "docs/en/connectors/formats/maxwell-json.md",
    "chars": 4175,
    "preview": "# MaxWell Format\n\n[Maxwell](https://maxwells-daemon.io/) is a CDC (Changelog Data Capture) tool that can stream changes "
  },
  {
    "path": "docs/en/connectors/formats/ogg-json.md",
    "chars": 4641,
    "preview": "# Ogg Format\n\n[Oracle GoldenGate](https://www.oracle.com/integration/goldengate/) (a.k.a ogg) is a managed service provi"
  },
  {
    "path": "docs/en/connectors/formats/protobuf.md",
    "chars": 4048,
    "preview": "# Protobuf Format\n\nProtobuf (Protocol Buffers) is a language-neutral, platform-independent data serialization format dev"
  },
  {
    "path": "docs/en/connectors/sink/Activemq.md",
    "chars": 3506,
    "preview": "import ChangeLog from '../changelog/connector-activemq.md';\n\n# Activemq\n\n> Activemq sink connector\n\n## Description\n\nUsed"
  },
  {
    "path": "docs/en/connectors/sink/Aerospike.md",
    "chars": 5140,
    "preview": "import ChangeLog from '../changelog/connector-aerospike.md';\n\n# Aerospike\n\n> Aerospike sink connector\n\n## Support Those "
  },
  {
    "path": "docs/en/connectors/sink/Airtable.md",
    "chars": 2499,
    "preview": "import ChangeLog from '../changelog/connector-http-airtable.md';\n\n# Airtable\n\n> Airtable sink connector\n\n## Description\n"
  },
  {
    "path": "docs/en/connectors/sink/AmazonDynamoDB.md",
    "chars": 1463,
    "preview": "import ChangeLog from '../changelog/connector-amazondynamodb.md';\n\n# AmazonDynamoDB\n\n> Amazon DynamoDB sink connector\n\n#"
  },
  {
    "path": "docs/en/connectors/sink/AmazonSqs.md",
    "chars": 5230,
    "preview": "import ChangeLog from '../changelog/connector-amazonsqs.md';\n\n# AmazonSqs\n\n> Amazon SQS sink connector\n\n## Support Those"
  },
  {
    "path": "docs/en/connectors/sink/Assert.md",
    "chars": 21089,
    "preview": "import ChangeLog from '../changelog/connector-assert.md';\n\n# Assert\n\n> Assert sink connector\n\n## Description\n\nA sink plu"
  },
  {
    "path": "docs/en/connectors/sink/Cassandra.md",
    "chars": 2299,
    "preview": "import ChangeLog from '../changelog/connector-cassandra.md';\n\n# Cassandra\n\n> Cassandra sink connector\n\n## Description\n\nW"
  },
  {
    "path": "docs/en/connectors/sink/Clickhouse.md",
    "chars": 17340,
    "preview": "import ChangeLog from '../changelog/connector-clickhouse.md';\n\n# Clickhouse\n\n> Clickhouse sink connector\n\n## Support Tho"
  },
  {
    "path": "docs/en/connectors/sink/ClickhouseFile.md",
    "chars": 5267,
    "preview": "import ChangeLog from '../changelog/connector-clickhouse.md';\n\n# ClickhouseFile\n\n> Clickhouse file sink connector\n\n## De"
  },
  {
    "path": "docs/en/connectors/sink/Cloudberry.md",
    "chars": 4796,
    "preview": "import ChangeLog from '../changelog/connector-cloudberry.md';\n\n# Cloudberry\n\n> JDBC Cloudberry  Sink Connector\n\n## Suppo"
  },
  {
    "path": "docs/en/connectors/sink/Console.md",
    "chars": 4612,
    "preview": "import ChangeLog from '../changelog/connector-console.md';\n\n# Console\n\n> Console sink connector\n\n## Support Connector Ve"
  },
  {
    "path": "docs/en/connectors/sink/CosFile.md",
    "chars": 19533,
    "preview": "import ChangeLog from '../changelog/connector-file-cos.md';\n\n# CosFile\n\n> Cos file sink connector\n\n## Description\n\nOutpu"
  },
  {
    "path": "docs/en/connectors/sink/DB2.md",
    "chars": 13644,
    "preview": "import ChangeLog from '../changelog/connector-jdbc.md';\n\n# DB2\n\n> JDBC DB2 Sink Connector\n\n## Support Those Engines\n\n> S"
  },
  {
    "path": "docs/en/connectors/sink/Databend.md",
    "chars": 5599,
    "preview": "import ChangeLog from '../changelog/connector-databend.md';\n\n# Databend\n\n> Databend sink connector\n\n## Supported Engines"
  },
  {
    "path": "docs/en/connectors/sink/Datahub.md",
    "chars": 1718,
    "preview": "import ChangeLog from '../changelog/connector-datahub.md';\n\n# DataHub\n\n> DataHub sink connector\n\n## Description\n\nA sink "
  },
  {
    "path": "docs/en/connectors/sink/DingTalk.md",
    "chars": 1216,
    "preview": "import ChangeLog from '../changelog/connector-dingtalk.md';\n\n# DingTalk\n\n> DinkTalk sink connector\n\n## Support Those Eng"
  },
  {
    "path": "docs/en/connectors/sink/Doris.md",
    "chars": 20846,
    "preview": "import ChangeLog from '../changelog/connector-doris.md';\n\n# Doris\n\n> Doris sink connector\n\n## Support Doris Version\n\n- e"
  },
  {
    "path": "docs/en/connectors/sink/Druid.md",
    "chars": 1930,
    "preview": "import ChangeLog from '../changelog/connector-druid.md';\n\n# Druid\n\n> Druid sink connector\n\n## Description\n\nWrite data to"
  }
]

// ... and 6742 more files (download for full content)

About this extraction

This page contains the full source code of the apache/seatunnel GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 6942 files (35.5 MB), approximately 9.9M tokens, and a symbol index with 30910 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!