Skip to content

[Improve](streaming job) support custom table name mapping for CDC streaming job #61317

Open
JNSimba wants to merge 3 commits intoapache:masterfrom
JNSimba:pg-tablemapping
Open

[Improve](streaming job) support custom table name mapping for CDC streaming job #61317
JNSimba wants to merge 3 commits intoapache:masterfrom
JNSimba:pg-tablemapping

Conversation

@JNSimba
Copy link
Member

@JNSimba JNSimba commented Mar 13, 2026

What problem does this PR solve?

Summary

Add support for mapping upstream (PostgreSQL) table names to custom downstream (Doris) table names
in CDC streaming jobs. Without this feature, the Doris target table must have the same name as the
upstream source table.

New configuration

Key format: "table.<srcTable>.target_table" = "<dstTable>" in the FROM clause properties.

CREATE JOB my_job
  ON STREAMING
  FROM POSTGRES (
    ...
    "include_tables" = "pg_orders",
    "table.pg_orders.target_table" = "doris_orders"
  )
  TO DATABASE mydb (...)

When not configured, behavior is unchanged (target table name = source table name).

Key design decisions

  • generateCreateTableCmds returns LinkedHashMap<srcName, CreateTableCommand> so callers can
    distinguish source names (for CDC monitoring) from target names (for DDL) — this fixes a bug
    where the CDC split assigner would look up the Doris target table name in PostgreSQL
  • Multi-table merge is supported: two source tables can map to the same Doris table

Test plan

  • test_streaming_postgres_job_table_mapping: basic mapping (INSERT/UPDATE/DELETE land in mapped table; Doris table
    created with target name, not source name)
  • test_streaming_postgres_job_table_mapping: multi-table merge (two PG tables → one Doris table, snapshot +
    incremental)

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason
  • Behavior changed:

    • No.
    • Yes.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

@Thearas
Copy link
Contributor

Thearas commented Mar 13, 2026

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@JNSimba JNSimba requested a review from Copilot March 13, 2026 09:37
@JNSimba
Copy link
Member Author

JNSimba commented Mar 13, 2026

/review

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds support for streaming CDC jobs (Postgres) to map upstream source table names to different Doris target table names via per-table config (table.<src>.target_table), including schema-change DDL routing and regression coverage.

Changes:

  • Introduce per-table config key constants and validation for table.<tableName>.<suffix> (adds target_table suffix).
  • Update FE table auto-creation to create Doris tables using mapped target names while keeping CDC monitoring based on source table names.
  • Update CDC client to route stream-load writes and schema-change DDLs to mapped target tables; add regression tests for mapping + multi-source merge.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
regression-test/suites/job_p0/streaming_job/cdc/test_streaming_postgres_job_table_mapping.groovy New regression suite covering table name mapping and two-source-to-one-target merge.
regression-test/data/job_p0/streaming_job/cdc/test_streaming_postgres_job_table_mapping.out Expected results for the new mapping regression suite.
fs_brokers/cdc_client/src/main/java/org/apache/doris/cdcclient/utils/ConfigUtil.java Adds helper to parse all table.<src>.target_table mappings from config.
fs_brokers/cdc_client/src/main/java/org/apache/doris/cdcclient/source/deserialize/PostgresDebeziumJsonDeserializer.java Route schema-change DDLs to the mapped Doris target table.
fs_brokers/cdc_client/src/main/java/org/apache/doris/cdcclient/source/deserialize/DebeziumJsonDeserializer.java Cache parsed source→target mappings and provide resolveTargetTable().
fs_brokers/cdc_client/src/main/java/org/apache/doris/cdcclient/service/PipelineCoordinator.java Route stream-load writes to mapped target table names.
fe/fe-core/src/main/java/org/apache/doris/job/util/StreamingJobUtils.java Generate CREATE TABLE commands keyed by source table name and create Doris tables using mapped target names.
fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/streaming/StreamingInsertJob.java Use the new source→CreateTableCommand mapping and ensure CDC monitors source tables.
fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/streaming/DataSourceConfigValidator.java Validate per-table config key format and allowlisted suffixes.
fe/fe-common/src/main/java/org/apache/doris/job/cdc/DataSourceConfigKeys.java Adds per-table key constants (table, exclude_columns, target_table).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Summary

This PR adds support for mapping upstream (PostgreSQL) table names to custom downstream (Doris) table names in CDC streaming jobs. The design is generally sound — the mapping is applied consistently across FE table creation, CDC client DML writes, and schema change DDL generation.

Critical Checkpoints

Goal achievement: The code accomplishes the stated goal. Table name mapping is applied in all three necessary places: (1) FE CreateTableCommand uses the mapped target name, (2) PipelineCoordinator routes DML records to the mapped Doris table, (3) PostgresDebeziumJsonDeserializer generates DDLs with the mapped name. Regression tests cover both basic mapping and multi-table merge scenarios.

Modification focus: The change is focused and touches only the necessary files. Good.

Concurrency: targetTableMappingsCache in DebeziumJsonDeserializer is a plain HashMap written once in init() and only read afterwards. This is safe in practice but could be made more robust with Collections.unmodifiableMap(). Low risk, not blocking.

Lifecycle management: No special lifecycle concerns.

Configuration items: New config key format table.<src>.target_table is validated in DataSourceConfigValidator. Dynamic changes not applicable (job creation time only).

Incompatible changes: The return type of generateCreateTableCmds changed from List<CreateTableCommand> to LinkedHashMap<String, CreateTableCommand>. This has only one caller (createTableIfNotExists), so no compatibility concern.

Parallel code paths: MySqlDebeziumJsonDeserializer exists as a parallel path. Its DML write routing goes through the same PipelineCoordinator code (correctly mapped). Its handleSchemaChangeEvent() is a TODO stub that returns empty, so no mapping needed yet. When implemented, it will need to use resolveTargetTable() — the infrastructure is already in the base class. Acceptable.

Test coverage: Good. Two regression test cases cover basic mapping (INSERT/UPDATE/DELETE) and multi-table merge (two PG tables → one Doris table). Tests use ORDER BY for deterministic output. Tables are dropped before use, not after. .out file appears auto-generated.

Observability: No new critical paths requiring additional logging. Existing log messages correctly use source table identifiers.

Persistence/transactions: Not applicable — no EditLog or transaction modifications.

Issues Found

  1. [CRITICAL] Compilation error in ConfigUtil.java: Missing import java.util.HashMap and import org.apache.doris.job.cdc.DataSourceConfigKeys. The new parseAllTargetTableMappings method uses HashMap and DataSourceConfigKeys but neither is imported. This file will not compile.

  2. [Minor] Dead code: TABLE_EXCLUDE_COLUMNS_SUFFIX is declared in DataSourceConfigKeys but never referenced anywhere in the codebase (not in the validator's ALLOW_TABLE_LEVEL_SUFFIXES, not in any consumer). If this is a placeholder for a future feature, it should be removed from this PR and added when actually needed to avoid confusion.

  3. [Minor] Validator rejects table names containing dots: The DataSourceConfigValidator splits on . and requires exactly 3 parts. A table name containing a dot (e.g., my.table) would produce more parts and be rejected. PostgreSQL allows dots in quoted identifiers. Consider documenting this limitation or using indexOf/lastIndexOf instead of split.

throw new IllegalArgumentException("Malformed per-table config key: '" + key
+ "'. Expected format: table.<tableName>.<suffix>");
}
String suffix = parts[parts.length - 1];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Minor] Table names with dots will be rejected: split("\\.", -1) with parts.length != 3 means that a table name containing a dot (e.g., table.my.dotted.table.target_table) will produce more than 3 parts and fail validation. PostgreSQL allows dots in quoted identifiers.

Consider using indexOf/lastIndexOf instead:

int firstDot = key.indexOf('.', TABLE_LEVEL_PREFIX.length());
int lastDot = key.lastIndexOf('.');
if (firstDot == -1 || firstDot != lastDot - ???) { ... }

Or at minimum, document this limitation (no dots in source table names).

@JNSimba
Copy link
Member Author

JNSimba commented Mar 13, 2026

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 26847 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit e59494ac1f4eeff35a2aa03ad4f761dfe2b1e70b, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17604	4504	4304	4304
q2	q3	10655	782	523	523
q4	4686	375	267	267
q5	7551	1216	1013	1013
q6	182	182	152	152
q7	794	833	677	677
q8	9306	1554	1361	1361
q9	4731	4752	4712	4712
q10	6246	1874	1669	1669
q11	453	271	254	254
q12	707	559	470	470
q13	18023	2931	2153	2153
q14	235	226	213	213
q15	q16	750	727	670	670
q17	726	870	433	433
q18	5899	5374	5252	5252
q19	1121	970	617	617
q20	543	491	369	369
q21	4370	1860	1443	1443
q22	338	295	392	295
Total cold run time: 94920 ms
Total hot run time: 26847 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	4895	4622	4619	4619
q2	q3	3895	4328	3809	3809
q4	869	1196	763	763
q5	4100	4400	4312	4312
q6	187	180	144	144
q7	1726	1667	1514	1514
q8	2498	2742	2510	2510
q9	7610	7412	7593	7412
q10	3793	3970	3645	3645
q11	528	431	421	421
q12	501	602	462	462
q13	2712	3224	2370	2370
q14	285	292	272	272
q15	q16	709	740	737	737
q17	1130	1314	1374	1314
q18	7258	6855	6589	6589
q19	987	1116	938	938
q20	2080	2158	2038	2038
q21	3950	3458	3362	3362
q22	456	440	396	396
Total cold run time: 50169 ms
Total hot run time: 47627 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 169055 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit e59494ac1f4eeff35a2aa03ad4f761dfe2b1e70b, data reload: false

query5	4321	653	527	527
query6	317	257	208	208
query7	4221	477	272	272
query8	346	253	240	240
query9	8685	2758	2770	2758
query10	510	382	342	342
query11	7036	5110	4909	4909
query12	185	130	130	130
query13	1266	466	354	354
query14	5770	3754	3522	3522
query14_1	2892	2888	2856	2856
query15	206	197	177	177
query16	1002	473	455	455
query17	1122	736	610	610
query18	2453	453	356	356
query19	212	213	188	188
query20	139	127	134	127
query21	231	149	116	116
query22	13292	14127	14831	14127
query23	16066	16056	15518	15518
query23_1	15635	15573	15519	15519
query24	7106	1648	1264	1264
query24_1	1257	1243	1253	1243
query25	545	523	402	402
query26	1245	262	149	149
query27	2771	488	299	299
query28	4482	1847	1843	1843
query29	822	551	479	479
query30	300	230	195	195
query31	1002	952	883	883
query32	88	71	78	71
query33	506	331	276	276
query34	910	870	528	528
query35	651	688	605	605
query36	1115	1139	1028	1028
query37	137	99	86	86
query38	2962	2917	2857	2857
query39	870	843	800	800
query39_1	793	795	778	778
query40	228	157	140	140
query41	64	60	57	57
query42	266	252	259	252
query43	241	259	230	230
query44	
query45	199	192	193	192
query46	887	984	619	619
query47	2085	2113	2059	2059
query48	321	331	224	224
query49	625	461	383	383
query50	704	281	214	214
query51	4048	4085	3978	3978
query52	262	272	258	258
query53	307	343	289	289
query54	304	275	268	268
query55	98	86	92	86
query56	323	322	312	312
query57	1968	1820	1733	1733
query58	286	285	270	270
query59	2816	2936	2766	2766
query60	351	338	323	323
query61	152	148	158	148
query62	613	593	550	550
query63	323	289	281	281
query64	5036	1259	979	979
query65	
query66	1463	458	348	348
query67	24361	24349	24309	24309
query68	
query69	411	319	280	280
query70	1007	942	975	942
query71	349	316	316	316
query72	2835	2732	2618	2618
query73	546	557	320	320
query74	9649	9621	9423	9423
query75	2887	2783	2483	2483
query76	2314	1055	702	702
query77	380	417	350	350
query78	10862	11140	10446	10446
query79	1165	778	585	585
query80	1321	640	558	558
query81	548	259	222	222
query82	1012	156	122	122
query83	342	264	247	247
query84	248	118	104	104
query85	905	505	448	448
query86	426	298	274	274
query87	3176	3123	3077	3077
query88	3612	2688	2688	2688
query89	434	378	343	343
query90	2029	180	176	176
query91	170	160	143	143
query92	81	75	76	75
query93	978	860	502	502
query94	640	333	303	303
query95	594	340	382	340
query96	642	539	231	231
query97	2429	2489	2368	2368
query98	240	223	222	222
query99	1013	991	897	897
Total cold run time: 249134 ms
Total hot run time: 169055 ms

@JNSimba JNSimba requested a review from Copilot March 16, 2026 02:14
@JNSimba
Copy link
Member Author

JNSimba commented Mar 16, 2026

/review

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds support for mapping upstream CDC source table names to different Doris target table names for streaming jobs (e.g., Postgres), and validates/loads data/DDL against the mapped targets.

Changes:

  • Introduce table.<src>.target_table per-table config and plumb it through FE table creation and BE/cdc_client stream-load routing.
  • Update Postgres Debezium schema-change DDL generation to apply to the mapped Doris table name.
  • Add regression coverage for 1:1 mapping and multi-source → single-target merge.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
regression-test/suites/job_p0/streaming_job/cdc/test_streaming_postgres_job_table_mapping.groovy New regression test validating table name mapping + merge behavior
regression-test/data/job_p0/streaming_job/cdc/test_streaming_postgres_job_table_mapping.out Expected outputs for the new regression test
fs_brokers/cdc_client/src/main/java/org/apache/doris/cdcclient/utils/ConfigUtil.java Add parsing helper for all target_table mappings from config
fs_brokers/cdc_client/src/main/java/org/apache/doris/cdcclient/source/deserialize/DebeziumJsonDeserializer.java Cache mapping parsed during deserializer init and expose resolver
fs_brokers/cdc_client/src/main/java/org/apache/doris/cdcclient/source/deserialize/PostgresDebeziumJsonDeserializer.java Emit schema-change DDL against mapped Doris table name
fs_brokers/cdc_client/src/main/java/org/apache/doris/cdcclient/service/PipelineCoordinator.java Route stream-load writes to mapped Doris table name
fe/fe-core/src/main/java/org/apache/doris/job/util/StreamingJobUtils.java Create Doris tables using mapped target table name; return source→command mapping
fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/streaming/StreamingInsertJob.java Use source table names for CDC monitoring/splitting while creating mapped target tables
fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/streaming/DataSourceConfigValidator.java Add validation for per-table config key format and per-table suffix allowlist
fe/fe-common/src/main/java/org/apache/doris/job/cdc/DataSourceConfigKeys.java Define per-table config prefix/suffix constants incl. target_table

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Summary

This PR adds support for mapping upstream (PostgreSQL) table names to custom downstream (Doris) table names in CDC streaming jobs. The overall design is clean and the mapping is correctly applied across FE (table creation, CDC monitoring), cdc_client DML routing (PipelineCoordinator), and DDL generation (PostgresDebeziumJsonDeserializer). Tests cover both basic mapping and multi-table merge scenarios.

Critical Checkpoint Conclusions

1. Goal accomplishment: The PR achieves its stated goal — source-to-target table name mapping works for table creation, DML routing, and schema change DDL generation. Tests prove basic and multi-table merge scenarios.

2. Modification scope: Focused and minimal. Changes are spread across the correct layers (FE config/validation, FE job utils, cdc_client coordinator/deserializer/util).

3. Concurrency: No new concurrency concerns. targetTableMappingsCache in DebeziumJsonDeserializer is populated once in init() and read-only afterward. targetTableMappings in PipelineCoordinator.writeRecords() is local to the method.

4. Lifecycle management: No special lifecycle concerns. The mapping cache is a simple HashMap with no circular references.

5. Configuration items: New config key format table.<srcTable>.target_table is properly validated in DataSourceConfigValidator. No dynamic change concerns (config is set at job creation time).

6. Incompatible changes: Return type of generateCreateTableCmds changed from List<CreateTableCommand> to LinkedHashMap<String, CreateTableCommand>. This is an internal API — no external compatibility concern.

7. Parallel code paths: MySQL deserializer (MySqlDebeziumJsonDeserializer) has a stub handleSchemaChangeEvent() — no mapping needed there yet. When MySQL DDL handling is implemented, it must use resolveTargetTable(). The DML routing path in PipelineCoordinator already handles both MySQL and Postgres uniformly. No missing parallel path updates.

8. Test coverage: Good coverage with basic mapping (snapshot + incremental INSERT/UPDATE/DELETE) and multi-table merge. However, negative test cases for the FE validator are missing (see inline comment). Schema change with mapping is also untested.

9. Observability: No new critical paths requiring additional metrics or logging.

10. Data correctness: See inline comments regarding multi-table merge with schema-incompatible source tables.

Issues Found

See inline comments for details. Summary:

  1. [Medium] Dead constant: TABLE_EXCLUDE_COLUMNS_SUFFIX is defined but not used or permitted by the validator.
  2. [Medium] Multi-table merge schema safety: When two source tables with different schemas map to the same Doris target, only the first source table's schema is used. The second is silently skipped. This could cause runtime insert failures.
  3. [Low] Parsing inconsistency: FE validator uses split(".") requiring exactly 3 parts, while cdc_client uses prefix/suffix matching. They behave differently for table names containing dots (theoretical concern for PG/MySQL).
  4. [Low] Missing negative tests: No test for malformed config keys or exclude_columns suffix rejection.

// reject malformed keys like "table.exclude_columns" (missing tableName)
String[] parts = key.split("\\.", -1);
if (parts.length != 3 || parts[1].isEmpty()) {
throw new IllegalArgumentException("Malformed per-table config key: '" + key
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Low] The split("\\.", -1) + parts.length != 3 approach assumes table names never contain dots. While this is typically true for PG/MySQL, note that ConfigUtil.parseAllTargetTableMappings on the cdc_client side uses a prefix/suffix substring approach that correctly handles dots in table names. The two modules use inconsistent parsing strategies for the same key format.

This is a minor issue in practice (PG/MySQL identifiers rarely contain dots), but worth noting as a design inconsistency. Consider aligning both sides to use the same parsing strategy — the prefix/suffix approach is strictly more correct.

createtblCmds.add(createtblCmd);
// Key: source (PG/MySQL) table name; Value: command that creates the Doris target table
createtblCmds.put(table, createtblCmd);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Medium] Multi-table merge schema safety: When two source tables map to the same Doris target table, this LinkedHashMap will contain two entries with different keys but both CreateTableCommand values targeting the same Doris table name. In createTableIfNotExists(), the second entry's CreateTableCommand is silently skipped (because the table already exists after the first entry creates it).

This means the Doris target table is created with only the first source table's schema. If the two source tables have different columns, data from the second source may fail at stream-load time.

Consider either:

  1. Validating that all source tables mapping to the same target have compatible schemas (at least same column names and compatible types), or
  2. Documenting this limitation clearly, or
  3. Merging column definitions (union of columns) when building the CreateTableCommand for shared targets.

The current test works because both PG source tables have identical schemas (id int, name varchar(200)).

@JNSimba
Copy link
Member Author

JNSimba commented Mar 16, 2026

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 26620 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 7631c4dfd98938022847c45b2ef45b6ba0490ef4, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17612	4400	4291	4291
q2	q3	10652	775	517	517
q4	4666	366	251	251
q5	7543	1182	1036	1036
q6	177	173	144	144
q7	780	844	694	694
q8	9519	1406	1278	1278
q9	4861	4729	4689	4689
q10	6343	1906	1646	1646
q11	478	248	243	243
q12	737	578	466	466
q13	18044	2928	2149	2149
q14	225	235	209	209
q15	q16	747	739	660	660
q17	704	847	428	428
q18	5815	5422	5168	5168
q19	1134	969	617	617
q20	546	473	368	368
q21	4514	1817	1460	1460
q22	339	306	413	306
Total cold run time: 95436 ms
Total hot run time: 26620 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	4882	4636	4577	4577
q2	q3	3883	4366	3965	3965
q4	898	1240	796	796
q5	4066	4385	4337	4337
q6	180	175	140	140
q7	1773	1676	1593	1593
q8	2448	2663	2570	2570
q9	7555	7361	7196	7196
q10	3755	3976	3547	3547
q11	548	454	433	433
q12	516	643	454	454
q13	2749	3302	2368	2368
q14	297	302	272	272
q15	q16	711	779	788	779
q17	1166	1308	1347	1308
q18	6979	6802	6709	6709
q19	937	919	915	915
q20	2083	2184	2010	2010
q21	3906	3560	3453	3453
q22	461	428	377	377
Total cold run time: 49793 ms
Total hot run time: 47799 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 166923 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 7631c4dfd98938022847c45b2ef45b6ba0490ef4, data reload: false

query5	4319	615	530	530
query6	324	230	211	211
query7	4214	458	268	268
query8	333	240	233	233
query9	8676	2715	2708	2708
query10	503	377	347	347
query11	6997	5068	4884	4884
query12	181	127	123	123
query13	1270	446	337	337
query14	5540	3649	3433	3433
query14_1	2781	2818	2790	2790
query15	204	195	173	173
query16	980	468	449	449
query17	1108	714	611	611
query18	2453	445	348	348
query19	215	215	183	183
query20	135	133	126	126
query21	213	134	108	108
query22	13236	13327	13024	13024
query23	15910	15440	15503	15440
query23_1	15826	15823	15628	15628
query24	7677	1707	1322	1322
query24_1	1327	1287	1366	1287
query25	671	529	445	445
query26	1279	278	167	167
query27	2942	504	321	321
query28	4739	1945	1927	1927
query29	833	557	483	483
query30	296	222	190	190
query31	1022	934	861	861
query32	82	70	68	68
query33	503	336	280	280
query34	878	854	519	519
query35	631	677	584	584
query36	1064	1160	917	917
query37	131	94	77	77
query38	2962	2878	2928	2878
query39	873	851	806	806
query39_1	780	789	796	789
query40	225	169	136	136
query41	62	59	57	57
query42	258	253	252	252
query43	237	246	216	216
query44	
query45	196	188	184	184
query46	869	981	600	600
query47	2112	2144	2039	2039
query48	326	316	273	273
query49	629	454	391	391
query50	671	269	212	212
query51	4349	4183	3976	3976
query52	259	263	262	262
query53	291	333	282	282
query54	287	280	262	262
query55	91	84	83	83
query56	310	310	313	310
query57	1917	1848	1723	1723
query58	278	274	265	265
query59	2802	2919	2725	2725
query60	333	335	323	323
query61	168	141	146	141
query62	616	584	534	534
query63	305	278	272	272
query64	5132	1248	995	995
query65	
query66	1480	462	356	356
query67	24149	24213	24106	24106
query68	
query69	409	311	280	280
query70	940	960	924	924
query71	340	307	303	303
query72	2817	2596	2377	2377
query73	535	569	318	318
query74	9599	9571	9390	9390
query75	2825	2736	2438	2438
query76	2282	1024	670	670
query77	353	407	298	298
query78	10783	11150	10466	10466
query79	2663	771	583	583
query80	1726	606	539	539
query81	538	257	224	224
query82	1012	149	121	121
query83	328	258	239	239
query84	252	115	101	101
query85	885	488	437	437
query86	404	334	293	293
query87	3113	3222	3024	3024
query88	3542	2639	2640	2639
query89	421	377	340	340
query90	2013	174	168	168
query91	169	156	133	133
query92	74	75	67	67
query93	1191	824	490	490
query94	640	306	270	270
query95	581	387	304	304
query96	634	512	242	242
query97	2475	2463	2419	2419
query98	238	221	221	221
query99	1006	978	915	915
Total cold run time: 251739 ms
Total hot run time: 166923 ms

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants