Skip to content

[feature](read-uncommitted) Add READ UNCOMMITTED isolation level (Phase 1)#60586

Open
dataroaring wants to merge 14 commits intomasterfrom
feature/read-uncommitted-phase1
Open

[feature](read-uncommitted) Add READ UNCOMMITTED isolation level (Phase 1)#60586
dataroaring wants to merge 14 commits intomasterfrom
feature/read-uncommitted-phase1

Conversation

@dataroaring
Copy link
Contributor

Summary

  • Add SET read_uncommitted = true session variable to enable READ UNCOMMITTED isolation level
  • Introduce UncommittedRowsetRegistry — a sharded concurrent registry that tracks uncommitted rowsets and computes cross-uncommitted delete bitmaps asynchronously for MoW (merge-on-write) UNIQUE_KEYS tables
  • Integrate with write path (RowsetBuilder/CloudRowsetBuilder), publish/rollback cleanup (TxnManager/CloudTxnDeleteBitmapCache), compaction (invalidate + recompute), schema change (clear on non-RUNNING state), and scan operator (inject dedup-ready uncommitted rowsets into read sources)
  • Supports both local and cloud modes; DUP_KEYS and UNIQUE_KEYS tables (AGG_KEYS excluded)

Architecture

Three-layer delete bitmap strategy for MoW correctness:

  1. Published: rows deleted across published rowsets (in TabletMeta)
  2. Committed-vs-published: rows in published rowsets superseded by uncommitted rowset (from commit phase)
  3. Cross-uncommitted: rows in earlier uncommitted rowsets superseded by later ones (computed async, serial per tablet)

Test plan

  • DUP table: uncommitted stream load → SET read_uncommitted=true → query sees data
  • MoW UNIQUE table: two uncommitted txns writing same key → only latest value visible
  • Compaction during uncommitted: verify data still visible after re-dedup
  • Schema change during uncommitted: verify no crash, uncommitted data cleaned up
  • AGG_KEYS table: verify uncommitted data is NOT visible (excluded by design)

🤖 Generated with Claude Code

…unpublished rowsets (Phase 1)

Enable queries to read uncommitted but committed-to-storage rowsets via
SET read_uncommitted = true. Supports DUP_KEYS and UNIQUE_KEYS tables
in both local and cloud modes. Includes async cross-uncommitted dedup
for MoW tables with compaction and schema change awareness.
Copilot AI review requested due to automatic review settings February 8, 2026 00:52
@hello-stephen
Copy link
Contributor

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?

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 an opt-in READ UNCOMMITTED query mode by propagating a new read_uncommitted session/query option from FE→BE, and introducing a BE-side UncommittedRowsetRegistry to surface uncommitted rowsets (with async MoW dedup/delete-bitmap handling) to the scan path.

Changes:

  • Add read_uncommitted to TQueryOptions and FE SessionVariable, and forward it to BE runtime state.
  • Introduce UncommittedRowsetRegistry (local + cloud engine integration) to track uncommitted rowsets and compute cross-uncommitted delete bitmaps asynchronously.
  • Hook registry lifecycle into write/commit, publish/rollback cleanup, compaction invalidation, tablet state changes, and OLAP scan source injection.

Reviewed changes

Copilot reviewed 16 out of 16 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
gensrc/thrift/PaloInternalService.thrift Adds read_uncommitted to TQueryOptions for FE→BE propagation.
fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java Introduces session variable and forwards it into thrift query options.
be/src/runtime/runtime_state.h Exposes read_uncommitted() accessor from thrift query options.
be/src/pipeline/exec/olap_scan_operator.cpp Injects dedup-ready uncommitted rowsets (and merges delete bitmaps) into scan read sources when enabled.
be/src/olap/uncommitted_rowset_registry.h Defines registry + entry model for tracking uncommitted rowsets and delete bitmaps.
be/src/olap/uncommitted_rowset_registry.cpp Implements sharded concurrent registry and async cross-uncommitted dedup bitmap computation.
be/src/olap/txn_manager.cpp Unregisters uncommitted rowsets on publish/delete.
be/src/olap/storage_engine.h / be/src/olap/storage_engine.cpp Adds/initializes registry in local storage engine.
be/src/olap/rowset_builder.cpp Registers committed-but-unpublished rowsets into the registry.
be/src/olap/compaction.cpp Notifies registry after compaction to invalidate/recompute dedup state.
be/src/olap/base_tablet.cpp Clears registry entries when tablet leaves RUNNING.
be/src/cloud/cloud_txn_delete_bitmap_cache.cpp Unregisters registry entries when cloud txn info expires/is removed.
be/src/cloud/cloud_storage_engine.h / be/src/cloud/cloud_storage_engine.cpp Adds/initializes registry in cloud storage engine.
be/src/cloud/cloud_rowset_builder.cpp Registers cloud committed-but-unpublished rowsets into the registry.

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

public boolean isInDebugMode() {
return showHiddenColumns || skipDeleteBitmap || skipDeletePredicate || skipDeleteSign || skipStorageEngineMerge
|| skipMissingVersion || skipBadTablet;
|| skipMissingVersion || skipBadTablet || readUncommitted;
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

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

read_uncommitted is added to DEBUG_VARIABLES/isInDebugMode(), which will unexpectedly put the session into “debug mode” and therefore disables MV rewrite and forbids UPDATE/DELETE (see callers of isInDebugMode()). This looks like a functional behavior change unrelated to READ UNCOMMITTED; consider removing it from DEBUG_VARIABLES and isInDebugMode() (or introduce a separate flag/check) so enabling READ UNCOMMITTED doesn’t block DML or planner features.

Suggested change
|| skipMissingVersion || skipBadTablet || readUncommitted;
|| skipMissingVersion || skipBadTablet;

Copilot uses AI. Check for mistakes.
Comment on lines 127 to 140
{
std::shared_lock rlock(shard.lock);
auto it = shard.entries.find(tablet_id);
if (it == shard.entries.end()) {
return;
}

// Invalidate all cross-delete bitmaps and mark not ready
for (auto& entry : it->second) {
if (entry->unique_key_merge_on_write) {
entry->dedup_ready.store(false, std::memory_order_release);
entry->cross_delete_bitmap.reset();
has_mow_entries = true;
}
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

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

on_compaction_completed() mutates UncommittedRowsetEntry state (dedup_ready, cross_delete_bitmap) while only holding a shard shared_lock, and readers access these fields without any locking (e.g. scan injection reads entry->cross_delete_bitmap). This can cause a real data race on the std::shared_ptr assignment/reset. Consider making entry updates copy-on-write (replace the shared_ptr entry object in the vector), or guard bitmap pointers with synchronization (e.g. per-entry mutex or std::atomic<std::shared_ptr<...>>), and use an exclusive shard lock for updates.

Suggested change
{
std::shared_lock rlock(shard.lock);
auto it = shard.entries.find(tablet_id);
if (it == shard.entries.end()) {
return;
}
// Invalidate all cross-delete bitmaps and mark not ready
for (auto& entry : it->second) {
if (entry->unique_key_merge_on_write) {
entry->dedup_ready.store(false, std::memory_order_release);
entry->cross_delete_bitmap.reset();
has_mow_entries = true;
}
std::lock_guard wlock(shard.lock);
auto it = shard.entries.find(tablet_id);
if (it == shard.entries.end()) {
return;
}
// Invalidate all cross-delete bitmaps and mark not ready
for (auto& entry : it->second) {
if (entry->unique_key_merge_on_write) {
entry->dedup_ready.store(false, std::memory_order_release);
entry->cross_delete_bitmap.reset();
has_mow_entries = true;

Copilot uses AI. Check for mistakes.
Comment on lines 134 to 141
// Invalidate all cross-delete bitmaps and mark not ready
for (auto& entry : it->second) {
if (entry->unique_key_merge_on_write) {
entry->dedup_ready.store(false, std::memory_order_release);
entry->cross_delete_bitmap.reset();
has_mow_entries = true;
}
}
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

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

Compaction changes published rowsets/row-ids, so committed_delete_bitmap (layer 2) computed at commit time against published rowsets can become stale after compaction. on_compaction_completed() currently only clears/recomputes cross_delete_bitmap (layer 3), which risks incorrect MoW dedup under READ UNCOMMITTED after compaction. Consider also invalidating and recomputing the committed-vs-published bitmap (or otherwise ensuring it is mapped to the post-compaction rowsets).

Copilot uses AI. Check for mistakes.
dataroaring and others added 11 commits February 7, 2026 18:44
…ompute bitmaps on publish

1. Replace boolean read_uncommitted with MySQL-compatible transaction_isolation
   session variable (supports READ-COMMITTED, READ-UNCOMMITTED). tx_isolation
   is an alias. Default changed from REPEATABLE-READ to READ-COMMITTED.

2. Fix correctness: when a rowset is published, remaining uncommitted rowsets
   need both committed_delete_bitmap (layer 2) and cross_delete_bitmap (layer 3)
   recomputed, because the published rowset changes the set of visible rowsets.
   Store pre_rowset_ids in entries for incremental recomputation.
…tes for READ UNCOMMITTED (Option B)

Remove the complex async cross-uncommitted dedup machinery in favor of
a simpler design that accepts potential duplicate keys across concurrent
uncommitted MoW transactions. This eliminates:
- CalcDeleteBitmapExecutor integration and thread pool usage
- Serial per-tablet dedup mutexes and async task submission
- cross_delete_bitmap, pre_rowset_ids, dedup_ready, creation_time fields
- Compaction hook (on_compaction_completed)
- Bitmap recomputation on publish

The registry is now a simple sharded concurrent map. The scan operator
adds rowset-ID dedup to prevent double-reading during the publish window,
and only merges the committed-vs-published delete bitmap (layer 2).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ommitted rowsets

Delete bitmap handling for READ UNCOMMITTED is complex and not essential
for Phase 1. Uncommitted rowsets are now injected without any bitmap
— MoW UNIQUE_KEYS tablets may show stale key versions under dirty reads,
which is acceptable for this isolation level.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…for MoW tablets

The delete bitmap is already computed by the normal MoW write path —
we just capture it, no extra computation. Without it, READ UNCOMMITTED
on UNIQUE_KEYS tables would show stale rows that should be masked.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ted rowset management

Tablet state handling is not the responsibility of the uncommitted
rowset registry — it is handled upstream. Remove on_tablet_state_change
and the TABLET_RUNNING guard during scan.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…e expiration only

Remove unregister_rowset calls from publish, rollback, and expiration
paths in TxnManager and CloudTxnDeleteBitmapCache. Cleanup is now
handled by:
1. Expiration: remove_expired_entries() runs periodically (default 30s)
2. Query-time: scan operator removes entries already in published path

Add uncommitted_rowset_expire_sec config (default 30s).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… of set_txn_related_delete_bitmap

Registration is not related to delete bitmaps and should run for all
table types, not just MoW. Extract to a separate register_uncommitted_rowset
method and call it as step 7 in cloud_tablets_channel close flow.

Also fixes a bug where MoW tablets with skip_writing_rowset_metadata
would return early and skip registration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…wset

Move registration into CloudDeltaWriter::commit_rowset() right after
the meta service commit succeeds, which is the natural point where the
rowset becomes committed-but-not-published.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ed files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…dRowsetRegistry

BE unit tests cover register/get/unregister/expiration/sharding logic.
Regression test verifies session variable, queries on dup/mow/mor tables,
isolation level switching, and predicate pushdown under READ-UNCOMMITTED.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@dataroaring dataroaring force-pushed the feature/read-uncommitted-phase1 branch from 80f004b to 9afc5a7 Compare February 9, 2026 06:53
@dataroaring
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 79.35% (1795/2262)
Line Coverage 64.90% (31974/49269)
Region Coverage 65.60% (15957/24323)
Branch Coverage 56.10% (8479/15114)

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 41.67% (5/12) 🎉
Increment coverage report
Complete coverage report

…stry in olap_server

olap_server.cpp calls remove_expired_entries() on UncommittedRowsetRegistry
but only had a forward declaration via storage_engine.h. Add the full header
include to fix the incomplete type error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@dataroaring dataroaring force-pushed the feature/read-uncommitted-phase1 branch from 14dd034 to d37bc8d Compare February 9, 2026 17:37
@dataroaring
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 79.35% (1795/2262)
Line Coverage 64.89% (31971/49269)
Region Coverage 65.58% (15952/24323)
Branch Coverage 56.12% (8482/15114)

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17620	4434	4323	4323
q2	2083	351	230	230
q3	10162	1297	756	756
q4	10298	781	306	306
q5	8971	2241	1957	1957
q6	231	175	150	150
q7	897	761	613	613
q8	9299	1418	1185	1185
q9	4793	4624	4687	4624
q10	6909	1934	1557	1557
q11	503	314	295	295
q12	406	391	227	227
q13	17792	4097	3222	3222
q14	232	247	212	212
q15	885	824	809	809
q16	679	695	624	624
q17	722	848	525	525
q18	6522	5783	6526	5783
q19	1148	1039	666	666
q20	598	539	429	429
q21	2835	1982	2065	1982
q22	371	332	310	310
Total cold run time: 103956 ms
Total hot run time: 30785 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4601	4566	4676	4566
q2	271	336	270	270
q3	2303	3020	2509	2509
q4	1532	1864	1378	1378
q5	4803	4564	4688	4564
q6	230	181	144	144
q7	2015	1891	1781	1781
q8	2529	2427	2390	2390
q9	7777	7542	7678	7542
q10	2877	3059	2566	2566
q11	566	587	489	489
q12	670	732	609	609
q13	3945	4233	3239	3239
q14	269	293	264	264
q15	822	786	784	784
q16	643	682	645	645
q17	1097	1242	1277	1242
q18	7467	7477	7289	7289
q19	890	854	849	849
q20	1940	2065	1876	1876
q21	4628	4247	4250	4247
q22	545	533	507	507
Total cold run time: 52420 ms
Total hot run time: 49750 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 28.33 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit d37bc8d55acb0faf84bb86144896bfc63edfbf0b, data reload: false

query1	0.06	0.04	0.04
query2	0.13	0.07	0.08
query3	0.30	0.07	0.08
query4	1.60	0.09	0.09
query5	0.29	0.26	0.24
query6	1.14	0.65	0.64
query7	0.04	0.03	0.03
query8	0.08	0.06	0.07
query9	0.57	0.51	0.49
query10	0.55	0.54	0.55
query11	0.25	0.13	0.14
query12	0.27	0.14	0.15
query13	0.62	0.63	0.60
query14	0.99	0.98	0.98
query15	0.92	0.83	0.84
query16	0.40	0.39	0.40
query17	1.06	0.98	1.07
query18	0.25	0.23	0.23
query19	2.00	1.92	1.89
query20	0.02	0.01	0.01
query21	15.40	0.33	0.31
query22	4.93	0.13	0.13
query23	15.34	0.46	0.28
query24	2.32	0.59	0.41
query25	0.11	0.10	0.11
query26	0.19	0.18	0.18
query27	0.12	0.11	0.10
query28	3.60	1.15	0.98
query29	12.52	4.01	3.28
query30	0.33	0.13	0.11
query31	2.79	0.68	0.44
query32	3.23	0.63	0.50
query33	3.11	3.05	3.04
query34	15.88	5.02	4.48
query35	4.46	4.52	4.56
query36	0.62	0.49	0.50
query37	0.31	0.08	0.08
query38	0.29	0.06	0.06
query39	0.08	0.05	0.05
query40	0.20	0.17	0.16
query41	0.14	0.07	0.07
query42	0.09	0.05	0.05
query43	0.07	0.06	0.06
Total cold run time: 97.67 s
Total hot run time: 28.33 s

@doris-robot
Copy link

BE UT Coverage Report

Increment line coverage 42.26% (71/168) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.75% (19462/36895)
Line Coverage 36.22% (181155/500086)
Region Coverage 32.61% (140624/431287)
Branch Coverage 33.63% (60917/181120)

@hello-stephen
Copy link
Contributor

BE Regression && UT Coverage Report

Increment line coverage 79.76% (134/168) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 73.46% (26558/36151)
Line Coverage 56.52% (281928/498848)
Region Coverage 54.01% (235287/435669)
Branch Coverage 55.82% (101501/181824)

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 75.00% (9/12) 🎉
Increment coverage report
Complete coverage report

…nfig flag

Add mutable bool config `enable_uncommitted_rowset_registry` (default true)
to control whether uncommitted rowsets are registered on BE. When disabled,
the register calls in both local and cloud rowset builders are skipped,
effectively turning off READ UNCOMMITTED visibility without restart.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@dataroaring
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 79.35% (1795/2262)
Line Coverage 64.86% (31954/49269)
Region Coverage 65.52% (15937/24323)
Branch Coverage 56.05% (8472/15114)

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17618	4671	4414	4414
q2	2031	357	231	231
q3	10472	1362	732	732
q4	10343	792	314	314
q5	9391	2200	1963	1963
q6	212	189	151	151
q7	921	722	605	605
q8	9278	1474	1250	1250
q9	5087	4663	4751	4663
q10	6892	1981	1532	1532
q11	457	272	235	235
q12	397	377	226	226
q13	17833	4239	3256	3256
q14	239	246	218	218
q15	921	843	806	806
q16	683	682	627	627
q17	716	867	506	506
q18	6874	5876	6012	5876
q19	1106	1006	615	615
q20	511	506	390	390
q21	2551	1854	1793	1793
q22	328	285	243	243
Total cold run time: 104861 ms
Total hot run time: 30646 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4460	4386	4389	4386
q2	260	347	259	259
q3	2155	2750	2239	2239
q4	1366	1758	1272	1272
q5	4381	4247	4292	4247
q6	209	177	136	136
q7	1893	1995	1893	1893
q8	2673	2596	2412	2412
q9	7480	7623	7559	7559
q10	2964	3048	2683	2683
q11	550	460	428	428
q12	695	836	642	642
q13	3899	4617	3776	3776
q14	289	301	284	284
q15	873	819	828	819
q16	702	748	712	712
q17	1177	1362	1389	1362
q18	8789	8151	7992	7992
q19	868	862	867	862
q20	2115	2159	2025	2025
q21	4866	4351	4318	4318
q22	536	459	444	444
Total cold run time: 53200 ms
Total hot run time: 50750 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 190529 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 ff37ab809b9290c3930b98eb78bb9190647f0274, data reload: false

query5	4305	607	489	489
query6	334	213	199	199
query7	4211	478	274	274
query8	339	249	233	233
query9	8678	2758	2773	2758
query10	474	366	322	322
query11	16556	16393	16195	16195
query12	183	119	119	119
query13	1268	478	344	344
query14	6173	3204	2968	2968
query14_1	2850	2805	2784	2784
query15	202	193	174	174
query16	999	480	451	451
query17	1099	696	595	595
query18	2549	445	348	348
query19	209	208	180	180
query20	129	124	125	124
query21	219	148	127	127
query22	5062	5128	4811	4811
query23	19239	18702	18227	18227
query23_1	18533	18432	18371	18371
query24	7139	1598	1215	1215
query24_1	1232	1226	1243	1226
query25	546	458	428	428
query26	1251	270	155	155
query27	2752	468	292	292
query28	4521	1901	1874	1874
query29	790	575	473	473
query30	322	269	226	226
query31	830	765	644	644
query32	93	82	76	76
query33	531	350	297	297
query34	902	909	576	576
query35	660	689	604	604
query36	1087	1130	991	991
query37	142	103	97	97
query38	2976	2905	2891	2891
query39	926	895	890	890
query39_1	886	869	904	869
query40	226	138	122	122
query41	72	70	68	68
query42	106	104	104	104
query43	449	477	424	424
query44	1368	739	761	739
query45	199	188	190	188
query46	889	973	598	598
query47	2140	2092	2062	2062
query48	318	327	231	231
query49	610	431	343	343
query50	674	275	215	215
query51	4080	4066	4042	4042
query52	106	105	96	96
query53	283	328	273	273
query54	291	269	261	261
query55	93	82	78	78
query56	314	300	326	300
query57	1432	1379	1256	1256
query58	277	269	266	266
query59	1978	2094	2057	2057
query60	339	341	317	317
query61	147	142	148	142
query62	614	571	514	514
query63	297	274	266	266
query64	4897	1257	935	935
query65	4569	4463	4354	4354
query66	1435	438	337	337
query67	16418	16393	16099	16099
query68	2383	1073	721	721
query69	395	327	289	289
query70	1022	987	846	846
query71	340	328	301	301
query72	2979	2943	2510	2510
query73	526	585	325	325
query74	9709	9720	9480	9480
query75	2826	2767	2448	2448
query76	2273	1063	656	656
query77	348	376	316	316
query78	11384	11443	10897	10897
query79	1133	847	601	601
query80	1275	581	486	486
query81	547	282	263	263
query82	967	149	115	115
query83	337	257	240	240
query84	251	122	91	91
query85	887	467	411	411
query86	414	315	303	303
query87	3141	3103	2964	2964
query88	3613	2703	2676	2676
query89	383	345	321	321
query90	1975	180	180	180
query91	161	159	129	129
query92	78	74	79	74
query93	1019	843	481	481
query94	689	276	299	276
query95	583	395	320	320
query96	659	506	231	231
query97	2469	2461	2450	2450
query98	224	209	210	209
query99	907	922	849	849
Total cold run time: 263237 ms
Total hot run time: 190529 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 28.31 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit ff37ab809b9290c3930b98eb78bb9190647f0274, data reload: false

query1	0.06	0.05	0.05
query2	0.14	0.06	0.07
query3	0.32	0.08	0.08
query4	1.62	0.10	0.10
query5	0.26	0.24	0.26
query6	1.14	0.65	0.64
query7	0.03	0.03	0.03
query8	0.06	0.06	0.07
query9	0.59	0.51	0.49
query10	0.55	0.55	0.55
query11	0.26	0.13	0.14
query12	0.27	0.14	0.14
query13	0.62	0.62	0.60
query14	0.98	0.97	0.99
query15	0.90	0.84	0.82
query16	0.39	0.42	0.39
query17	1.06	1.05	1.02
query18	0.25	0.24	0.23
query19	1.89	1.88	1.89
query20	0.02	0.02	0.01
query21	15.38	0.33	0.30
query22	4.97	0.12	0.12
query23	15.34	0.46	0.28
query24	2.43	0.58	0.41
query25	0.12	0.11	0.10
query26	0.19	0.18	0.19
query27	0.11	0.10	0.10
query28	3.69	1.19	0.98
query29	12.50	4.02	3.28
query30	0.34	0.12	0.11
query31	2.80	0.67	0.46
query32	3.24	0.63	0.50
query33	2.99	3.04	3.06
query34	16.01	5.29	4.48
query35	4.42	4.54	4.46
query36	0.61	0.50	0.50
query37	0.31	0.09	0.08
query38	0.28	0.06	0.06
query39	0.08	0.05	0.05
query40	0.22	0.20	0.16
query41	0.14	0.07	0.07
query42	0.09	0.05	0.05
query43	0.07	0.06	0.05
Total cold run time: 97.74 s
Total hot run time: 28.31 s

@hello-stephen
Copy link
Contributor

BE UT Coverage Report

Increment line coverage 42.20% (73/173) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.71% (19458/36916)
Line Coverage 36.19% (181135/500530)
Region Coverage 32.56% (140596/431817)
Branch Coverage 33.61% (60950/181347)

@hello-stephen
Copy link
Contributor

BE Regression && UT Coverage Report

Increment line coverage 79.19% (137/173) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 71.72% (25944/36172)
Line Coverage 54.38% (271553/499317)
Region Coverage 51.73% (225645/436213)
Branch Coverage 53.28% (97000/182059)

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 75.00% (9/12) 🎉
Increment coverage report
Complete coverage report

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