├── .cargo └── config.toml ├── .dockerignore ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── build_and_push_images.yml │ ├── build_and_release.yml │ └── build_and_upload_to_s3.yml ├── .gitignore ├── .gitmodules ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Cargo.toml ├── Cross.toml ├── Dockerfile ├── Dockerfile.github.workflow ├── Dockerfile.mac.cross ├── LICENSE ├── Makefile ├── README.md ├── README_ZH.md ├── docs ├── en │ ├── benchmark.md │ ├── build_images.md │ ├── cdc │ │ ├── heartbeat.md │ │ ├── resume.md │ │ ├── sync.md │ │ ├── to_sql.md │ │ └── two_way.md │ ├── config.md │ ├── consumer │ │ ├── http_consumer.md │ │ └── kafka_consumer.md │ ├── etl │ │ └── lua.md │ ├── monitor │ │ ├── monitor.md │ │ └── position.md │ ├── snapshot │ │ ├── check.md │ │ ├── migration.md │ │ ├── resume.md │ │ ├── review.md │ │ ├── revise.md │ │ └── tb_in_parallel.md │ ├── structure │ │ ├── check.md │ │ ├── check_by_liquibase.md │ │ └── migration.md │ └── tutorial │ │ ├── etl_by_lua.md │ │ ├── mongo_to_mongo.md │ │ ├── mysql_to_clickhouse.md │ │ ├── mysql_to_doris.md │ │ ├── mysql_to_http_server_consumer.md │ │ ├── mysql_to_kafka_consumer.md │ │ ├── mysql_to_mysql.md │ │ ├── mysql_to_starrocks.md │ │ ├── mysql_to_tidb.md │ │ ├── pg_to_clickhouse.md │ │ ├── pg_to_doris.md │ │ ├── pg_to_http_server_consumer.md │ │ ├── pg_to_kafka_consumer.md │ │ ├── pg_to_pg.md │ │ ├── pg_to_starrocks.md │ │ ├── prerequisites.md │ │ ├── redis_to_redis.md │ │ └── snapshot_and_cdc_without_data_loss.md ├── img │ ├── structure.png │ ├── topo_net.png │ ├── topo_star.png │ └── topo_two_way.png ├── templates │ ├── mongo_to_mongo.md │ ├── mysql_to_clickhouse.md │ ├── mysql_to_doris.md │ ├── mysql_to_mysql.md │ ├── mysql_to_starrocks.md │ ├── pg_to_clickhouse.md │ ├── pg_to_doris.md │ ├── pg_to_pg.md │ ├── pg_to_starrocks.md │ ├── rdb_to_http_server.md │ ├── rdb_to_kafka.md │ └── redis_to_redis.md └── zh │ ├── benchmark.md │ ├── cdc │ ├── heartbeat.md │ ├── resume.md │ ├── sync.md │ ├── to_sql.md │ └── two_way.md │ ├── config.md │ ├── consumer │ ├── http_consumer.md │ └── kafka_consumer.md │ ├── etl │ └── lua.md │ ├── monitor │ ├── monitor.md │ └── position.md │ ├── snapshot │ ├── check.md │ ├── migration.md │ ├── resume.md │ ├── review.md │ ├── revise.md │ └── tb_in_parallel.md │ └── structure │ ├── check.md │ ├── check_by_liquibase.md │ └── migration.md ├── dt-common ├── Cargo.toml └── src │ ├── config │ ├── config_enums.rs │ ├── config_token_parser.rs │ ├── data_marker_config.rs │ ├── extractor_config.rs │ ├── filter_config.rs │ ├── ini_loader.rs │ ├── meta_center_config.rs │ ├── mod.rs │ ├── monitor_config.rs │ ├── parallelizer_config.rs │ ├── pipeline_config.rs │ ├── processor_config.rs │ ├── resumer_config.rs │ ├── router_config.rs │ ├── runtime_config.rs │ ├── s3_config.rs │ ├── sinker_config.rs │ └── task_config.rs │ ├── error.rs │ ├── lib.rs │ ├── logger.rs │ ├── meta │ ├── adaptor │ │ ├── mod.rs │ │ ├── mysql_col_value_convertor.rs │ │ ├── pg_col_value_convertor.rs │ │ └── sqlx_ext.rs │ ├── avro │ │ ├── avro_converter.rs │ │ ├── avro_converter_schema.rs │ │ └── mod.rs │ ├── col_value.rs │ ├── ddl_meta │ │ ├── ddl_data.rs │ │ ├── ddl_parser.rs │ │ ├── ddl_statement.rs │ │ ├── ddl_type.rs │ │ ├── keywords.rs │ │ └── mod.rs │ ├── dt_data.rs │ ├── dt_queue.rs │ ├── foreign_key.rs │ ├── foxlake │ │ ├── mod.rs │ │ └── s3_file_meta.rs │ ├── kafka │ │ ├── kafka_message.rs │ │ └── mod.rs │ ├── mod.rs │ ├── mongo │ │ ├── mod.rs │ │ ├── mongo_cdc_source.rs │ │ ├── mongo_constant.rs │ │ └── mongo_key.rs │ ├── mysql │ │ ├── mod.rs │ │ ├── mysql_col_type.rs │ │ ├── mysql_dbengine_meta_center.rs │ │ ├── mysql_meta_fetcher.rs │ │ ├── mysql_meta_manager.rs │ │ └── mysql_tb_meta.rs │ ├── pg │ │ ├── mod.rs │ │ ├── pg_col_type.rs │ │ ├── pg_meta_manager.rs │ │ ├── pg_tb_meta.rs │ │ ├── pg_value_type.rs │ │ └── type_registry.rs │ ├── position.rs │ ├── rdb_meta_manager.rs │ ├── rdb_tb_meta.rs │ ├── redis │ │ ├── cluster_node.rs │ │ ├── command │ │ │ ├── cmd_constants.rs │ │ │ ├── cmd_encoder.rs │ │ │ ├── cmd_meta.rs │ │ │ ├── key_parser.rs │ │ │ └── mod.rs │ │ ├── mod.rs │ │ ├── redis_entry.rs │ │ ├── redis_object.rs │ │ ├── redis_statistic_type.rs │ │ └── redis_write_method.rs │ ├── row_data.rs │ ├── row_type.rs │ ├── struct_meta │ │ ├── mod.rs │ │ ├── statement │ │ │ ├── mod.rs │ │ │ ├── mysql_create_database_statement.rs │ │ │ ├── mysql_create_table_statement.rs │ │ │ ├── pg_create_schema_statement.rs │ │ │ ├── pg_create_table_statement.rs │ │ │ └── struct_statement.rs │ │ ├── struct_data.rs │ │ └── structure │ │ │ ├── column.rs │ │ │ ├── comment.rs │ │ │ ├── constraint.rs │ │ │ ├── database.rs │ │ │ ├── index.rs │ │ │ ├── mod.rs │ │ │ ├── schema.rs │ │ │ ├── sequence.rs │ │ │ ├── sequence_owner.rs │ │ │ ├── structure_type.rs │ │ │ └── table.rs │ ├── syncer.rs │ └── time │ │ ├── dt_utc_time.rs │ │ └── mod.rs │ ├── monitor │ ├── counter.rs │ ├── counter_type.rs │ ├── group_monitor.rs │ ├── mod.rs │ ├── monitor.rs │ └── time_window_counter.rs │ ├── rdb_filter.rs │ ├── time_filter.rs │ └── utils │ ├── file_util.rs │ ├── mod.rs │ ├── redis_util.rs │ ├── sql_util.rs │ └── time_util.rs ├── dt-connector ├── Cargo.toml └── src │ ├── check_log │ ├── check_log.rs │ ├── log_reader.rs │ ├── log_type.rs │ └── mod.rs │ ├── conn_util.rs │ ├── data_marker.rs │ ├── extractor │ ├── base_check_extractor.rs │ ├── base_extractor.rs │ ├── extractor_monitor.rs │ ├── foxlake │ │ ├── foxlake_s3_extractor.rs │ │ └── mod.rs │ ├── kafka │ │ ├── kafka_extractor.rs │ │ └── mod.rs │ ├── mod.rs │ ├── mongo │ │ ├── mod.rs │ │ ├── mongo_cdc_extractor.rs │ │ ├── mongo_check_extractor.rs │ │ └── mongo_snapshot_extractor.rs │ ├── mysql │ │ ├── binlog_util.rs │ │ ├── mod.rs │ │ ├── mysql_cdc_extractor.rs │ │ ├── mysql_check_extractor.rs │ │ ├── mysql_snapshot_extractor.rs │ │ └── mysql_struct_extractor.rs │ ├── pg │ │ ├── mod.rs │ │ ├── pg_cdc_client.rs │ │ ├── pg_cdc_extractor.rs │ │ ├── pg_check_extractor.rs │ │ ├── pg_snapshot_extractor.rs │ │ └── pg_struct_extractor.rs │ ├── redis │ │ ├── mod.rs │ │ ├── rdb │ │ │ ├── entry_parser │ │ │ │ ├── entry_parser.rs │ │ │ │ ├── hash_parser.rs │ │ │ │ ├── list_parser.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── module2_parser.rs │ │ │ │ ├── set_parser.rs │ │ │ │ ├── stream_parser.rs │ │ │ │ ├── string_parser.rs │ │ │ │ └── zset_parser.rs │ │ │ ├── mod.rs │ │ │ ├── rdb_parser.rs │ │ │ └── reader │ │ │ │ ├── byte.rs │ │ │ │ ├── float.rs │ │ │ │ ├── int.rs │ │ │ │ ├── length.rs │ │ │ │ ├── list_pack.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── rdb_reader.rs │ │ │ │ ├── string.rs │ │ │ │ └── zip_list.rs │ │ ├── redis_client.rs │ │ ├── redis_psync_extractor.rs │ │ ├── redis_reshard_extractor.rs │ │ ├── redis_resp_reader.rs │ │ ├── redis_resp_types.rs │ │ ├── redis_scan_extractor.rs │ │ └── redis_snapshot_file_extractor.rs │ └── resumer │ │ ├── cdc_resumer.rs │ │ ├── mod.rs │ │ └── snapshot_resumer.rs │ ├── lib.rs │ ├── meta_fetcher │ ├── mod.rs │ ├── mysql │ │ ├── mod.rs │ │ ├── mysql_struct_check_fetcher.rs │ │ └── mysql_struct_fetcher.rs │ └── pg │ │ ├── mod.rs │ │ ├── pg_struct_check_fetcher.rs │ │ └── pg_struct_fetcher.rs │ ├── rdb_query_builder.rs │ ├── rdb_router.rs │ └── sinker │ ├── base_checker.rs │ ├── base_sinker.rs │ ├── base_struct_sinker.rs │ ├── clickhouse │ ├── clickhouse_sinker.rs │ ├── clickhouse_struct_sinker.rs │ └── mod.rs │ ├── dummy_sinker.rs │ ├── foxlake │ ├── decimal_util.rs │ ├── foxlake_merger.rs │ ├── foxlake_pusher.rs │ ├── foxlake_sinker.rs │ ├── foxlake_struct_sinker.rs │ ├── mod.rs │ ├── orc_sequencer.rs │ └── unicode_util.rs │ ├── kafka │ ├── kafka_sinker.rs │ ├── mod.rs │ └── rdkafka_sinker.rs │ ├── mod.rs │ ├── mongo │ ├── mod.rs │ ├── mongo_checker.rs │ └── mongo_sinker.rs │ ├── mysql │ ├── mod.rs │ ├── mysql_checker.rs │ ├── mysql_sinker.rs │ └── mysql_struct_sinker.rs │ ├── pg │ ├── mod.rs │ ├── pg_checker.rs │ ├── pg_sinker.rs │ └── pg_struct_sinker.rs │ ├── redis │ ├── entry_rewriter.rs │ ├── mod.rs │ ├── redis_sinker.rs │ └── redis_statistic_sinker.rs │ ├── sql_sinker.rs │ └── starrocks │ ├── mod.rs │ ├── starrocks_sinker.rs │ └── starrocks_struct_sinker.rs ├── dt-main ├── Cargo.toml └── src │ └── main.rs ├── dt-parallelizer ├── Cargo.toml └── src │ ├── base_parallelizer.rs │ ├── check_parallelizer.rs │ ├── foxlake_parallelizer.rs │ ├── lib.rs │ ├── merge_parallelizer.rs │ ├── mongo_merger.rs │ ├── partition_parallelizer.rs │ ├── rdb_merger.rs │ ├── rdb_partitioner.rs │ ├── redis_parallelizer.rs │ ├── serial_parallelizer.rs │ ├── snapshot_parallelizer.rs │ └── table_parallelizer.rs ├── dt-pipeline ├── Cargo.toml └── src │ ├── base_pipeline.rs │ ├── http_server_pipeline.rs │ ├── lib.rs │ └── lua_processor.rs ├── dt-precheck ├── Cargo.toml └── src │ ├── builder │ ├── mod.rs │ └── prechecker_builder.rs │ ├── config │ ├── mod.rs │ ├── precheck_config.rs │ └── task_config.rs │ ├── fetcher │ ├── mod.rs │ ├── mongo │ │ ├── mod.rs │ │ └── mongo_fetcher.rs │ ├── mysql │ │ ├── mod.rs │ │ └── mysql_fetcher.rs │ ├── postgresql │ │ ├── mod.rs │ │ └── pg_fetcher.rs │ ├── redis │ │ ├── mod.rs │ │ └── redis_fetcher.rs │ └── traits.rs │ ├── lib.rs │ ├── meta │ ├── check_item.rs │ ├── check_result.rs │ ├── database_mode.rs │ ├── db_table_model.rs │ ├── mod.rs │ └── pg_enums.rs │ └── prechecker │ ├── mod.rs │ ├── mongo_prechecker.rs │ ├── mysql_prechecker.rs │ ├── pg_prechecker.rs │ ├── redis_prechecker.rs │ └── traits.rs ├── dt-task ├── Cargo.toml └── src │ ├── extractor_util.rs │ ├── lib.rs │ ├── parallelizer_util.rs │ ├── sinker_util.rs │ ├── task_runner.rs │ └── task_util.rs ├── dt-tests ├── Cargo.toml ├── README.md ├── README_ZH.md ├── k8s │ ├── redis │ │ ├── 2-8 │ │ │ ├── pod-redis-2-8-dst.yaml │ │ │ ├── pod-redis-2-8-src.yaml │ │ │ ├── service-redis-2-8-dst.yaml │ │ │ └── service-redis-2-8-src.yaml │ │ ├── 4-0 │ │ │ ├── pod-redis-4-0-dst.yaml │ │ │ ├── pod-redis-4-0-src.yaml │ │ │ ├── service-redis-4-0-dst.yaml │ │ │ └── service-redis-4-0-src.yaml │ │ ├── 5-0 │ │ │ ├── pod-redis-5-0-dst.yaml │ │ │ ├── pod-redis-5-0-src.yaml │ │ │ ├── service-redis-5-0-dst.yaml │ │ │ └── service-redis-5-0-src.yaml │ │ ├── 6-0 │ │ │ ├── pod-redis-6-0-dst.yaml │ │ │ ├── pod-redis-6-0-src.yaml │ │ │ ├── service-redis-6-0-dst.yaml │ │ │ └── service-redis-6-0-src.yaml │ │ ├── 6-2 │ │ │ ├── pod-redis-6-2-dst.yaml │ │ │ ├── pod-redis-6-2-src.yaml │ │ │ ├── service-redis-6-2-dst.yaml │ │ │ └── service-redis-6-2-src.yaml │ │ ├── 7-0 │ │ │ ├── pod-redis-7-0-dst.yaml │ │ │ ├── pod-redis-7-0-src.yaml │ │ │ ├── service-redis-7-0-dst.yaml │ │ │ └── service-redis-7-0-src.yaml │ │ ├── rebloom │ │ │ ├── pod-redis-rebloom-dst.yaml │ │ │ ├── pod-redis-rebloom-src.yaml │ │ │ ├── service-redis-rebloom-dst.yaml │ │ │ └── service-redis-rebloom-src.yaml │ │ ├── redisearch │ │ │ ├── pod-redis-redisearch-dst.yaml │ │ │ ├── pod-redis-redisearch-src.yaml │ │ │ ├── service-redis-redisearch-dst.yaml │ │ │ └── service-redis-redisearch-src.yaml │ │ └── rejson │ │ │ ├── pod-redis-rejson-dst.yaml │ │ │ ├── pod-redis-rejson-src.yaml │ │ │ ├── service-redis-rejson-dst.yaml │ │ │ └── service-redis-rejson-src.yaml │ └── starrocks │ │ ├── 2-5-4 │ │ ├── pod.yaml │ │ └── service.yaml │ │ └── 3-1-5 │ │ ├── pod.yaml │ │ └── service.yaml ├── src │ └── lib.rs └── tests │ ├── .env │ ├── integration_test.rs │ ├── log_reader │ ├── log_reader_empty_test │ │ └── dummy_dir │ │ │ └── dummy_file │ ├── log_reader_multi_log_test │ │ ├── log.1 │ │ ├── log.2 │ │ └── log.3 │ ├── log_reader_one_log_test │ │ └── log.1 │ ├── log_reader_tests.rs │ └── mod.rs │ ├── mongo_to_mongo │ ├── cdc │ │ ├── change_stream_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── heartbeat_test │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── idempotent_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── op_log_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── resume_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── serial_sink_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── check │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── check_tests.rs │ ├── mod.rs │ ├── precheck │ │ └── struct_supported_basic_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ ├── precheck_tests.rs │ ├── review │ │ ├── basic_test │ │ │ ├── check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── review_tests.rs │ ├── revise │ │ ├── basic_test │ │ │ ├── check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── revise_tests.rs │ ├── snapshot │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── resume_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ └── snapshot_tests.rs │ ├── mysql_to_clickhouse │ ├── cdc │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── mod.rs │ ├── snapshot │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ ├── snapshot_tests.rs │ ├── struct │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ ├── struct_tests.rs │ └── table_schemas.rs │ ├── mysql_to_doris │ ├── cdc │ │ └── 2_1_0 │ │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ │ │ ├── json_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ │ │ └── json_to_string_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_2_1_0_tests.rs │ ├── mod.rs │ ├── snapshot │ │ └── 2_1_0 │ │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ │ │ ├── json_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ │ │ └── json_to_string_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── snapshot_2_1_0_tests.rs │ ├── struct │ │ └── 2_1_0 │ │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ └── struct_2_1_0_tests.rs │ ├── mysql_to_foxlake │ ├── cdc │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── foxlake_types_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── mod.rs │ ├── snapshot │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── foxlake_types_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ └── snapshot_tests.rs │ ├── mysql_to_kafka_to_mysql │ ├── cdc │ │ └── basic_test │ │ │ ├── kafka_to_dst │ │ │ ├── task_1 │ │ │ │ └── task_config.ini │ │ │ ├── task_2 │ │ │ │ └── task_config.ini │ │ │ └── task_3 │ │ │ │ └── task_config.ini │ │ │ ├── src_to_dst │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ │ └── src_to_kafka │ │ │ ├── dst_prepare.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── mod.rs │ ├── snapshot │ │ └── basic_test │ │ │ ├── kafka_to_dst │ │ │ ├── task_1 │ │ │ │ └── task_config.ini │ │ │ ├── task_2 │ │ │ │ └── task_config.ini │ │ │ └── task_3 │ │ │ │ └── task_config.ini │ │ │ ├── src_to_dst │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ │ └── src_to_kafka │ │ │ ├── dst_prepare.sql │ │ │ └── task_config.ini │ └── snapshot_tests.rs │ ├── mysql_to_mysql │ ├── cdc │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── charset_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── cycle_basic_test │ │ │ ├── topo1_node1_to_node2 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── topo1_node2_to_node1 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── cycle_net_test │ │ │ ├── topo1_node1_to_node2 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node1_to_node3 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node2_to_node1 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node2_to_node3 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node3_to_node1 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── topo1_node3_to_node2 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── cycle_star_test │ │ │ ├── topo1_node1_to_node2 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node1_to_node3 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node2_to_node1 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── topo1_node3_to_node1 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── ddl_meta_center_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── meta_center_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── ddl_route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── ddl_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── foreign_key_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── gtid_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── heartbeat_test │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── json_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── special_character_in_name_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── to_sql_test │ │ │ ├── src_to_dst │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ └── task_config.ini │ │ │ └── src_to_sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── uk_changed_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── wildchar_filter_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── check │ │ ├── all_cols_pk_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── basic_struct_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_check_log_5.7 │ │ │ │ ├── diff.log │ │ │ │ ├── extra.log │ │ │ │ └── miss.log │ │ │ ├── expect_check_log_8.0 │ │ │ │ ├── diff.log │ │ │ │ ├── extra.log │ │ │ │ └── miss.log │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── sample_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── set_check_log_dir_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── check_tests.rs │ ├── mod.rs │ ├── precheck │ │ ├── db_not_exists_non_struct_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── db_not_exists_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_existed_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_supported_basic_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_supported_have_fk_test1 │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_supported_have_fk_test2 │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_supported_have_fk_test3 │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_supported_have_uk_no_pk_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ └── struct_supported_no_pkuk_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ ├── precheck_tests.rs │ ├── review │ │ ├── basic_test │ │ │ ├── check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── review_tests.rs │ ├── revise │ │ ├── basic_test │ │ │ ├── check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── revise_tests.rs │ ├── snapshot │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── charset_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── json_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── on_duplicate_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── parallel_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── resume_test │ │ │ ├── dst_prepare.sql │ │ │ ├── resume.config │ │ │ ├── resume_logs │ │ │ │ ├── finished.log │ │ │ │ └── position.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── special_character_in_name_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── tb_parallel_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── wildchar_filter_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── snapshot_tests.rs │ ├── struct │ │ ├── 8_0_basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl_8.0.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── basic_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl_5.7.sql │ │ │ ├── expect_ddl_8.0.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── charset_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl_5.7.sql │ │ │ ├── expect_ddl_8.0.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── filter_test_1 │ │ │ ├── check │ │ │ │ ├── expect_check_log_5.7 │ │ │ │ │ └── miss.log │ │ │ │ ├── expect_check_log_8.0 │ │ │ │ │ └── miss.log │ │ │ │ └── task_config.ini │ │ │ └── src_to_dst │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ └── task_config.ini │ │ ├── filter_test_2 │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl_5.7.sql │ │ │ ├── expect_ddl_8.0.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl_5.7.sql │ │ │ ├── expect_ddl_8.0.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ └── struct_tests.rs │ ├── mysql_to_mysql_case_sensitive │ ├── cdc │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── check │ │ ├── basic_struct_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_check_log_5.7 │ │ │ │ ├── diff.log │ │ │ │ ├── extra.log │ │ │ │ └── miss.log │ │ │ ├── expect_check_log_8.0 │ │ │ │ ├── diff.log │ │ │ │ ├── extra.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── check_tests.rs │ ├── mod.rs │ ├── revise │ │ └── basic_test │ │ │ ├── check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── revise_tests.rs │ ├── snapshot │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── snapshot_tests.rs │ ├── struct │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl_5.7.sql │ │ │ ├── expect_ddl_8.0.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ └── struct_tests.rs │ ├── mysql_to_mysql_lua │ ├── cdc │ │ ├── basic_test │ │ │ ├── expect_to_dst │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── src_to_dst │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── lua_code.lua │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ └── do_nothing_test │ │ │ ├── dst_prepare.sql │ │ │ ├── lua_code.lua │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── mod.rs │ ├── snapshot │ │ ├── basic_test │ │ │ ├── expect_to_dst │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── src_to_dst │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── lua_code.lua │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ └── do_nothing_test │ │ │ ├── dst_prepare.sql │ │ │ ├── lua_code.lua │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ └── snapshot_tests.rs │ ├── mysql_to_redis │ ├── cdc │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── mod.rs │ ├── snapshot │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ └── snapshot_tests.rs │ ├── mysql_to_starrocks │ ├── cdc │ │ ├── 2_5_4 │ │ │ └── basic_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ ├── struct_task_config.ini │ │ │ │ └── task_config.ini │ │ └── 3_2_11 │ │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ │ │ ├── json_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ │ │ └── json_to_string_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_2_5_4_tests.rs │ ├── cdc_3_2_11_tests.rs │ ├── mod.rs │ ├── snapshot │ │ ├── 2_5_4 │ │ │ └── basic_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ ├── struct_task_config.ini │ │ │ │ └── task_config.ini │ │ └── 3_2_11 │ │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ │ │ ├── json_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ │ │ └── json_to_string_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── snapshot_2_5_4_tests.rs │ ├── snapshot_3_2_11_tests.rs │ ├── struct │ │ ├── 2_5_4 │ │ │ └── basic_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── expect_ddl.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ └── task_config.ini │ │ └── 3_2_11 │ │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ ├── struct_2_5_4_tests.rs │ └── struct_3_2_11_tests.rs │ ├── mysql_to_tidb │ ├── cdc │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── mod.rs │ ├── snapshot │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── snapshot_tests.rs │ ├── struct │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── charset_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ └── struct_tests.rs │ ├── pg_to_clickhouse │ ├── cdc │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── mod.rs │ ├── snapshot │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ ├── snapshot_tests.rs │ ├── struct │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ ├── struct_tests.rs │ └── table_schemas.rs │ ├── pg_to_doris │ ├── cdc │ │ └── 2_1_0 │ │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ ├── cdc_2_1_0_tests.rs │ ├── mod.rs │ ├── snapshot │ │ └── 2_1_0 │ │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ ├── snapshot_2_1_0_tests.rs │ ├── struct │ │ └── 2_1_0 │ │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ └── struct_2_1_0_tests.rs │ ├── pg_to_kafka_to_pg │ ├── cdc │ │ └── basic_test │ │ │ ├── kafka_to_dst │ │ │ ├── task_1 │ │ │ │ └── task_config.ini │ │ │ ├── task_2 │ │ │ │ └── task_config.ini │ │ │ └── task_3 │ │ │ │ └── task_config.ini │ │ │ ├── src_to_dst │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ │ └── src_to_kafka │ │ │ ├── dst_prepare.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── mod.rs │ ├── snapshot │ │ └── basic_test │ │ │ ├── kafka_to_dst │ │ │ ├── task_1 │ │ │ │ └── task_config.ini │ │ │ ├── task_2 │ │ │ │ └── task_config.ini │ │ │ └── task_3 │ │ │ │ └── task_config.ini │ │ │ ├── src_to_dst │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ │ └── src_to_kafka │ │ │ ├── dst_prepare.sql │ │ │ └── task_config.ini │ └── snapshot_tests.rs │ ├── pg_to_pg │ ├── cdc │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── charset_euc_cn_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── charset_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── cycle_basic_test │ │ │ ├── topo1_node1_to_node2 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── topo1_node2_to_node1 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── cycle_net_test │ │ │ ├── topo1_node1_to_node2 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node1_to_node3 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node2_to_node1 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node2_to_node3 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node3_to_node1 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── topo1_node3_to_node2 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── cycle_star_test │ │ │ ├── topo1_node1_to_node2 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node1_to_node3 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── topo1_node2_to_node1 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── topo1_node3_to_node1 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── ddl_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── foreign_key_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── heartbeat_test │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── postgis_array_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── postgis_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── special_character_in_name_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── to_sql_test │ │ │ ├── src_to_dst │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ └── task_config.ini │ │ │ └── src_to_sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ └── wildchar_filter_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── check │ │ ├── basic_struct_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ ├── extra.log │ │ │ │ └── miss.log │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── sample_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── check_tests.rs │ ├── mod.rs │ ├── precheck │ │ ├── db_not_exists_non_struct_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── db_not_exists_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_existed_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_supported_basic_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_supported_have_fk_test1 │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_supported_have_fk_test2 │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_supported_have_fk_test3 │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── struct_supported_have_uk_no_pk_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ └── struct_supported_no_pkuk_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ ├── precheck_tests.rs │ ├── review │ │ ├── basic_test │ │ │ ├── check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── expect_check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── review_tests.rs │ ├── revise │ │ ├── basic_test │ │ │ ├── check_log │ │ │ │ ├── diff.log │ │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── check_log │ │ │ ├── diff.log │ │ │ └── miss.log │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── revise_tests.rs │ ├── snapshot │ │ ├── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── charset_euc_cn_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── charset_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── on_duplicate_test │ │ │ ├── dst_prepare.sql │ │ │ ├── dst_test.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── postgis_array_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── postgis_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── resume_test │ │ │ ├── dst_prepare.sql │ │ │ ├── resume.config │ │ │ ├── resume_logs │ │ │ │ ├── finished.log │ │ │ │ └── position.log │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ ├── special_character_in_name_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ │ └── wildchar_filter_test │ │ │ ├── dst_prepare.sql │ │ │ ├── filtered_tbs.txt │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── snapshot_tests.rs │ ├── struct │ │ ├── basic_test │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── filter_test_1 │ │ │ ├── check │ │ │ │ ├── expect_check_log │ │ │ │ │ └── miss.log │ │ │ │ └── task_config.ini │ │ │ └── src_to_dst │ │ │ │ ├── dst_clean.sql │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_clean.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ └── task_config.ini │ │ ├── filter_test_2 │ │ │ ├── dst_clean.sql │ │ │ ├── dst_prepare.sql │ │ │ ├── src_clean.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ ├── postgis_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ │ └── route_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ ├── struct_tests.rs │ ├── tb_meta │ │ └── basic_test │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ └── tb_meta_tests.rs │ ├── pg_to_pg_lua │ ├── cdc │ │ ├── basic_test │ │ │ ├── expect_to_dst │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── src_to_dst │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── lua_code.lua │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ └── do_nothing_test │ │ │ ├── dst_prepare.sql │ │ │ ├── lua_code.lua │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_tests.rs │ ├── mod.rs │ ├── snapshot │ │ ├── basic_test │ │ │ ├── expect_to_dst │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── src_to_dst │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── lua_code.lua │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ └── do_nothing_test │ │ │ ├── dst_prepare.sql │ │ │ ├── lua_code.lua │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ └── snapshot_tests.rs │ ├── pg_to_starrocks │ ├── cdc │ │ └── 3_2_11 │ │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ ├── cdc_3_2_11_tests.rs │ ├── mod.rs │ ├── snapshot │ │ └── 3_2_11 │ │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ ├── struct_task_config.ini │ │ │ └── task_config.ini │ ├── snapshot_3_2_11_tests.rs │ ├── struct │ │ └── 3_2_11 │ │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── expect_ddl.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ └── struct_3_2_11_tests.rs │ ├── redis_to_redis │ ├── cdc │ │ ├── 2_8 │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── 4_0 │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── 5_0 │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── 6_0 │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── 6_2 │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── 7_0 │ │ │ ├── basic_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── cycle_basic_test │ │ │ │ ├── topo1_node1_to_node2 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ │ └── topo1_node2_to_node1 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ ├── cycle_net_test │ │ │ │ ├── topo1_node1_to_node2 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ │ ├── topo1_node1_to_node3 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ │ ├── topo1_node2_to_node1 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ │ ├── topo1_node2_to_node3 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ │ ├── topo1_node3_to_node1 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ │ └── topo1_node3_to_node2 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ ├── cycle_star_test │ │ │ │ ├── topo1_node1_to_node2 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ │ ├── topo1_node1_to_node3 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ │ ├── topo1_node2_to_node1 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ │ └── topo1_node3_to_node1 │ │ │ │ │ ├── dst_prepare.sql │ │ │ │ │ ├── src_prepare.sql │ │ │ │ │ ├── src_test.sql │ │ │ │ │ └── task_config.ini │ │ │ ├── filter_db_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── heartbeat_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ └── task_config.ini │ │ │ ├── multi_dbs_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── multi_exec_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── to_cluster_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── cross_version │ │ │ ├── 2_8_to_7_0 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── 4_0_to_7_0 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── 5_0_to_7_0 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── 6_0_to_7_0 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── 6_2_to_7_0 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── rebloom │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── redisearch │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ └── rejson │ │ │ └── cmds_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── cdc_2_8_tests.rs │ ├── cdc_4_0_tests.rs │ ├── cdc_5_0_tests.rs │ ├── cdc_6_0_tests.rs │ ├── cdc_6_2_tests.rs │ ├── cdc_7_0_tests.rs │ ├── cdc_cross_version_tests.rs │ ├── cdc_rebloom_tests.rs │ ├── cdc_redisearch_tests.rs │ ├── cdc_rejson_tests.rs │ ├── mod.rs │ ├── precheck │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ └── task_config.ini │ ├── precheck_tests.rs │ ├── snapshot │ │ ├── 2_8 │ │ │ ├── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── hash_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── length_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── list_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── set_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── string_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── zset_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── 4_0 │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── 5_0 │ │ │ ├── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── hash_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── length_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── list_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── set_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── stream_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── string_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── zset_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── 6_0 │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── 6_2 │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── 7_0 │ │ │ ├── basic_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── filter_db_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── hash_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── length_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── list_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── multi_dbs_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── rewrite_stream_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── rewrite_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── set_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── statistic_big_key_rdb_test │ │ │ │ ├── cmds_for_rdb.sql │ │ │ │ ├── dump.rdb │ │ │ │ ├── expect_statistic_log │ │ │ │ │ └── statistic.log │ │ │ │ └── task_config.ini │ │ │ ├── statistic_big_key_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── expect_statistic_log │ │ │ │ │ └── statistic.log │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── statistic_hot_key_test │ │ │ │ ├── expect_statistic_log │ │ │ │ │ └── statistic.log │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── stream_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── string_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── to_cluster_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── zset_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── cross_version │ │ │ ├── 2_8_to_7_0 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── 4_0_to_7_0 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── 5_0_to_7_0 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ ├── 6_0_to_7_0 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ │ └── 6_2_to_7_0 │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── rebloom │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ ├── redisearch │ │ │ └── cmds_test │ │ │ │ ├── dst_prepare.sql │ │ │ │ ├── src_prepare.sql │ │ │ │ ├── src_test.sql │ │ │ │ └── task_config.ini │ │ └── rejson │ │ │ └── cmds_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── snapshot_2_8_tests.rs │ ├── snapshot_4_0_tests.rs │ ├── snapshot_5_0_tests.rs │ ├── snapshot_6_0_tests.rs │ ├── snapshot_6_2_tests.rs │ ├── snapshot_7_0_tests.rs │ ├── snapshot_and_cdc │ │ └── 7_0 │ │ │ └── basic_test │ │ │ ├── dst_prepare.sql │ │ │ ├── src_prepare.sql │ │ │ ├── src_test.sql │ │ │ └── task_config.ini │ ├── snapshot_and_cdc_7_0_tests.rs │ ├── snapshot_cross_version_tests.rs │ ├── snapshot_rebloom_tests.rs │ ├── snapshot_redisearch_tests.rs │ └── snapshot_rejson_tests.rs │ ├── test_config_util.rs │ └── test_runner │ ├── base_test_runner.rs │ ├── check_util.rs │ ├── mod.rs │ ├── mongo_check_test_runner.rs │ ├── mongo_test_runner.rs │ ├── precheck_test_runner.rs │ ├── rdb_check_test_runner.rs │ ├── rdb_clickhouse_test_runner.rs │ ├── rdb_cycle_test_runner.rs │ ├── rdb_kafka_rdb_test_runner.rs │ ├── rdb_lua_test_runner.rs │ ├── rdb_redis_test_runner.rs │ ├── rdb_sql_test_runner.rs │ ├── rdb_starrocks_test_runner.rs │ ├── rdb_struct_test_runner.rs │ ├── rdb_test_runner.rs │ ├── rdb_util.rs │ ├── redis_cluster_connection.rs │ ├── redis_cycle_test_runner.rs │ ├── redis_statistic_runner.rs │ ├── redis_test_runner.rs │ ├── redis_test_util.rs │ └── test_base.rs └── log4rs.yaml /.dockerignore: -------------------------------------------------------------------------------- 1 | # More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file 2 | # Ignore build and test binaries. 3 | .git/ 4 | target/ 5 | # Cargo.lock -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## File system 2 | .DS_Store 3 | 4 | ## Editor 5 | *.swp 6 | *.swo 7 | Session.vim 8 | .cproject 9 | .idea 10 | *.iml 11 | .vscode 12 | .project 13 | .favorites.json 14 | .settings/ 15 | 16 | ## Configuration 17 | Cargo.lock 18 | 19 | ## Build 20 | /target 21 | /images/**/ape-dts 22 | /images/**/dt-struct 23 | /images/**/dt-precheck 24 | /logs 25 | .cargo-ok 26 | 27 | ## Integration Test 28 | /tmp 29 | 30 | ## local env settings 31 | /**/.env.local 32 | 33 | /**/pkg/* 34 | 35 | /release -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/.gitmodules -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | All notable changes to this project will be documented in this file. 3 | 4 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), 5 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 6 | 7 | ## [Unreleased] 8 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | This project adheres to the Rust Code of Conduct, which can be found [here](https://www.rust-lang.org/conduct.html). 4 | -------------------------------------------------------------------------------- /Dockerfile.github.workflow: -------------------------------------------------------------------------------- 1 | FROM gcr.io/distroless/cc:debug 2 | 3 | ARG MODULE_NAME="dt-main" 4 | ARG TARGETOS 5 | ARG TARGETARCH 6 | 7 | COPY --chmod=777 ${TARGETARCH}-unknown-${TARGETOS}-gnu-${MODULE_NAME} /ape-dts 8 | COPY log4rs.yaml /log4rs.yaml 9 | 10 | ENTRYPOINT [ "/ape-dts" ] 11 | -------------------------------------------------------------------------------- /Dockerfile.mac.cross: -------------------------------------------------------------------------------- 1 | FROM alpine:3.18 as dist 2 | 3 | ARG MODULE_NAME="dt-main" 4 | ARG TARGETOS 5 | ARG TARGETARCH 6 | 7 | COPY log4rs.yaml /log4rs.yaml 8 | COPY "tmp/${TARGETARCH}-${TARGETOS}/${MODULE_NAME}" /ape-dts 9 | 10 | ENTRYPOINT [ "/ape-dts" ] -------------------------------------------------------------------------------- /docs/en/consumer/kafka_consumer.md: -------------------------------------------------------------------------------- 1 | # Send data to Kafka for consumers 2 | 3 | The Snapshot/CDC data will be sent to Kafka in Avro. 4 | 5 | # Send data to Kafka 6 | 7 | Refer to MySQL -> Kafka [tutorial](/docs/en/tutorial/mysql_to_kafka_consumer.md), [templates](/docs/templates/rdb_to_kafka.md) and Postgres -> Kafka [tutorial](/docs/en/tutorial/pg_to_kafka_consumer.md), [templates](/docs/templates/rdb_to_kafka.md) 8 | 9 | # Consumer 10 | 11 | [python / golang consumer demo](https://github.com/apecloud/ape_dts_consumer_demo) -------------------------------------------------------------------------------- /docs/img/structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/docs/img/structure.png -------------------------------------------------------------------------------- /docs/img/topo_net.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/docs/img/topo_net.png -------------------------------------------------------------------------------- /docs/img/topo_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/docs/img/topo_star.png -------------------------------------------------------------------------------- /docs/img/topo_two_way.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/docs/img/topo_two_way.png -------------------------------------------------------------------------------- /docs/zh/consumer/kafka_consumer.md: -------------------------------------------------------------------------------- 1 | # 将数据发送到 Kafka 并由用户自主消费 2 | 3 | 以 Avro 格式发送 全量/增量 数据到 Kafka,由用户自主消费。 4 | 5 | # 发送数据到 Kafka 6 | 7 | 参考 MySQL -> Kafka [教程](/docs/en/tutorial/mysql_to_kafka_consumer.md),[模版](/docs/templates/rdb_to_kafka.md) and Postgres -> Kafka [教程](/docs/en/tutorial/pg_to_kafka_consumer.md),[模版](/docs/templates/rdb_to_kafka.md) 8 | 9 | # 自主消费数据 10 | 11 | [python / golang consumer demo](https://github.com/apecloud/ape_dts_consumer_demo) -------------------------------------------------------------------------------- /dt-common/src/config/data_marker_config.rs: -------------------------------------------------------------------------------- 1 | #[derive(Clone, Default)] 2 | pub struct DataMarkerConfig { 3 | pub topo_name: String, 4 | pub topo_nodes: String, 5 | pub src_node: String, 6 | pub dst_node: String, 7 | pub do_nodes: String, 8 | pub ignore_nodes: String, 9 | pub marker: String, 10 | } 11 | -------------------------------------------------------------------------------- /dt-common/src/config/filter_config.rs: -------------------------------------------------------------------------------- 1 | #[derive(Clone, Default)] 2 | pub struct FilterConfig { 3 | pub do_schemas: String, 4 | pub ignore_schemas: String, 5 | pub do_tbs: String, 6 | pub ignore_tbs: String, 7 | pub ignore_cols: String, 8 | pub do_events: String, 9 | pub do_structures: String, 10 | pub do_ddls: String, 11 | pub ignore_cmds: String, 12 | pub where_conditions: String, 13 | } 14 | -------------------------------------------------------------------------------- /dt-common/src/config/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod config_enums; 2 | pub mod config_token_parser; 3 | pub mod data_marker_config; 4 | pub mod extractor_config; 5 | pub mod filter_config; 6 | pub mod ini_loader; 7 | pub mod meta_center_config; 8 | pub mod monitor_config; 9 | pub mod parallelizer_config; 10 | pub mod pipeline_config; 11 | pub mod processor_config; 12 | pub mod resumer_config; 13 | pub mod router_config; 14 | pub mod runtime_config; 15 | pub mod s3_config; 16 | pub mod sinker_config; 17 | pub mod task_config; 18 | -------------------------------------------------------------------------------- /dt-common/src/config/monitor_config.rs: -------------------------------------------------------------------------------- 1 | #[derive(Clone)] 2 | pub struct PipelineConfig { 3 | pub time_window_secs: usize, 4 | pub time_window_max_count: usize, 5 | } 6 | -------------------------------------------------------------------------------- /dt-common/src/config/parallelizer_config.rs: -------------------------------------------------------------------------------- 1 | use super::config_enums::ParallelType; 2 | 3 | #[derive(Clone)] 4 | pub struct ParallelizerConfig { 5 | pub parallel_type: ParallelType, 6 | pub parallel_size: usize, 7 | } 8 | -------------------------------------------------------------------------------- /dt-common/src/config/processor_config.rs: -------------------------------------------------------------------------------- 1 | #[derive(Clone)] 2 | pub struct ProcessorConfig { 3 | pub lua_code_file: String, 4 | pub lua_code: String, 5 | } 6 | -------------------------------------------------------------------------------- /dt-common/src/config/resumer_config.rs: -------------------------------------------------------------------------------- 1 | #[derive(Clone, Default)] 2 | pub struct ResumerConfig { 3 | pub resume_config_file: String, 4 | pub resume_from_log: bool, 5 | pub resume_log_dir: String, 6 | } 7 | -------------------------------------------------------------------------------- /dt-common/src/config/router_config.rs: -------------------------------------------------------------------------------- 1 | #[derive(Clone)] 2 | pub enum RouterConfig { 3 | Rdb { 4 | schema_map: String, 5 | tb_map: String, 6 | col_map: String, 7 | topic_map: String, 8 | }, 9 | } 10 | -------------------------------------------------------------------------------- /dt-common/src/config/runtime_config.rs: -------------------------------------------------------------------------------- 1 | #[derive(Clone)] 2 | pub struct RuntimeConfig { 3 | pub log_level: String, 4 | pub log_dir: String, 5 | pub log4rs_file: String, 6 | pub tb_parallel_size: usize, 7 | } 8 | -------------------------------------------------------------------------------- /dt-common/src/config/s3_config.rs: -------------------------------------------------------------------------------- 1 | #[derive(Clone, Debug)] 2 | pub struct S3Config { 3 | pub access_key: String, 4 | pub secret_key: String, 5 | pub region: String, 6 | pub endpoint: String, 7 | pub bucket: String, 8 | pub root_dir: String, 9 | pub root_url: String, 10 | } 11 | -------------------------------------------------------------------------------- /dt-common/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod config; 2 | pub mod error; 3 | pub mod logger; 4 | pub mod meta; 5 | pub mod monitor; 6 | pub mod rdb_filter; 7 | pub mod time_filter; 8 | pub mod utils; 9 | -------------------------------------------------------------------------------- /dt-common/src/meta/adaptor/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mysql_col_value_convertor; 2 | pub mod pg_col_value_convertor; 3 | pub mod sqlx_ext; 4 | -------------------------------------------------------------------------------- /dt-common/src/meta/avro/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod avro_converter; 2 | pub mod avro_converter_schema; 3 | -------------------------------------------------------------------------------- /dt-common/src/meta/ddl_meta/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod ddl_data; 2 | pub mod ddl_parser; 3 | pub mod ddl_statement; 4 | pub mod ddl_type; 5 | mod keywords; 6 | -------------------------------------------------------------------------------- /dt-common/src/meta/foreign_key.rs: -------------------------------------------------------------------------------- 1 | use serde::Serialize; 2 | 3 | #[derive(Debug, Clone, Serialize)] 4 | pub struct ForeignKey { 5 | pub schema: String, 6 | pub tb: String, 7 | pub col: String, 8 | pub ref_schema: String, 9 | pub ref_tb: String, 10 | pub ref_col: String, 11 | } 12 | -------------------------------------------------------------------------------- /dt-common/src/meta/foxlake/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod s3_file_meta; 2 | -------------------------------------------------------------------------------- /dt-common/src/meta/kafka/kafka_message.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug, Clone)] 2 | pub struct KafkaMessage { 3 | pub topic: String, 4 | pub partition: i32, 5 | pub offset: i64, 6 | pub key: Vec, 7 | pub payload: Vec, 8 | pub position: String, 9 | } 10 | -------------------------------------------------------------------------------- /dt-common/src/meta/kafka/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod kafka_message; 2 | -------------------------------------------------------------------------------- /dt-common/src/meta/mongo/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mongo_cdc_source; 2 | pub mod mongo_constant; 3 | pub mod mongo_key; 4 | -------------------------------------------------------------------------------- /dt-common/src/meta/mongo/mongo_constant.rs: -------------------------------------------------------------------------------- 1 | pub struct MongoConstants {} 2 | 3 | impl MongoConstants { 4 | pub const ID: &'static str = "_id"; 5 | pub const DOC: &'static str = "doc"; 6 | pub const DIFF_DOC: &'static str = "diff_doc"; 7 | pub const SET: &'static str = "$set"; 8 | pub const UNSET: &'static str = "$unset"; 9 | } 10 | -------------------------------------------------------------------------------- /dt-common/src/meta/mysql/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mysql_col_type; 2 | pub mod mysql_dbengine_meta_center; 3 | mod mysql_meta_fetcher; 4 | pub mod mysql_meta_manager; 5 | pub mod mysql_tb_meta; 6 | -------------------------------------------------------------------------------- /dt-common/src/meta/pg/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod pg_col_type; 2 | pub mod pg_meta_manager; 3 | pub mod pg_tb_meta; 4 | pub mod pg_value_type; 5 | pub mod type_registry; 6 | -------------------------------------------------------------------------------- /dt-common/src/meta/redis/cluster_node.rs: -------------------------------------------------------------------------------- 1 | use std::collections::HashMap; 2 | 3 | #[derive(Clone)] 4 | pub struct ClusterNode { 5 | pub is_master: bool, 6 | pub id: String, 7 | // if current node is slave, master_id refers to the master it follows 8 | pub master_id: String, 9 | pub host: String, 10 | pub port: String, 11 | pub address: String, 12 | pub slots: Vec, 13 | pub slot_hash_tag_map: HashMap, 14 | } 15 | -------------------------------------------------------------------------------- /dt-common/src/meta/redis/command/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod cmd_constants; 2 | pub mod cmd_encoder; 3 | pub mod cmd_meta; 4 | pub mod key_parser; 5 | -------------------------------------------------------------------------------- /dt-common/src/meta/redis/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod cluster_node; 2 | pub mod command; 3 | pub mod redis_entry; 4 | pub mod redis_object; 5 | pub mod redis_statistic_type; 6 | pub mod redis_write_method; 7 | -------------------------------------------------------------------------------- /dt-common/src/meta/redis/redis_statistic_type.rs: -------------------------------------------------------------------------------- 1 | use strum::EnumString; 2 | 3 | #[derive(EnumString, Clone)] 4 | pub enum RedisStatisticType { 5 | #[strum(serialize = "big_key")] 6 | BigKey, 7 | #[strum(serialize = "hot_key")] 8 | HotKey, 9 | } 10 | -------------------------------------------------------------------------------- /dt-common/src/meta/struct_meta/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod statement; 2 | pub mod struct_data; 3 | pub mod structure; 4 | -------------------------------------------------------------------------------- /dt-common/src/meta/struct_meta/statement/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mysql_create_database_statement; 2 | pub mod mysql_create_table_statement; 3 | pub mod pg_create_schema_statement; 4 | pub mod pg_create_table_statement; 5 | pub mod struct_statement; 6 | -------------------------------------------------------------------------------- /dt-common/src/meta/struct_meta/structure/comment.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug, Clone)] 2 | pub struct Comment { 3 | pub comment_type: CommentType, 4 | pub database_name: String, 5 | pub schema_name: String, 6 | pub table_name: String, 7 | pub column_name: String, 8 | pub comment: String, 9 | } 10 | 11 | #[derive(Clone, Debug)] 12 | pub enum CommentType { 13 | Table, 14 | Column, 15 | } 16 | -------------------------------------------------------------------------------- /dt-common/src/meta/struct_meta/structure/database.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug, Clone, Default)] 2 | pub struct Database { 3 | pub name: String, 4 | pub default_character_set_name: String, 5 | pub default_collation_name: String, 6 | } 7 | -------------------------------------------------------------------------------- /dt-common/src/meta/struct_meta/structure/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod column; 2 | pub mod comment; 3 | pub mod constraint; 4 | pub mod database; 5 | pub mod index; 6 | pub mod schema; 7 | pub mod sequence; 8 | pub mod sequence_owner; 9 | pub mod structure_type; 10 | pub mod table; 11 | -------------------------------------------------------------------------------- /dt-common/src/meta/struct_meta/structure/schema.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug, Clone)] 2 | pub struct Schema { 3 | pub name: String, 4 | } 5 | -------------------------------------------------------------------------------- /dt-common/src/meta/struct_meta/structure/sequence.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug, Clone)] 2 | pub struct Sequence { 3 | pub sequence_name: String, 4 | pub database_name: String, 5 | pub schema_name: String, 6 | pub data_type: String, 7 | pub start_value: String, 8 | pub increment: String, 9 | pub minimum_value: String, 10 | pub maximum_value: String, 11 | pub cycle_option: String, 12 | } 13 | -------------------------------------------------------------------------------- /dt-common/src/meta/struct_meta/structure/sequence_owner.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug, Clone)] 2 | pub struct SequenceOwner { 3 | pub sequence_name: String, 4 | pub database_name: String, 5 | pub schema_name: String, 6 | pub table_name: String, 7 | pub column_name: String, 8 | } 9 | -------------------------------------------------------------------------------- /dt-common/src/meta/struct_meta/structure/table.rs: -------------------------------------------------------------------------------- 1 | use super::column::Column; 2 | 3 | #[derive(Debug, Clone, Default)] 4 | pub struct Table { 5 | pub database_name: String, 6 | pub schema_name: String, 7 | pub table_name: String, 8 | pub engine_name: String, // innodb 9 | pub table_comment: String, 10 | pub character_set: String, 11 | pub table_collation: String, 12 | pub columns: Vec, 13 | } 14 | -------------------------------------------------------------------------------- /dt-common/src/meta/syncer.rs: -------------------------------------------------------------------------------- 1 | use crate::meta::position::Position; 2 | 3 | #[derive(Default)] 4 | pub struct Syncer { 5 | pub received_position: Position, 6 | pub committed_position: Position, 7 | } 8 | -------------------------------------------------------------------------------- /dt-common/src/meta/time/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod dt_utc_time; 2 | -------------------------------------------------------------------------------- /dt-common/src/monitor/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod counter; 2 | pub mod counter_type; 3 | pub mod group_monitor; 4 | #[allow(clippy::module_inception)] 5 | pub mod monitor; 6 | pub mod time_window_counter; 7 | 8 | pub trait FlushableMonitor { 9 | fn flush(&mut self); 10 | } 11 | -------------------------------------------------------------------------------- /dt-common/src/utils/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod file_util; 2 | pub mod redis_util; 3 | pub mod sql_util; 4 | pub mod time_util; 5 | -------------------------------------------------------------------------------- /dt-connector/src/check_log/log_type.rs: -------------------------------------------------------------------------------- 1 | use serde::{Deserialize, Serialize}; 2 | use strum::{EnumString, IntoStaticStr}; 3 | 4 | #[derive(EnumString, IntoStaticStr, PartialEq, Serialize, Deserialize, Clone)] 5 | pub enum LogType { 6 | #[strum(serialize = "miss")] 7 | Miss, 8 | #[strum(serialize = "diff")] 9 | Diff, 10 | #[strum(serialize = "unknown")] 11 | Unknown, 12 | } 13 | -------------------------------------------------------------------------------- /dt-connector/src/check_log/mod.rs: -------------------------------------------------------------------------------- 1 | #[allow(clippy::module_inception)] 2 | pub mod check_log; 3 | pub mod log_reader; 4 | pub mod log_type; 5 | -------------------------------------------------------------------------------- /dt-connector/src/conn_util.rs: -------------------------------------------------------------------------------- 1 | #[macro_export(local_inner_macros)] 2 | macro_rules! close_conn_pool { 3 | ($self:ident) => { 4 | if $self.conn_pool.is_closed() { 5 | Ok(()) 6 | } else { 7 | Ok($self.conn_pool.close().await) 8 | } 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /dt-connector/src/extractor/foxlake/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod foxlake_s3_extractor; 2 | -------------------------------------------------------------------------------- /dt-connector/src/extractor/kafka/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod kafka_extractor; 2 | -------------------------------------------------------------------------------- /dt-connector/src/extractor/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod base_check_extractor; 2 | pub mod base_extractor; 3 | pub mod extractor_monitor; 4 | pub mod foxlake; 5 | pub mod kafka; 6 | pub mod mongo; 7 | pub mod mysql; 8 | pub mod pg; 9 | pub mod redis; 10 | pub mod resumer; 11 | -------------------------------------------------------------------------------- /dt-connector/src/extractor/mongo/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mongo_cdc_extractor; 2 | pub mod mongo_check_extractor; 3 | pub mod mongo_snapshot_extractor; 4 | -------------------------------------------------------------------------------- /dt-connector/src/extractor/mysql/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod binlog_util; 2 | pub mod mysql_cdc_extractor; 3 | pub mod mysql_check_extractor; 4 | pub mod mysql_snapshot_extractor; 5 | pub mod mysql_struct_extractor; 6 | -------------------------------------------------------------------------------- /dt-connector/src/extractor/pg/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod pg_cdc_client; 2 | pub mod pg_cdc_extractor; 3 | pub mod pg_check_extractor; 4 | pub mod pg_snapshot_extractor; 5 | pub mod pg_struct_extractor; 6 | -------------------------------------------------------------------------------- /dt-connector/src/extractor/redis/rdb/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod entry_parser; 2 | pub mod rdb_parser; 3 | pub mod reader; 4 | -------------------------------------------------------------------------------- /dt-connector/src/extractor/redis/rdb/reader/byte.rs: -------------------------------------------------------------------------------- 1 | use crate::extractor::redis::StreamReader; 2 | 3 | use super::rdb_reader::RdbReader; 4 | 5 | impl RdbReader<'_> { 6 | pub fn read_byte(&mut self) -> anyhow::Result { 7 | let buf = self.read_bytes(1).unwrap(); 8 | Ok(buf[0]) 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /dt-connector/src/extractor/redis/rdb/reader/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod byte; 2 | pub mod float; 3 | pub mod int; 4 | pub mod length; 5 | pub mod list_pack; 6 | pub mod rdb_reader; 7 | pub mod string; 8 | pub mod zip_list; 9 | -------------------------------------------------------------------------------- /dt-connector/src/extractor/resumer/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod cdc_resumer; 2 | pub mod snapshot_resumer; 3 | 4 | const CURRENT_POSITION_LOG_FLAG: &str = "| current_position |"; 5 | const TAIL_POSITION_COUNT: usize = 200; 6 | -------------------------------------------------------------------------------- /dt-connector/src/meta_fetcher/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mysql; 2 | 3 | pub mod pg; 4 | -------------------------------------------------------------------------------- /dt-connector/src/meta_fetcher/mysql/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mysql_struct_check_fetcher; 2 | pub mod mysql_struct_fetcher; 3 | -------------------------------------------------------------------------------- /dt-connector/src/meta_fetcher/pg/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod pg_struct_check_fetcher; 2 | pub mod pg_struct_fetcher; 3 | -------------------------------------------------------------------------------- /dt-connector/src/sinker/clickhouse/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod clickhouse_sinker; 2 | pub mod clickhouse_struct_sinker; 3 | -------------------------------------------------------------------------------- /dt-connector/src/sinker/dummy_sinker.rs: -------------------------------------------------------------------------------- 1 | use async_trait::async_trait; 2 | 3 | use crate::Sinker; 4 | 5 | pub struct DummySinker {} 6 | 7 | #[async_trait] 8 | impl Sinker for DummySinker {} 9 | -------------------------------------------------------------------------------- /dt-connector/src/sinker/foxlake/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod decimal_util; 2 | pub mod foxlake_merger; 3 | pub mod foxlake_pusher; 4 | pub mod foxlake_sinker; 5 | pub mod foxlake_struct_sinker; 6 | pub mod orc_sequencer; 7 | pub mod unicode_util; 8 | -------------------------------------------------------------------------------- /dt-connector/src/sinker/kafka/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod kafka_sinker; 2 | pub mod rdkafka_sinker; 3 | -------------------------------------------------------------------------------- /dt-connector/src/sinker/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod base_checker; 2 | pub mod base_sinker; 3 | pub mod base_struct_sinker; 4 | pub mod clickhouse; 5 | pub mod dummy_sinker; 6 | pub mod foxlake; 7 | pub mod kafka; 8 | pub mod mongo; 9 | pub mod mysql; 10 | pub mod pg; 11 | pub mod redis; 12 | pub mod sql_sinker; 13 | pub mod starrocks; 14 | -------------------------------------------------------------------------------- /dt-connector/src/sinker/mongo/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mongo_checker; 2 | pub mod mongo_sinker; 3 | -------------------------------------------------------------------------------- /dt-connector/src/sinker/mysql/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mysql_checker; 2 | pub mod mysql_sinker; 3 | pub mod mysql_struct_sinker; 4 | -------------------------------------------------------------------------------- /dt-connector/src/sinker/pg/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod pg_checker; 2 | pub mod pg_sinker; 3 | pub mod pg_struct_sinker; 4 | -------------------------------------------------------------------------------- /dt-connector/src/sinker/redis/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod entry_rewriter; 2 | pub mod redis_sinker; 3 | pub mod redis_statistic_sinker; 4 | -------------------------------------------------------------------------------- /dt-connector/src/sinker/starrocks/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod starrocks_sinker; 2 | pub mod starrocks_struct_sinker; 3 | -------------------------------------------------------------------------------- /dt-main/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "dt-main" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [lints] 7 | workspace = true 8 | 9 | [dependencies] 10 | dt-task = {path = "../dt-task", version = "0.1.0"} 11 | dt-precheck = {path = "../dt-precheck", version = "0.1.0"} 12 | 13 | tokio = { workspace = true } -------------------------------------------------------------------------------- /dt-pipeline/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod base_pipeline; 2 | pub mod http_server_pipeline; 3 | pub mod lua_processor; 4 | 5 | use async_trait::async_trait; 6 | 7 | #[async_trait] 8 | pub trait Pipeline { 9 | async fn start(&mut self) -> anyhow::Result<()> { 10 | Ok(()) 11 | } 12 | 13 | async fn stop(&mut self) -> anyhow::Result<()> { 14 | Ok(()) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /dt-precheck/src/builder/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod prechecker_builder; 2 | -------------------------------------------------------------------------------- /dt-precheck/src/config/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod precheck_config; 2 | pub mod task_config; 3 | -------------------------------------------------------------------------------- /dt-precheck/src/config/precheck_config.rs: -------------------------------------------------------------------------------- 1 | #[derive(Clone)] 2 | pub struct PrecheckConfig { 3 | pub do_struct_init: bool, 4 | pub do_cdc: bool, 5 | } 6 | -------------------------------------------------------------------------------- /dt-precheck/src/fetcher/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mongo; 2 | pub mod mysql; 3 | pub mod postgresql; 4 | pub mod redis; 5 | pub mod traits; 6 | -------------------------------------------------------------------------------- /dt-precheck/src/fetcher/mongo/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mongo_fetcher; 2 | -------------------------------------------------------------------------------- /dt-precheck/src/fetcher/mysql/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mysql_fetcher; 2 | -------------------------------------------------------------------------------- /dt-precheck/src/fetcher/postgresql/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod pg_fetcher; 2 | -------------------------------------------------------------------------------- /dt-precheck/src/fetcher/redis/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod redis_fetcher; 2 | -------------------------------------------------------------------------------- /dt-precheck/src/meta/check_item.rs: -------------------------------------------------------------------------------- 1 | use strum::Display; 2 | 3 | #[derive(Display)] 4 | pub enum CheckItem { 5 | CheckDatabaseConnection, 6 | CheckDatabaseVersionSupported, 7 | CheckAccountPermission, 8 | CheckIfDatabaseSupportCdc, 9 | CheckIfStructExisted, 10 | CheckIfTableStructSupported, 11 | } 12 | -------------------------------------------------------------------------------- /dt-precheck/src/meta/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod check_item; 2 | pub mod check_result; 3 | pub mod database_mode; 4 | pub mod db_table_model; 5 | pub mod pg_enums; 6 | -------------------------------------------------------------------------------- /dt-precheck/src/prechecker/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod mongo_prechecker; 2 | pub mod mysql_prechecker; 3 | pub mod pg_prechecker; 4 | pub mod redis_prechecker; 5 | pub mod traits; 6 | -------------------------------------------------------------------------------- /dt-task/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![allow(clippy::too_many_arguments)] 2 | 3 | pub mod extractor_util; 4 | pub mod parallelizer_util; 5 | pub mod sinker_util; 6 | pub mod task_runner; 7 | pub mod task_util; 8 | -------------------------------------------------------------------------------- /dt-tests/k8s/redis/2-8/service-redis-2-8-dst.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-2-8-dst 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "2-8" 10 | use: dst 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/2-8/service-redis-2-8-src.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-2-8-src 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "2-8" 10 | use: src 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/4-0/service-redis-4-0-dst.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-4-0-dst 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "4-0" 10 | use: dst 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/4-0/service-redis-4-0-src.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-4-0-src 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "4-0" 10 | use: src 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/5-0/service-redis-5-0-dst.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-5-0-dst 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "5-0" 10 | use: dst 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/5-0/service-redis-5-0-src.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-5-0-src 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "5-0" 10 | use: src 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/6-0/service-redis-6-0-dst.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-6-0-dst 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "6-0" 10 | use: dst 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/6-0/service-redis-6-0-src.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-6-0-src 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "6-0" 10 | use: src 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/6-2/service-redis-6-2-dst.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-6-2-dst 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "6-2" 10 | use: dst 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/6-2/service-redis-6-2-src.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-6-2-src 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "6-2" 10 | use: src 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/7-0/service-redis-7-0-dst.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-7-0-dst 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "7-0" 10 | use: dst 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/7-0/service-redis-7-0-src.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-7-0-src 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "7-0" 10 | use: src 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/rebloom/service-redis-rebloom-dst.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-rebloom-dst 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "rebloom" 10 | use: dst 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/rebloom/service-redis-rebloom-src.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-rebloom-src 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "rebloom" 10 | use: src 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/redisearch/service-redis-redisearch-dst.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-redisearch-dst 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "redisearch" 10 | use: dst 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/redisearch/service-redis-redisearch-src.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-redisearch-src 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "redisearch" 10 | use: src 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/rejson/pod-redis-rejson-dst.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: pod-redis-rejson-dst 5 | namespace: dts 6 | labels: 7 | app: redis 8 | version: "rejson" 9 | use: dst 10 | spec: 11 | containers: 12 | - name: pod-redis-rejson-dst 13 | image: redislabs/rejson:2.6.4 14 | ports: 15 | - containerPort: 6379 16 | protocol: TCP -------------------------------------------------------------------------------- /dt-tests/k8s/redis/rejson/pod-redis-rejson-src.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: pod-redis-rejson-src 5 | namespace: dts 6 | labels: 7 | app: redis 8 | version: "rejson" 9 | use: src 10 | spec: 11 | containers: 12 | - name: pod-redis-rejson-src 13 | image: redislabs/rejson:2.6.4 14 | ports: 15 | - containerPort: 6379 16 | protocol: TCP -------------------------------------------------------------------------------- /dt-tests/k8s/redis/rejson/service-redis-rejson-dst.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-rejson-dst 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "rejson" 10 | use: dst 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/redis/rejson/service-redis-rejson-src.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: service-redis-rejson-src 5 | namespace: dts 6 | spec: 7 | selector: 8 | app: redis 9 | version: "rejson" 10 | use: src 11 | ports: 12 | - protocol: TCP 13 | port: 6379 14 | targetPort: 6379 15 | type: LoadBalancer -------------------------------------------------------------------------------- /dt-tests/k8s/starrocks/2-5-4/pod.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: pod-starrocks-2-5-4-dst 5 | namespace: dts 6 | labels: 7 | app: starrocks 8 | version: "2.5.4" 9 | use: dst 10 | spec: 11 | containers: 12 | - name: starrocks-container 13 | image: starrocks.docker.scarf.sh/starrocks/allin1-ubuntu:2.5.4 14 | ports: 15 | - containerPort: 9030 16 | - containerPort: 8030 17 | - containerPort: 8040 18 | -------------------------------------------------------------------------------- /dt-tests/k8s/starrocks/3-1-5/pod.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: pod-starrocks-3-1-5-dst 5 | namespace: dts 6 | labels: 7 | app: starrocks 8 | version: "3.1.5" 9 | use: dst 10 | spec: 11 | containers: 12 | - name: starrocks-container 13 | image: starrocks.docker.scarf.sh/starrocks/allin1-ubuntu:3.1.5 14 | ports: 15 | - containerPort: 9030 16 | - containerPort: 8030 17 | - containerPort: 8040 18 | -------------------------------------------------------------------------------- /dt-tests/src/lib.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /dt-tests/tests/log_reader/log_reader_empty_test/dummy_dir/dummy_file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/log_reader/log_reader_empty_test/dummy_dir/dummy_file -------------------------------------------------------------------------------- /dt-tests/tests/log_reader/log_reader_multi_log_test/log.1: -------------------------------------------------------------------------------- 1 | log1.line1 2 | 3 | log1.line3 4 | -------------------------------------------------------------------------------- /dt-tests/tests/log_reader/log_reader_multi_log_test/log.2: -------------------------------------------------------------------------------- 1 | 2 | log2.line2 3 | 4 | log2.line4 5 | -------------------------------------------------------------------------------- /dt-tests/tests/log_reader/log_reader_multi_log_test/log.3: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /dt-tests/tests/log_reader/log_reader_one_log_test/log.1: -------------------------------------------------------------------------------- 1 | log1.line1 2 | 3 | log1.line3 -------------------------------------------------------------------------------- /dt-tests/tests/log_reader/mod.rs: -------------------------------------------------------------------------------- 1 | mod log_reader_tests; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/change_stream_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/change_stream_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/heartbeat_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("ape_dts_heartbeat") 6 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/idempotent_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | 15 | use test_db_1 16 | 17 | db.tb_1.insertOne({ "name": "a", "age": "1000", "_id": "1" }); 18 | db.tb_1.insertOne({ "name": "b", "age": "2000", "_id": "2" }); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/idempotent_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/idempotent_test/src_test.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.tb_1.insertOne({ "name": "a", "age": "1", "_id": "1" }); 4 | db.tb_1.insertOne({ "name": "b", "age": "2", "_id": "2" }); 5 | db.tb_1.insertOne({ "name": "c", "age": "3" }); 6 | db.tb_1.insertOne({ "name": "d", "age": "4" }); 7 | db.tb_1.insertOne({ "name": "e", "age": "5" }); 8 | 9 | db.tb_1.deleteOne({ "name": "a", "age": "1" }); 10 | db.tb_1.updateOne({ "age" : "2" }, { "$set": { "name" : "d_1" } }); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/op_log_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/op_log_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/resume_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/resume_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/route_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use dst_test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use dst_test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("dst_tb_1"); 13 | 14 | use test_db_2 15 | 16 | db.dropDatabase(); 17 | 18 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/route_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/serial_sink_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/cdc/serial_sink_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/check/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/check/basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/check/route_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use dst_test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use dst_test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("dst_tb_1"); 13 | 14 | use test_db_2 15 | 16 | db.dropDatabase(); 17 | 18 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/check/route_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_tests; 2 | mod check_tests; 3 | mod precheck_tests; 4 | mod review_tests; 5 | mod revise_tests; 6 | mod snapshot_tests; 7 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/precheck/struct_supported_basic_test/dst_clean.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/mongo_to_mongo/precheck/struct_supported_basic_test/dst_clean.sql -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/precheck/struct_supported_basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use precheck_test_1 -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/precheck/struct_supported_basic_test/src_clean.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/mongo_to_mongo/precheck/struct_supported_basic_test/src_clean.sql -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/precheck/struct_supported_basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use precheck_test_1 -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/review/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/review/basic_test/expect_check_log/miss.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Miss","schema":"test_db_1","tb":"tb_1","id_col_values":{"_id":"{\"String\":\"65733a82fb2ce9836745de4e\"}"},"diff_col_values":{}} 2 | {"log_type":"Miss","schema":"test_db_1","tb":"tb_2","id_col_values":{"_id":"{\"String\":\"65733a82fb2ce9836745de4g\"}"},"diff_col_values":{}} 3 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/review/basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/review/route_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use dst_test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use dst_test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("dst_tb_1"); 13 | 14 | use test_db_2 15 | 16 | db.dropDatabase(); 17 | 18 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/review/route_test/expect_check_log/miss.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Miss","schema":"test_db_1","tb":"tb_1","id_col_values":{"_id":"{\"String\":\"65733a82fb2ce9836745de4e\"}"},"diff_col_values":{}} 2 | {"log_type":"Miss","schema":"test_db_1","tb":"tb_2","id_col_values":{"_id":"{\"String\":\"65733a82fb2ce9836745de4g\"}"},"diff_col_values":{}} 3 | {"log_type":"Miss","schema":"test_db_2","tb":"tb_2","id_col_values":{"_id":"{\"String\":\"65733a82fb2ce9836745de4q\"}"},"diff_col_values":{}} 4 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/review/route_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/revise/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/revise/basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/revise/route_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use dst_test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use dst_test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("dst_tb_1"); 13 | 14 | use test_db_2 15 | 16 | db.dropDatabase(); 17 | 18 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/revise/route_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/snapshot/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/snapshot/basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/snapshot/resume_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/snapshot/resume_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1") 6 | db.createCollection("tb_2") -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/snapshot/route_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | use dst_test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use dst_test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("dst_tb_1"); 13 | 14 | use test_db_2 15 | 16 | db.dropDatabase(); 17 | 18 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mongo_to_mongo/snapshot/route_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | use test_db_1 2 | 3 | db.dropDatabase(); 4 | 5 | db.createCollection("tb_1"); 6 | db.createCollection("tb_2"); 7 | 8 | use test_db_2 9 | 10 | db.dropDatabase(); 11 | 12 | db.createCollection("tb_1"); 13 | db.createCollection("tb_2"); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_clickhouse/cdc/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_clickhouse/cdc/basic_test/struct_task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=struct 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | url={clickhouse_url} 8 | sink_type=struct 9 | db_type=clickhouse 10 | 11 | [filter] 12 | do_tbs=test_db_1.* 13 | 14 | [parallelizer] 15 | parallel_type=serial 16 | 17 | [pipeline] 18 | buffer_size=100 19 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_clickhouse/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_tests; 2 | mod snapshot_tests; 3 | mod struct_tests; 4 | mod table_schemas; 5 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_clickhouse/snapshot/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_clickhouse/snapshot/basic_test/struct_task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=struct 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | url={clickhouse_url} 8 | sink_type=struct 9 | db_type=clickhouse 10 | 11 | [filter] 12 | do_tbs=test_db_1.* 13 | 14 | [parallelizer] 15 | parallel_type=serial 16 | 17 | [pipeline] 18 | buffer_size=100 19 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_clickhouse/snapshot/basic_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=snapshot 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | db_type=clickhouse 8 | sink_type=write 9 | url={clickhouse_url} 10 | batch_size=2 11 | 12 | [filter] 13 | do_tbs=test_db_1.* 14 | do_events=insert 15 | 16 | [parallelizer] 17 | parallel_type=snapshot 18 | parallel_size=2 19 | 20 | [pipeline] 21 | buffer_size=4 22 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_clickhouse/snapshot/route_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_clickhouse/snapshot/route_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_2; 2 | 3 | CREATE DATABASE test_db_2; 4 | 5 | ``` 6 | CREATE TABLE test_db_2.router_test_1 ( 7 | pk INT, 8 | tinyint_col INT, 9 | PRIMARY KEY(pk) 10 | ); 11 | ``` 12 | 13 | ``` 14 | CREATE TABLE test_db_2.router_test_2 ( 15 | pk INT, 16 | tinyint_col INT, 17 | PRIMARY KEY(pk) 18 | ); 19 | ``` -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_clickhouse/snapshot/route_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_2.router_test_1 VALUES (1,1),(2,NULL); 2 | INSERT INTO test_db_2.router_test_2 VALUES (1,2),(2,NULL); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_clickhouse/struct/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists test_db_1; 2 | drop database if exists dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/cdc/2_1_0/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | DROP DATABASE IF EXISTS dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/cdc/2_1_0/json_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/cdc/2_1_0/json_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/cdc/2_1_0/json_test/struct_task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=struct 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | url={doris_sinker_url_2_1_0} 8 | sink_type=struct 9 | db_type=doris 10 | 11 | [filter] 12 | do_tbs=test_db_1.* 13 | 14 | [parallelizer] 15 | parallel_type=serial 16 | 17 | [pipeline] 18 | buffer_size=100 19 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/cdc/2_1_0/json_to_string_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | ``` 6 | CREATE TABLE IF NOT EXISTS `test_db_1`.`json_test` ( 7 | `f_0` INT NOT NULL, 8 | `f_1` STRING 9 | ) UNIQUE KEY (`f_0`) DISTRIBUTED BY HASH(`f_0`) PROPERTIES ("replication_num" = "1") 10 | ``` 11 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/cdc/2_1_0/json_to_string_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_2_1_0_tests; 2 | mod snapshot_2_1_0_tests; 3 | mod struct_2_1_0_tests; 4 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/snapshot/2_1_0/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | DROP DATABASE IF EXISTS dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/snapshot/2_1_0/json_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/snapshot/2_1_0/json_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/snapshot/2_1_0/json_test/struct_task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=struct 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | url={doris_sinker_url_2_1_0} 8 | sink_type=struct 9 | db_type=doris 10 | 11 | [filter] 12 | do_tbs=test_db_1.* 13 | 14 | [parallelizer] 15 | parallel_type=serial 16 | 17 | [pipeline] 18 | buffer_size=100 19 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/snapshot/2_1_0/json_to_string_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | -- STRING == varchar(65533) 6 | ``` 7 | CREATE TABLE IF NOT EXISTS `test_db_1`.`json_test` ( 8 | `f_0` INT NOT NULL, 9 | `f_1` STRING 10 | ) UNIQUE KEY (`f_0`) DISTRIBUTED BY HASH(`f_0`) PROPERTIES ("replication_num" = "1") 11 | ``` 12 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/snapshot/2_1_0/json_to_string_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/struct/2_1_0/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists test_db_1; 2 | drop database if exists dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_doris/struct_2_1_0_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn struct_basic_test() { 11 | TestBase::run_mysql_struct_test("mysql_to_doris/struct/2_1_0/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_foxlake/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_tests; 2 | mod snapshot_tests; 3 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_kafka_to_mysql/cdc/basic_test/src_to_kafka/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | create topic test 2 | create topic test2 3 | create topic test3 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_kafka_to_mysql/cdc_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn cdc_basic_test() { 11 | TestBase::run_rdb_kafka_rdb_cdc_test("mysql_to_kafka_to_mysql/cdc/basic_test", 5000, 10000) 12 | .await; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_kafka_to_mysql/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod cdc_tests; 2 | pub mod snapshot_tests; 3 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_kafka_to_mysql/snapshot/basic_test/src_to_kafka/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | create topic test 2 | create topic test2 3 | create topic test3 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_kafka_to_mysql/snapshot_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn snapshot_basic_test() { 11 | TestBase::run_rdb_kafka_rdb_snapshot_test( 12 | "mysql_to_kafka_to_mysql/snapshot/basic_test", 13 | 5000, 14 | 5000, 15 | ) 16 | .await; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/cycle_net_test/topo1_node1_to_node3/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/mysql_to_mysql/cdc/cycle_net_test/topo1_node1_to_node3/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/cycle_net_test/topo1_node2_to_node3/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/mysql_to_mysql/cdc/cycle_net_test/topo1_node2_to_node3/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/cycle_net_test/topo1_node3_to_node2/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/mysql_to_mysql/cdc/cycle_net_test/topo1_node3_to_node2/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/cycle_star_test/topo1_node1_to_node3/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/mysql_to_mysql/cdc/cycle_star_test/topo1_node1_to_node3/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/ddl_meta_center_test/filtered_tbs.txt: -------------------------------------------------------------------------------- 1 | test_db_1.drop_tb_1 2 | test_db_1.drop_tb_2 3 | test_db_1.rename_tb_1 4 | test_db_1.rename_tb_2 5 | test_db_1.rename_tb_3 6 | test_db_3.tb_1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/ddl_route_test/filtered_tbs.txt: -------------------------------------------------------------------------------- 1 | test_db_1.drop_tb_1 2 | test_db_1.drop_tb_2 3 | test_db_1.rename_tb_1 4 | test_db_1.rename_tb_2 5 | test_db_1.rename_tb_3 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/ddl_test/filtered_tbs.txt: -------------------------------------------------------------------------------- 1 | test_db_1.drop_tb_1 2 | test_db_1.drop_tb_2 3 | test_db_1.rename_tb_1 4 | test_db_1.rename_tb_2 5 | test_db_1.rename_tb_3 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/heartbeat_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | DROP TABLE IF EXISTS heartbeat_db.ape_dts_heartbeat; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/json_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/json_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/to_sql_test/src_to_sql/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=cdc 4 | binlog_position=0 5 | binlog_filename= 6 | server_id=2000 7 | url={mysql_extractor_url} 8 | heartbeat_interval_secs=1 9 | heartbeat_tb=heartbeat_db.ape_dts_heartbeat 10 | start_time_utc= 11 | end_time_utc= 12 | 13 | [filter] 14 | do_tbs=test_db_1.* 15 | ignore_tbs=heartbeat_db.ape_dts_heartbeat 16 | do_events=insert,update,delete 17 | 18 | [sinker] 19 | db_type=mysql 20 | sink_type=sql -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/cdc/wildchar_filter_test/filtered_tbs.txt: -------------------------------------------------------------------------------- 1 | test_db_3.one_pk_no_uk_1 2 | test_db_4.one_pk_no_uk_1 3 | 4 | test_db_1.one_pk_no_uk_2 5 | test_db_2.one_pk_no_uk_2 6 | test_db_3.one_pk_no_uk_2 7 | test_db_4.one_pk_no_uk_2 8 | test_db_5.one_pk_no_uk_2 9 | other_test_db_1.one_pk_no_uk_2 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/all_cols_pk_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.all_cols_pk (f_0 int, f_1 int,f_2 int, PRIMARY KEY (f_0, f_1, f_2)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/all_cols_pk_test/dst_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.all_cols_pk VALUES(1,1,1); 2 | INSERT INTO test_db_1.all_cols_pk VALUES(2,2,2); 3 | INSERT INTO test_db_1.all_cols_pk VALUES(3,3,4); 4 | INSERT INTO test_db_1.all_cols_pk VALUES(4,4,5); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/all_cols_pk_test/expect_check_log/diff.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/mysql_to_mysql/check/all_cols_pk_test/expect_check_log/diff.log -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/all_cols_pk_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.all_cols_pk (f_0 int, f_1 int,f_2 int, PRIMARY KEY (f_0, f_1, f_2)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/all_cols_pk_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.all_cols_pk VALUES(1,1,1); 2 | INSERT INTO test_db_1.all_cols_pk VALUES(2,2,2); 3 | INSERT INTO test_db_1.all_cols_pk VALUES(3,3,3); 4 | INSERT INTO test_db_1.all_cols_pk VALUES(4,4,4); 5 | INSERT INTO test_db_1.all_cols_pk VALUES(5,5,5); 6 | INSERT INTO test_db_1.all_cols_pk VALUES(6,6,6); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/basic_struct_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | drop database if exists struct_check_test_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/basic_struct_test/expect_check_log_5.7/extra.log: -------------------------------------------------------------------------------- 1 | key: index.struct_check_test_1.not_match_index.i5_diff_name_dst, dst_sql: CREATE INDEX `i5_diff_name_dst` ON `struct_check_test_1`.`not_match_index` (`index_col`) 2 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/basic_struct_test/expect_check_log_8.0/extra.log: -------------------------------------------------------------------------------- 1 | key: index.struct_check_test_1.not_match_index.i5_diff_name_dst, dst_sql: CREATE INDEX `i5_diff_name_dst` ON `struct_check_test_1`.`not_match_index` (`index_col`) 2 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/basic_struct_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | drop database if exists struct_check_test_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/route_test/dst_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO dst_test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 2 | INSERT INTO dst_test_db_1.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); 3 | 4 | INSERT INTO dst_test_db_2.dst_one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 5 | INSERT INTO test_db_2.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); 6 | 7 | INSERT INTO dst_test_db_3.dst_one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 8 | INSERT INTO test_db_3.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/route_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 2 | INSERT INTO test_db_1.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 3 | 4 | INSERT INTO test_db_2.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 5 | INSERT INTO test_db_2.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 6 | 7 | INSERT INTO test_db_3.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 8 | INSERT INTO test_db_3.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/sample_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | DROP DATABASE IF EXISTS test_db_2; 3 | 4 | CREATE DATABASE test_db_1; 5 | CREATE DATABASE test_db_2; 6 | 7 | CREATE TABLE test_db_1.one_pk_no_uk_1 ( f_0 tinyint, f_1 smallint DEFAULT NULL, PRIMARY KEY (f_0) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 8 | CREATE TABLE test_db_2.one_pk_no_uk_1 ( f_0 tinyint, f_1 smallint DEFAULT NULL, PRIMARY KEY (f_0) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 9 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/sample_test/dst_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.one_pk_no_uk_1 VALUES(3, 4),(8,9); 2 | INSERT INTO test_db_2.one_pk_no_uk_1 VALUES(3, 4),(8,9); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/sample_test/expect_check_log/diff.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Diff","schema":"test_db_1","tb":"one_pk_no_uk_1","id_col_values":{"f_0":"3"},"diff_col_values":{"f_1":{"src":"3","dst":"4"}}} 2 | {"log_type":"Diff","schema":"test_db_2","tb":"one_pk_no_uk_1","id_col_values":{"f_0":"3"},"diff_col_values":{"f_1":{"src":"3","dst":"4"}}} 3 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/sample_test/expect_check_log/miss.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Miss","schema":"test_db_1","tb":"one_pk_no_uk_1","id_col_values":{"f_0":"6"},"diff_col_values":{}} 2 | {"log_type":"Miss","schema":"test_db_2","tb":"one_pk_no_uk_1","id_col_values":{"f_0":"6"},"diff_col_values":{}} -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/sample_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | DROP DATABASE IF EXISTS test_db_2; 3 | 4 | CREATE DATABASE test_db_1; 5 | CREATE DATABASE test_db_2; 6 | 7 | CREATE TABLE test_db_1.one_pk_no_uk_1 ( f_0 tinyint, f_1 smallint DEFAULT NULL, PRIMARY KEY (f_0) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 8 | CREATE TABLE test_db_2.one_pk_no_uk_1 ( f_0 tinyint, f_1 smallint DEFAULT NULL, PRIMARY KEY (f_0) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 9 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/sample_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4),(5, 5),(6, 6),(7, 7),(8, 8); 2 | INSERT INTO test_db_2.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4),(5, 5),(6, 6),(7, 7),(8, 8); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/set_check_log_dir_test/expect_check_log/diff.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Diff","schema":"test_db_1","tb":"one_pk_no_uk","id_col_values":{"f_0":"4"},"diff_col_values":{"f_1":{"src":"2","dst":"1"}}} 2 | {"log_type":"Diff","schema":"test_db_1","tb":"one_pk_no_uk","id_col_values":{"f_0":"5"},"diff_col_values":{"f_1":{"src":"20","dst":"1"}}} 3 | {"log_type":"Diff","schema":"test_db_1","tb":"one_pk_no_uk","id_col_values":{"f_0":"6"},"diff_col_values":{"f_1":{"src":null,"dst":"1"}}} 4 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/check/set_check_log_dir_test/expect_check_log/miss.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Miss","schema":"test_db_1","tb":"one_pk_no_uk","id_col_values":{"f_0":"7"},"diff_col_values":{}} 2 | {"log_type":"Miss","schema":"test_db_1","tb":"one_pk_no_uk","id_col_values":{"f_0":"8"},"diff_col_values":{}} 3 | {"log_type":"Miss","schema":"test_db_1","tb":"one_pk_no_uk","id_col_values":{"f_0":"9"},"diff_col_values":{}} -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_tests; 2 | mod check_tests; 3 | mod precheck_tests; 4 | mod review_tests; 5 | mod revise_tests; 6 | mod snapshot_tests; 7 | mod struct_tests; 8 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/db_not_exists_non_struct_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_1; 2 | 3 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/db_not_exists_non_struct_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_1; 2 | 3 | 4 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/db_not_exists_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_2; 2 | 3 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/db_not_exists_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_2; 2 | 3 | 4 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_existed_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_3; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_existed_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_3; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_3; 4 | 5 | CREATE TABLE precheck_it_mysql2mysql_3.table_test(id integer, text varchar(10),primary key (id)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_existed_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_3; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_existed_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_3; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_3; 4 | 5 | CREATE TABLE precheck_it_mysql2mysql_3.table_test(id integer, text varchar(10),primary key (id)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_basic_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_4; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_4; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_4; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_basic_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_4; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_4; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_4; 4 | 5 | CREATE TABLE precheck_it_mysql2mysql_4.table_test_1(id integer, text varchar(10),primary key (id)); 6 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_fk_test1/dst_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_fk_test1/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_1; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_5_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_fk_test1/src_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_fk_test1/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_1; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_5_1; 4 | 5 | CREATE TABLE precheck_it_mysql2mysql_5_1.table_test_1(id integer, text varchar(10),primary key (id)); 6 | CREATE TABLE precheck_it_mysql2mysql_5_1.table_test_3(id integer, text varchar(10), f_id integer ,primary key (id), CONSTRAINT fk_test_3_1 FOREIGN KEY(f_id) REFERENCES precheck_it_mysql2mysql_5_1.table_test_1(id)); 7 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_fk_test2/dst_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_fk_test2/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_2; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_5_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_fk_test2/src_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_fk_test3/dst_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_3; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_fk_test3/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_3; 2 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_3_2; 3 | 4 | CREATE DATABASE precheck_it_mysql2mysql_5_3; 5 | CREATE DATABASE precheck_it_mysql2mysql_5_3_2; 6 | 7 | CREATE TABLE precheck_it_mysql2mysql_5_3.table_test_3(id integer, text varchar(10), f_id integer); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_fk_test3/src_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_5_3; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_uk_no_pk_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_6; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_uk_no_pk_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_6; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_6; 4 | 5 | CREATE TABLE precheck_it_mysql2mysql_6.table_with_unique_constraint (id INT, name VARCHAR(50), name2 VARCHAR(50), UNIQUE KEY uk_name (name, name2)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_uk_no_pk_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_6; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_have_uk_no_pk_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_6; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_6; 4 | 5 | CREATE TABLE precheck_it_mysql2mysql_6.table_with_unique_constraint (id INT, name VARCHAR(50), UNIQUE KEY uk_name (name)); 6 | 7 | CREATE VIEW precheck_it_mysql2mysql_6.table_test_view1 AS SELECT name from precheck_it_mysql2mysql_6.table_with_unique_constraint; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_no_pkuk_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_7; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_no_pkuk_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_7; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_7; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_no_pkuk_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_7; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/precheck/struct_supported_no_pkuk_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS precheck_it_mysql2mysql_7; 2 | 3 | CREATE DATABASE precheck_it_mysql2mysql_7; 4 | 5 | CREATE TABLE precheck_it_mysql2mysql_7.table_test_1(id integer, text varchar(10)); 6 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/revise/route_test/dst_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO dst_test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 2 | INSERT INTO dst_test_db_1.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); 3 | 4 | INSERT INTO dst_test_db_2.dst_one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 5 | INSERT INTO test_db_2.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); 6 | 7 | INSERT INTO dst_test_db_3.dst_one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 8 | INSERT INTO test_db_3.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/revise/route_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 2 | INSERT INTO test_db_1.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 3 | 4 | INSERT INTO test_db_2.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 5 | INSERT INTO test_db_2.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 6 | 7 | INSERT INTO test_db_3.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 8 | INSERT INTO test_db_3.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/snapshot/json_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); 6 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/snapshot/json_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); 6 | 7 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/snapshot/resume_test/resume_logs/finished.log: -------------------------------------------------------------------------------- 1 | 2024-04-01 07:08:05.459594 | {"type":"RdbSnapshotFinished","db_type":"mysql","schema":"test_db_@","tb":"in_finished_log_table_*$1"} 2 | 3 | 2024-04-01 07:08:06.537135 | {"type":"RdbSnapshotFinished","db_type":"mysql","schema":"test_db_@","tb":"in_finished_log_table_*$2"} 4 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/snapshot/resume_test/resume_logs/position.log: -------------------------------------------------------------------------------- 1 | 2024-03-29 07:02:24.463776 | current_position | {"type":"RdbSnapshot","db_type":"mysql","schema":"test_db_@","tb":"in_position_log_table_*$1","order_col":"p.k","value":"0"} 2 | 3 | 2024-03-29 07:02:24.463777 | current_position | {"type":"RdbSnapshot","db_type":"mysql","schema":"test_db_@","tb":"in_position_log_table_*$1","order_col":"p.k","value":"1"} 4 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/snapshot/route_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2); 2 | INSERT INTO test_db_1.one_pk_no_uk_2 VALUES(1, 1),(2, 2); 3 | 4 | INSERT INTO test_db_2.one_pk_no_uk_1 VALUES(1, 1),(2, 2); 5 | INSERT INTO test_db_2.one_pk_no_uk_2 VALUES(1, 1),(2, 2); 6 | 7 | INSERT INTO test_db_3.one_pk_no_uk_1 VALUES(1, 1),(2, 2); 8 | INSERT INTO test_db_3.one_pk_no_uk_2 VALUES(1, 1),(2, 2); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/snapshot/tb_parallel_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=snapshot 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | db_type=mysql 8 | sink_type=write 9 | url={mysql_sinker_url} 10 | batch_size=2 11 | 12 | [filter] 13 | do_tbs=test_db_1.* 14 | do_events=insert 15 | 16 | [parallelizer] 17 | parallel_type=snapshot 18 | parallel_size=2 19 | 20 | [pipeline] 21 | buffer_size=4 22 | checkpoint_interval_secs=1 23 | 24 | [runtime] 25 | tb_parallel_size=3 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/snapshot/wildchar_filter_test/filtered_tbs.txt: -------------------------------------------------------------------------------- 1 | test_db_3.one_pk_no_uk_1 2 | test_db_4.one_pk_no_uk_1 3 | 4 | test_db_1.one_pk_no_uk_2 5 | test_db_2.one_pk_no_uk_2 6 | test_db_3.one_pk_no_uk_2 7 | test_db_4.one_pk_no_uk_2 8 | test_db_5.one_pk_no_uk_2 9 | other_test_db_1.one_pk_no_uk_2 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/struct/8_0_basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists struct_it_mysql2mysql_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/struct/8_0_basic_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | extract_type=struct 3 | db_type=mysql 4 | url={mysql_extractor_url_8_0} 5 | 6 | [sinker] 7 | sink_type=struct 8 | db_type=mysql 9 | batch_size=1 10 | url={mysql_sinker_url_8_0} 11 | conflict_policy=interrupt 12 | 13 | [filter] 14 | do_dbs=struct_it_mysql2mysql_1 15 | 16 | [parallelizer] 17 | parallel_type=serial 18 | parallel_size=1 19 | 20 | [pipeline] 21 | checkpoint_interval_secs=1 22 | buffer_size=100 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/struct/basic_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | -- drop database if exists struct_it_mysql2mysql_1; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/struct/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists struct_it_mysql2mysql_1; 2 | 3 | -- create database if not exists struct_it_mysql2mysql_1; 4 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/struct/basic_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | -- drop database if exists struct_it_mysql2mysql_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/struct/charset_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS struct_it_mysql2mysql_1; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/struct/filter_test_1/src_to_dst/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists struct_it_mysql2mysql_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql/struct/route_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists dst_struct_it_mysql2mysql_1; 2 | 3 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/cdc_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn cdc_basic_test() { 11 | TestBase::run_cdc_test("mysql_to_mysql_case_sensitive/cdc/basic_test", 3000, 4000).await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/check/basic_struct_test/expect_check_log_5.7/extra.log: -------------------------------------------------------------------------------- 1 | key: index.STRUCT_check_test_1.not_MATCH_index.I5_diff_name_dst, dst_sql: CREATE INDEX `I5_diff_name_dst` ON `STRUCT_check_test_1`.`not_MATCH_index` (`index_col`) -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/check/basic_struct_test/expect_check_log_8.0/extra.log: -------------------------------------------------------------------------------- 1 | key: index.STRUCT_check_test_1.not_MATCH_index.I5_diff_name_dst, dst_sql: CREATE INDEX `I5_diff_name_dst` ON `STRUCT_check_test_1`.`not_MATCH_index` (`index_col`) -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/check/basic_struct_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=struct 4 | url={case_sensitive_mysql_extractor_url} 5 | 6 | [sinker] 7 | db_type=mysql 8 | sink_type=check 9 | url={case_sensitive_mysql_sinker_url} 10 | batch_size=2 11 | 12 | [filter] 13 | do_tbs=STRUCT_check_test_1.* 14 | 15 | [parallelizer] 16 | parallel_type=rdb_check 17 | parallel_size=2 18 | 19 | [pipeline] 20 | buffer_size=4 21 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/check/basic_test/expect_check_log/diff.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Diff","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"4"},"diff_col_values":{"F_1":{"src":"2","dst":"1"}}} 2 | {"log_type":"Diff","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"5"},"diff_col_values":{"F_1":{"src":"20","dst":"1"}}} 3 | {"log_type":"Diff","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"6"},"diff_col_values":{"F_1":{"src":null,"dst":"1"}}} 4 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/check/basic_test/expect_check_log/miss.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Miss","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"-1"},"diff_col_values":{}} 2 | {"log_type":"Miss","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"7"},"diff_col_values":{}} 3 | {"log_type":"Miss","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"8"},"diff_col_values":{}} 4 | {"log_type":"Miss","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"9"},"diff_col_values":{}} -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/check/basic_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=snapshot 4 | url={case_sensitive_mysql_extractor_url} 5 | 6 | [sinker] 7 | db_type=mysql 8 | sink_type=check 9 | url={case_sensitive_mysql_sinker_url} 10 | batch_size=2 11 | 12 | [filter] 13 | do_tbs=TEST_db_1.* 14 | do_events=insert 15 | 16 | [parallelizer] 17 | parallel_type=rdb_check 18 | parallel_size=2 19 | 20 | [pipeline] 21 | buffer_size=4 22 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_tests; 2 | mod check_tests; 3 | mod revise_tests; 4 | mod snapshot_tests; 5 | mod struct_tests; 6 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/revise/basic_test/check_log/diff.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Diff","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"4"},"diff_col_values":{}} 2 | {"log_type":"Diff","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"5"},"diff_col_values":{}} 3 | {"log_type":"Diff","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"6"},"diff_col_values":{}} -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/revise/basic_test/check_log/miss.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Miss","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"-1"},"diff_col_values":{}} 2 | {"log_type":"Miss","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"7"},"diff_col_values":{}} 3 | {"log_type":"Miss","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"8"},"diff_col_values":{}} 4 | {"log_type":"Miss","schema":"TEST_db_1","tb":"ONE_pk_no_uk","id_col_values":{"F_0":"9"},"diff_col_values":{}} -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/revise_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn revise_basic_test() { 11 | TestBase::run_revise_test("mysql_to_mysql_case_sensitive/revise/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/snapshot/basic_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=snapshot 4 | url={case_sensitive_mysql_extractor_url} 5 | 6 | [sinker] 7 | db_type=mysql 8 | sink_type=write 9 | url={case_sensitive_mysql_sinker_url} 10 | batch_size=2 11 | 12 | [filter] 13 | do_tbs=test_db_1.*,Upper_Case_DB.* 14 | do_events=insert 15 | 16 | [parallelizer] 17 | parallel_type=snapshot 18 | parallel_size=2 19 | 20 | [pipeline] 21 | buffer_size=4 22 | checkpoint_interval_secs=1 23 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/snapshot_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn snapshot_basic_test() { 11 | TestBase::run_snapshot_test("mysql_to_mysql_case_sensitive/snapshot/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/struct/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists STRUCT_it_mysql2mysql_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/struct/basic_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | extract_type=struct 3 | db_type=mysql 4 | url={case_sensitive_mysql_extractor_url} 5 | 6 | [sinker] 7 | sink_type=struct 8 | db_type=mysql 9 | batch_size=1 10 | url={case_sensitive_mysql_sinker_url} 11 | conflict_policy=interrupt 12 | 13 | [filter] 14 | do_dbs=STRUCT_it_mysql2mysql_1 15 | 16 | [parallelizer] 17 | parallel_type=serial 18 | parallel_size=1 19 | 20 | [pipeline] 21 | checkpoint_interval_secs=1 22 | buffer_size=100 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_case_sensitive/struct_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn struct_basic_test() { 11 | TestBase::run_mysql_struct_test("mysql_to_mysql_case_sensitive/struct/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_lua/cdc/basic_test/expect_to_dst/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=snapshot 4 | url={mysql_extractor_url} 5 | 6 | [filter] 7 | do_tbs=lua_test_expect.* 8 | do_events=insert,update,delete 9 | 10 | [sinker] 11 | db_type=mysql 12 | sink_type=write 13 | batch_size=2 14 | url={mysql_sinker_url} 15 | 16 | [router] 17 | db_map=lua_test_expect:lua_test 18 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_lua/cdc/do_nothing_test/lua_code.lua: -------------------------------------------------------------------------------- 1 | print("schema: "..schema) 2 | print("tb: "..tb) 3 | print("row_type: "..row_type) 4 | 5 | print("") 6 | print("before") 7 | for k, v in pairs(before) do 8 | print(k, v) 9 | end 10 | 11 | print("") 12 | print("after") 13 | for k, v in pairs(after) do 14 | print(k, v) 15 | end 16 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_lua/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_tests; 2 | mod snapshot_tests; 3 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_lua/snapshot/basic_test/expect_to_dst/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=snapshot 4 | url={mysql_extractor_url} 5 | 6 | [filter] 7 | do_tbs=lua_test_expect.* 8 | do_events=insert,update,delete 9 | 10 | [sinker] 11 | db_type=mysql 12 | sink_type=write 13 | batch_size=2 14 | url={mysql_sinker_url} 15 | 16 | [router] 17 | db_map=lua_test_expect:lua_test 18 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_mysql_lua/snapshot/do_nothing_test/lua_code.lua: -------------------------------------------------------------------------------- 1 | print("schema: "..schema) 2 | print("tb: "..tb) 3 | print("row_type: "..row_type) 4 | 5 | print("") 6 | print("before") 7 | for k, v in pairs(before) do 8 | print(k, v) 9 | end 10 | 11 | print("") 12 | print("after") 13 | for k, v in pairs(after) do 14 | print(k, v) 15 | end 16 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_redis/cdc/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_redis/cdc_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn cdc_basic_test() { 11 | TestBase::run_rdb_redis_cdc_test("mysql_to_redis/cdc/basic_test", 3000, 1000).await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_redis/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_tests; 2 | mod snapshot_tests; 3 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_redis/snapshot/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_redis/snapshot_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn snapshot_basic_test() { 11 | TestBase::run_rdb_redis_snapshot_test("mysql_to_redis/snapshot/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/cdc/2_5_4/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/cdc/2_5_4/basic_test/struct_task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=struct 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | url={starrocks_sinker_url_2_5_4} 8 | sink_type=struct 9 | db_type=starrocks 10 | 11 | [filter] 12 | do_tbs=test_db_1.* 13 | 14 | [parallelizer] 15 | parallel_type=serial 16 | 17 | [pipeline] 18 | buffer_size=100 19 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/cdc/3_2_11/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | DROP DATABASE IF EXISTS dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/cdc/3_2_11/json_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/cdc/3_2_11/json_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/cdc/3_2_11/json_test/struct_task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=struct 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | url={starrocks_sinker_url_3_2_11} 8 | sink_type=struct 9 | db_type=starrocks 10 | 11 | [filter] 12 | do_tbs=test_db_1.* 13 | 14 | [parallelizer] 15 | parallel_type=serial 16 | 17 | [pipeline] 18 | buffer_size=100 19 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/cdc/3_2_11/json_to_string_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | ``` 6 | CREATE TABLE test_db_1.json_test ( 7 | f_0 TINYINT, 8 | f_1 STRING) ENGINE=OLAP PRIMARY KEY(f_0) DISTRIBUTED BY HASH(f_0); 9 | ``` 10 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/cdc/3_2_11/json_to_string_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/cdc_2_5_4_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn cdc_basic_test() { 11 | TestBase::run_rdb_starrocks_cdc_test("mysql_to_starrocks/cdc/2_5_4/basic_test", 3000, 3000) 12 | .await; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_2_5_4_tests; 2 | mod cdc_3_2_11_tests; 3 | mod snapshot_2_5_4_tests; 4 | mod snapshot_3_2_11_tests; 5 | mod struct_2_5_4_tests; 6 | mod struct_3_2_11_tests; 7 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/snapshot/2_5_4/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/snapshot/2_5_4/basic_test/struct_task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=struct 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | url={starrocks_sinker_url_2_5_4} 8 | sink_type=struct 9 | db_type=starrocks 10 | 11 | [filter] 12 | do_tbs=test_db_1.* 13 | 14 | [parallelizer] 15 | parallel_type=serial 16 | 17 | [pipeline] 18 | buffer_size=100 19 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/snapshot/3_2_11/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | DROP DATABASE IF EXISTS dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/snapshot/3_2_11/json_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/snapshot/3_2_11/json_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/snapshot/3_2_11/json_test/struct_task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=mysql 3 | extract_type=struct 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | url={starrocks_sinker_url_3_2_11} 8 | sink_type=struct 9 | db_type=starrocks 10 | 11 | [filter] 12 | do_tbs=test_db_1.* 13 | 14 | [parallelizer] 15 | parallel_type=serial 16 | 17 | [pipeline] 18 | buffer_size=100 19 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/snapshot/3_2_11/json_to_string_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | -- STRING == varchar(65533) 6 | ``` 7 | CREATE TABLE IF NOT EXISTS `test_db_1`.`json_test` ( 8 | `f_0` INT NOT NULL, 9 | `f_1` STRING 10 | ) PRIMARY KEY (`f_0`) DISTRIBUTED BY HASH(`f_0`) PROPERTIES ("replication_num" = "1") 11 | ``` 12 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/snapshot/3_2_11/json_to_string_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; 2 | 3 | CREATE DATABASE test_db_1; 4 | 5 | CREATE TABLE test_db_1.json_test(f_0 INT AUTO_INCREMENT, f_1 JSON, PRIMARY KEY(f_0)); -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/snapshot_2_5_4_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn snapshot_basic_test() { 11 | TestBase::run_snapshot_test("mysql_to_starrocks/snapshot/2_5_4/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/struct/2_5_4/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists test_db_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/struct/3_2_11/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists test_db_1; 2 | drop database if exists dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/struct_2_5_4_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn struct_basic_test() { 11 | TestBase::run_mysql_struct_test("mysql_to_starrocks/struct/2_5_4/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_starrocks/struct_3_2_11_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn struct_basic_test() { 11 | TestBase::run_mysql_struct_test("mysql_to_starrocks/struct/3_2_11/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_tidb/cdc_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn cdc_basic_test() { 11 | TestBase::run_cdc_test("mysql_to_tidb/cdc/basic_test", 3000, 2000).await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_tidb/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_tests; 2 | mod snapshot_tests; 3 | mod struct_tests; 4 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_tidb/snapshot_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use serial_test::serial; 4 | 5 | use crate::test_runner::test_base::TestBase; 6 | 7 | #[tokio::test] 8 | #[serial] 9 | async fn snapshot_basic_test() { 10 | TestBase::run_snapshot_test("mysql_to_tidb/snapshot/basic_test").await; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_tidb/struct/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists struct_it_mysql2mysql_1; -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_tidb/struct/basic_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | extract_type=struct 3 | db_type=mysql 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | sink_type=struct 8 | db_type=tidb 9 | batch_size=1 10 | url={tidb_sinker_url} 11 | conflict_policy=interrupt 12 | 13 | [filter] 14 | do_dbs=struct_it_mysql2mysql_1 15 | 16 | [parallelizer] 17 | parallel_type=serial 18 | parallel_size=1 19 | 20 | [pipeline] 21 | checkpoint_interval_secs=1 22 | buffer_size=100 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_tidb/struct/charset_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS struct_it_mysql2mysql_1; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_tidb/struct/charset_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | extract_type=struct 3 | db_type=mysql 4 | url={mysql_extractor_url} 5 | 6 | [sinker] 7 | sink_type=struct 8 | db_type=tidb 9 | batch_size=1 10 | url={tidb_sinker_url} 11 | conflict_policy=interrupt 12 | 13 | [filter] 14 | do_dbs=struct_it_mysql2mysql_1 15 | 16 | [parallelizer] 17 | parallel_type=serial 18 | parallel_size=1 19 | 20 | [pipeline] 21 | checkpoint_interval_secs=1 22 | buffer_size=100 -------------------------------------------------------------------------------- /dt-tests/tests/mysql_to_tidb/struct/route_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists dst_struct_it_mysql2mysql_1; 2 | 3 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_clickhouse/cdc/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_clickhouse/cdc/basic_test/struct_task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | extract_type=struct 3 | db_type=pg 4 | url={pg_extractor_url} 5 | 6 | [sinker] 7 | url={clickhouse_url} 8 | sink_type=struct 9 | db_type=clickhouse 10 | 11 | [filter] 12 | do_tbs=test_db_1.* 13 | 14 | [parallelizer] 15 | parallel_type=serial 16 | 17 | [pipeline] 18 | buffer_size=100 19 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_clickhouse/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_tests; 2 | mod snapshot_tests; 3 | mod struct_tests; 4 | mod table_schemas; 5 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_clickhouse/snapshot/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS test_db_1; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_clickhouse/snapshot/basic_test/struct_task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | extract_type=struct 3 | db_type=pg 4 | url={pg_extractor_url} 5 | 6 | [sinker] 7 | url={clickhouse_url} 8 | sink_type=struct 9 | db_type=clickhouse 10 | 11 | [filter] 12 | do_tbs=test_db_1.* 13 | 14 | [parallelizer] 15 | parallel_type=serial 16 | 17 | [pipeline] 18 | buffer_size=100 19 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_clickhouse/snapshot/basic_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=pg 3 | extract_type=snapshot 4 | url={pg_extractor_url} 5 | 6 | [sinker] 7 | db_type=clickhouse 8 | sink_type=write 9 | url={clickhouse_url} 10 | batch_size=2 11 | 12 | [filter] 13 | do_tbs=test_db_1.* 14 | do_events=insert 15 | 16 | [parallelizer] 17 | parallel_type=snapshot 18 | parallel_size=2 19 | 20 | [pipeline] 21 | buffer_size=4 22 | checkpoint_interval_secs=1 -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_clickhouse/struct/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists test_db_1; 2 | drop database if exists dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_doris/cdc/2_1_0/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS public; 2 | DROP DATABASE IF EXISTS dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_doris/cdc_2_1_0_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn cdc_basic_test() { 11 | TestBase::run_cdc_test("pg_to_doris/cdc/2_1_0/basic_test", 3000, 5000).await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_doris/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_2_1_0_tests; 2 | mod snapshot_2_1_0_tests; 3 | mod struct_2_1_0_tests; 4 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_doris/snapshot/2_1_0/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS public; 2 | DROP DATABASE IF EXISTS dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_doris/snapshot_2_1_0_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn snapshot_basic_test() { 11 | TestBase::run_snapshot_test("pg_to_doris/snapshot/2_1_0/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_doris/struct/2_1_0/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists test_db_1; 2 | drop database if exists dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_doris/struct_2_1_0_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn struct_basic_test() { 11 | TestBase::run_mysql_struct_test("pg_to_doris/struct/2_1_0/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_kafka_to_pg/cdc/basic_test/src_to_kafka/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | create topic test 2 | create topic test2 3 | create topic test3 -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_kafka_to_pg/cdc_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn cdc_basic_test() { 11 | TestBase::run_rdb_kafka_rdb_cdc_test("pg_to_kafka_to_pg/cdc/basic_test", 5000, 10000).await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_kafka_to_pg/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod cdc_tests; 2 | pub mod snapshot_tests; 3 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_kafka_to_pg/snapshot/basic_test/src_to_kafka/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | create topic test 2 | create topic test2 3 | create topic test3 -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_kafka_to_pg/snapshot_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn snapshot_basic_test() { 11 | TestBase::run_rdb_kafka_rdb_snapshot_test( 12 | "pg_to_kafka_to_pg/snapshot/basic_test", 13 | 5000, 14 | 5000, 15 | ) 16 | .await; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/charset_euc_cn_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS tb_col_euc_cn; 2 | CREATE TABLE tb_col_euc_cn (pk serial PRIMARY KEY, value TEXT); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/charset_euc_cn_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS tb_col_euc_cn; 2 | CREATE TABLE tb_col_euc_cn (pk serial PRIMARY KEY, value TEXT); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/charset_euc_cn_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO tb_col_euc_cn VALUES(1, 'abc'); 2 | INSERT INTO tb_col_euc_cn VALUES(2, '中文'); 3 | INSERT INTO tb_col_euc_cn VALUES(3, NULL); 4 | 5 | UPDATE tb_col_euc_cn set value = (select value from tb_col_euc_cn where pk = 2) WHERE pk = 3; 6 | UPDATE tb_col_euc_cn set value = (select value from tb_col_euc_cn where pk = 1) WHERE pk = 2; 7 | UPDATE tb_col_euc_cn set value = NULL WHERE pk = 1; 8 | 9 | DELETE FROM tb_col_euc_cn; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/charset_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS tb_col_utf8; 2 | CREATE TABLE tb_col_utf8 (pk serial PRIMARY KEY, value TEXT); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/charset_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS tb_col_utf8; 2 | CREATE TABLE tb_col_utf8 (pk serial PRIMARY KEY, value TEXT); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/cycle_basic_test/topo1_node1_to_node2/dst_prepare.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/pg_to_pg/cdc/cycle_basic_test/topo1_node1_to_node2/dst_prepare.sql -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/cycle_basic_test/topo1_node2_to_node1/dst_prepare.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/pg_to_pg/cdc/cycle_basic_test/topo1_node2_to_node1/dst_prepare.sql -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/cycle_net_test/topo1_node1_to_node3/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/pg_to_pg/cdc/cycle_net_test/topo1_node1_to_node3/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/cycle_net_test/topo1_node2_to_node3/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/pg_to_pg/cdc/cycle_net_test/topo1_node2_to_node3/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/cycle_net_test/topo1_node3_to_node2/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/pg_to_pg/cdc/cycle_net_test/topo1_node3_to_node2/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/cycle_star_test/topo1_node1_to_node3/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/pg_to_pg/cdc/cycle_star_test/topo1_node1_to_node3/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/ddl_test/filtered_tbs.txt: -------------------------------------------------------------------------------- 1 | test_db_1.drop_tb_1 2 | test_db_1.rename_tb_1 3 | test_db_1.rename_tb_2 4 | public.ape_dts_ddl_command -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/heartbeat_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS test_db_1 CASCADE; 2 | 3 | CREATE SCHEMA test_db_1; 4 | 5 | DROP TABLE IF EXISTS heartbeat_db.ape_dts_heartbeat; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/cdc/wildchar_filter_test/filtered_tbs.txt: -------------------------------------------------------------------------------- 1 | test_db_3.one_pk_no_uk_1 2 | test_db_4.one_pk_no_uk_1 3 | 4 | test_db_1.one_pk_no_uk_2 5 | test_db_2.one_pk_no_uk_2 6 | test_db_3.one_pk_no_uk_2 7 | test_db_4.one_pk_no_uk_2 8 | test_db_5.one_pk_no_uk_2 9 | other_test_db_1.one_pk_no_uk_2 -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/basic_struct_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists struct_check_test_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/basic_struct_test/expect_check_log/extra.log: -------------------------------------------------------------------------------- 1 | key: index.struct_check_test_1.full_index_type.index_not_match_name_dst, dst_sql: CREATE UNIQUE INDEX IF NOT EXISTS "index_not_match_name_dst" ON "struct_check_test_1"."full_index_type" USING btree (unique_col) TABLESPACE pg_default 2 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/basic_struct_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists struct_check_test_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/route_test/dst_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO dst_test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 2 | INSERT INTO dst_test_db_1.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); 3 | 4 | INSERT INTO dst_test_db_2.dst_one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 5 | INSERT INTO test_db_2.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); 6 | 7 | INSERT INTO dst_test_db_3.dst_one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 8 | INSERT INTO test_db_3.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/route_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 2 | INSERT INTO test_db_1.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 3 | 4 | INSERT INTO test_db_2.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 5 | INSERT INTO test_db_2.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 6 | 7 | INSERT INTO test_db_3.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 8 | INSERT INTO test_db_3.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/sample_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS test_db_1 CASCADE; 2 | DROP SCHEMA IF EXISTS test_db_2 CASCADE; 3 | 4 | CREATE SCHEMA test_db_1; 5 | CREATE SCHEMA test_db_2; 6 | 7 | CREATE TABLE test_db_1.one_pk_no_uk_1 ( f_0 serial, f_1 numeric(20,8), PRIMARY KEY (f_0) ); 8 | CREATE TABLE test_db_2.one_pk_no_uk_1 ( f_0 serial, f_1 numeric(20,8), PRIMARY KEY (f_0) ); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/sample_test/dst_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.one_pk_no_uk_1 VALUES(3, 4),(8,9); 2 | INSERT INTO test_db_2.one_pk_no_uk_1 VALUES(3, 4),(8,9); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/sample_test/expect_check_log/diff.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Diff","schema":"test_db_1","tb":"one_pk_no_uk_1","id_col_values":{"f_0":"3"},"diff_col_values":{"f_1":{"src":"3.00000000","dst":"4.00000000"}}} 2 | {"log_type":"Diff","schema":"test_db_2","tb":"one_pk_no_uk_1","id_col_values":{"f_0":"3"},"diff_col_values":{"f_1":{"src":"3.00000000","dst":"4.00000000"}}} 3 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/sample_test/expect_check_log/miss.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Miss","schema":"test_db_1","tb":"one_pk_no_uk_1","id_col_values":{"f_0":"6"},"diff_col_values":{}} 2 | {"log_type":"Miss","schema":"test_db_2","tb":"one_pk_no_uk_1","id_col_values":{"f_0":"6"},"diff_col_values":{}} -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/sample_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS test_db_1 CASCADE; 2 | DROP SCHEMA IF EXISTS test_db_2 CASCADE; 3 | 4 | CREATE SCHEMA test_db_1; 5 | CREATE SCHEMA test_db_2; 6 | 7 | CREATE TABLE test_db_1.one_pk_no_uk_1 ( f_0 serial, f_1 numeric(20,8), PRIMARY KEY (f_0) ); 8 | CREATE TABLE test_db_2.one_pk_no_uk_1 ( f_0 serial, f_1 numeric(20,8), PRIMARY KEY (f_0) ); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/check/sample_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4),(5, 5),(6, 6),(7, 7),(8, 8); 2 | INSERT INTO test_db_2.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4),(5, 5),(6, 6),(7, 7),(8, 8); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod cdc_tests; 2 | pub mod check_tests; 3 | pub mod precheck_tests; 4 | pub mod review_tests; 5 | pub mod revise_tests; 6 | pub mod snapshot_tests; 7 | pub mod struct_tests; 8 | pub mod tb_meta_tests; 9 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/db_not_exists_non_struct_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_1 cascade; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/db_not_exists_non_struct_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_1 cascade; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/db_not_exists_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_2 cascade; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/db_not_exists_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_2 cascade; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_existed_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_3 cascade; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_existed_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_3 cascade; 2 | create schema precheck_it_pg2pg_3; 3 | 4 | CREATE TABLE precheck_it_pg2pg_3.table_test(id integer, text varchar(10),primary key (id)); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_existed_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_3 cascade; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_existed_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_3 cascade; 2 | create schema precheck_it_pg2pg_3; 3 | 4 | CREATE TABLE precheck_it_pg2pg_3.table_test(id integer, text varchar(10),primary key (id)); 5 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_basic_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_4 cascade; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_4 cascade; 2 | create schema precheck_it_pg2pg_4; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_basic_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_4 cascade; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_4 cascade; 2 | create schema precheck_it_pg2pg_4; 3 | CREATE TABLE precheck_it_pg2pg_4.table_test_1(id integer, text varchar(10),primary key (id)); 4 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_fk_test1/dst_clean.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_fk_test1/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_1 CASCADE; 2 | 3 | CREATE SCHEMA precheck_it_pg2pg_5_1; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_fk_test1/src_clean.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_fk_test1/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_1 CASCADE; 2 | 3 | CREATE SCHEMA precheck_it_pg2pg_5_1; 4 | 5 | CREATE TABLE precheck_it_pg2pg_5_1.table_test_1(id integer, text varchar(10),primary key (id)); 6 | CREATE TABLE precheck_it_pg2pg_5_1.table_test_3(id integer, text varchar(10), f_id integer ,primary key (id), CONSTRAINT fk_test_3_1 FOREIGN KEY(f_id) REFERENCES precheck_it_pg2pg_5_1.table_test_1(id)); 7 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_fk_test2/dst_clean.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_2 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_fk_test2/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_2 CASCADE; 2 | 3 | CREATE SCHEMA precheck_it_pg2pg_5_2; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_fk_test2/src_clean.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_2 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_fk_test3/dst_clean.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_3 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_fk_test3/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_3 CASCADE; 2 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_3_2 CASCADE; 3 | 4 | CREATE SCHEMA precheck_it_pg2pg_5_3; 5 | CREATE SCHEMA precheck_it_pg2pg_5_3_2; 6 | 7 | CREATE TABLE precheck_it_pg2pg_5_3.table_test_3(id integer, text varchar(10), f_id integer); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_fk_test3/src_clean.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS precheck_it_pg2pg_5_3 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_uk_no_pk_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_6 cascade; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_uk_no_pk_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_6 cascade; 2 | create schema precheck_it_pg2pg_6; 3 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_uk_no_pk_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_6 cascade; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_have_uk_no_pk_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_6 cascade; 2 | create schema precheck_it_pg2pg_6; 3 | 4 | CREATE TABLE precheck_it_pg2pg_6.table_with_unique_constraint (id INTEGER, name VARCHAR(50), CONSTRAINT uk_name UNIQUE (name)); 5 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_no_pkuk_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_7 cascade; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_no_pkuk_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_7 cascade; 2 | create schema precheck_it_pg2pg_7; 3 | 4 | CREATE TABLE precheck_it_pg2pg_7.table_test(id integer, text varchar(10), primary key (id)); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_no_pkuk_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_7 cascade; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/precheck/struct_supported_no_pkuk_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists precheck_it_pg2pg_7 cascade; 2 | create schema precheck_it_pg2pg_7; 3 | 4 | CREATE TABLE precheck_it_pg2pg_7.table_test(id integer, text varchar(10)); 5 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/review/basic_test/expect_check_log/miss.log: -------------------------------------------------------------------------------- 1 | {"log_type":"Miss","schema":"public","tb":"default_table","id_col_values":{"pk":"12"},"diff_col_values":{}} 2 | {"log_type":"Miss","schema":"public","tb":"col_has_special_character_table","id_col_values":{"p,k,1":"pk1,value,5","p\\k&2":"pk2,value,5"},"diff_col_values":{}} -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/review_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn review_basic_test() { 11 | TestBase::run_review_test("pg_to_pg/review/basic_test").await; 12 | } 13 | 14 | #[tokio::test] 15 | #[serial] 16 | async fn review_route_test() { 17 | TestBase::run_review_test("pg_to_pg/review/route_test").await; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/revise/route_test/dst_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO dst_test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 2 | INSERT INTO dst_test_db_1.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); 3 | 4 | INSERT INTO dst_test_db_2.dst_one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 5 | INSERT INTO test_db_2.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); 6 | 7 | INSERT INTO dst_test_db_3.dst_one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 4); 8 | INSERT INTO test_db_3.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 4); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/revise/route_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 2 | INSERT INTO test_db_1.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 3 | 4 | INSERT INTO test_db_2.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 5 | INSERT INTO test_db_2.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 6 | 7 | INSERT INTO test_db_3.one_pk_no_uk_1 VALUES(1, 1),(2, 2),(3, 3),(4, 4); 8 | INSERT INTO test_db_3.one_pk_no_uk_2 VALUES(1, 1),(2, 2),(3, 3),(4, 4); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/revise_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn revise_basic_test() { 11 | TestBase::run_revise_test("pg_to_pg/revise/basic_test").await; 12 | } 13 | 14 | #[tokio::test] 15 | #[serial] 16 | async fn revise_route_test() { 17 | TestBase::run_revise_test("pg_to_pg/revise/route_test").await; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/snapshot/charset_euc_cn_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS tb_col_euc_cn; 2 | CREATE TABLE tb_col_euc_cn (pk serial PRIMARY KEY, value TEXT); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/snapshot/charset_euc_cn_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS tb_col_euc_cn; 2 | CREATE TABLE tb_col_euc_cn (pk serial PRIMARY KEY, value TEXT); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/snapshot/charset_euc_cn_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO tb_col_euc_cn VALUES(1, 'abc'); 2 | INSERT INTO tb_col_euc_cn VALUES(2, '中文'); 3 | INSERT INTO tb_col_euc_cn VALUES(3, NULL); 4 | -- emoj, korea NOT supported in EUC_CN 5 | -- INSERT INTO tb_col_euc_cn VALUES(4, '😀'); 6 | -- INSERT INTO tb_col_euc_cn VALUES(5, '대한민국'); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/snapshot/charset_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS tb_col_utf8; 2 | CREATE TABLE tb_col_utf8 (pk serial PRIMARY KEY, value TEXT); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/snapshot/charset_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS tb_col_utf8; 2 | CREATE TABLE tb_col_utf8 (pk serial PRIMARY KEY, value TEXT); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/snapshot/charset_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO tb_col_utf8 VALUES(1, 'abc'); 2 | INSERT INTO tb_col_utf8 VALUES(2, '中文'); 3 | INSERT INTO tb_col_utf8 VALUES(3, 'わたし'); 4 | INSERT INTO tb_col_utf8 VALUES(4, '대한민국'); 5 | INSERT INTO tb_col_utf8 VALUES(5, '😀'); 6 | INSERT INTO tb_col_utf8 VALUES(6, NULL); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/snapshot/resume_test/resume_logs/finished.log: -------------------------------------------------------------------------------- 1 | 2024-04-01 07:08:05.459594 | {"type":"RdbSnapshotFinished","db_type":"pg","schema":"test_db_*.*","tb":"in_finished_log_table_*$1"} 2 | 3 | 2024-04-01 07:08:06.537135 | {"type":"RdbSnapshotFinished","db_type":"pg","schema":"test_db_*.*","tb":"in_finished_log_table_*$2"} 4 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/snapshot/resume_test/resume_logs/position.log: -------------------------------------------------------------------------------- 1 | 2024-03-29 07:02:24.463776 | current_position | {"type":"RdbSnapshot","db_type":"pg","schema":"test_db_*.*","tb":"in_position_log_table_*$1","order_col":"p.k","value":"0"} 2 | 3 | 2024-03-29 07:02:24.463777 | current_position | {"type":"RdbSnapshot","db_type":"pg","schema":"test_db_*.*","tb":"in_position_log_table_*$1","order_col":"p.k","value":"1"} 4 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/snapshot/route_test/src_test.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO test_db_1.one_pk_no_uk_1 VALUES(1, 1),(2, 2); 2 | INSERT INTO test_db_1.one_pk_no_uk_2 VALUES(1, 1),(2, 2); 3 | 4 | INSERT INTO test_db_2.one_pk_no_uk_1 VALUES(1, 1),(2, 2); 5 | INSERT INTO test_db_2.one_pk_no_uk_2 VALUES(1, 1),(2, 2); 6 | 7 | INSERT INTO test_db_3.one_pk_no_uk_1 VALUES(1, 1),(2, 2); 8 | INSERT INTO test_db_3.one_pk_no_uk_2 VALUES(1, 1),(2, 2); -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/snapshot/wildchar_filter_test/filtered_tbs.txt: -------------------------------------------------------------------------------- 1 | test_db_3.one_pk_no_uk_1 2 | test_db_4.one_pk_no_uk_1 3 | 4 | test_db_1.one_pk_no_uk_2 5 | test_db_2.one_pk_no_uk_2 6 | test_db_3.one_pk_no_uk_2 7 | test_db_4.one_pk_no_uk_2 8 | test_db_5.one_pk_no_uk_2 9 | other_test_db_1.one_pk_no_uk_2 -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/struct/basic_test/dst_clean.sql: -------------------------------------------------------------------------------- 1 | -- drop schema if exists struct_it_pg2pg_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/struct/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists struct_it_pg2pg_1 CASCADE; 2 | 3 | -- create schema struct_it_pg2pg_1; 4 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/struct/basic_test/src_clean.sql: -------------------------------------------------------------------------------- 1 | -- drop schema if exists struct_it_pg2pg_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/struct/filter_test_1/src_to_dst/dst_clean.sql: -------------------------------------------------------------------------------- 1 | -- drop schema if exists struct_it_pg2pg_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/struct/filter_test_1/src_to_dst/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists struct_it_pg2pg_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/struct/filter_test_1/src_to_dst/src_clean.sql: -------------------------------------------------------------------------------- 1 | -- drop schema if exists struct_it_pg2pg_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/struct/filter_test_2/dst_clean.sql: -------------------------------------------------------------------------------- 1 | -- drop schema if exists struct_it_pg2pg_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/struct/filter_test_2/src_clean.sql: -------------------------------------------------------------------------------- 1 | -- drop schema if exists struct_it_pg2pg_1 CASCADE; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/struct/postgis_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | CREATE EXTENSION IF NOT EXISTS plpgsql; 2 | CREATE EXTENSION IF NOT EXISTS ltree; 3 | CREATE EXTENSION IF NOT EXISTS isn; 4 | CREATE EXTENSION IF NOT EXISTS citext; 5 | CREATE EXTENSION IF NOT EXISTS hstore; 6 | CREATE EXTENSION IF NOT EXISTS postgis; 7 | 8 | DROP SCHEMA IF EXISTS struct_it_pg2pg_postgis CASCADE; 9 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/struct/route_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop schema if exists dst_struct_it_pg2pg_1 CASCADE; 2 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg/tb_meta/basic_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | extract_type=struct 3 | db_type=pg 4 | url={pg_extractor_url} 5 | 6 | [sinker] 7 | sink_type=struct 8 | db_type=pg 9 | url={pg_sinker_url} 10 | 11 | [filter] 12 | do_dbs=tb_meta_test -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg_lua/cdc/basic_test/expect_to_dst/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=pg 3 | extract_type=snapshot 4 | url={pg_extractor_url} 5 | 6 | [filter] 7 | do_tbs=lua_test_expect.* 8 | do_events=insert,update,delete 9 | 10 | [sinker] 11 | db_type=pg 12 | sink_type=write 13 | batch_size=2 14 | url={pg_sinker_url} 15 | 16 | [router] 17 | db_map=lua_test_expect:lua_test 18 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg_lua/cdc/do_nothing_test/lua_code.lua: -------------------------------------------------------------------------------- 1 | print("schema: "..schema) 2 | print("tb: "..tb) 3 | print("row_type: "..row_type) 4 | 5 | print("") 6 | print("before") 7 | for k, v in pairs(before) do 8 | print(k, v) 9 | end 10 | 11 | print("") 12 | print("after") 13 | for k, v in pairs(after) do 14 | print(k, v) 15 | end 16 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg_lua/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_tests; 2 | mod snapshot_tests; 3 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg_lua/snapshot/basic_test/expect_to_dst/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=pg 3 | extract_type=snapshot 4 | url={pg_extractor_url} 5 | 6 | [filter] 7 | do_tbs=lua_test_expect.* 8 | do_events=insert,update,delete 9 | 10 | [sinker] 11 | db_type=pg 12 | sink_type=write 13 | batch_size=2 14 | url={pg_sinker_url} 15 | 16 | [router] 17 | db_map=lua_test_expect:lua_test 18 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_pg_lua/snapshot/do_nothing_test/lua_code.lua: -------------------------------------------------------------------------------- 1 | print("schema: "..schema) 2 | print("tb: "..tb) 3 | print("row_type: "..row_type) 4 | 5 | print("") 6 | print("before") 7 | for k, v in pairs(before) do 8 | print(k, v) 9 | end 10 | 11 | print("") 12 | print("after") 13 | for k, v in pairs(after) do 14 | print(k, v) 15 | end 16 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_starrocks/cdc/3_2_11/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS public; 2 | DROP DATABASE IF EXISTS dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_starrocks/cdc_3_2_11_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn cdc_basic_test() { 11 | TestBase::run_rdb_starrocks_cdc_test("pg_to_starrocks/cdc/3_2_11/basic_test", 3000, 5000) 12 | .await; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_starrocks/mod.rs: -------------------------------------------------------------------------------- 1 | mod cdc_3_2_11_tests; 2 | mod snapshot_3_2_11_tests; 3 | mod struct_3_2_11_tests; 4 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_starrocks/snapshot/3_2_11/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE IF EXISTS public; 2 | DROP DATABASE IF EXISTS dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_starrocks/snapshot_3_2_11_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn snapshot_basic_test() { 11 | TestBase::run_snapshot_test("pg_to_starrocks/snapshot/3_2_11/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_starrocks/struct/3_2_11/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | drop database if exists test_db_1; 2 | drop database if exists dst_test_db_2; -------------------------------------------------------------------------------- /dt-tests/tests/pg_to_starrocks/struct_3_2_11_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | 4 | use serial_test::serial; 5 | 6 | use crate::test_runner::test_base::TestBase; 7 | 8 | #[tokio::test] 9 | #[serial] 10 | async fn struct_basic_test() { 11 | TestBase::run_mysql_struct_test("pg_to_starrocks/struct/3_2_11/basic_test").await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/2_8/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/2_8/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/4_0/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/4_0/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/5_0/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/5_0/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/6_0/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/6_0/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/6_2/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/6_2/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_basic_test/topo1_node1_to_node2/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_basic_test/topo1_node1_to_node2/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_basic_test/topo1_node1_to_node2/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_1_1 val_1 2 | SET set_key_1_2_中文 val_2_中文 3 | SET "set_key_1_3_ 😀" "val_2_ 😀" 4 | 5 | SELECT 2 6 | 7 | HSET hset_key_1_1 field_1 val_1 8 | 9 | SELECT 3 10 | 11 | HMSET hmset_key_1_1 field_1 val_1 field_2_中文 val_2_中文 "field_3_ 😀" "val_3_ 😀" 12 | 13 | SELECT 4 14 | 15 | LPUSH list_key_1_1 val_1 16 | RPUSH list_key_1_1 val_2 val_3 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_basic_test/topo1_node2_to_node1/dst_prepare.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/redis_to_redis/cdc/7_0/cycle_basic_test/topo1_node2_to_node1/dst_prepare.sql -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_basic_test/topo1_node2_to_node1/src_prepare.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/redis_to_redis/cdc/7_0/cycle_basic_test/topo1_node2_to_node1/src_prepare.sql -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_basic_test/topo1_node2_to_node1/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_2_1 val_1 2 | SET set_key_2_2_中文 val_2_中文 3 | SET "set_key_2_3_ 😀" "val_2_ 😀" 4 | 5 | SELECT 2 6 | 7 | HSET hset_key_2_1 field_1 val_1 8 | 9 | SELECT 3 10 | 11 | HMSET hmset_key_2_1 field_1 val_1 field_2_中文 val_2_中文 "field_3_ 😀" "val_3_ 😀" 12 | 13 | SELECT 4 14 | 15 | LPUSH list_key_2_1 val_1 16 | RPUSH list_key_2_1 val_2 val_3 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node1_to_node2/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node1_to_node2/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node1_to_node2/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_1_1 val_1 2 | SET set_key_1_2_中文 val_2_中文 3 | SET "set_key_1_3_ 😀" "val_2_ 😀" 4 | 5 | SELECT 2 6 | 7 | HSET hset_key_1_1 field_1 val_1 8 | 9 | SELECT 3 10 | 11 | HMSET hmset_key_1_1 field_1 val_1 field_2_中文 val_2_中文 "field_3_ 😀" "val_3_ 😀" 12 | 13 | SELECT 4 14 | 15 | LPUSH list_key_1_1 val_1 16 | RPUSH list_key_1_1 val_2 val_3 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node1_to_node3/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node1_to_node3/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node1_to_node3/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node1_to_node3/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node2_to_node1/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node2_to_node1/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node2_to_node1/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_2_1 val_1 2 | SET set_key_2_2_中文 val_2_中文 3 | SET "set_key_2_3_ 😀" "val_2_ 😀" 4 | 5 | SELECT 2 6 | 7 | HSET hset_key_2_1 field_1 val_1 8 | 9 | SELECT 3 10 | 11 | HMSET hmset_key_2_1 field_1 val_1 field_2_中文 val_2_中文 "field_3_ 😀" "val_3_ 😀" 12 | 13 | SELECT 4 14 | 15 | LPUSH list_key_2_1 val_1 16 | RPUSH list_key_2_1 val_2 val_3 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node2_to_node3/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node2_to_node3/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node2_to_node3/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node2_to_node3/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node3_to_node1/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node3_to_node1/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node3_to_node1/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_3_1 val_1 2 | SET set_key_3_2_中文 val_2_中文 3 | SET "set_key_3_3_ 😀" "val_2_ 😀" 4 | 5 | SELECT 2 6 | 7 | HSET hset_key_3_1 field_1 val_1 8 | 9 | SELECT 3 10 | 11 | HMSET hmset_key_3_1 field_1 val_1 field_2_中文 val_2_中文 "field_3_ 😀" "val_3_ 😀" 12 | 13 | SELECT 4 14 | 15 | LPUSH list_key_3_1 val_1 16 | RPUSH list_key_3_1 val_2 val_3 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node3_to_node2/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node3_to_node2/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node3_to_node2/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/redis_to_redis/cdc/7_0/cycle_net_test/topo1_node3_to_node2/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node1_to_node2/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node1_to_node2/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node1_to_node2/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_1_1 val_1 2 | SET set_key_1_2_中文 val_2_中文 3 | SET "set_key_1_3_ 😀" "val_2_ 😀" 4 | 5 | SELECT 2 6 | 7 | HSET hset_key_1_1 field_1 val_1 8 | 9 | SELECT 3 10 | 11 | HMSET hmset_key_1_1 field_1 val_1 field_2_中文 val_2_中文 "field_3_ 😀" "val_3_ 😀" 12 | 13 | SELECT 4 14 | 15 | LPUSH list_key_1_1 val_1 16 | RPUSH list_key_1_1 val_2 val_3 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node1_to_node3/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node1_to_node3/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node1_to_node3/src_test.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node1_to_node3/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node2_to_node1/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node2_to_node1/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node2_to_node1/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_2_1 val_1 2 | SET set_key_2_2_中文 val_2_中文 3 | SET "set_key_2_3_ 😀" "val_2_ 😀" 4 | 5 | SELECT 2 6 | 7 | HSET hset_key_2_1 field_1 val_1 8 | 9 | SELECT 3 10 | 11 | HMSET hmset_key_2_1 field_1 val_1 field_2_中文 val_2_中文 "field_3_ 😀" "val_3_ 😀" 12 | 13 | SELECT 4 14 | 15 | LPUSH list_key_2_1 val_1 16 | RPUSH list_key_2_1 val_2 val_3 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node3_to_node1/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node3_to_node1/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/cycle_star_test/topo1_node3_to_node1/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_3_1 val_1 2 | SET set_key_3_2_中文 val_2_中文 3 | SET "set_key_3_3_ 😀" "val_2_ 😀" 4 | 5 | SELECT 2 6 | 7 | HSET hset_key_3_1 field_1 val_1 8 | 9 | SELECT 3 10 | 11 | HMSET hmset_key_3_1 field_1 val_1 field_2_中文 val_2_中文 "field_3_ 😀" "val_3_ 😀" 12 | 13 | SELECT 4 14 | 15 | LPUSH list_key_3_1 val_1 16 | RPUSH list_key_3_1 val_2 val_3 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/filter_db_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/filter_db_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/filter_db_test/src_test.sql: -------------------------------------------------------------------------------- 1 | SET 0-0 0 2 | SET 0-1 1 3 | 4 | SELECT 1 5 | SET 1-0 0 6 | HSET 1-1 field1 "hello" field2 "world" 7 | RPUSH 1-2 "Hello" 8 | SADD 1-3 "Hello" 9 | ZADD 1-4 0 a 1 b 2 c 10 | XADD 1-5 1526919030474-55 message "Hello," 11 | 12 | SELECT 2 13 | SET 2-0 0 14 | SET 2-1 1 15 | 16 | SELECT 3 17 | SET 3-0 0 18 | SET 3-1 1 19 | 20 | SELECT 4 21 | SET 4-0 0 22 | SET 4-1 1 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/heartbeat_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/heartbeat_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/multi_dbs_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/multi_dbs_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/multi_dbs_test/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_0 val_0 2 | 3 | SELECT 1 4 | 5 | SET set_key_1 val_1 6 | 7 | SELECT 2 8 | 9 | SET set_key_2_0 val_2_0 10 | SET set_key_2_1 val_2_1 11 | 12 | SELECT 3 13 | 14 | SET set_key_3 val_3 15 | 16 | SELECT 2 17 | 18 | DEL set_key_2_0 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/multi_exec_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/multi_exec_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/multi_exec_test/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_0 val_0 2 | 3 | SELECT 1 4 | 5 | SET set_key_1 val_1 6 | 7 | MULTI 8 | SELECT 2 9 | 10 | SET set_key_2_0 val_2_0 11 | SET set_key_2_1 val_2_1 12 | 13 | SELECT 3 14 | 15 | SET set_key_3 val_3 16 | 17 | SELECT 2 18 | 19 | DEL set_key_2_0 20 | EXEC -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/to_cluster_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/7_0/to_cluster_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/cross_version/2_8_to_7_0/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/cross_version/2_8_to_7_0/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/cross_version/4_0_to_7_0/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/cross_version/4_0_to_7_0/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/cross_version/5_0_to_7_0/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/cross_version/5_0_to_7_0/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/cross_version/6_0_to_7_0/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/cross_version/6_0_to_7_0/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/cross_version/6_2_to_7_0/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/cross_version/6_2_to_7_0/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/rebloom/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/rebloom/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/redisearch/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/redisearch/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/rejson/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc/rejson/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc_2_8_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn cdc_cmds_test() { 9 | TestBase::run_redis_cdc_test("redis_to_redis/cdc/2_8/cmds_test", 2000, 10000).await; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc_4_0_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn cdc_cmds_test() { 9 | TestBase::run_redis_cdc_test("redis_to_redis/cdc/4_0/cmds_test", 2000, 10000).await; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc_5_0_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn cdc_cmds_test() { 9 | TestBase::run_redis_cdc_test("redis_to_redis/cdc/5_0/cmds_test", 2000, 10000).await; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc_6_0_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn cdc_cmds_test() { 9 | TestBase::run_redis_cdc_test("redis_to_redis/cdc/6_0/cmds_test", 2000, 10000).await; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc_6_2_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn cdc_cmds_test() { 9 | TestBase::run_redis_cdc_test("redis_to_redis/cdc/6_2/cmds_test", 2000, 10000).await; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc_rebloom_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn cdc_cmds_test() { 9 | TestBase::run_redis_cdc_test("redis_to_redis/cdc/rebloom/cmds_test", 2000, 10000).await; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc_redisearch_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | // TODO, fix psync for redisearch 7 | // #[tokio::test] 8 | #[serial] 9 | async fn cdc_cmds_test() { 10 | TestBase::run_redis_cdc_test("redis_to_redis/cdc/redisearch/cmds_test", 2000, 10000).await; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/cdc_rejson_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn cdc_cmds_test() { 9 | TestBase::run_redis_rejson_cdc_test("redis_to_redis/cdc/rejson/cmds_test", 2000, 10000) 10 | .await; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/precheck/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/precheck/basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/hash_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/hash_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/length_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/length_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/list_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/list_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/set_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/set_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/string_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/string_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/zset_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/2_8/zset_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/4_0/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/4_0/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/hash_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/hash_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/length_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/length_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/list_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/list_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/set_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/set_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/stream_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/stream_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/string_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/string_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/zset_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/5_0/zset_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/6_0/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/6_0/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/6_2/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/6_2/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/filter_db_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/filter_db_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/filter_db_test/src_test.sql: -------------------------------------------------------------------------------- 1 | SET 0-0 0 2 | SET 0-1 1 3 | 4 | SELECT 1 5 | SET 1-0 0 6 | HSET 1-1 field1 "hello" field2 "world" 7 | RPUSH 1-2 "Hello" 8 | SADD 1-3 "Hello" 9 | ZADD 1-4 0 a 1 b 2 c 10 | XADD 1-5 1526919030474-55 message "Hello," 11 | 12 | SELECT 2 13 | SET 2-0 0 14 | SET 2-1 1 15 | 16 | SELECT 3 17 | SET 3-0 0 18 | SET 3-1 1 19 | 20 | SELECT 4 21 | SET 4-0 0 22 | SET 4-1 1 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/hash_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/hash_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/length_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/length_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/list_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/list_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/multi_dbs_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/multi_dbs_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/multi_dbs_test/src_test.sql: -------------------------------------------------------------------------------- 1 | SET set_key_0 val_0 2 | 3 | SELECT 1 4 | 5 | SET set_key_1 val_1 6 | 7 | SELECT 2 8 | 9 | SET set_key_2_0 val_2_0 10 | SET set_key_2_1 val_2_1 11 | 12 | SELECT 3 13 | 14 | SET set_key_3 val_3 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/rewrite_stream_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/rewrite_stream_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/rewrite_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/rewrite_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/set_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/set_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/statistic_big_key_rdb_test/cmds_for_rdb.sql: -------------------------------------------------------------------------------- 1 | -- refer to: ../statistic_big_key_test/src_test.sql -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/statistic_big_key_rdb_test/dump.rdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apecloud/ape-dts/41b7c6d9120854884fc0457b6cf144fefdddd28f/dt-tests/tests/redis_to_redis/snapshot/7_0/statistic_big_key_rdb_test/dump.rdb -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/statistic_big_key_rdb_test/task_config.ini: -------------------------------------------------------------------------------- 1 | [extractor] 2 | db_type=redis 3 | extract_type=snapshot_file 4 | file_path=./dt-tests/tests/redis_to_redis/snapshot/7_0/statistic_big_key_rdb_test/dump.rdb 5 | 6 | [filter] 7 | do_dbs=* 8 | ignore_dbs=2,3 9 | 10 | [sinker] 11 | db_type=redis 12 | sink_type=statistic 13 | data_size_threshold=20 14 | statistic_type=big_key 15 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/statistic_big_key_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/statistic_big_key_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/statistic_hot_key_test/expect_statistic_log/statistic.log: -------------------------------------------------------------------------------- 1 | {"db_id":0,"key":"sets_key_1","freq":6} 2 | {"db_id":0,"key":"set_key_1_ 😀","freq":6} 3 | {"db_id":0,"key":"hmset_key_1","freq":6} 4 | {"db_id":0,"key":"list_key_1","freq":6} 5 | {"db_id":0,"key":"zset_key_1","freq":6} 6 | {"db_id":0,"key":"hset_key_1","freq":6} 7 | {"db_id":0,"key":"stream_key_1 中文😀","freq":6} 8 | {"db_id":0,"key":"mset_key_1","freq":6} -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/statistic_hot_key_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/stream_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/stream_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/string_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/string_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/to_cluster_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/to_cluster_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/zset_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/7_0/zset_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/cross_version/2_8_to_7_0/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/cross_version/2_8_to_7_0/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/cross_version/4_0_to_7_0/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/cross_version/4_0_to_7_0/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/cross_version/5_0_to_7_0/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/cross_version/5_0_to_7_0/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/cross_version/6_0_to_7_0/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/cross_version/6_0_to_7_0/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/cross_version/6_2_to_7_0/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/cross_version/6_2_to_7_0/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/rebloom/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/rebloom/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/redisearch/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/redisearch/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/rejson/cmds_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot/rejson/cmds_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot_4_0_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn snapshot_cmds_test() { 9 | TestBase::run_redis_snapshot_test("redis_to_redis/snapshot/4_0/cmds_test").await; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot_6_0_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn snapshot_cmds_test() { 9 | TestBase::run_redis_snapshot_test("redis_to_redis/snapshot/6_0/cmds_test").await; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot_6_2_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn snapshot_cmds_test() { 9 | TestBase::run_redis_snapshot_test("redis_to_redis/snapshot/6_2/cmds_test").await; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot_and_cdc/7_0/basic_test/dst_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot_and_cdc/7_0/basic_test/src_prepare.sql: -------------------------------------------------------------------------------- 1 | flushall 2 | 3 | SET 0-0 0 4 | SET 0-1 1 5 | 6 | SELECT 1 7 | SET 1-0 0 8 | SET 1-1 0 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot_and_cdc/7_0/basic_test/src_test.sql: -------------------------------------------------------------------------------- 1 | SELECT 2 2 | SET 2-0 0 3 | SET 2-1 1 4 | 5 | SELECT 3 6 | SET 3-0 0 7 | SET 3-1 1 -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot_and_cdc_7_0_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | 5 | use serial_test::serial; 6 | 7 | #[tokio::test] 8 | #[serial] 9 | async fn snapshot_and_cdc_basic_test() { 10 | TestBase::run_redis_cdc_test("redis_to_redis/snapshot_and_cdc/7_0/basic_test", 2000, 3000) 11 | .await; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot_rebloom_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn snapshot_cmds_test() { 9 | TestBase::run_redis_snapshot_test("redis_to_redis/snapshot/rebloom/cmds_test").await; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot_redisearch_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | // TODO, fix psync for redisearch 7 | // #[tokio::test] 8 | #[serial] 9 | async fn snapshot_cmds_test() { 10 | TestBase::run_redis_redisearch_snapshot_test( 11 | "redis_to_redis/snapshot/redisearch/cmds_test", 12 | ) 13 | .await; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /dt-tests/tests/redis_to_redis/snapshot_rejson_tests.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod test { 3 | use crate::test_runner::test_base::TestBase; 4 | use serial_test::serial; 5 | 6 | #[tokio::test] 7 | #[serial] 8 | async fn snapshot_cmds_test() { 9 | TestBase::run_redis_rejson_snapshot_test("redis_to_redis/snapshot/rejson/cmds_test").await; 10 | } 11 | } 12 | --------------------------------------------------------------------------------