├── .asf.yaml ├── .dlc.json ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ └── issue-notice.yml ├── labeler.yml └── workflows │ ├── approve_label.yml │ ├── approve_label_trigger.yml │ ├── build_docs.yml │ ├── close_stale.yml │ ├── docs.sh │ ├── flink_cdc_base.yml │ ├── flink_cdc_ci.yml │ ├── flink_cdc_ci_nightly.yml │ ├── label.yml │ └── utils.sh ├── .gitignore ├── .gitmodules ├── .idea └── vcs.xml ├── Dockerfile ├── LICENSE ├── NOTICE ├── README.md ├── docs ├── .gitignore ├── README.md ├── assets │ ├── _custom.scss │ ├── _fonts.scss │ ├── github.css │ └── search-data.js ├── config.toml ├── content.zh │ ├── _index.md │ ├── docs │ │ ├── connectors │ │ │ ├── _index.md │ │ │ ├── flink-sources │ │ │ │ ├── _index.md │ │ │ │ ├── datastream-api-package-guidance.md │ │ │ │ ├── db2-cdc.md │ │ │ │ ├── mongodb-cdc.md │ │ │ │ ├── mysql-cdc.md │ │ │ │ ├── oceanbase-cdc.md │ │ │ │ ├── oracle-cdc.md │ │ │ │ ├── overview.md │ │ │ │ ├── postgres-cdc.md │ │ │ │ ├── sqlserver-cdc.md │ │ │ │ ├── tidb-cdc.md │ │ │ │ ├── tutorials │ │ │ │ │ ├── _index.md │ │ │ │ │ ├── build-real-time-data-lake-tutorial.md │ │ │ │ │ ├── build-streaming-etl-tutorial.md │ │ │ │ │ ├── db2-tutorial.md │ │ │ │ │ ├── mongodb-tutorial.md │ │ │ │ │ ├── oceanbase-tutorial.md │ │ │ │ │ ├── oracle-tutorial.md │ │ │ │ │ ├── polardbx-tutorial.md │ │ │ │ │ ├── sqlserver-tutorial.md │ │ │ │ │ └── tidb-tutorial.md │ │ │ │ └── vitess-cdc.md │ │ │ └── pipeline-connectors │ │ │ │ ├── _index.md │ │ │ │ ├── doris.md │ │ │ │ ├── elasticsearch.md │ │ │ │ ├── iceberg.md │ │ │ │ ├── kafka.md │ │ │ │ ├── maxcompute.md │ │ │ │ ├── mysql.md │ │ │ │ ├── oceanbase.md │ │ │ │ ├── overview.md │ │ │ │ ├── paimon.md │ │ │ │ └── starrocks.md │ │ ├── core-concept │ │ │ ├── _index.md │ │ │ ├── data-pipeline.md │ │ │ ├── data-sink.md │ │ │ ├── data-source.md │ │ │ ├── route.md │ │ │ ├── schema-evolution.md │ │ │ ├── table-id.md │ │ │ └── transform.md │ │ ├── deployment │ │ │ ├── _index.md │ │ │ ├── kubernetes.md │ │ │ ├── standalone.md │ │ │ └── yarn.md │ │ ├── developer-guide │ │ │ ├── _index.md │ │ │ ├── contribute-to-flink-cdc.md │ │ │ ├── licenses.md │ │ │ └── understand-flink-cdc-api.md │ │ ├── faq │ │ │ ├── _index.md │ │ │ └── faq.md │ │ └── get-started │ │ │ ├── _index.md │ │ │ ├── introduction.md │ │ │ └── quickstart │ │ │ ├── _index.md │ │ │ ├── cdc-up-quickstart-guide.md │ │ │ ├── mysql-to-doris.md │ │ │ └── mysql-to-starrocks.md │ └── versions.md ├── content │ ├── _index.md │ ├── docs │ │ ├── connectors │ │ │ ├── _index.md │ │ │ ├── flink-sources │ │ │ │ ├── _index.md │ │ │ │ ├── datastream-api-package-guidance.md │ │ │ │ ├── db2-cdc.md │ │ │ │ ├── mongodb-cdc.md │ │ │ │ ├── mysql-cdc.md │ │ │ │ ├── oceanbase-cdc.md │ │ │ │ ├── oracle-cdc.md │ │ │ │ ├── overview.md │ │ │ │ ├── postgres-cdc.md │ │ │ │ ├── sqlserver-cdc.md │ │ │ │ ├── tidb-cdc.md │ │ │ │ ├── tutorials │ │ │ │ │ ├── _index.md │ │ │ │ │ ├── build-real-time-data-lake-tutorial.md │ │ │ │ │ ├── build-streaming-etl-tutorial.md │ │ │ │ │ ├── db2-tutorial.md │ │ │ │ │ ├── mongodb-tutorial.md │ │ │ │ │ ├── oceanbase-tutorial.md │ │ │ │ │ ├── oracle-tutorial.md │ │ │ │ │ ├── polardbx-tutorial.md │ │ │ │ │ ├── sqlserver-tutorial.md │ │ │ │ │ └── tidb-tutorial.md │ │ │ │ └── vitess-cdc.md │ │ │ └── pipeline-connectors │ │ │ │ ├── _index.md │ │ │ │ ├── doris.md │ │ │ │ ├── elasticsearch.md │ │ │ │ ├── iceberg.md │ │ │ │ ├── kafka.md │ │ │ │ ├── maxcompute.md │ │ │ │ ├── mysql.md │ │ │ │ ├── oceanbase.md │ │ │ │ ├── overview.md │ │ │ │ ├── paimon.md │ │ │ │ └── starrocks.md │ │ ├── core-concept │ │ │ ├── _index.md │ │ │ ├── data-pipeline.md │ │ │ ├── data-sink.md │ │ │ ├── data-source.md │ │ │ ├── route.md │ │ │ ├── schema-evolution.md │ │ │ ├── table-id.md │ │ │ └── transform.md │ │ ├── deployment │ │ │ ├── _index.md │ │ │ ├── kubernetes.md │ │ │ ├── standalone.md │ │ │ └── yarn.md │ │ ├── developer-guide │ │ │ ├── _index.md │ │ │ ├── contribute-to-flink-cdc.md │ │ │ ├── licenses.md │ │ │ └── understand-flink-cdc-api.md │ │ ├── faq │ │ │ ├── _index.md │ │ │ └── faq.md │ │ └── get-started │ │ │ ├── _index.md │ │ │ ├── introduction.md │ │ │ └── quickstart │ │ │ ├── _index.md │ │ │ ├── cdc-up-quickstart-guide.md │ │ │ ├── mysql-to-doris.md │ │ │ └── mysql-to-starrocks.md │ └── versions.md ├── layouts │ ├── _default │ │ └── baseof.html │ ├── partials │ │ └── docs │ │ │ ├── footer.html │ │ │ ├── inject │ │ │ ├── content-before.html │ │ │ ├── head.html │ │ │ ├── menu-after.html │ │ │ └── menu-before.html │ │ │ ├── interpolate.html │ │ │ ├── menu-filetree.html │ │ │ ├── menu.html │ │ │ ├── simple-title.html │ │ │ ├── title.html │ │ │ └── toc.html │ └── shortcodes │ │ ├── all_versions.html │ │ ├── artifact.html │ │ ├── artifact_gradle.html │ │ ├── artifact_tabs.html │ │ ├── beta.html │ │ ├── build_time.html │ │ ├── center.html │ │ ├── check.html │ │ ├── connector_artifact.html │ │ ├── downloads.html │ │ ├── gh_link.html │ │ ├── github_repo.html │ │ ├── img.html │ │ ├── include_reporter_config.html │ │ ├── javadoc.html │ │ ├── label.html │ │ ├── py_connector_download_link.html │ │ ├── py_download_link.html │ │ ├── pythondoc.html │ │ ├── query_state_warning.html │ │ ├── query_state_warning_zh.html │ │ ├── ref_static.html │ │ ├── scala_version.html │ │ ├── sql_connector_download_table.html │ │ ├── sql_download_table.html │ │ ├── sql_functions.html │ │ ├── sql_functions_zh.html │ │ ├── sql_optional_connectors.html │ │ ├── sql_optional_formats.html │ │ ├── stable.html │ │ ├── tab.html │ │ ├── tabs.html │ │ ├── top.html │ │ ├── training_link.html │ │ ├── training_repo.html │ │ ├── unstable.html │ │ ├── version.html │ │ └── xmark.html └── static │ ├── favicon.png │ ├── fig │ ├── LICENSE.txt │ ├── architecture.png │ ├── cdc-flow.png │ ├── design.png │ ├── favicon.png │ ├── flinkcdc-logo.png │ ├── flow-of-events.png │ ├── index-background-footer.png │ ├── index-background-header.png │ ├── index-yaml-example.png │ ├── mysql-doris-tutorial │ │ ├── doris-create-table.png │ │ ├── doris-display-data.png │ │ ├── doris-display-result.png │ │ ├── doris-ui.png │ │ ├── flink-ui.png │ │ └── mysql-to-doris.png │ ├── mysql-postgres-tutorial │ │ ├── flink-cdc-streaming-etl.png │ │ ├── flink-sql-client.png │ │ ├── flink-ui.png │ │ ├── kafka-gmv-changes.gif │ │ ├── kibana-create-index-pattern.png │ │ ├── kibana-detailed-orders-changes.gif │ │ └── kibana-detailed-orders.png │ ├── mysql-starrocks-tutorial │ │ ├── flink-ui.png │ │ ├── mysql-to-starrocks.png │ │ ├── starrocks-display-data.png │ │ └── starrocks-display-result.png │ └── real-time-data-lake-tutorial │ │ ├── data_in_iceberg.png │ │ ├── files-in-iceberg.png │ │ ├── final-data-in-iceberg.png │ │ ├── flink-cdc-iceberg-running-job.png │ │ ├── flink-sql-client.png │ │ ├── flink-ui.png │ │ └── real-time-data-lake-tutorial.png │ ├── flink-header-logo.svg │ ├── font-awesome │ ├── css │ │ ├── font-awesome.css │ │ └── font-awesome.min.css │ └── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 │ ├── js │ ├── anchor.min.js │ └── flink.js │ └── navbar-brand-logo.jpg ├── flink-cdc-cli ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── apache │ │ └── flink │ │ └── cdc │ │ └── cli │ │ ├── CliExecutor.java │ │ ├── CliFrontend.java │ │ ├── CliFrontendOptions.java │ │ ├── parser │ │ ├── PipelineDefinitionParser.java │ │ └── YamlPipelineDefinitionParser.java │ │ └── utils │ │ ├── ConfigurationUtils.java │ │ ├── FlinkEnvironmentUtils.java │ │ └── YamlParserUtils.java │ └── test │ ├── java │ └── org │ │ └── apache │ │ └── flink │ │ └── cdc │ │ └── cli │ │ ├── CliFrontendTest.java │ │ ├── parser │ │ └── YamlPipelineDefinitionParserTest.java │ │ └── utils │ │ └── ConfigurationUtilsTest.java │ └── resources │ ├── definitions │ ├── pipeline-definition-full-with-repsym.yaml │ ├── pipeline-definition-full.yaml │ ├── pipeline-definition-minimized.yaml │ ├── pipeline-definition-with-optional.yaml │ └── pipeline-definition-with-udf.yaml │ ├── flink-home │ └── conf │ │ ├── config.yaml │ │ └── flink-conf.yaml │ ├── global-config │ └── global-config.yaml │ └── log4j2-test.properties ├── flink-cdc-common ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── apache │ │ └── flink │ │ └── cdc │ │ └── common │ │ ├── annotation │ │ ├── Experimental.java │ │ ├── Internal.java │ │ ├── Public.java │ │ ├── PublicEvolving.java │ │ └── VisibleForTesting.java │ │ ├── configuration │ │ ├── ConfigOption.java │ │ ├── ConfigOptions.java │ │ ├── Configuration.java │ │ ├── ConfigurationUtils.java │ │ ├── FallbackKey.java │ │ ├── StructuredOptionsSplitter.java │ │ └── description │ │ │ ├── BlockElement.java │ │ │ ├── Description.java │ │ │ ├── DescriptionElement.java │ │ │ ├── Formatter.java │ │ │ ├── HtmlFormatter.java │ │ │ ├── InlineElement.java │ │ │ ├── LineBreakElement.java │ │ │ ├── LinkElement.java │ │ │ ├── ListElement.java │ │ │ └── TextElement.java │ │ ├── data │ │ ├── ArrayData.java │ │ ├── DecimalData.java │ │ ├── GenericArrayData.java │ │ ├── GenericMapData.java │ │ ├── LocalZonedTimestampData.java │ │ ├── MapData.java │ │ ├── RecordData.java │ │ ├── StringData.java │ │ ├── TimestampData.java │ │ ├── ZonedTimestampData.java │ │ └── binary │ │ │ ├── BinaryArrayData.java │ │ │ ├── BinaryFormat.java │ │ │ ├── BinaryMapData.java │ │ │ ├── BinaryRecordData.java │ │ │ ├── BinarySection.java │ │ │ ├── BinarySegmentUtils.java │ │ │ ├── BinaryStringData.java │ │ │ ├── LazyBinaryFormat.java │ │ │ ├── MurmurHashUtils.java │ │ │ └── NullAwareGetters.java │ │ ├── event │ │ ├── AddColumnEvent.java │ │ ├── AlterColumnTypeEvent.java │ │ ├── ChangeEvent.java │ │ ├── CreateTableEvent.java │ │ ├── DataChangeEvent.java │ │ ├── DropColumnEvent.java │ │ ├── DropTableEvent.java │ │ ├── Event.java │ │ ├── EventDeserializer.java │ │ ├── FlushEvent.java │ │ ├── OperationType.java │ │ ├── RenameColumnEvent.java │ │ ├── SchemaChangeEvent.java │ │ ├── SchemaChangeEventType.java │ │ ├── SchemaChangeEventTypeFamily.java │ │ ├── SchemaChangeEventWithPreSchema.java │ │ ├── TableId.java │ │ ├── TruncateTableEvent.java │ │ └── visitor │ │ │ ├── AddColumnEventVisitor.java │ │ │ ├── AlterColumnTypeEventVisitor.java │ │ │ ├── CreateTableEventVisitor.java │ │ │ ├── DropColumnEventVisitor.java │ │ │ ├── DropTableEventVisitor.java │ │ │ ├── RenameColumnEventVisitor.java │ │ │ ├── SchemaChangeEventVisitor.java │ │ │ └── TruncateTableEventVisitor.java │ │ ├── exceptions │ │ ├── SchemaEvolveException.java │ │ └── UnsupportedSchemaChangeEventException.java │ │ ├── factories │ │ ├── DataSinkFactory.java │ │ ├── DataSourceFactory.java │ │ ├── Factory.java │ │ └── FactoryHelper.java │ │ ├── function │ │ ├── HashFunction.java │ │ └── HashFunctionProvider.java │ │ ├── pipeline │ │ ├── PipelineOptions.java │ │ ├── RuntimeExecutionMode.java │ │ └── SchemaChangeBehavior.java │ │ ├── route │ │ └── RouteRule.java │ │ ├── schema │ │ ├── Column.java │ │ ├── MetadataColumn.java │ │ ├── PhysicalColumn.java │ │ ├── Schema.java │ │ ├── Selectors.java │ │ └── TableFilter.java │ │ ├── sink │ │ ├── DataSink.java │ │ ├── DefaultDataChangeEventHashFunctionProvider.java │ │ ├── EventSinkProvider.java │ │ ├── FlinkSinkFunctionProvider.java │ │ ├── FlinkSinkProvider.java │ │ └── MetadataApplier.java │ │ ├── source │ │ ├── DataSource.java │ │ ├── EventSourceProvider.java │ │ ├── FlinkSourceFunctionProvider.java │ │ ├── FlinkSourceProvider.java │ │ ├── MetadataAccessor.java │ │ └── SupportedMetadataColumn.java │ │ ├── text │ │ ├── ParsingException.java │ │ ├── Position.java │ │ └── TokenStream.java │ │ ├── types │ │ ├── ArrayType.java │ │ ├── BigIntType.java │ │ ├── BinaryType.java │ │ ├── BooleanType.java │ │ ├── CharType.java │ │ ├── DataField.java │ │ ├── DataType.java │ │ ├── DataTypeChecks.java │ │ ├── DataTypeDefaultVisitor.java │ │ ├── DataTypeFamily.java │ │ ├── DataTypeRoot.java │ │ ├── DataTypeVisitor.java │ │ ├── DataTypes.java │ │ ├── DateType.java │ │ ├── DecimalType.java │ │ ├── DoubleType.java │ │ ├── FloatType.java │ │ ├── IntType.java │ │ ├── LocalZonedTimestampType.java │ │ ├── MapType.java │ │ ├── RowType.java │ │ ├── SmallIntType.java │ │ ├── TimeType.java │ │ ├── TimestampType.java │ │ ├── TinyIntType.java │ │ ├── VarBinaryType.java │ │ ├── VarCharType.java │ │ ├── ZonedTimestampType.java │ │ └── utils │ │ │ ├── DataTypeUtils.java │ │ │ └── runtime │ │ │ ├── DataInputViewStream.java │ │ │ └── DataOutputViewStream.java │ │ ├── udf │ │ ├── UserDefinedFunction.java │ │ └── UserDefinedFunctionContext.java │ │ └── utils │ │ ├── ChangeEventUtils.java │ │ ├── DateTimeUtils.java │ │ ├── EncodingUtils.java │ │ ├── InstantiationUtil.java │ │ ├── Preconditions.java │ │ ├── Predicates.java │ │ ├── SchemaMergingUtils.java │ │ ├── SchemaUtils.java │ │ ├── StringUtf8Utils.java │ │ ├── StringUtils.java │ │ ├── TestCaseUtils.java │ │ ├── ThreadLocalCache.java │ │ ├── TimeUtils.java │ │ └── TypeCheckUtils.java │ └── test │ ├── java │ └── org │ │ └── apache │ │ └── flink │ │ └── cdc │ │ └── common │ │ ├── factories │ │ └── FactoryHelperTests.java │ │ ├── schema │ │ └── SelectorsTest.java │ │ ├── testutils │ │ └── assertions │ │ │ ├── AddColumnEventAssert.java │ │ │ ├── AlterColumnTypeEventAssert.java │ │ │ ├── ChangeEventAssert.java │ │ │ ├── CreateTableEventAssert.java │ │ │ ├── DataChangeEventAssert.java │ │ │ ├── DropColumnEventAssert.java │ │ │ ├── EventAssert.java │ │ │ ├── EventAssertions.java │ │ │ ├── RecordDataAssert.java │ │ │ ├── RecordDataWithSchemaAssert.java │ │ │ ├── RenameColumnEventAssert.java │ │ │ └── SchemaChangeEventAssert.java │ │ ├── types │ │ └── utils │ │ │ └── DataTypeUtilsTest.java │ │ └── utils │ │ ├── ChangeEventUtilsTest.java │ │ ├── SchemaMergingUtilsTest.java │ │ ├── SchemaUtilsTest.java │ │ └── StringUtilsTest.java │ └── resources │ └── log4j2-test.properties ├── flink-cdc-composer ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── apache │ │ └── flink │ │ └── cdc │ │ └── composer │ │ ├── PipelineComposer.java │ │ ├── PipelineDeploymentExecutor.java │ │ ├── PipelineExecution.java │ │ ├── definition │ │ ├── ModelDef.java │ │ ├── PipelineDef.java │ │ ├── RouteDef.java │ │ ├── SinkDef.java │ │ ├── SourceDef.java │ │ ├── TransformDef.java │ │ └── UdfDef.java │ │ ├── flink │ │ ├── FlinkEnvironmentUtils.java │ │ ├── FlinkPipelineComposer.java │ │ ├── FlinkPipelineExecution.java │ │ ├── coordination │ │ │ └── OperatorIDGenerator.java │ │ ├── deployment │ │ │ ├── ComposeDeployment.java │ │ │ ├── K8SApplicationDeploymentExecutor.java │ │ │ └── YarnApplicationDeploymentExecutor.java │ │ └── translator │ │ │ ├── DataSinkTranslator.java │ │ │ ├── DataSourceTranslator.java │ │ │ ├── OperatorUidGenerator.java │ │ │ ├── PartitioningTranslator.java │ │ │ ├── SchemaOperatorTranslator.java │ │ │ └── TransformTranslator.java │ │ └── utils │ │ └── FactoryDiscoveryUtils.java │ └── test │ ├── java │ └── org │ │ └── apache │ │ └── flink │ │ └── cdc │ │ └── composer │ │ ├── flink │ │ ├── FlinkEnvironmentUtilsTest.java │ │ ├── FlinkParallelizedPipelineITCase.java │ │ ├── FlinkPipelineBatchComposerITCase.java │ │ ├── FlinkPipelineComposerITCase.java │ │ ├── FlinkPipelineComposerLenientITCase.java │ │ ├── FlinkPipelineComposerTest.java │ │ ├── FlinkPipelineTransformITCase.java │ │ ├── FlinkPipelineUdfITCase.java │ │ ├── deployment │ │ │ └── ComposeDeploymentTest.java │ │ └── translator │ │ │ ├── DataSinkTranslatorTest.java │ │ │ ├── DataSourceTranslatorTest.java │ │ │ └── OperatorUidGeneratorTest.java │ │ ├── testsource │ │ ├── factory │ │ │ └── DistributedDataSourceFactory.java │ │ └── source │ │ │ ├── DistributedDataSource.java │ │ │ ├── DistributedSourceFunction.java │ │ │ └── DistributedSourceOptions.java │ │ └── utils │ │ ├── FactoryDiscoveryUtilsTest.java │ │ └── factory │ │ ├── DataSinkFactory1.java │ │ ├── DataSinkFactory2.java │ │ ├── DataSourceFactory1.java │ │ ├── DataSourceFactory2.java │ │ └── TestOptions.java │ └── resources │ ├── META-INF │ └── services │ │ └── org.apache.flink.cdc.common.factories.Factory │ ├── log4j2-test.properties │ └── ref-output │ ├── distributed-ignore.txt │ ├── distributed.txt │ └── regular.txt ├── flink-cdc-connect ├── flink-cdc-pipeline-connectors │ ├── flink-cdc-pipeline-connector-doris │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── doris │ │ │ │ │ ├── factory │ │ │ │ │ └── DorisDataSinkFactory.java │ │ │ │ │ ├── sink │ │ │ │ │ ├── DorisDataSink.java │ │ │ │ │ ├── DorisDataSinkOptions.java │ │ │ │ │ ├── DorisEventSerializer.java │ │ │ │ │ ├── DorisMetadataApplier.java │ │ │ │ │ ├── DorisRowConverter.java │ │ │ │ │ └── DorisSchemaChangeManager.java │ │ │ │ │ └── utils │ │ │ │ │ └── DorisSchemaUtils.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.cdc.common.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── doris │ │ │ │ └── sink │ │ │ │ ├── DorisEventSerializerTest.java │ │ │ │ ├── DorisMetadataApplierITCase.java │ │ │ │ ├── DorisPipelineITCase.java │ │ │ │ ├── DorisRowConverterTest.java │ │ │ │ ├── DorisSchemaUtilsTest.java │ │ │ │ └── utils │ │ │ │ ├── DorisContainer.java │ │ │ │ └── DorisSinkTestBase.java │ │ │ └── resources │ │ │ └── log4j2-test.properties │ ├── flink-cdc-pipeline-connector-elasticsearch │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── elasticsearch │ │ │ │ │ ├── config │ │ │ │ │ └── ElasticsearchSinkOptions.java │ │ │ │ │ ├── serializer │ │ │ │ │ ├── Elasticsearch6RequestCreator.java │ │ │ │ │ ├── ElasticsearchEventSerializer.java │ │ │ │ │ └── ElasticsearchRowConverter.java │ │ │ │ │ ├── sink │ │ │ │ │ ├── ElasticsearchDataSink.java │ │ │ │ │ ├── ElasticsearchDataSinkFactory.java │ │ │ │ │ └── ElasticsearchDataSinkOptions.java │ │ │ │ │ └── v2 │ │ │ │ │ ├── Elasticsearch8AsyncSink.java │ │ │ │ │ ├── Elasticsearch8AsyncSinkBuilder.java │ │ │ │ │ ├── Elasticsearch8AsyncSinkSerializer.java │ │ │ │ │ ├── Elasticsearch8AsyncWriter.java │ │ │ │ │ ├── NetworkConfig.java │ │ │ │ │ ├── Operation.java │ │ │ │ │ └── OperationSerializer.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.cdc.common.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── elasticsearch │ │ │ │ └── sink │ │ │ │ ├── Elasticsearch6DataSinkITCaseTest.java │ │ │ │ ├── Elasticsearch7DataSinkITCaseTest.java │ │ │ │ ├── ElasticsearchDataSinkFactoryTest.java │ │ │ │ ├── ElasticsearchDataSinkITCaseTest.java │ │ │ │ ├── ElasticsearchEventSerializerTest.java │ │ │ │ └── utils │ │ │ │ ├── ElasticsearchContainer.java │ │ │ │ └── ElasticsearchTestUtils.java │ │ │ └── resources │ │ │ └── log4j2-test.properties │ ├── flink-cdc-pipeline-connector-iceberg │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── iceberg │ │ │ │ │ └── sink │ │ │ │ │ ├── IcebergDataSink.java │ │ │ │ │ ├── IcebergDataSinkFactory.java │ │ │ │ │ ├── IcebergDataSinkOptions.java │ │ │ │ │ ├── IcebergMetadataApplier.java │ │ │ │ │ ├── utils │ │ │ │ │ ├── IcebergTypeUtils.java │ │ │ │ │ ├── OptionUtils.java │ │ │ │ │ └── RowDataUtils.java │ │ │ │ │ └── v2 │ │ │ │ │ ├── IcebergCommitter.java │ │ │ │ │ ├── IcebergSink.java │ │ │ │ │ ├── IcebergWriter.java │ │ │ │ │ ├── TableMetric.java │ │ │ │ │ ├── TableSchemaWrapper.java │ │ │ │ │ ├── WriteResultWrapper.java │ │ │ │ │ ├── WriteResultWrapperSerializer.java │ │ │ │ │ └── compaction │ │ │ │ │ ├── CompactionOperator.java │ │ │ │ │ └── CompactionOptions.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.cdc.common.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── iceberg │ │ │ │ └── sink │ │ │ │ ├── IcebergDataSinkFactoryTest.java │ │ │ │ ├── IcebergMetadataApplierTest.java │ │ │ │ └── v2 │ │ │ │ ├── CompactionOperatorTest.java │ │ │ │ ├── IcebergSinkITCase.java │ │ │ │ └── IcebergWriterTest.java │ │ │ └── resources │ │ │ └── log4j2-test.properties │ ├── flink-cdc-pipeline-connector-kafka │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── kafka │ │ │ │ │ ├── json │ │ │ │ │ ├── ChangeLogJsonFormatFactory.java │ │ │ │ │ ├── JsonSerializationType.java │ │ │ │ │ ├── TableSchemaInfo.java │ │ │ │ │ ├── canal │ │ │ │ │ │ └── CanalJsonSerializationSchema.java │ │ │ │ │ └── debezium │ │ │ │ │ │ ├── DebeziumJsonRowDataSerializationSchema.java │ │ │ │ │ │ ├── DebeziumJsonSerializationSchema.java │ │ │ │ │ │ └── DebeziumJsonStruct.java │ │ │ │ │ ├── serialization │ │ │ │ │ ├── CsvSerializationSchema.java │ │ │ │ │ └── JsonSerializationSchema.java │ │ │ │ │ ├── sink │ │ │ │ │ ├── KafkaDataSink.java │ │ │ │ │ ├── KafkaDataSinkFactory.java │ │ │ │ │ ├── KafkaDataSinkOptions.java │ │ │ │ │ ├── KafkaMetaDataApplier.java │ │ │ │ │ ├── KeyFormat.java │ │ │ │ │ ├── KeySerializationFactory.java │ │ │ │ │ ├── PartitionStrategy.java │ │ │ │ │ └── PipelineKafkaRecordSerializationSchema.java │ │ │ │ │ └── utils │ │ │ │ │ ├── JsonRowDataSerializationSchemaUtils.java │ │ │ │ │ └── KafkaSinkUtils.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.cdc.common.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── kafka │ │ │ │ ├── json │ │ │ │ ├── MockInitializationContext.java │ │ │ │ ├── TableSchemaInfoTest.java │ │ │ │ ├── canal │ │ │ │ │ └── CanalJsonSerializationSchemaTest.java │ │ │ │ └── debezium │ │ │ │ │ └── DebeziumJsonSerializationSchemaTest.java │ │ │ │ ├── serialization │ │ │ │ ├── CsvSerializationSchemaTest.java │ │ │ │ └── JsonSerializationSchemaTest.java │ │ │ │ └── sink │ │ │ │ ├── KafkaDataSinkFactoryTest.java │ │ │ │ ├── KafkaDataSinkITCase.java │ │ │ │ └── KafkaUtil.java │ │ │ └── resources │ │ │ └── log4j2-test.properties │ ├── flink-cdc-pipeline-connector-maxcompute │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── maxcompute │ │ │ │ │ ├── MaxComputeDataSink.java │ │ │ │ │ ├── MaxComputeDataSinkFactory.java │ │ │ │ │ ├── MaxComputeDataSinkOptions.java │ │ │ │ │ ├── MaxComputeMetadataApplier.java │ │ │ │ │ ├── common │ │ │ │ │ ├── Constant.java │ │ │ │ │ ├── FlinkOdpsException.java │ │ │ │ │ ├── SessionIdentifier.java │ │ │ │ │ └── UncheckedOdpsException.java │ │ │ │ │ ├── coordinator │ │ │ │ │ ├── SessionManageCoordinatedOperatorFactory.java │ │ │ │ │ ├── SessionManageCoordinator.java │ │ │ │ │ ├── SessionManageOperator.java │ │ │ │ │ └── message │ │ │ │ │ │ ├── CommitSessionRequest.java │ │ │ │ │ │ ├── CommitSessionResponse.java │ │ │ │ │ │ ├── CreateSessionRequest.java │ │ │ │ │ │ ├── CreateSessionResponse.java │ │ │ │ │ │ ├── SyncRequest.java │ │ │ │ │ │ └── WaitForFlushSuccessRequest.java │ │ │ │ │ ├── options │ │ │ │ │ ├── CompressAlgorithm.java │ │ │ │ │ ├── MaxComputeOptions.java │ │ │ │ │ └── MaxComputeWriteOptions.java │ │ │ │ │ ├── sink │ │ │ │ │ ├── MaxComputeEventSink.java │ │ │ │ │ ├── MaxComputeEventWriter.java │ │ │ │ │ └── MaxComputeHashFunctionProvider.java │ │ │ │ │ ├── utils │ │ │ │ │ ├── MaxComputeUtils.java │ │ │ │ │ ├── RetryUtils.java │ │ │ │ │ ├── SchemaEvolutionUtils.java │ │ │ │ │ ├── SessionCommitCoordinateHelper.java │ │ │ │ │ └── TypeConvertUtils.java │ │ │ │ │ └── writer │ │ │ │ │ ├── BatchAppendWriter.java │ │ │ │ │ ├── BatchUpsertWriter.java │ │ │ │ │ └── MaxComputeWriter.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.cdc.common.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── maxcompute │ │ │ │ ├── EmulatorTestBase.java │ │ │ │ └── utils │ │ │ │ ├── SchemaEvolutionUtilsTest.java │ │ │ │ ├── SessionCommitCoordinateHelperTest.java │ │ │ │ └── TypeConvertUtilsTest.java │ │ │ └── resources │ │ │ └── log4j2-test.properties │ ├── flink-cdc-pipeline-connector-mysql │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── mysql │ │ │ │ │ ├── factory │ │ │ │ │ └── MySqlDataSourceFactory.java │ │ │ │ │ ├── source │ │ │ │ │ ├── MySqlDataSource.java │ │ │ │ │ ├── MySqlDataSourceOptions.java │ │ │ │ │ ├── MySqlEventDeserializer.java │ │ │ │ │ ├── MySqlMetadataAccessor.java │ │ │ │ │ ├── MySqlSchemaDataTypeInference.java │ │ │ │ │ ├── OpTsMetadataColumn.java │ │ │ │ │ ├── parser │ │ │ │ │ │ ├── CustomAlterTableParserListener.java │ │ │ │ │ │ ├── CustomColumnDefinitionParserListener.java │ │ │ │ │ │ ├── CustomMySqlAntlrDdlParser.java │ │ │ │ │ │ └── CustomMySqlAntlrDdlParserListener.java │ │ │ │ │ └── reader │ │ │ │ │ │ └── MySqlPipelineRecordEmitter.java │ │ │ │ │ └── utils │ │ │ │ │ ├── MySqlSchemaUtils.java │ │ │ │ │ └── MySqlTypeUtils.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.cdc.common.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── mysql │ │ │ │ ├── source │ │ │ │ ├── MySqlAncientDateAndTimeITCase.java │ │ │ │ ├── MySqlDataSourceFactoryTest.java │ │ │ │ ├── MySqlFullTypesITCase.java │ │ │ │ ├── MySqlMetadataAccessorITCase.java │ │ │ │ ├── MySqlOnLineSchemaMigrationITCase.java │ │ │ │ ├── MySqlParallelizedPipelineITCase.java │ │ │ │ ├── MySqlPipelineITCase.java │ │ │ │ ├── MySqlTablePatternMatchingTest.java │ │ │ │ └── MysqlPipelineNewlyAddedTableITCase.java │ │ │ │ └── testutils │ │ │ │ ├── MySqSourceTestUtils.java │ │ │ │ └── RecordDataTestUtils.java │ │ │ └── resources │ │ │ ├── ddl │ │ │ ├── ancient_date_and_time.sql │ │ │ ├── column_type_test.sql │ │ │ ├── column_type_test_mysql8.sql │ │ │ ├── customer.sql │ │ │ └── inventory.sql │ │ │ ├── docker │ │ │ ├── server-allow-ancient-date-time │ │ │ │ └── my.cnf │ │ │ ├── server-gtids │ │ │ │ ├── expire-seconds │ │ │ │ │ └── my.cnf │ │ │ │ └── my.cnf │ │ │ ├── server │ │ │ │ └── my.cnf │ │ │ └── setup.sql │ │ │ ├── log4j2-test.properties │ │ │ └── pipeline-test.yaml │ ├── flink-cdc-pipeline-connector-oceanbase │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── oceanbase │ │ │ │ │ ├── catalog │ │ │ │ │ ├── OceanBaseCatalog.java │ │ │ │ │ ├── OceanBaseCatalogException.java │ │ │ │ │ ├── OceanBaseCatalogFactory.java │ │ │ │ │ ├── OceanBaseColumn.java │ │ │ │ │ ├── OceanBaseMySQLCatalog.java │ │ │ │ │ ├── OceanBaseOracleCatalog.java │ │ │ │ │ └── OceanBaseTable.java │ │ │ │ │ ├── factory │ │ │ │ │ └── OceanBaseDataSinkFactory.java │ │ │ │ │ ├── sink │ │ │ │ │ ├── OceanBaseDataSink.java │ │ │ │ │ ├── OceanBaseDataSinkOptions.java │ │ │ │ │ ├── OceanBaseEventSerializationSchema.java │ │ │ │ │ ├── OceanBaseMetadataApplier.java │ │ │ │ │ ├── OceanBaseRowConvert.java │ │ │ │ │ └── OceanBaseUtils.java │ │ │ │ │ └── utils │ │ │ │ │ ├── ListUtils.java │ │ │ │ │ └── OptionUtils.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.cdc.common.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── oceanbase │ │ │ │ ├── catalog │ │ │ │ └── OceanBaseMySQLCatalogTest.java │ │ │ │ ├── sink │ │ │ │ ├── OceanBaseDataSinkFactoryTest.java │ │ │ │ ├── OceanBaseEventSerializationSchemaTest.java │ │ │ │ └── OceanBaseMetadataApplierTest.java │ │ │ │ └── utils │ │ │ │ └── OceanBaseTestMySQLCatalog.java │ │ │ └── resources │ │ │ └── sql │ │ │ └── init.sql │ ├── flink-cdc-pipeline-connector-paimon │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── paimon │ │ │ │ │ └── sink │ │ │ │ │ ├── PaimonDataSink.java │ │ │ │ │ ├── PaimonDataSinkFactory.java │ │ │ │ │ ├── PaimonDataSinkOptions.java │ │ │ │ │ ├── PaimonHashFunction.java │ │ │ │ │ ├── PaimonHashFunctionProvider.java │ │ │ │ │ ├── PaimonMetadataApplier.java │ │ │ │ │ ├── SchemaChangeProvider.java │ │ │ │ │ └── v2 │ │ │ │ │ ├── MultiTableCommittableChannelComputer.java │ │ │ │ │ ├── OperatorIDGenerator.java │ │ │ │ │ ├── PaimonCommitter.java │ │ │ │ │ ├── PaimonEvent.java │ │ │ │ │ ├── PaimonEventSink.java │ │ │ │ │ ├── PaimonRecordEventSerializer.java │ │ │ │ │ ├── PaimonRecordSerializer.java │ │ │ │ │ ├── PaimonSink.java │ │ │ │ │ ├── PaimonWriter.java │ │ │ │ │ ├── PaimonWriterHelper.java │ │ │ │ │ ├── PreCommitOperator.java │ │ │ │ │ ├── StoreSinkWriteImpl.java │ │ │ │ │ ├── TableSchemaInfo.java │ │ │ │ │ └── bucket │ │ │ │ │ ├── BucketAssignOperator.java │ │ │ │ │ ├── BucketWrapper.java │ │ │ │ │ ├── BucketWrapperChangeEvent.java │ │ │ │ │ ├── BucketWrapperEventSerializer.java │ │ │ │ │ ├── BucketWrapperEventTypeInfo.java │ │ │ │ │ ├── BucketWrapperFlushEvent.java │ │ │ │ │ └── FlushEventAlignmentOperator.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.cdc.common.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── paimon │ │ │ │ └── sink │ │ │ │ ├── PaimonDataSinkFactoryTest.java │ │ │ │ ├── PaimonHashFunctionTest.java │ │ │ │ ├── PaimonMetadataApplierTest.java │ │ │ │ └── v2 │ │ │ │ ├── PaimonSinkITCase.java │ │ │ │ ├── PaimonWriterHelperTest.java │ │ │ │ └── TestMultiTableCommittableChannelComputer.java │ │ │ └── resources │ │ │ ├── hadoop-conf-dir │ │ │ └── core-site.xml │ │ │ ├── hive-conf-dir │ │ │ └── hive-site.xml │ │ │ └── log4j2-test.properties │ ├── flink-cdc-pipeline-connector-starrocks │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── starrocks │ │ │ │ │ └── sink │ │ │ │ │ ├── EventRecordSerializationSchema.java │ │ │ │ │ ├── SchemaChangeConfig.java │ │ │ │ │ ├── StarRocksDataSink.java │ │ │ │ │ ├── StarRocksDataSinkFactory.java │ │ │ │ │ ├── StarRocksDataSinkOptions.java │ │ │ │ │ ├── StarRocksEnrichedCatalog.java │ │ │ │ │ ├── StarRocksMetadataApplier.java │ │ │ │ │ ├── StarRocksUtils.java │ │ │ │ │ └── TableCreateConfig.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.cdc.common.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── starrocks │ │ │ │ └── sink │ │ │ │ ├── CdcDataTypeTransformerTest.java │ │ │ │ ├── EventRecordSerializationSchemaTest.java │ │ │ │ ├── MockStarRocksCatalog.java │ │ │ │ ├── StarRocksDataSinkFactoryTest.java │ │ │ │ ├── StarRocksMetadataApplierITCase.java │ │ │ │ ├── StarRocksMetadataApplierTest.java │ │ │ │ ├── StarRocksPipelineITCase.java │ │ │ │ └── utils │ │ │ │ ├── StarRocksContainer.java │ │ │ │ └── StarRocksSinkTestBase.java │ │ │ └── resources │ │ │ └── log4j2-test.properties │ ├── flink-cdc-pipeline-connector-values │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── values │ │ │ │ │ ├── ValuesDatabase.java │ │ │ │ │ ├── factory │ │ │ │ │ └── ValuesDataFactory.java │ │ │ │ │ ├── sink │ │ │ │ │ ├── ValuesDataSink.java │ │ │ │ │ ├── ValuesDataSinkFunction.java │ │ │ │ │ ├── ValuesDataSinkHelper.java │ │ │ │ │ └── ValuesDataSinkOptions.java │ │ │ │ │ └── source │ │ │ │ │ ├── OpTsMetadataColumn.java │ │ │ │ │ ├── TimestampTypeMetadataColumn.java │ │ │ │ │ ├── ValuesDataSource.java │ │ │ │ │ ├── ValuesDataSourceHelper.java │ │ │ │ │ └── ValuesDataSourceOptions.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.cdc.common.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── values │ │ │ │ ├── ValuesDatabaseTest.java │ │ │ │ ├── sink │ │ │ │ └── ValuesDataSinkHelperTest.java │ │ │ │ └── source │ │ │ │ └── ValuesDataSourceITCase.java │ │ │ └── resources │ │ │ └── log4j2-test.properties │ └── pom.xml ├── flink-cdc-source-connectors │ ├── flink-cdc-base │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── base │ │ │ │ ├── WatermarkDispatcher.java │ │ │ │ ├── config │ │ │ │ ├── BaseSourceConfig.java │ │ │ │ ├── JdbcSourceConfig.java │ │ │ │ ├── JdbcSourceConfigFactory.java │ │ │ │ └── SourceConfig.java │ │ │ │ ├── dialect │ │ │ │ ├── DataSourceDialect.java │ │ │ │ └── JdbcDataSourceDialect.java │ │ │ │ ├── options │ │ │ │ ├── JdbcSourceOptions.java │ │ │ │ ├── SourceOptions.java │ │ │ │ ├── StartupMode.java │ │ │ │ └── StartupOptions.java │ │ │ │ ├── relational │ │ │ │ ├── JdbcSourceEventDispatcher.java │ │ │ │ ├── connection │ │ │ │ │ ├── ConnectionPoolId.java │ │ │ │ │ ├── ConnectionPools.java │ │ │ │ │ ├── JdbcConnectionFactory.java │ │ │ │ │ ├── JdbcConnectionPoolFactory.java │ │ │ │ │ └── JdbcConnectionPools.java │ │ │ │ └── handler │ │ │ │ │ └── SchemaChangeEventHandler.java │ │ │ │ ├── source │ │ │ │ ├── EmbeddedFlinkDatabaseHistory.java │ │ │ │ ├── IncrementalSource.java │ │ │ │ ├── assigner │ │ │ │ │ ├── AssignerStatus.java │ │ │ │ │ ├── HybridSplitAssigner.java │ │ │ │ │ ├── SnapshotSplitAssigner.java │ │ │ │ │ ├── SplitAssigner.java │ │ │ │ │ ├── StreamSplitAssigner.java │ │ │ │ │ ├── splitter │ │ │ │ │ │ ├── ChunkRange.java │ │ │ │ │ │ ├── ChunkSplitter.java │ │ │ │ │ │ └── JdbcSourceChunkSplitter.java │ │ │ │ │ └── state │ │ │ │ │ │ ├── ChunkSplitterState.java │ │ │ │ │ │ ├── HybridPendingSplitsState.java │ │ │ │ │ │ ├── PendingSplitsState.java │ │ │ │ │ │ ├── PendingSplitsStateSerializer.java │ │ │ │ │ │ ├── SnapshotPendingSplitsState.java │ │ │ │ │ │ └── StreamPendingSplitsState.java │ │ │ │ ├── enumerator │ │ │ │ │ └── IncrementalSourceEnumerator.java │ │ │ │ ├── jdbc │ │ │ │ │ └── JdbcIncrementalSource.java │ │ │ │ ├── meta │ │ │ │ │ ├── events │ │ │ │ │ │ ├── FinishedSnapshotSplitsAckEvent.java │ │ │ │ │ │ ├── FinishedSnapshotSplitsReportEvent.java │ │ │ │ │ │ ├── FinishedSnapshotSplitsRequestEvent.java │ │ │ │ │ │ ├── LatestFinishedSplitsNumberEvent.java │ │ │ │ │ │ ├── LatestFinishedSplitsNumberRequestEvent.java │ │ │ │ │ │ ├── StreamSplitAssignedEvent.java │ │ │ │ │ │ ├── StreamSplitMetaEvent.java │ │ │ │ │ │ ├── StreamSplitMetaRequestEvent.java │ │ │ │ │ │ ├── StreamSplitUpdateAckEvent.java │ │ │ │ │ │ └── StreamSplitUpdateRequestEvent.java │ │ │ │ │ ├── offset │ │ │ │ │ │ ├── Offset.java │ │ │ │ │ │ ├── OffsetDeserializerSerializer.java │ │ │ │ │ │ └── OffsetFactory.java │ │ │ │ │ ├── split │ │ │ │ │ │ ├── ChangeEventRecords.java │ │ │ │ │ │ ├── FinishedSnapshotSplitInfo.java │ │ │ │ │ │ ├── SchemalessSnapshotSplit.java │ │ │ │ │ │ ├── SnapshotSplit.java │ │ │ │ │ │ ├── SnapshotSplitState.java │ │ │ │ │ │ ├── SourceRecords.java │ │ │ │ │ │ ├── SourceSplitBase.java │ │ │ │ │ │ ├── SourceSplitSerializer.java │ │ │ │ │ │ ├── SourceSplitState.java │ │ │ │ │ │ ├── StreamSplit.java │ │ │ │ │ │ └── StreamSplitState.java │ │ │ │ │ └── wartermark │ │ │ │ │ │ ├── WatermarkEvent.java │ │ │ │ │ │ └── WatermarkKind.java │ │ │ │ ├── metrics │ │ │ │ │ ├── SourceEnumeratorMetrics.java │ │ │ │ │ └── SourceReaderMetrics.java │ │ │ │ ├── reader │ │ │ │ │ ├── IncrementalSourceReader.java │ │ │ │ │ ├── IncrementalSourceReaderContext.java │ │ │ │ │ ├── IncrementalSourceReaderWithCommit.java │ │ │ │ │ ├── IncrementalSourceRecordEmitter.java │ │ │ │ │ ├── IncrementalSourceSplitReader.java │ │ │ │ │ └── external │ │ │ │ │ │ ├── AbstractScanFetchTask.java │ │ │ │ │ │ ├── FetchTask.java │ │ │ │ │ │ ├── Fetcher.java │ │ │ │ │ │ ├── IncrementalSourceScanFetcher.java │ │ │ │ │ │ ├── IncrementalSourceStreamFetcher.java │ │ │ │ │ │ └── JdbcSourceFetchTaskContext.java │ │ │ │ └── utils │ │ │ │ │ ├── JdbcChunkUtils.java │ │ │ │ │ └── hooks │ │ │ │ │ ├── SnapshotPhaseHook.java │ │ │ │ │ └── SnapshotPhaseHooks.java │ │ │ │ └── utils │ │ │ │ ├── EnvironmentUtils.java │ │ │ │ ├── ObjectUtils.java │ │ │ │ ├── OptionUtils.java │ │ │ │ ├── SerializerUtils.java │ │ │ │ ├── SourceRecordUtils.java │ │ │ │ └── VersionComparable.java │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── base │ │ │ │ ├── GenericConnectionPoolTest.java │ │ │ │ ├── mocked │ │ │ │ ├── MockedPooledDataSourceFactory.java │ │ │ │ └── MockedSourceConfig.java │ │ │ │ └── source │ │ │ │ └── assigner │ │ │ │ └── state │ │ │ │ └── PendingSplitsStateSerializerTest.java │ │ │ └── resources │ │ │ ├── ddl │ │ │ ├── inventory.sql │ │ │ └── metrics.sql │ │ │ ├── docker │ │ │ ├── server-gtids │ │ │ │ └── my.cnf │ │ │ └── setup.sql │ │ │ └── log4j2-test.properties │ ├── flink-connector-db2-cdc │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ ├── io │ │ │ │ │ └── debezium │ │ │ │ │ │ └── connector │ │ │ │ │ │ └── db2 │ │ │ │ │ │ ├── Db2Connection.java │ │ │ │ │ │ └── Db2StreamingChangeEventSource.java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── db2 │ │ │ │ │ ├── Db2Source.java │ │ │ │ │ ├── source │ │ │ │ │ ├── Db2SourceBuilder.java │ │ │ │ │ ├── config │ │ │ │ │ │ ├── Db2SourceConfig.java │ │ │ │ │ │ └── Db2SourceConfigFactory.java │ │ │ │ │ ├── dialect │ │ │ │ │ │ ├── Db2ChunkSplitter.java │ │ │ │ │ │ ├── Db2Dialect.java │ │ │ │ │ │ ├── Db2PooledDataSourceFactory.java │ │ │ │ │ │ └── Db2Schema.java │ │ │ │ │ ├── fetch │ │ │ │ │ │ ├── Db2ScanFetchTask.java │ │ │ │ │ │ ├── Db2SourceFetchTaskContext.java │ │ │ │ │ │ └── Db2StreamFetchTask.java │ │ │ │ │ ├── handler │ │ │ │ │ │ └── Db2SchemaChangeEventHandler.java │ │ │ │ │ ├── offset │ │ │ │ │ │ ├── LsnFactory.java │ │ │ │ │ │ └── LsnOffset.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── Db2ConnectionUtils.java │ │ │ │ │ │ ├── Db2TypeUtils.java │ │ │ │ │ │ └── Db2Utils.java │ │ │ │ │ ├── table │ │ │ │ │ ├── Db2ReadableMetaData.java │ │ │ │ │ ├── Db2TableSource.java │ │ │ │ │ ├── Db2TableSourceFactory.java │ │ │ │ │ └── StartupOptions.java │ │ │ │ │ └── utils │ │ │ │ │ └── OptionUtils.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.table.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── db2 │ │ │ │ ├── Db2ParallelSourceExampleTest.java │ │ │ │ ├── Db2SourceTest.java │ │ │ │ ├── Db2TestBase.java │ │ │ │ ├── source │ │ │ │ └── Db2SourceITCase.java │ │ │ │ ├── table │ │ │ │ ├── Db2ConnectorITCase.java │ │ │ │ └── Db2TableSourceFactoryTest.java │ │ │ │ └── testutils │ │ │ │ ├── RecordsFormatter.java │ │ │ │ └── TestTable.java │ │ │ └── resources │ │ │ ├── db2_server │ │ │ ├── Dockerfile │ │ │ ├── asncdc.c │ │ │ ├── asncdc_UDF.sql │ │ │ ├── asncdcaddremove.sql │ │ │ ├── asncdctables.sql │ │ │ ├── cdcsetup.sh │ │ │ ├── column_type_test.sql │ │ │ ├── customers.sql │ │ │ ├── dbsetup.sh │ │ │ ├── inventory.sql │ │ │ └── startup-agent.sql │ │ │ └── log4j2-test.properties │ ├── flink-connector-debezium │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── io │ │ │ └── debezium │ │ │ │ ├── embedded │ │ │ │ └── EmbeddedEngineChangeEvent.java │ │ │ │ └── relational │ │ │ │ ├── HistorizedRelationalDatabaseConnectorConfig.java │ │ │ │ ├── RelationalChangeRecordEmitter.java │ │ │ │ └── RelationalTableFilters.java │ │ │ └── org │ │ │ └── apache │ │ │ └── flink │ │ │ └── cdc │ │ │ └── debezium │ │ │ ├── DebeziumDeserializationSchema.java │ │ │ ├── DebeziumSourceFunction.java │ │ │ ├── JsonDebeziumDeserializationSchema.java │ │ │ ├── StringDebeziumDeserializationSchema.java │ │ │ ├── Validator.java │ │ │ ├── event │ │ │ ├── DebeziumEventDeserializationSchema.java │ │ │ ├── DebeziumSchemaDataTypeInference.java │ │ │ ├── SchemaDataTypeInference.java │ │ │ └── SourceRecordEventDeserializer.java │ │ │ ├── history │ │ │ └── FlinkJsonTableChangeSerializer.java │ │ │ ├── internal │ │ │ ├── DebeziumChangeConsumer.java │ │ │ ├── DebeziumChangeFetcher.java │ │ │ ├── DebeziumOffset.java │ │ │ ├── DebeziumOffsetSerializer.java │ │ │ ├── FlinkDatabaseHistory.java │ │ │ ├── FlinkDatabaseSchemaHistory.java │ │ │ ├── FlinkOffsetBackingStore.java │ │ │ ├── Handover.java │ │ │ └── SchemaRecord.java │ │ │ ├── table │ │ │ ├── AppendMetadataCollector.java │ │ │ ├── DebeziumChangelogMode.java │ │ │ ├── DebeziumOptions.java │ │ │ ├── DeserializationRuntimeConverter.java │ │ │ ├── DeserializationRuntimeConverterFactory.java │ │ │ ├── MetadataConverter.java │ │ │ ├── RowDataDebeziumDeserializeSchema.java │ │ │ └── RowDataMetadataConverter.java │ │ │ └── utils │ │ │ ├── ConvertTimeBceUtil.java │ │ │ ├── DatabaseHistoryUtil.java │ │ │ ├── JdbcUrlUtils.java │ │ │ ├── ResolvedSchemaUtils.java │ │ │ └── TemporalConversions.java │ ├── flink-connector-mongodb-cdc │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── mongodb │ │ │ │ │ ├── MongoDBSource.java │ │ │ │ │ ├── internal │ │ │ │ │ ├── MongoDBConnectorSourceConnector.java │ │ │ │ │ ├── MongoDBConnectorSourceTask.java │ │ │ │ │ └── MongoDBEnvelope.java │ │ │ │ │ ├── source │ │ │ │ │ ├── MongoDBSource.java │ │ │ │ │ ├── MongoDBSourceBuilder.java │ │ │ │ │ ├── assigners │ │ │ │ │ │ └── splitters │ │ │ │ │ │ │ ├── MongoDBChunkSplitter.java │ │ │ │ │ │ │ ├── SampleBucketSplitStrategy.java │ │ │ │ │ │ │ ├── ShardedSplitStrategy.java │ │ │ │ │ │ │ ├── SingleSplitStrategy.java │ │ │ │ │ │ │ ├── SplitContext.java │ │ │ │ │ │ │ ├── SplitStrategy.java │ │ │ │ │ │ │ └── SplitVectorSplitStrategy.java │ │ │ │ │ ├── config │ │ │ │ │ │ ├── MongoDBSourceConfig.java │ │ │ │ │ │ ├── MongoDBSourceConfigFactory.java │ │ │ │ │ │ └── MongoDBSourceOptions.java │ │ │ │ │ ├── connection │ │ │ │ │ │ └── MongoClientPool.java │ │ │ │ │ ├── dialect │ │ │ │ │ │ └── MongoDBDialect.java │ │ │ │ │ ├── offset │ │ │ │ │ │ ├── ChangeStreamDescriptor.java │ │ │ │ │ │ ├── ChangeStreamOffset.java │ │ │ │ │ │ └── ChangeStreamOffsetFactory.java │ │ │ │ │ ├── reader │ │ │ │ │ │ ├── MongoDBRecordEmitter.java │ │ │ │ │ │ └── fetch │ │ │ │ │ │ │ ├── MongoDBFetchTaskContext.java │ │ │ │ │ │ │ ├── MongoDBScanFetchTask.java │ │ │ │ │ │ │ └── MongoDBStreamFetchTask.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── BsonUtils.java │ │ │ │ │ │ ├── ChunkUtils.java │ │ │ │ │ │ ├── CollectionDiscoveryUtils.java │ │ │ │ │ │ ├── MongoRecordUtils.java │ │ │ │ │ │ ├── MongoUtils.java │ │ │ │ │ │ └── ResumeTokenUtils.java │ │ │ │ │ └── table │ │ │ │ │ ├── MongoDBConnectorDeserializationSchema.java │ │ │ │ │ ├── MongoDBConnectorFullChangelogDeserializationSchema.java │ │ │ │ │ ├── MongoDBReadableMetadata.java │ │ │ │ │ ├── MongoDBTableSource.java │ │ │ │ │ └── MongoDBTableSourceFactory.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.table.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── mongodb │ │ │ │ ├── LegacyMongoDBContainer.java │ │ │ │ ├── LegacyMongoDBSourceExampleTest.java │ │ │ │ ├── LegacyMongoDBSourceTest.java │ │ │ │ ├── LegacyMongoDBSourceTestBase.java │ │ │ │ ├── LegacyMongoDBTestBase.java │ │ │ │ ├── source │ │ │ │ ├── MongoDBFullChangelogITCase.java │ │ │ │ ├── MongoDBParallelSourceExampleTest.java │ │ │ │ ├── MongoDBParallelSourceITCase.java │ │ │ │ ├── MongoDBSourceTestBase.java │ │ │ │ ├── NewlyAddedTableITCase.java │ │ │ │ ├── reader │ │ │ │ │ ├── MongoDBSnapshotSplitReaderAssignEndingFirstTest.java │ │ │ │ │ ├── MongoDBSnapshotSplitReaderTest.java │ │ │ │ │ └── MongoDBStreamSplitReaderTest.java │ │ │ │ └── utils │ │ │ │ │ ├── BsonUtilsTest.java │ │ │ │ │ └── ResumeTokenUtilsTest.java │ │ │ │ ├── table │ │ │ │ ├── MongoDBConnectorITCase.java │ │ │ │ ├── MongoDBRegexFilterITCase.java │ │ │ │ ├── MongoDBTableFactoryTest.java │ │ │ │ └── MongoDBTimeZoneITCase.java │ │ │ │ └── utils │ │ │ │ ├── MongoDBAssertUtils.java │ │ │ │ ├── MongoDBContainer.java │ │ │ │ ├── MongoDBTestUtils.java │ │ │ │ ├── RecordsFormatter.java │ │ │ │ └── TestTable.java │ │ │ └── resources │ │ │ ├── ddl │ │ │ ├── chunk_test.js │ │ │ ├── column_type_test.js │ │ │ ├── customer.js │ │ │ ├── inventory.js │ │ │ ├── ns-dotted.js │ │ │ ├── ns-regex.js │ │ │ └── ns_regex.js │ │ │ ├── docker │ │ │ └── mongodb │ │ │ │ ├── random.key │ │ │ │ └── setup.js │ │ │ └── log4j2-test.properties │ ├── flink-connector-mysql-cdc │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ ├── com │ │ │ │ │ └── github │ │ │ │ │ │ └── shyiko │ │ │ │ │ │ └── mysql │ │ │ │ │ │ └── binlog │ │ │ │ │ │ ├── event │ │ │ │ │ │ └── deserialization │ │ │ │ │ │ │ ├── ColumnType.java │ │ │ │ │ │ │ ├── TableMapEventDataDeserializer.java │ │ │ │ │ │ │ ├── TableMapEventMetadataDeserializer.java │ │ │ │ │ │ │ └── json │ │ │ │ │ │ │ └── JsonStringFormatter.java │ │ │ │ │ │ └── io │ │ │ │ │ │ └── BufferedSocketInputStream.java │ │ │ │ ├── io │ │ │ │ │ └── debezium │ │ │ │ │ │ └── connector │ │ │ │ │ │ └── mysql │ │ │ │ │ │ ├── GtidUtils.java │ │ │ │ │ │ ├── MySqlConnection.java │ │ │ │ │ │ ├── MySqlDefaultValueConverter.java │ │ │ │ │ │ ├── MySqlStreamingChangeEventSource.java │ │ │ │ │ │ ├── MySqlValueConverters.java │ │ │ │ │ │ ├── antlr │ │ │ │ │ │ └── listener │ │ │ │ │ │ │ └── DefaultValueParserListener.java │ │ │ │ │ │ ├── converters │ │ │ │ │ │ └── MysqlDebeziumTimeConverter.java │ │ │ │ │ │ └── util │ │ │ │ │ │ └── ErrorMessageUtils.java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── mysql │ │ │ │ │ ├── MySqlSource.java │ │ │ │ │ ├── MySqlValidator.java │ │ │ │ │ ├── SeekBinlogToTimestampFilter.java │ │ │ │ │ ├── debezium │ │ │ │ │ ├── DebeziumUtils.java │ │ │ │ │ ├── EmbeddedFlinkDatabaseHistory.java │ │ │ │ │ ├── dispatcher │ │ │ │ │ │ ├── EventDispatcherImpl.java │ │ │ │ │ │ └── SignalEventDispatcher.java │ │ │ │ │ ├── reader │ │ │ │ │ │ ├── BinlogSplitReader.java │ │ │ │ │ │ ├── DebeziumReader.java │ │ │ │ │ │ ├── SnapshotSplitReader.java │ │ │ │ │ │ └── StoppableChangeEventSourceContext.java │ │ │ │ │ └── task │ │ │ │ │ │ ├── MySqlBinlogSplitReadTask.java │ │ │ │ │ │ ├── MySqlSnapshotSplitReadTask.java │ │ │ │ │ │ └── context │ │ │ │ │ │ ├── MySqlErrorHandler.java │ │ │ │ │ │ ├── MySqlTaskContextImpl.java │ │ │ │ │ │ ├── StatefulTaskContext.java │ │ │ │ │ │ └── exception │ │ │ │ │ │ └── SchemaOutOfSyncException.java │ │ │ │ │ ├── schema │ │ │ │ │ ├── MySqlFieldDefinition.java │ │ │ │ │ ├── MySqlSchema.java │ │ │ │ │ ├── MySqlTableDefinition.java │ │ │ │ │ ├── MySqlTypeUtils.java │ │ │ │ │ └── Selectors.java │ │ │ │ │ ├── source │ │ │ │ │ ├── MySqlSource.java │ │ │ │ │ ├── MySqlSourceBuilder.java │ │ │ │ │ ├── assigners │ │ │ │ │ │ ├── AssignerStatus.java │ │ │ │ │ │ ├── ChunkRange.java │ │ │ │ │ │ ├── ChunkSplitter.java │ │ │ │ │ │ ├── MySqlBinlogSplitAssigner.java │ │ │ │ │ │ ├── MySqlChunkSplitter.java │ │ │ │ │ │ ├── MySqlHybridSplitAssigner.java │ │ │ │ │ │ ├── MySqlSnapshotSplitAssigner.java │ │ │ │ │ │ ├── MySqlSplitAssigner.java │ │ │ │ │ │ └── state │ │ │ │ │ │ │ ├── BinlogPendingSplitsState.java │ │ │ │ │ │ │ ├── ChunkSplitterState.java │ │ │ │ │ │ │ ├── HybridPendingSplitsState.java │ │ │ │ │ │ │ ├── PendingSplitsState.java │ │ │ │ │ │ │ ├── PendingSplitsStateSerializer.java │ │ │ │ │ │ │ └── SnapshotPendingSplitsState.java │ │ │ │ │ ├── config │ │ │ │ │ │ ├── MySqlSourceConfig.java │ │ │ │ │ │ ├── MySqlSourceConfigFactory.java │ │ │ │ │ │ ├── MySqlSourceOptions.java │ │ │ │ │ │ └── ServerIdRange.java │ │ │ │ │ ├── connection │ │ │ │ │ │ ├── ConnectionPoolId.java │ │ │ │ │ │ ├── ConnectionPools.java │ │ │ │ │ │ ├── JdbcConnectionFactory.java │ │ │ │ │ │ ├── JdbcConnectionPools.java │ │ │ │ │ │ └── PooledDataSourceFactory.java │ │ │ │ │ ├── enumerator │ │ │ │ │ │ └── MySqlSourceEnumerator.java │ │ │ │ │ ├── events │ │ │ │ │ │ ├── BinlogSplitAssignedEvent.java │ │ │ │ │ │ ├── BinlogSplitMetaEvent.java │ │ │ │ │ │ ├── BinlogSplitMetaRequestEvent.java │ │ │ │ │ │ ├── BinlogSplitUpdateAckEvent.java │ │ │ │ │ │ ├── BinlogSplitUpdateRequestEvent.java │ │ │ │ │ │ ├── FinishedSnapshotSplitsAckEvent.java │ │ │ │ │ │ ├── FinishedSnapshotSplitsReportEvent.java │ │ │ │ │ │ ├── FinishedSnapshotSplitsRequestEvent.java │ │ │ │ │ │ ├── LatestFinishedSplitsNumberEvent.java │ │ │ │ │ │ └── LatestFinishedSplitsNumberRequestEvent.java │ │ │ │ │ ├── metrics │ │ │ │ │ │ └── MySqlSourceReaderMetrics.java │ │ │ │ │ ├── offset │ │ │ │ │ │ ├── BinlogOffset.java │ │ │ │ │ │ ├── BinlogOffsetBuilder.java │ │ │ │ │ │ ├── BinlogOffsetKind.java │ │ │ │ │ │ ├── BinlogOffsetSerializer.java │ │ │ │ │ │ └── BinlogOffsetUtils.java │ │ │ │ │ ├── reader │ │ │ │ │ │ ├── MySqlRecordEmitter.java │ │ │ │ │ │ ├── MySqlSourceReader.java │ │ │ │ │ │ ├── MySqlSourceReaderContext.java │ │ │ │ │ │ └── MySqlSplitReader.java │ │ │ │ │ ├── split │ │ │ │ │ │ ├── FinishedSnapshotSplitInfo.java │ │ │ │ │ │ ├── MySqlBinlogSplit.java │ │ │ │ │ │ ├── MySqlBinlogSplitState.java │ │ │ │ │ │ ├── MySqlRecords.java │ │ │ │ │ │ ├── MySqlSchemalessSnapshotSplit.java │ │ │ │ │ │ ├── MySqlSnapshotSplit.java │ │ │ │ │ │ ├── MySqlSnapshotSplitState.java │ │ │ │ │ │ ├── MySqlSplit.java │ │ │ │ │ │ ├── MySqlSplitSerializer.java │ │ │ │ │ │ ├── MySqlSplitState.java │ │ │ │ │ │ └── SourceRecords.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── ChunkUtils.java │ │ │ │ │ │ ├── EnvironmentUtils.java │ │ │ │ │ │ ├── ObjectUtils.java │ │ │ │ │ │ ├── RecordUtils.java │ │ │ │ │ │ ├── SerializerUtils.java │ │ │ │ │ │ ├── StatementUtils.java │ │ │ │ │ │ ├── TableDiscoveryUtils.java │ │ │ │ │ │ ├── VersionComparable.java │ │ │ │ │ │ └── hooks │ │ │ │ │ │ ├── SnapshotPhaseHook.java │ │ │ │ │ │ └── SnapshotPhaseHooks.java │ │ │ │ │ ├── table │ │ │ │ │ ├── MySqlDeserializationConverterFactory.java │ │ │ │ │ ├── MySqlReadableMetadata.java │ │ │ │ │ ├── MySqlTableSource.java │ │ │ │ │ ├── MySqlTableSourceFactory.java │ │ │ │ │ ├── StartupMode.java │ │ │ │ │ └── StartupOptions.java │ │ │ │ │ └── utils │ │ │ │ │ └── OptionUtils.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.table.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ ├── com │ │ │ │ └── github │ │ │ │ │ └── shyiko │ │ │ │ │ └── mysql │ │ │ │ │ └── binlog │ │ │ │ │ ├── event │ │ │ │ │ └── deserialization │ │ │ │ │ │ └── TableMapEventDataDeserializerTest.java │ │ │ │ │ └── io │ │ │ │ │ └── BufferedSocketInputStreamTest.java │ │ │ ├── io │ │ │ │ └── debezium │ │ │ │ │ └── connector │ │ │ │ │ └── mysql │ │ │ │ │ ├── GtidUtilsTest.java │ │ │ │ │ └── util │ │ │ │ │ └── ErrorMessageUtilsTest.java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ ├── mysql │ │ │ │ ├── LegacyMySqlSourceExampleTest.java │ │ │ │ ├── LegacyMySqlSourceITCase.java │ │ │ │ ├── LegacyMySqlSourceTest.java │ │ │ │ ├── LegacyMySqlTestBase.java │ │ │ │ ├── MySqlTestUtils.java │ │ │ │ ├── MySqlValidatorTest.java │ │ │ │ ├── debezium │ │ │ │ │ ├── DebeziumUtilsTest.java │ │ │ │ │ ├── converters │ │ │ │ │ │ └── MysqlDebeziumTimeConverterITCase.java │ │ │ │ │ └── reader │ │ │ │ │ │ ├── BinlogSplitReaderTest.java │ │ │ │ │ │ └── SnapshotSplitReaderTest.java │ │ │ │ ├── source │ │ │ │ │ ├── MySqlAncientDateAndTimeITCase.java │ │ │ │ │ ├── MySqlMultipleTablesRenamingITCase.java │ │ │ │ │ ├── MySqlOnLineSchemaMigrationSourceITCase.java │ │ │ │ │ ├── MySqlSourceExampleTest.java │ │ │ │ │ ├── MySqlSourceITCase.java │ │ │ │ │ ├── MySqlSourceTestBase.java │ │ │ │ │ ├── NewlyAddedTableITCase.java │ │ │ │ │ ├── SpecificStartingOffsetITCase.java │ │ │ │ │ ├── assigners │ │ │ │ │ │ ├── MySqlBinlogSplitAssignerTest.java │ │ │ │ │ │ ├── MySqlChunkSplitterTest.java │ │ │ │ │ │ ├── MySqlHybridSplitAssignerTest.java │ │ │ │ │ │ ├── MySqlSnapshotSplitAssignerTest.java │ │ │ │ │ │ └── state │ │ │ │ │ │ │ └── PendingSplitsStateSerializerTest.java │ │ │ │ │ ├── reader │ │ │ │ │ │ ├── MySqlRecordEmitterTest.java │ │ │ │ │ │ └── MySqlSourceReaderTest.java │ │ │ │ │ ├── split │ │ │ │ │ │ ├── MySqlBinlogSplitTest.java │ │ │ │ │ │ ├── MySqlSplitSerializerTest.java │ │ │ │ │ │ └── MySqlSplitStateTest.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── MockMySqlSplitEnumeratorEnumeratorContext.java │ │ │ │ │ │ ├── ObjectUtilsTest.java │ │ │ │ │ │ ├── RecordUtilsTest.java │ │ │ │ │ │ └── SerializerUtilsTest.java │ │ │ │ ├── table │ │ │ │ │ ├── MySqlAncientDateAndTimeITCase.java │ │ │ │ │ ├── MySqlCompatibilityITCase.java │ │ │ │ │ ├── MySqlConnectorITCase.java │ │ │ │ │ ├── MySqlConnectorShardingTableITCase.java │ │ │ │ │ ├── MySqlJsonArrayAsKeyIndexITCase.java │ │ │ │ │ ├── MySqlOnLineSchemaMigrationTableITCase.java │ │ │ │ │ ├── MySqlTableSourceFactoryTest.java │ │ │ │ │ ├── MySqlTimezoneITCase.java │ │ │ │ │ └── MysqlConnectorCharsetITCase.java │ │ │ │ └── testutils │ │ │ │ │ ├── MetricsUtils.java │ │ │ │ │ ├── MySqlContainer.java │ │ │ │ │ ├── MySqlVersion.java │ │ │ │ │ ├── RecordsFormatter.java │ │ │ │ │ ├── TestTable.java │ │ │ │ │ ├── TestTableSchemas.java │ │ │ │ │ └── UniqueDatabase.java │ │ │ │ └── polardbx │ │ │ │ ├── PolardbxCharsetITCase.java │ │ │ │ ├── PolardbxSourceITCase.java │ │ │ │ └── PolardbxSourceTestBase.java │ │ │ └── resources │ │ │ ├── ddl │ │ │ ├── ancient_date_and_time.sql │ │ │ ├── binlog_metadata_test.sql │ │ │ ├── charset_test.sql │ │ │ ├── column_type_test.sql │ │ │ ├── column_type_test_mysql8.sql │ │ │ ├── customer.sql │ │ │ ├── customer3.0.sql │ │ │ ├── date_convert_test.sql │ │ │ ├── inventory.sql │ │ │ ├── json_array_as_key.sql │ │ │ ├── polardbx_ddl_test.sql │ │ │ ├── user_1.sql │ │ │ └── user_2.sql │ │ │ ├── docker │ │ │ ├── server-allow-ancient-date-time │ │ │ │ └── my.cnf │ │ │ ├── server-gtids │ │ │ │ ├── expire-seconds │ │ │ │ │ └── my.cnf │ │ │ │ └── my.cnf │ │ │ ├── server │ │ │ │ └── my.cnf │ │ │ └── setup.sql │ │ │ ├── file │ │ │ ├── debezium-data-schema-exclude-with-numeric-decimal.json │ │ │ ├── debezium-data-schema-exclude.json │ │ │ └── debezium-data-schema-include.json │ │ │ └── log4j2-test.properties │ ├── flink-connector-oceanbase-cdc │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── oceanbase │ │ │ │ │ ├── OceanBaseSource.java │ │ │ │ │ ├── source │ │ │ │ │ ├── OceanBaseRichSourceFunction.java │ │ │ │ │ ├── config │ │ │ │ │ │ └── OceanBaseConnectorConfig.java │ │ │ │ │ ├── connection │ │ │ │ │ │ └── OceanBaseConnection.java │ │ │ │ │ ├── converter │ │ │ │ │ │ ├── OceanBaseDeserializationConverterFactory.java │ │ │ │ │ │ └── OceanBaseValueConverters.java │ │ │ │ │ ├── offset │ │ │ │ │ │ ├── OceanBaseSourceInfo.java │ │ │ │ │ │ └── OceanBaseSourceInfoStructMaker.java │ │ │ │ │ └── schema │ │ │ │ │ │ ├── OceanBaseDatabaseSchema.java │ │ │ │ │ │ └── OceanBaseSchema.java │ │ │ │ │ ├── table │ │ │ │ │ ├── OceanBaseReadableMetadata.java │ │ │ │ │ ├── OceanBaseTableSource.java │ │ │ │ │ └── OceanBaseTableSourceFactory.java │ │ │ │ │ └── utils │ │ │ │ │ ├── OceanBaseUtils.java │ │ │ │ │ └── OptionUtils.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.table.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── oceanbase │ │ │ │ ├── OceanBaseTestBase.java │ │ │ │ ├── OceanBaseTestUtils.java │ │ │ │ ├── table │ │ │ │ ├── OceanBaseMySQLModeITCase.java │ │ │ │ ├── OceanBaseOracleModeITCase.java │ │ │ │ └── OceanBaseTableFactoryTest.java │ │ │ │ └── testutils │ │ │ │ ├── LogProxyContainer.java │ │ │ │ ├── OceanBaseCdcMetadata.java │ │ │ │ ├── OceanBaseContainer.java │ │ │ │ ├── OceanBaseMySQLCdcMetadata.java │ │ │ │ ├── OceanBaseOracleCdcMetadata.java │ │ │ │ └── UniqueDatabase.java │ │ │ └── resources │ │ │ ├── ddl │ │ │ ├── mysql │ │ │ │ ├── column_type_test.sql │ │ │ │ └── inventory.sql │ │ │ └── oracle │ │ │ │ └── column_type_test.sql │ │ │ └── log4j2-test.properties │ ├── flink-connector-oracle-cdc │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ ├── io │ │ │ │ │ └── debezium │ │ │ │ │ │ └── connector │ │ │ │ │ │ └── oracle │ │ │ │ │ │ └── logminer │ │ │ │ │ │ ├── LogMinerAdapter.java │ │ │ │ │ │ ├── LogMinerChangeRecordEmitter.java │ │ │ │ │ │ ├── LogMinerStreamingChangeEventSource.java │ │ │ │ │ │ └── processor │ │ │ │ │ │ └── AbstractLogMinerEventProcessor.java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── oracle │ │ │ │ │ ├── OracleSource.java │ │ │ │ │ ├── OracleValidator.java │ │ │ │ │ ├── source │ │ │ │ │ ├── OracleDialect.java │ │ │ │ │ ├── OraclePooledDataSourceFactory.java │ │ │ │ │ ├── OracleSourceBuilder.java │ │ │ │ │ ├── assigner │ │ │ │ │ │ └── splitter │ │ │ │ │ │ │ └── OracleChunkSplitter.java │ │ │ │ │ ├── config │ │ │ │ │ │ ├── OracleSourceConfig.java │ │ │ │ │ │ ├── OracleSourceConfigFactory.java │ │ │ │ │ │ └── OracleSourceOptions.java │ │ │ │ │ ├── handler │ │ │ │ │ │ └── OracleSchemaChangeEventHandler.java │ │ │ │ │ ├── meta │ │ │ │ │ │ └── offset │ │ │ │ │ │ │ ├── RedoLogOffset.java │ │ │ │ │ │ │ └── RedoLogOffsetFactory.java │ │ │ │ │ ├── reader │ │ │ │ │ │ └── fetch │ │ │ │ │ │ │ ├── EventProcessorFactory.java │ │ │ │ │ │ │ ├── OracleScanFetchTask.java │ │ │ │ │ │ │ ├── OracleSourceFetchTaskContext.java │ │ │ │ │ │ │ ├── OracleStreamFetchTask.java │ │ │ │ │ │ │ └── StoppableChangeEventSourceContext.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── OracleConnectionUtils.java │ │ │ │ │ │ ├── OracleSchema.java │ │ │ │ │ │ ├── OracleTypeUtils.java │ │ │ │ │ │ └── OracleUtils.java │ │ │ │ │ ├── table │ │ │ │ │ ├── OracleDeserializationConverterFactory.java │ │ │ │ │ ├── OracleReadableMetaData.java │ │ │ │ │ ├── OracleTableSource.java │ │ │ │ │ └── OracleTableSourceFactory.java │ │ │ │ │ └── util │ │ │ │ │ ├── ChunkUtils.java │ │ │ │ │ └── OracleJdbcUrlUtils.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.table.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ ├── apache │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── oracle │ │ │ │ │ ├── OracleChangeEventSourceExampleTest.java │ │ │ │ │ ├── OracleSourceTest.java │ │ │ │ │ ├── source │ │ │ │ │ ├── NewlyAddedTableITCase.java │ │ │ │ │ ├── OracleSourceITCase.java │ │ │ │ │ ├── OracleSourceTestBase.java │ │ │ │ │ ├── assigner │ │ │ │ │ │ └── splitter │ │ │ │ │ │ │ └── OracleChunkSplitterTest.java │ │ │ │ │ └── reader │ │ │ │ │ │ └── OracleSourceReaderTest.java │ │ │ │ │ ├── table │ │ │ │ │ ├── OracleConnectorITCase.java │ │ │ │ │ └── OracleTableSourceFactoryTest.java │ │ │ │ │ └── testutils │ │ │ │ │ ├── OracleTestUtils.java │ │ │ │ │ ├── RecordsFormatter.java │ │ │ │ │ └── TestTable.java │ │ │ │ └── testcontainers │ │ │ │ └── containers │ │ │ │ └── OracleContainer.java │ │ │ └── resources │ │ │ ├── ddl │ │ │ ├── column_type_test.sql │ │ │ ├── customer.sql │ │ │ └── product.sql │ │ │ └── log4j2-test.properties │ ├── flink-connector-postgres-cdc │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ ├── io │ │ │ │ │ └── debezium │ │ │ │ │ │ └── connector │ │ │ │ │ │ └── postgresql │ │ │ │ │ │ ├── PostgresObjectUtils.java │ │ │ │ │ │ ├── PostgresStreamingChangeEventSource.java │ │ │ │ │ │ ├── Utils.java │ │ │ │ │ │ └── connection │ │ │ │ │ │ ├── Lsn.java │ │ │ │ │ │ ├── PostgresConnection.java │ │ │ │ │ │ ├── PostgresConnectionUtils.java │ │ │ │ │ │ └── PostgresReplicationConnection.java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── postgres │ │ │ │ │ ├── PostgreSQLSource.java │ │ │ │ │ ├── source │ │ │ │ │ ├── PostgresChunkSplitter.java │ │ │ │ │ ├── PostgresConnectionPoolFactory.java │ │ │ │ │ ├── PostgresDialect.java │ │ │ │ │ ├── PostgresSourceBuilder.java │ │ │ │ │ ├── config │ │ │ │ │ │ ├── PostgresSourceConfig.java │ │ │ │ │ │ ├── PostgresSourceConfigFactory.java │ │ │ │ │ │ └── PostgresSourceOptions.java │ │ │ │ │ ├── enumerator │ │ │ │ │ │ └── PostgresSourceEnumerator.java │ │ │ │ │ ├── events │ │ │ │ │ │ ├── OffsetCommitAckEvent.java │ │ │ │ │ │ └── OffsetCommitEvent.java │ │ │ │ │ ├── fetch │ │ │ │ │ │ ├── CDCPostgresDispatcher.java │ │ │ │ │ │ ├── PostgresScanFetchTask.java │ │ │ │ │ │ ├── PostgresSourceFetchTaskContext.java │ │ │ │ │ │ ├── PostgresStreamFetchTask.java │ │ │ │ │ │ └── StoppableChangeEventSourceContext.java │ │ │ │ │ ├── handler │ │ │ │ │ │ └── PostgresSchemaChangeEventHandler.java │ │ │ │ │ ├── offset │ │ │ │ │ │ ├── PostgresOffset.java │ │ │ │ │ │ ├── PostgresOffsetFactory.java │ │ │ │ │ │ └── PostgresOffsetUtils.java │ │ │ │ │ ├── reader │ │ │ │ │ │ └── PostgresSourceReader.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── ChunkUtils.java │ │ │ │ │ │ ├── CustomPostgresSchema.java │ │ │ │ │ │ ├── PostgresQueryUtils.java │ │ │ │ │ │ ├── PostgresTypeUtils.java │ │ │ │ │ │ └── TableDiscoveryUtils.java │ │ │ │ │ ├── table │ │ │ │ │ ├── PostgreSQLDeserializationConverterFactory.java │ │ │ │ │ ├── PostgreSQLReadableMetadata.java │ │ │ │ │ ├── PostgreSQLTableFactory.java │ │ │ │ │ ├── PostgreSQLTableSource.java │ │ │ │ │ └── PostgresValueValidator.java │ │ │ │ │ └── utils │ │ │ │ │ └── OptionUtils.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.table.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── postgres │ │ │ │ ├── PostgreSQLSourceTest.java │ │ │ │ ├── PostgresTestBase.java │ │ │ │ ├── source │ │ │ │ ├── MockPostgresDialect.java │ │ │ │ ├── NewlyAddedTableITCase.java │ │ │ │ ├── PostgresDialectTest.java │ │ │ │ ├── PostgresSourceExampleTest.java │ │ │ │ ├── PostgresSourceITCase.java │ │ │ │ ├── fetch │ │ │ │ │ ├── PostgresScanFetchTaskTest.java │ │ │ │ │ └── PostgresSourceFetchTaskContextTest.java │ │ │ │ └── reader │ │ │ │ │ └── PostgresSourceReaderTest.java │ │ │ │ ├── table │ │ │ │ ├── MockPostgreSQLTableFactory.java │ │ │ │ ├── MockPostgreSQLTableSource.java │ │ │ │ ├── PostgreSQLConnectorITCase.java │ │ │ │ ├── PostgreSQLSavepointITCase.java │ │ │ │ └── PostgreSQLTableFactoryTest.java │ │ │ │ └── testutils │ │ │ │ ├── PostgresTestUtils.java │ │ │ │ ├── RecordsFormatter.java │ │ │ │ ├── TestHelper.java │ │ │ │ ├── TestTable.java │ │ │ │ ├── TestTableId.java │ │ │ │ └── UniqueDatabase.java │ │ │ └── resources │ │ │ ├── META-INF │ │ │ └── services │ │ │ │ └── org.apache.flink.table.factories.Factory │ │ │ ├── ddl │ │ │ ├── column_type_test.sql │ │ │ ├── customer.sql │ │ │ ├── index_type_test.sql │ │ │ ├── inventory.sql │ │ │ └── replica_identity.sql │ │ │ └── log4j2-test.properties │ ├── flink-connector-sqlserver-cdc │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ ├── io │ │ │ │ │ └── debezium │ │ │ │ │ │ └── connector │ │ │ │ │ │ └── sqlserver │ │ │ │ │ │ ├── SqlServerOffsetContext.java │ │ │ │ │ │ └── SqlServerStreamingChangeEventSource.java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── sqlserver │ │ │ │ │ ├── SqlServerSource.java │ │ │ │ │ ├── SqlServerValidator.java │ │ │ │ │ ├── source │ │ │ │ │ ├── SqlServerSourceBuilder.java │ │ │ │ │ ├── config │ │ │ │ │ │ ├── SqlServerSourceConfig.java │ │ │ │ │ │ └── SqlServerSourceConfigFactory.java │ │ │ │ │ ├── dialect │ │ │ │ │ │ ├── SqlServerChunkSplitter.java │ │ │ │ │ │ ├── SqlServerDialect.java │ │ │ │ │ │ ├── SqlServerPooledDataSourceFactory.java │ │ │ │ │ │ └── SqlServerSchema.java │ │ │ │ │ ├── handler │ │ │ │ │ │ └── SqlServerSchemaChangeEventHandler.java │ │ │ │ │ ├── offset │ │ │ │ │ │ ├── LsnFactory.java │ │ │ │ │ │ └── LsnOffset.java │ │ │ │ │ ├── reader │ │ │ │ │ │ └── fetch │ │ │ │ │ │ │ ├── SqlServerScanFetchTask.java │ │ │ │ │ │ │ ├── SqlServerSourceFetchTaskContext.java │ │ │ │ │ │ │ └── SqlServerStreamFetchTask.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── SqlServerConnectionUtils.java │ │ │ │ │ │ ├── SqlServerTypeUtils.java │ │ │ │ │ │ └── SqlServerUtils.java │ │ │ │ │ └── table │ │ │ │ │ ├── SqlServerDeserializationConverterFactory.java │ │ │ │ │ ├── SqlServerReadableMetadata.java │ │ │ │ │ ├── SqlServerTableFactory.java │ │ │ │ │ └── SqlServerTableSource.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.table.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── sqlserver │ │ │ │ ├── SqlServerParallelSourceExampleTest.java │ │ │ │ ├── SqlServerTestBase.java │ │ │ │ ├── source │ │ │ │ ├── SqlServerSourceITCase.java │ │ │ │ ├── SqlServerSourceTestBase.java │ │ │ │ ├── reader │ │ │ │ │ ├── SqlserverSourceReaderTest.java │ │ │ │ │ └── fetch │ │ │ │ │ │ └── SqlServerScanFetchTaskTest.java │ │ │ │ └── utils │ │ │ │ │ └── SQLServerUUIDComparatorTest.java │ │ │ │ ├── table │ │ │ │ ├── SqlServerConnectorITCase.java │ │ │ │ ├── SqlServerTableFactoryTest.java │ │ │ │ └── SqlServerTimezoneITCase.java │ │ │ │ └── testutils │ │ │ │ ├── RecordsFormatter.java │ │ │ │ └── TestTable.java │ │ │ └── resources │ │ │ ├── container-license-acceptance.txt │ │ │ ├── ddl │ │ │ ├── column_type_test.sql │ │ │ ├── customer.sql │ │ │ ├── inventory.sql │ │ │ ├── pk.sql │ │ │ └── product.sql │ │ │ └── log4j2-test.properties │ ├── flink-connector-test-util │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── apache │ │ │ └── flink │ │ │ └── cdc │ │ │ └── connectors │ │ │ └── utils │ │ │ ├── AssertUtils.java │ │ │ ├── ExternalResourceProxy.java │ │ │ ├── StaticExternalResourceProxy.java │ │ │ └── TestSourceContext.java │ ├── flink-connector-tidb-cdc │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ ├── apache │ │ │ │ │ └── flink │ │ │ │ │ │ └── cdc │ │ │ │ │ │ └── connectors │ │ │ │ │ │ └── tidb │ │ │ │ │ │ ├── TDBSourceOptions.java │ │ │ │ │ │ ├── TiDBSource.java │ │ │ │ │ │ ├── TiKVChangeEventDeserializationSchema.java │ │ │ │ │ │ ├── TiKVRichParallelSourceFunction.java │ │ │ │ │ │ ├── TiKVSnapshotEventDeserializationSchema.java │ │ │ │ │ │ ├── metrics │ │ │ │ │ │ └── TiDBSourceMetrics.java │ │ │ │ │ │ └── table │ │ │ │ │ │ ├── RowDataTiKVChangeEventDeserializationSchema.java │ │ │ │ │ │ ├── RowDataTiKVEventDeserializationSchemaBase.java │ │ │ │ │ │ ├── RowDataTiKVSnapshotEventDeserializationSchema.java │ │ │ │ │ │ ├── StartupMode.java │ │ │ │ │ │ ├── StartupOptions.java │ │ │ │ │ │ ├── TiDBTableSource.java │ │ │ │ │ │ ├── TiDBTableSourceFactory.java │ │ │ │ │ │ ├── TiKVAppendMetadataCollector.java │ │ │ │ │ │ ├── TiKVDeserializationRuntimeConverter.java │ │ │ │ │ │ ├── TiKVMetadataConverter.java │ │ │ │ │ │ ├── TiKVReadableMetadata.java │ │ │ │ │ │ └── utils │ │ │ │ │ │ ├── OptionUtils.java │ │ │ │ │ │ ├── TableKeyRangeUtils.java │ │ │ │ │ │ └── UriHostMapping.java │ │ │ │ │ └── tikv │ │ │ │ │ ├── cdc │ │ │ │ │ ├── CDCClient.java │ │ │ │ │ ├── CDCEvent.java │ │ │ │ │ └── RegionCDCClient.java │ │ │ │ │ └── common │ │ │ │ │ ├── operation │ │ │ │ │ └── iterator │ │ │ │ │ │ └── ScanIterator.java │ │ │ │ │ └── util │ │ │ │ │ └── ChannelFactory.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.table.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── tidb │ │ │ │ ├── TiDBTestBase.java │ │ │ │ ├── metrics │ │ │ │ └── TiDBSourceMetricsTest.java │ │ │ │ └── table │ │ │ │ ├── TiDBConnectorITCase.java │ │ │ │ ├── TiDBConnectorRegionITCase.java │ │ │ │ ├── TiDBTableSourceFactoryTest.java │ │ │ │ └── utils │ │ │ │ └── UriHostMappingTest.java │ │ │ └── resources │ │ │ ├── config │ │ │ ├── pd.toml │ │ │ ├── tidb.toml │ │ │ └── tikv.toml │ │ │ ├── ddl │ │ │ ├── column_type_test.sql │ │ │ ├── inventory.sql │ │ │ └── region_switch_test.sql │ │ │ └── log4j2-test.properties │ ├── flink-connector-vitess-cdc │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── flink │ │ │ │ │ └── cdc │ │ │ │ │ └── connectors │ │ │ │ │ └── vitess │ │ │ │ │ ├── VitessSource.java │ │ │ │ │ ├── VitessValidator.java │ │ │ │ │ ├── config │ │ │ │ │ ├── SchemaAdjustmentMode.java │ │ │ │ │ └── TabletType.java │ │ │ │ │ └── table │ │ │ │ │ ├── VitessTableFactory.java │ │ │ │ │ └── VitessTableSource.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.apache.flink.table.factories.Factory │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── vitess │ │ │ │ ├── VitessSourceTest.java │ │ │ │ ├── VitessTestBase.java │ │ │ │ ├── container │ │ │ │ └── VitessContainer.java │ │ │ │ └── table │ │ │ │ ├── VitessConnectorITCase.java │ │ │ │ └── VitessTableFactoryTest.java │ │ │ └── resources │ │ │ ├── ddl │ │ │ ├── column_type_test.sql │ │ │ └── inventory.sql │ │ │ └── log4j2-test.properties │ ├── flink-sql-connector-db2-cdc │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── db2 │ │ │ │ └── DummyDocs.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── NOTICE │ ├── flink-sql-connector-mongodb-cdc │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── mongodb │ │ │ │ └── DummyDocs.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── NOTICE │ ├── flink-sql-connector-mysql-cdc │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── mysql │ │ │ │ └── DummyDocs.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── NOTICE │ ├── flink-sql-connector-oceanbase-cdc │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── oceanbase │ │ │ │ └── DummyDocs.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── NOTICE │ ├── flink-sql-connector-oracle-cdc │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── oracle │ │ │ │ └── DummyDocs.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── NOTICE │ ├── flink-sql-connector-postgres-cdc │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── postgres │ │ │ │ └── DummyDocs.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── NOTICE │ ├── flink-sql-connector-sqlserver-cdc │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── flink │ │ │ │ └── cdc │ │ │ │ └── connectors │ │ │ │ └── sqlserver │ │ │ │ └── DummyDocs.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── NOTICE │ ├── flink-sql-connector-tidb-cdc │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── apache │ │ │ └── flink │ │ │ └── cdc │ │ │ └── connectors │ │ │ └── tidb │ │ │ └── DummyDocs.java │ ├── flink-sql-connector-vitess-cdc │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── apache │ │ │ └── flink │ │ │ └── cdc │ │ │ └── connectors │ │ │ └── vitess │ │ │ └── DummyDocs.java │ └── pom.xml └── pom.xml ├── flink-cdc-dist ├── pom.xml └── src │ └── main │ ├── assembly │ └── assembly.xml │ └── flink-cdc-bin │ ├── bin │ └── flink-cdc.sh │ └── conf │ ├── flink-cdc.yaml │ └── log4j-cli.properties ├── flink-cdc-e2e-tests ├── flink-cdc-e2e-utils │ ├── pom.xml │ └── src │ │ └── test │ │ └── java │ │ └── org │ │ └── apache │ │ └── flink │ │ └── cdc │ │ └── common │ │ └── test │ │ └── utils │ │ ├── JdbcProxy.java │ │ ├── ParameterProperty.java │ │ └── TestUtils.java ├── flink-cdc-pipeline-e2e-tests │ ├── pom.xml │ └── src │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── apache │ │ │ └── flink │ │ │ └── cdc │ │ │ └── pipeline │ │ │ └── tests │ │ │ ├── MaxComputeE2eITCase.java │ │ │ ├── MySqlToDorisE2eITCase.java │ │ │ ├── MySqlToIcebergE2eITCase.java │ │ │ ├── MySqlToPaimonE2eITCase.java │ │ │ ├── MysqlE2eITCase.java │ │ │ ├── MysqlE2eWithYarnApplicationITCase.java │ │ │ ├── MysqlToKafkaE2eITCase.java │ │ │ ├── OceanBaseE2eITCase.java │ │ │ ├── RouteE2eITCase.java │ │ │ ├── SchemaEvolveE2eITCase.java │ │ │ ├── SchemaEvolvingTransformE2eITCase.java │ │ │ ├── TransformE2eITCase.java │ │ │ ├── UdfE2eITCase.java │ │ │ ├── migration │ │ │ └── YamlJobMigrationITCase.java │ │ │ └── utils │ │ │ ├── PipelineTestEnvironment.java │ │ │ ├── PipelineTestOnYarnEnvironment.java │ │ │ └── TarballFetcher.java │ │ └── resources │ │ ├── ddl │ │ ├── data_types_test.sql │ │ ├── iceberg_inventory.sql │ │ ├── mysql_2_oceanbase_test.sql │ │ ├── mysql_inventory.sql │ │ ├── paimon_inventory.sql │ │ ├── route_test.sql │ │ ├── schema_evolve.sql │ │ └── transform_test.sql │ │ ├── docker │ │ ├── mysql │ │ │ ├── my.cnf │ │ │ └── setup.sql │ │ ├── peek-iceberg.sql │ │ └── peek-paimon.sql │ │ ├── expectedEvents │ │ └── mysqlToKafka │ │ │ ├── canal-json.txt │ │ │ ├── debezium-json-with-schema.txt │ │ │ └── debezium-json.txt │ │ └── log4j2-test.properties ├── flink-cdc-source-e2e-tests │ ├── pom.xml │ └── src │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── apache │ │ │ └── flink │ │ │ └── cdc │ │ │ └── connectors │ │ │ └── tests │ │ │ ├── Db2E2eITCase.java │ │ │ ├── MongoE2eITCase.java │ │ │ ├── MySqlE2eITCase.java │ │ │ ├── OceanBaseE2eITCase.java │ │ │ ├── OracleE2eITCase.java │ │ │ ├── PostgresE2eITCase.java │ │ │ ├── SqlServerE2eITCase.java │ │ │ ├── TiDBE2eITCase.java │ │ │ ├── VitessE2eITCase.java │ │ │ └── utils │ │ │ ├── FlinkContainerTestEnvironment.java │ │ │ └── SQLJobSubmission.java │ │ └── resources │ │ ├── container-license-acceptance.txt │ │ ├── ddl │ │ ├── mongo_inventory.js │ │ ├── mysql_inventory.sql │ │ ├── oceanbase_inventory.sql │ │ ├── oracle_inventory.sql │ │ ├── postgres_inventory.sql │ │ ├── sqlserver_inventory.sql │ │ ├── tidb_inventory.sql │ │ └── vitess_inventory.sql │ │ ├── docker │ │ ├── db2 │ │ │ ├── Dockerfile │ │ │ ├── asncdc.c │ │ │ ├── asncdc_UDF.sql │ │ │ ├── asncdcaddremove.sql │ │ │ ├── asncdctables.sql │ │ │ ├── cdcsetup.sh │ │ │ ├── column_type_test.sql │ │ │ ├── customers.sql │ │ │ ├── dbsetup.sh │ │ │ ├── inventory.sql │ │ │ └── startup-agent.sql │ │ ├── mongodb │ │ │ ├── random.key │ │ │ └── setup.js │ │ ├── mysql │ │ │ ├── my.cnf │ │ │ └── setup.sql │ │ └── tidb │ │ │ ├── pd.toml │ │ │ ├── tidb.toml │ │ │ └── tikv.toml │ │ └── log4j2-test.properties └── pom.xml ├── flink-cdc-pipeline-model ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── apache │ │ └── flink │ │ └── cdc │ │ └── runtime │ │ └── model │ │ ├── ModelOptions.java │ │ ├── OpenAIChatModel.java │ │ └── OpenAIEmbeddingModel.java │ └── test │ └── java │ └── org │ └── apache │ └── flink │ └── cdc │ └── runtime │ └── model │ ├── TestOpenAIChatModel.java │ └── TestOpenAIEmbeddingModel.java ├── flink-cdc-pipeline-udf-examples ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── apache │ │ └── flink │ │ ├── cdc │ │ └── udf │ │ │ └── examples │ │ │ └── java │ │ │ ├── AddOneFunctionClass.java │ │ │ ├── FormatFunctionClass.java │ │ │ ├── LifecycleFunctionClass.java │ │ │ ├── TypeHintFunctionClass.java │ │ │ ├── TypeOfFunctionClass.java │ │ │ └── precision │ │ │ ├── BinaryTypeReturningClass.java │ │ │ ├── CharTypeReturningClass.java │ │ │ ├── DecimalTypeNonNullReturningClass.java │ │ │ ├── DecimalTypeReturningClass.java │ │ │ ├── LocalZonedTimestampTypeReturningClass.java │ │ │ ├── TimestampTypeReturningClass.java │ │ │ ├── VarBinaryTypeReturningClass.java │ │ │ └── VarCharTypeReturningClass.java │ │ └── udf │ │ └── examples │ │ └── java │ │ ├── AddOneFunctionClass.java │ │ ├── FormatFunctionClass.java │ │ └── TypeOfFunctionClass.java │ └── scala │ └── org │ └── apache │ └── flink │ ├── cdc │ └── udf │ │ └── examples │ │ └── scala │ │ ├── AddOneFunctionClass.scala │ │ ├── FormatFunctionClass.scala │ │ ├── LifecycleFunctionClass.scala │ │ ├── TypeHintFunctionClass.scala │ │ ├── TypeOfFunctionClass.scala │ │ └── precision │ │ ├── BinaryTypeReturningClass.scala │ │ ├── CharTypeReturningClass.scala │ │ ├── DecimalTypeNonNullReturningClass.scala │ │ ├── DecimalTypeReturningClass.scala │ │ ├── LocalZonedTimestampTypeReturningClass.scala │ │ ├── TimestampTypeReturningClass.scala │ │ ├── VarBinaryTypeReturningClass.scala │ │ └── VarCharTypeReturningClass.scala │ └── udf │ └── examples │ └── scala │ ├── AddOneFunctionClass.scala │ ├── FormatFunctionClass.scala │ └── TypeOfFunctionClass.scala ├── flink-cdc-runtime ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── apache │ │ └── flink │ │ └── cdc │ │ └── runtime │ │ ├── functions │ │ ├── BuiltInScalarFunction.java │ │ ├── BuiltInTimestampFunction.java │ │ └── SystemFunctionUtils.java │ │ ├── operators │ │ ├── schema │ │ │ ├── common │ │ │ │ ├── CoordinationResponseUtils.java │ │ │ │ ├── CoordinatorExecutorThreadFactory.java │ │ │ │ ├── SchemaDerivator.java │ │ │ │ ├── SchemaManager.java │ │ │ │ ├── SchemaRegistry.java │ │ │ │ ├── TableIdRouter.java │ │ │ │ ├── event │ │ │ │ │ ├── FlushSuccessEvent.java │ │ │ │ │ ├── GetEvolvedSchemaRequest.java │ │ │ │ │ ├── GetEvolvedSchemaResponse.java │ │ │ │ │ ├── GetOriginalSchemaRequest.java │ │ │ │ │ ├── GetOriginalSchemaResponse.java │ │ │ │ │ └── SinkWriterRegisterEvent.java │ │ │ │ └── metrics │ │ │ │ │ └── SchemaOperatorMetrics.java │ │ │ ├── distributed │ │ │ │ ├── SchemaCoordinator.java │ │ │ │ ├── SchemaCoordinatorProvider.java │ │ │ │ ├── SchemaOperator.java │ │ │ │ ├── SchemaOperatorFactory.java │ │ │ │ └── event │ │ │ │ │ ├── SchemaChangeRequest.java │ │ │ │ │ └── SchemaChangeResponse.java │ │ │ └── regular │ │ │ │ ├── BatchSchemaOperator.java │ │ │ │ ├── SchemaCoordinator.java │ │ │ │ ├── SchemaCoordinatorProvider.java │ │ │ │ ├── SchemaOperator.java │ │ │ │ ├── SchemaOperatorFactory.java │ │ │ │ └── event │ │ │ │ ├── SchemaChangeRequest.java │ │ │ │ └── SchemaChangeResponse.java │ │ ├── sink │ │ │ ├── BatchDataSinkFunctionOperator.java │ │ │ ├── BatchDataSinkWriterOperator.java │ │ │ ├── DataSinkFunctionOperator.java │ │ │ ├── DataSinkWriterOperator.java │ │ │ ├── DataSinkWriterOperatorFactory.java │ │ │ ├── SchemaEvolutionClient.java │ │ │ └── exception │ │ │ │ └── SinkWrapperException.java │ │ └── transform │ │ │ ├── PostTransformChangeInfo.java │ │ │ ├── PostTransformOperator.java │ │ │ ├── PostTransformOperatorBuilder.java │ │ │ ├── PostTransformer.java │ │ │ ├── PreTransformChangeInfo.java │ │ │ ├── PreTransformOperator.java │ │ │ ├── PreTransformOperatorBuilder.java │ │ │ ├── PreTransformProcessor.java │ │ │ ├── PreTransformer.java │ │ │ ├── ProjectionColumn.java │ │ │ ├── ProjectionColumnProcessor.java │ │ │ ├── SchemaMetadataTransform.java │ │ │ ├── TransformContext.java │ │ │ ├── TransformExpressionCompiler.java │ │ │ ├── TransformExpressionKey.java │ │ │ ├── TransformFilter.java │ │ │ ├── TransformFilterProcessor.java │ │ │ ├── TransformProjection.java │ │ │ ├── TransformProjectionProcessor.java │ │ │ ├── TransformRule.java │ │ │ ├── UserDefinedFunctionDescriptor.java │ │ │ ├── converter │ │ │ ├── PostTransformConverter.java │ │ │ ├── PostTransformConverters.java │ │ │ └── SoftDeleteConverter.java │ │ │ └── exceptions │ │ │ └── TransformException.java │ │ ├── parser │ │ ├── JaninoCompiler.java │ │ ├── TransformParser.java │ │ └── metadata │ │ │ ├── MetadataColumns.java │ │ │ ├── TransformNumericExceptFirstOperandChecker.java │ │ │ ├── TransformSchema.java │ │ │ ├── TransformSchemaFactory.java │ │ │ ├── TransformSqlOperatorTable.java │ │ │ ├── TransformSqlReturnTypes.java │ │ │ └── TransformTable.java │ │ ├── partitioning │ │ ├── BatchRegularPrePartitionOperator.java │ │ ├── DistributedPrePartitionOperator.java │ │ ├── EventPartitioner.java │ │ ├── PartitioningEvent.java │ │ ├── PartitioningEventKeySelector.java │ │ ├── PostPartitionProcessor.java │ │ └── RegularPrePartitionOperator.java │ │ ├── serializer │ │ ├── BooleanSerializer.java │ │ ├── BytePrimitiveArraySerializer.java │ │ ├── ByteSerializer.java │ │ ├── DoubleSerializer.java │ │ ├── EnumSerializer.java │ │ ├── FloatSerializer.java │ │ ├── IntSerializer.java │ │ ├── InternalSerializers.java │ │ ├── LinkedListSerializer.java │ │ ├── ListSerializer.java │ │ ├── LongSerializer.java │ │ ├── MapSerializer.java │ │ ├── NestedSerializersSnapshotDelegate.java │ │ ├── NullableSerializerWrapper.java │ │ ├── ShortSerializer.java │ │ ├── StringSerializer.java │ │ ├── TableIdSerializer.java │ │ ├── TypeSerializerSingleton.java │ │ ├── data │ │ │ ├── ArrayDataSerializer.java │ │ │ ├── DecimalDataSerializer.java │ │ │ ├── LocalZonedTimestampDataSerializer.java │ │ │ ├── MapDataSerializer.java │ │ │ ├── RecordDataSerializer.java │ │ │ ├── StringDataSerializer.java │ │ │ ├── TimestampDataSerializer.java │ │ │ ├── ZonedTimestampDataSerializer.java │ │ │ ├── binary │ │ │ │ ├── BinaryRecordDataDataUtil.java │ │ │ │ └── BinaryRecordDataSerializer.java │ │ │ ├── util │ │ │ │ └── MapDataUtil.java │ │ │ └── writer │ │ │ │ ├── AbstractBinaryWriter.java │ │ │ │ ├── BinaryArrayWriter.java │ │ │ │ ├── BinaryRecordDataWriter.java │ │ │ │ └── BinaryWriter.java │ │ ├── event │ │ │ ├── AddColumnEventSerializer.java │ │ │ ├── AlterColumnTypeEventSerializer.java │ │ │ ├── CreateTableEventSerializer.java │ │ │ ├── DataChangeEventSerializer.java │ │ │ ├── DropColumnEventSerializer.java │ │ │ ├── DropTableEventSerializer.java │ │ │ ├── EventSerializer.java │ │ │ ├── PartitioningEventSerializer.java │ │ │ ├── RenameColumnEventSerializer.java │ │ │ ├── SchemaChangeEventSerializer.java │ │ │ └── TruncateTableEventSerializer.java │ │ └── schema │ │ │ ├── ColumnSerializer.java │ │ │ ├── ColumnWithPositionSerializer.java │ │ │ ├── DataFieldSerializer.java │ │ │ ├── DataTypeSerializer.java │ │ │ ├── MetadataColumnSerializer.java │ │ │ ├── PhysicalColumnSerializer.java │ │ │ ├── RowTypeSerializer.java │ │ │ └── SchemaSerializer.java │ │ └── typeutils │ │ ├── BinaryRecordDataExtractor.java │ │ ├── BinaryRecordDataGenerator.java │ │ ├── DataTypeConverter.java │ │ ├── EventTypeInfo.java │ │ └── PartitioningEventTypeInfo.java │ └── test │ ├── java │ └── org │ │ └── apache │ │ └── flink │ │ └── cdc │ │ └── runtime │ │ ├── operators │ │ ├── schema │ │ │ ├── common │ │ │ │ ├── SchemaDerivatorTest.java │ │ │ │ ├── SchemaManagerTest.java │ │ │ │ ├── SchemaTestBase.java │ │ │ │ └── TableIdRouterTest.java │ │ │ ├── distributed │ │ │ │ └── SchemaEvolveTest.java │ │ │ └── regular │ │ │ │ ├── SchemaEvolveTest.java │ │ │ │ └── SchemaOperatorTest.java │ │ ├── sink │ │ │ ├── DataSinkOperatorAdapter.java │ │ │ └── DataSinkOperatorWithSchemaEvolveTest.java │ │ └── transform │ │ │ ├── PostTransformOperatorTest.java │ │ │ ├── PreTransformOperatorTest.java │ │ │ ├── TransformOperatorWithSchemaEvolveTest.java │ │ │ ├── UnifiedTransformOperatorTest.java │ │ │ └── UserDefinedFunctionDescriptorTest.java │ │ ├── parser │ │ ├── JaninoCompilerTest.java │ │ └── TransformParserTest.java │ │ ├── partitioning │ │ └── PrePartitionOperatorTest.java │ │ ├── serializer │ │ ├── BooleanSerializerTest.java │ │ ├── BytePrimitiveArraySerializerTest.java │ │ ├── ByteSerializerTest.java │ │ ├── DoubleSerializerTest.java │ │ ├── EnumSerializerTest.java │ │ ├── FloatSerializerTest.java │ │ ├── IntSerializerTest.java │ │ ├── LinkedListSerializerTest.java │ │ ├── ListSerializerTest.java │ │ ├── LongSerializerTest.java │ │ ├── MapSerializerTest.java │ │ ├── NullableSerializerWrapperTest.java │ │ ├── SerializerTestBase.java │ │ ├── ShortSerializerTest.java │ │ ├── StringSerializerTest.java │ │ ├── TableIdSerializerTest.java │ │ ├── data │ │ │ ├── ArrayDataSerializerTest.java │ │ │ ├── DecimalDataSerializerTest.java │ │ │ ├── LocalZonedTimestampDataSerializerTest.java │ │ │ ├── MapDataSerializerTest.java │ │ │ ├── RecordDataSerializerTest.java │ │ │ ├── StringDataSerializerTest.java │ │ │ ├── TimestampDataSerializerTest.java │ │ │ ├── ZonedTimestampDataSerializerTest.java │ │ │ ├── binary │ │ │ │ └── BinarySegmentUtilsTest.java │ │ │ ├── util │ │ │ │ └── DataFormatTestUtil.java │ │ │ └── writer │ │ │ │ └── BinaryArrayWriterTest.java │ │ ├── event │ │ │ ├── AddColumnEventSerializerTest.java │ │ │ ├── AlterColumnTypeEventSerializerTest.java │ │ │ ├── CreateTableEventSerializerTest.java │ │ │ ├── DataChangeEventSerializerTest.java │ │ │ ├── DropColumnEventSerializerTest.java │ │ │ ├── DropTableEventSerializerTest.java │ │ │ ├── EventSerializerTest.java │ │ │ ├── PartitioningEventSerializerTest.java │ │ │ ├── RenameColumnEventSerializerTest.java │ │ │ ├── SchemaChangeEventSerializerTest.java │ │ │ └── TruncateTableEventSerializerTest.java │ │ └── schema │ │ │ ├── ColumnSerializerTest.java │ │ │ ├── ColumnWithPositionSerializerTest.java │ │ │ ├── DataFieldSerializerTest.java │ │ │ ├── DataTypeSerializerTest.java │ │ │ ├── MetadataColumnSerializerTest.java │ │ │ ├── PhysicalColumnSerializerTest.java │ │ │ ├── RowTypeSerializerTest.java │ │ │ └── SchemaSerializerTest.java │ │ ├── testutils │ │ ├── operators │ │ │ ├── DistributedEventOperatorTestHarness.java │ │ │ ├── MockedOperatorCoordinatorContext.java │ │ │ └── RegularEventOperatorTestHarness.java │ │ └── schema │ │ │ ├── CollectingMetadataApplier.java │ │ │ └── TestingSchemaRegistryGateway.java │ │ └── typeutils │ │ ├── BinaryRecordDataExtractorTest.java │ │ └── BinaryRecordDataGeneratorTest.java │ └── resources │ └── log4j2-test.properties ├── pom.xml └── tools ├── cdcup ├── .gitignore ├── Dockerfile ├── README.md ├── cdcup.sh └── src │ ├── app.rb │ ├── download_libs.rb │ ├── sink │ ├── doris.rb │ ├── kafka.rb │ ├── paimon.rb │ ├── star_rocks.rb │ └── values_sink.rb │ └── source │ ├── my_sql.rb │ └── values_source.rb ├── ci └── license_check.rb ├── maven ├── checkstyle.xml └── suppressions.xml └── releasing ├── create_release_branch.sh ├── create_source_release.sh ├── deploy_staging_jars.sh └── update_branch_version.sh /.dlc.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignorePatterns": [ 3 | { 4 | "pattern": "^http://localhost" 5 | }, 6 | { 7 | "pattern": "^#" 8 | }, 9 | { 10 | "pattern": "^{" 11 | }, 12 | { 13 | "pattern": "^https://repo1.maven.org/maven2/org/apache/flink.*" 14 | }, 15 | { 16 | "pattern": "^https://mvnrepository.com" 17 | }, 18 | { 19 | "pattern": "^https://img.shields.io" 20 | }, 21 | { 22 | "pattern": "^https://twitter.com*" 23 | } 24 | ], 25 | "timeout": "30s", 26 | "retryOn429": true, 27 | "retryCount": 10, 28 | "fallbackRetryDelay": "1000s", 29 | "aliveStatusCodes": [ 30 | 0, 31 | 200, 32 | 401, 33 | 403 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | blank_issues_enabled: false 17 | 18 | -------------------------------------------------------------------------------- /.github/workflows/approve_label_trigger.yml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | name: Label-when-reviewed 20 | on: pull_request_review 21 | jobs: 22 | 23 | label-when-reviewed: 24 | name: "Label PRs when reviewed" 25 | runs-on: ubuntu-latest 26 | steps: 27 | - name: "Do nothing. Only trigger corresponding workflow_run event" 28 | run: echo -------------------------------------------------------------------------------- /.github/workflows/utils.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ################################################################################ 3 | # Licensed to the Apache Software Foundation (ASF) under one 4 | # or more contributor license agreements. See the NOTICE file 5 | # distributed with this work for additional information 6 | # regarding copyright ownership. The ASF licenses this file 7 | # to you under the Apache License, Version 2.0 (the 8 | # "License"); you may not use this file except in compliance 9 | # with the License. You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | ################################################################################ 19 | 20 | function random_timezone() { 21 | local rnd=$(expr $RANDOM % 25) 22 | local hh=$(expr $rnd / 2) 23 | local mm=$(expr $rnd % 2 \* 3)"0" 24 | local sgn=$(expr $RANDOM % 2) 25 | if [ $sgn -eq 0 ] 26 | then 27 | echo "GMT+$hh:$mm" 28 | else 29 | echo "GMT-$hh:$mm" 30 | fi 31 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .cache 2 | scalastyle-output.xml 3 | .classpath 4 | .idea/* 5 | !.idea/vcs.xml 6 | .metadata 7 | .settings 8 | .project 9 | .version.properties 10 | filter.properties 11 | logs.zip 12 | target 13 | tmp 14 | *.class 15 | *.iml 16 | *.swp 17 | *.jar 18 | *.zip 19 | *.log 20 | *.pyc 21 | .DS_Store 22 | build-targetatlassian-ide-plugin.xml 23 | *.ipr 24 | *.iws 25 | docs/_build 26 | **/.flattened-pom.xml 27 | **/dependency-reduced-pom.xml 28 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "docs/themes/book"] 2 | path = docs/themes/book 3 | url = https://github.com/alex-shpak/hugo-book 4 | [submodule ".github/actions/get-workflow-origin"] 5 | path = .github/actions/get-workflow-origin 6 | url = https://github.com/potiuk/get-workflow-origin 7 | [submodule ".github/actions/label-when-approved-action"] 8 | path = .github/actions/label-when-approved-action 9 | url = https://github.com/TobKed/label-when-approved-action 10 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | .bundle/ 2 | .jekyll-metadata 3 | .jekyll-cache/ 4 | .rubydeps/ 5 | ruby2/.bundle/ 6 | ruby2/.rubydeps/ 7 | public/ 8 | resources/ 9 | .hugo_build.lock 10 | .DS_Store 11 | -------------------------------------------------------------------------------- /docs/assets/_fonts.scss: -------------------------------------------------------------------------------- 1 | // Licensed to the Apache Software Foundation (ASF) under one 2 | // or more contributor license agreements. See the NOTICE file 3 | // distributed with this work for additional information 4 | // regarding copyright ownership. The ASF licenses this file 5 | // to you under the Apache License, Version 2.0 (the 6 | // "License"); you may not use this file except in compliance 7 | // with the License. You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, 12 | // software distributed under the License is distributed on an 13 | // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | // KIND, either express or implied. See the License for the 15 | // specific language governing permissions and limitations 16 | // under the License. 17 | 18 | body { 19 | font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; 20 | font-size: 14px; 21 | } 22 | 23 | code { 24 | font-family: "Menlo", "Lucida Console", monospace; 25 | } -------------------------------------------------------------------------------- /docs/content.zh/docs/connectors/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 连接器 3 | bold: true 4 | bookCollapseSection: true 5 | weight: 3 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content.zh/docs/connectors/flink-sources/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Flink Source 连接器 3 | bookCollapseSection: true 4 | weight: 2 5 | --- 6 | 24 | -------------------------------------------------------------------------------- /docs/content.zh/docs/connectors/flink-sources/tutorials/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Flink CDC Sources 教程" 3 | bookCollapseSection: true 4 | weight: 999 5 | --- 6 | 24 | -------------------------------------------------------------------------------- /docs/content.zh/docs/connectors/pipeline-connectors/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Pipeline 连接器 3 | bookCollapseSection: true 4 | weight: 1 5 | --- 6 | 24 | -------------------------------------------------------------------------------- /docs/content.zh/docs/core-concept/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "核心概念" 3 | bold: true 4 | bookCollapseSection: true 5 | weight: 2 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content.zh/docs/deployment/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 部署模式 3 | bold: true 4 | bookCollapseSection: true 5 | weight: 4 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content.zh/docs/developer-guide/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 开发者指南 3 | bold: true 4 | bookCollapseSection: true 5 | weight: 5 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content.zh/docs/faq/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "常见问题" 3 | # bold: true 4 | bookCollapseSection: true 5 | weight: 6 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content.zh/docs/get-started/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "入门指南" 3 | bold: true 4 | bookCollapseSection: true 5 | weight: 1 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content.zh/docs/get-started/quickstart/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "快速开始" 3 | bookCollapseSection: true 4 | weight: 2 5 | --- 6 | 24 | -------------------------------------------------------------------------------- /docs/content.zh/versions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Versions 3 | type: docs 4 | bookToc: false 5 | --- 6 | 24 | 25 | # Versions 26 | 27 | An appendix of hosted documentation for all versions of Apache Flink CDC. 28 | 29 | {{< all_versions >}} 30 | -------------------------------------------------------------------------------- /docs/content/docs/connectors/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Connectors 3 | bold: true 4 | bookCollapseSection: true 5 | weight: 3 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content/docs/connectors/flink-sources/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Flink Sources 3 | bookCollapseSection: true 4 | weight: 2 5 | --- 6 | 24 | -------------------------------------------------------------------------------- /docs/content/docs/connectors/flink-sources/tutorials/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tutorials 3 | bookCollapseSection: true 4 | weight: 999 5 | --- 6 | 24 | -------------------------------------------------------------------------------- /docs/content/docs/connectors/pipeline-connectors/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Pipeline Connectors 3 | bookCollapseSection: true 4 | weight: 1 5 | --- 6 | 24 | -------------------------------------------------------------------------------- /docs/content/docs/core-concept/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Core Concept" 3 | bold: true 4 | bookCollapseSection: true 5 | weight: 2 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content/docs/deployment/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Deployment 3 | bold: true 4 | bookCollapseSection: true 5 | weight: 4 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content/docs/developer-guide/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Developer Guide 3 | bold: true 4 | bookCollapseSection: true 5 | weight: 5 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content/docs/faq/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "FAQ" 3 | # bold: true 4 | bookCollapseSection: true 5 | weight: 6 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content/docs/get-started/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Get Started" 3 | bold: true 4 | bookCollapseSection: true 5 | weight: 1 6 | --- 7 | 25 | -------------------------------------------------------------------------------- /docs/content/docs/get-started/quickstart/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Quickstart" 3 | bookCollapseSection: true 4 | weight: 2 5 | --- 6 | 24 | -------------------------------------------------------------------------------- /docs/content/versions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Versions 3 | type: docs 4 | bookToc: false 5 | --- 6 | 24 | 25 | # Versions 26 | 27 | An appendix of hosted documentation for all versions of Apache Flink CDC. 28 | 29 | {{< all_versions >}} 30 | -------------------------------------------------------------------------------- /docs/layouts/partials/docs/footer.html: -------------------------------------------------------------------------------- 1 | 19 | 22 | {{ if .IsPage }} 23 | {{ $folder := "content" }} 24 | {{ if eq "/zh" .Site.LanguagePrefix }} 25 | {{ $folder = "content.zh" }} 26 | {{ end }} 27 | Edit This Page 28 | {{ end }} 29 | -------------------------------------------------------------------------------- /docs/layouts/partials/docs/inject/head.html: -------------------------------------------------------------------------------- 1 | 19 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /docs/layouts/partials/docs/inject/menu-before.html: -------------------------------------------------------------------------------- 1 | 19 | 22 | 25 |

v{{ $.Site.Params.Version }}

-------------------------------------------------------------------------------- /docs/layouts/partials/docs/interpolate.html: -------------------------------------------------------------------------------- 1 | 19 | 22 | {{ $str := replace . "$scala_version" site.Params.ScalaVersion }} 23 | {{ $str = replace $str "$version" site.Params.Version }} 24 | {{ return $str }} -------------------------------------------------------------------------------- /docs/layouts/partials/docs/simple-title.html: -------------------------------------------------------------------------------- 1 | 19 | 23 | {{ $title := "" }} 24 | 25 | {{ if .Title }} 26 | {{ $title = .Title }} 27 | {{ else if and .IsSection .File }} 28 | {{ $title = path.Base .File.Dir | humanize | title }} 29 | {{ else if and .IsPage .File }} 30 | {{ $title = .File.BaseFileName | humanize | title }} 31 | {{ end }} 32 | 33 | {{ return $title }} -------------------------------------------------------------------------------- /docs/layouts/partials/docs/toc.html: -------------------------------------------------------------------------------- 1 | 19 | {{/* 20 | Generates the pages table of contents. Unfortunately, hugo does not give us a lot of flexibility 21 | around how the TOC is generated so we have to fall back to a regex to add the header. 22 | */}} 23 | {{ .TableOfContents | replaceRE "