Skip to content

[feat](group commit) add group_commit_mode in table property#61242

Merged
dataroaring merged 3 commits intoapache:masterfrom
mymeiyi:table-group-commit-mode-6
Mar 16, 2026
Merged

[feat](group commit) add group_commit_mode in table property#61242
dataroaring merged 3 commits intoapache:masterfrom
mymeiyi:table-group-commit-mode-6

Conversation

@mymeiyi
Copy link
Contributor

@mymeiyi mymeiyi commented Mar 12, 2026

What problem does this PR solve?

Issue Number: close #xxx

Related PR: #xxx

Problem Summary:

  1. Create table support set group_commit_mode table property
CREATE TABLE ... PROPERTIES(
    "group_commit_mode" = "async_mode"
);
  1. Support alter this property
ALTER TABLE ... SET ("group_commit_mode" = "off_mode");
  1. Show create table shows this property if its value is not off_mode
  2. For stream load, if it not set group_commit header, use the table property as the group commit mode; if it set group_commit header, use the header value.
  3. doc: add doc for group_commit_mode table property doris-website#3465

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

Copilot AI review requested due to automatic review settings March 12, 2026 03:36
@Thearas
Copy link
Contributor

Thearas commented Mar 12, 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?

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 a new group_commit_mode table property so group-commit behavior (async/sync/off) can be driven by table metadata when the group_commit HTTP header is absent, and wires this through FE/BE RPCs plus regression coverage.

Changes:

  • Introduce group_commit_mode property parsing/storage and SHOW CREATE TABLE output (hidden when off_mode).
  • Extend stream load logic (FE HTTP v2 + BE stream load) to consult table property when group_commit header is not provided.
  • Add regression tests for CREATE/ALTER/SHOW behavior and stream-load behavior with/without header override.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
regression-test/suites/load_p0/stream_load/test_group_commit_stream_load.groovy Adds stream-load regression cases for table-property-driven group commit and header override.
regression-test/suites/insert_p0/insert_group_commit_into.groovy Adds DDL/ALTER/SHOW CREATE coverage for group_commit_mode.
gensrc/thrift/FrontendService.thrift Adds use_table_group_commit_mode request flag and table_group_commit_mode response field for loadTxnBegin.
gensrc/proto/cloud.proto Adds group_commit_mode to tablet meta update proto for cloud.
fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java Supports returning table group-commit mode (skipping begin txn) when requested.
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ModifyTablePropertiesOp.java Validates group_commit_mode ALTER TABLE property changes.
fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/LoadAction.java Uses table property when group_commit header is absent (redirect / block logic).
fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java Parses/stores group_commit_mode during table creation.
fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java Adds constants + parsing/validation for group_commit_mode.
fe/fe-core/src/main/java/org/apache/doris/cloud/alter/CloudSchemaChangeHandler.java Allows and propagates group_commit_mode updates to cloud tablet meta.
fe/fe-core/src/main/java/org/apache/doris/catalog/TableProperty.java Stores/reads group_commit_mode in table properties.
fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java Exposes get/setGroupCommitMode() on OlapTable.
fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java Prints group_commit_mode in SHOW CREATE TABLE only when not off_mode.
fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java Allows group_commit_mode as a modifiable table property.
be/src/service/http/action/stream_load.h Adds helper declaration for group-commit eligibility check.
be/src/service/http/action/stream_load.cpp Refactors group-commit header handling; uses ctx->group_commit_mode.
be/src/load/stream_load/stream_load_executor.cpp Adds FE lookup path for table group_commit_mode via loadTxnBegin.
be/src/load/stream_load/stream_load_context.h Adds group_commit_mode to stream load context.

💡 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.

Comment on lines 920 to 924
if (!partial_columns && !partitions && !temp_partitions && !ctx->two_phase_commit &&
!update_mode) {
if (!config::wait_internal_group_commit_finish && !ctx->label.empty()) {
return Status::InvalidArgument("label and group_commit can't be set at the same time");
}
Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

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

In _can_group_commit, the label and group_commit can't be set at the same time check runs even when the client did not set the group_commit header (i.e., group_commit_header is empty). This can reject normal (non-group-commit) stream loads that specify a label on tables whose group_commit_mode is off, which is a backward-incompatible behavior change. Consider skipping the label conflict check when group_commit_header is empty, and instead enforce/clear label only after the table property lookup confirms group commit will be used (e.g., in begin_txn when table_group_commit_mode is returned).

Copilot uses AI. Check for mistakes.
@mymeiyi mymeiyi force-pushed the table-group-commit-mode-6 branch 2 times, most recently from 8e07520 to c0dc62a Compare March 12, 2026 06:25
@mymeiyi mymeiyi requested a review from morningman as a code owner March 12, 2026 06:25
@mymeiyi
Copy link
Contributor Author

mymeiyi commented Mar 12, 2026

run buildall

@doris-robot
Copy link

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 79.31% (1798/2267)
Line Coverage 64.67% (32301/49944)
Region Coverage 65.61% (16179/24659)
Branch Coverage 56.02% (8620/15388)

@dataroaring
Copy link
Contributor

/review

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 for PR #61242[feat](group commit) add group_commit_mode in table property

Overview

This PR adds a group_commit_mode table property that allows tables to specify a default group commit mode (off_mode, async_mode, sync_mode). When a stream load is issued without an explicit group_commit HTTP header, the BE queries the FE for the table's property and uses it. The FE changes (PropertyAnalyzer, TableProperty, OlapTable, SchemaChangeHandler, CloudSchemaChangeHandler, FrontendServiceImpl) follow existing patterns correctly. EditLog persistence works via the direct-map-read pattern (no build* method needed, consistent with group_commit_interval_ms and group_commit_data_bytes).

Critical Checkpoint Conclusions

  1. Goal & correctness: The feature goal is achieved for the StreamLoadAction path. The FE property management (CREATE TABLE, ALTER TABLE, SHOW CREATE TABLE, EditLog persistence/replay, Cloud mode support) is implemented correctly and consistently with existing group_commit properties.

  2. Modification scope: The PR is focused on adding a single table property and wiring it through BE stream load. However, there are missing parallel paths (see below).

  3. Concurrency: The table.getGroupCommitMode() call in FrontendServiceImpl.loadTxnBeginImpl reads the property without holding a table read lock. This is consistent with the existing pattern for other table property reads in this method and is acceptable since the worst case is reading a slightly stale value (the property value is a simple String reference).

  4. Lifecycle management: No special lifecycle concerns. The property is stored in the properties map and follows the same pattern as group_commit_interval_ms.

  5. Configuration items: The group_commit_mode property is dynamically changeable via ALTER TABLE — changes are immediately visible without restart. This is correct.

  6. Incompatible changes: New Thrift field use_table_group_commit_mode (field 17) and table_group_commit_mode (field 5) are optional, so rolling upgrades are safe. New proto field group_commit_mode (field 15) is also optional.

  7. Parallel code paths: Issue foundHttpStreamAction (http_stream.cpp) is not updated to support table-level group_commit_mode. See inline comment.

  8. Test coverage: Regression tests cover CREATE TABLE, ALTER TABLE, SHOW CREATE TABLE, invalid values, stream load with/without header, and header override. Missing: test for label conflict with table property, and no test for HttpStreamAction path.

  9. Observability: The group_commit_mode is logged in the stream load request log (line 260), which is sufficient.

  10. Transaction/persistence: EditLog persistence is handled correctly via the existing modifyTablePropertieslogModifyTableProperties flow. No separate build*() needed because the getter reads directly from the properties map.

  11. FE-BE variable passing: The new Thrift fields are correctly set in the stream load begin_txn path. However, this only covers StreamLoadAction, not HttpStreamAction.

  12. Performance: No performance concerns. The table property lookup is a simple HashMap getOrDefault.

Issues Found

See inline comments for details. Summary:

  • [High] _can_group_commit label check may reject legitimate labeled stream loads on tables with group_commit_mode set
  • [Medium] HttpStreamAction parallel path not updated for table-level group_commit_mode
  • [Low] Missing __isset check for Thrift result field
  • [Low] _check_wal_space called with body_bytes=0 in table-property path (effectively a no-op)

@@ -933,17 +940,43 @@ Status StreamLoadAction::_handle_group_commit(HttpRequest* req,
if (!config::wait_internal_group_commit_finish && !ctx->label.empty()) {
return Status::InvalidArgument("label and group_commit can't be set at the same time");
}
Copy link
Contributor

Choose a reason for hiding this comment

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

[High] Label check incorrectly rejects labeled stream loads on tables with group_commit_mode property

When the user does NOT set the group_commit HTTP header (empty group_commit_header), but the table has group_commit_mode=async_mode/sync_mode, this code path is still reached via _handle_group_commit_can_group_commit. If the user provides a label (which is normal for stream loads), this returns InvalidArgument("label and group_commit can't be set at the same time").

The problem: the user never explicitly requested group commit — they just have a table property. This is a behavioral regression because existing users who always set labels would suddenly get errors after someone sets the table property.

Suggestion: Either skip this check when group_commit_header is empty (table-property path), or move the label conflict check to after the FE responds confirming the table actually uses group commit. For example:

if (!group_commit_header.empty() && !config::wait_internal_group_commit_finish && !ctx->label.empty()) {
    return Status::InvalidArgument("label and group_commit can't be set at the same time");
}

This ensures only explicit header-based group commit rejects labels, while the table-property path allows labels (and falls through to a normal non-group-commit load when a label is present).

ctx->group_commit = true;
} else {
// use table property to decide group commit or not
ctx->group_commit_mode = "";
Copy link
Contributor

Choose a reason for hiding this comment

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

[Medium] Parallel code path: HttpStreamAction not updated

The HttpStreamAction (http_stream.cpp) has its own _handle_group_commit method that does NOT support the table-property group commit mode. It treats an empty group_commit header as "no group commit" and returns immediately. Unlike StreamLoadAction, it doesn't call begin_txn (the transaction is opened by FE via NativeInsertStmt), so the mechanism used here (empty group_commit_modebegin_txn queries FE for table property) doesn't directly apply.

However, the feature description says "For stream load, if it not set group_commit header, use the table property as the group commit mode". This should apply to both stream load endpoints. Consider either:

  1. Adding table-property support to HttpStreamAction in this PR, or
  2. Documenting this as a known limitation and filing a follow-up issue.

ctx->begin_txn_cost_nanos = MonotonicNanos() - begin_txn_start_time;
if (ctx->group_commit) {
RETURN_IF_ERROR(_check_wal_space(ctx->group_commit_mode, ctx->body_bytes));
}
Copy link
Contributor

Choose a reason for hiding this comment

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

[Low] _check_wal_space called with body_bytes=0

At this point in _on_header, ctx->body_bytes is initialized to 0 (set at line 304). The body hasn't been received yet. So _check_wal_space(ctx->group_commit_mode, ctx->body_bytes) is called with content_length=0, which always passes the load_size_smaller_than_wal_limit(0) check.

This means the WAL space check is effectively a no-op for the table-property group commit path. The explicit header path has a proper check in _can_group_commit (line 943) using the Content-Length header value.

Consider using the Content-Length from the HTTP header instead:

if (ctx->group_commit) {
    int64_t content_length = http_req->header(HttpHeaders::CONTENT_LENGTH).empty()
                             ? 0 : std::stoll(http_req->header(HttpHeaders::CONTENT_LENGTH));
    RETURN_IF_ERROR(_check_wal_space(ctx->group_commit_mode, content_length));
}

dataroaring
dataroaring previously approved these changes Mar 12, 2026
Copy link
Contributor

@dataroaring dataroaring left a comment

Choose a reason for hiding this comment

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

LGTM

@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label Mar 12, 2026
@github-actions
Copy link
Contributor

PR approved by at least one committer and no changes requested.

@github-actions
Copy link
Contributor

PR approved by anyone and no changes requested.

@hello-stephen
Copy link
Contributor

BE UT Coverage Report

Increment line coverage 0.00% (0/69) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.63% (19685/37402)
Line Coverage 36.24% (183702/506925)
Region Coverage 32.33% (141719/438299)
Branch Coverage 33.52% (61893/184654)

@mymeiyi mymeiyi force-pushed the table-group-commit-mode-6 branch from c0dc62a to fc3afe7 Compare March 12, 2026 11:25
@github-actions github-actions bot removed the approved Indicates a PR has been approved by one committer. label Mar 12, 2026
@mymeiyi
Copy link
Contributor Author

mymeiyi commented Mar 12, 2026

run buildall

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 20.37% (11/54) 🎉
Increment coverage report
Complete coverage report

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17638	4467	4360	4360
q2	q3	10746	811	516	516
q4	4727	377	260	260
q5	8192	1216	1032	1032
q6	232	177	146	146
q7	803	840	674	674
q8	10860	1495	1403	1403
q9	6756	4737	4788	4737
q10	6313	1908	1652	1652
q11	467	272	242	242
q12	767	575	485	485
q13	18081	2925	2197	2197
q14	238	234	215	215
q15	950	821	828	821
q16	752	731	710	710
q17	722	887	415	415
q18	6072	5435	5343	5343
q19	1120	995	613	613
q20	513	502	393	393
q21	4753	1984	1466	1466
q22	390	341	292	292
Total cold run time: 101092 ms
Total hot run time: 27972 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4642	4556	4519	4519
q2	q3	3873	4318	3812	3812
q4	900	1196	807	807
q5	4133	4485	4331	4331
q6	185	175	143	143
q7	1740	1639	1507	1507
q8	2507	2731	2575	2575
q9	7552	7433	7383	7383
q10	3864	4085	3620	3620
q11	494	431	410	410
q12	505	616	437	437
q13	2798	3345	2336	2336
q14	281	292	270	270
q15	877	878	855	855
q16	726	810	703	703
q17	1215	1606	1340	1340
q18	7309	6953	6801	6801
q19	951	913	915	913
q20	2059	2129	2065	2065
q21	4012	3455	3422	3422
q22	450	447	386	386
Total cold run time: 51073 ms
Total hot run time: 48635 ms

@doris-robot
Copy link

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

query5	4324	661	532	532
query6	316	236	237	236
query7	4226	475	281	281
query8	352	249	238	238
query9	8719	2762	2741	2741
query10	536	379	357	357
query11	7325	5866	5595	5595
query12	189	143	129	129
query13	1271	467	368	368
query14	5681	3845	3619	3619
query14_1	2853	2891	2843	2843
query15	208	198	178	178
query16	971	489	477	477
query17	884	727	616	616
query18	2439	450	350	350
query19	220	209	189	189
query20	140	134	135	134
query21	224	148	124	124
query22	4833	5166	4931	4931
query23	16047	15537	15312	15312
query23_1	15372	16315	15865	15865
query24	8742	1693	1311	1311
query24_1	1307	1311	1287	1287
query25	597	540	456	456
query26	1245	306	165	165
query27	3068	530	315	315
query28	5008	1980	2019	1980
query29	948	591	502	502
query30	325	257	225	225
query31	1458	1355	1309	1309
query32	84	81	71	71
query33	535	348	289	289
query34	1039	1010	628	628
query35	668	758	615	615
query36	1172	1150	1009	1009
query37	140	98	80	80
query38	2967	2875	2914	2875
query39	891	852	845	845
query39_1	806	845	829	829
query40	238	159	134	134
query41	64	60	62	60
query42	307	300	300	300
query43	248	257	222	222
query44	
query45	196	194	184	184
query46	884	1040	614	614
query47	2123	2144	2063	2063
query48	329	324	240	240
query49	626	468	392	392
query50	690	281	223	223
query51	4134	4115	4114	4114
query52	286	292	285	285
query53	287	339	281	281
query54	315	288	266	266
query55	91	90	80	80
query56	325	332	316	316
query57	1389	1348	1278	1278
query58	290	286	283	283
query59	1330	1438	1244	1244
query60	346	340	323	323
query61	145	144	144	144
query62	613	573	533	533
query63	306	279	274	274
query64	5087	1281	972	972
query65	
query66	1471	460	359	359
query67	16476	16422	16303	16303
query68	
query69	379	315	284	284
query70	991	978	944	944
query71	349	309	316	309
query72	2812	2688	2483	2483
query73	545	570	341	341
query74	9983	9860	9818	9818
query75	2854	2753	2457	2457
query76	2288	1054	706	706
query77	366	393	316	316
query78	11173	11280	10693	10693
query79	2535	781	617	617
query80	1715	626	547	547
query81	572	278	243	243
query82	993	148	116	116
query83	342	273	249	249
query84	302	123	95	95
query85	886	484	435	435
query86	407	313	328	313
query87	3174	3111	3028	3028
query88	3576	2670	2655	2655
query89	427	371	344	344
query90	2034	186	184	184
query91	170	162	137	137
query92	77	74	71	71
query93	1025	833	514	514
query94	649	322	301	301
query95	586	350	315	315
query96	651	518	236	236
query97	2462	2479	2428	2428
query98	228	219	224	219
query99	1004	1015	907	907
Total cold run time: 237407 ms
Total hot run time: 153770 ms

@doris-robot
Copy link

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.61% (19691/37426)
Line Coverage 36.14% (183616/508082)
Region Coverage 32.26% (141719/439243)
Branch Coverage 33.44% (61897/185121)

@mymeiyi mymeiyi force-pushed the table-group-commit-mode-6 branch from fc3afe7 to 28dfdf8 Compare March 13, 2026 02:24
@mymeiyi
Copy link
Contributor Author

mymeiyi commented Mar 13, 2026

run buildall

@doris-robot
Copy link

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 79.24% (1798/2269)
Line Coverage 64.56% (32296/50026)
Region Coverage 65.44% (16166/24702)
Branch Coverage 55.89% (8616/15416)

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17650	4551	4432	4432
q2	q3	10721	805	526	526
q4	4731	370	250	250
q5	8149	1209	1045	1045
q6	232	174	145	145
q7	808	841	679	679
q8	10593	1469	1350	1350
q9	6869	4758	4762	4758
q10	6337	1939	1672	1672
q11	470	252	244	244
q12	765	581	467	467
q13	18083	2916	2219	2219
q14	237	226	219	219
q15	945	803	816	803
q16	771	722	697	697
q17	701	853	422	422
q18	6052	5499	5311	5311
q19	1127	1015	595	595
q20	490	502	388	388
q21	4462	1907	1468	1468
q22	385	328	283	283
Total cold run time: 100578 ms
Total hot run time: 27973 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4629	4686	4710	4686
q2	q3	3876	4391	3821	3821
q4	872	1216	770	770
q5	4077	4383	4376	4376
q6	185	173	138	138
q7	1760	1663	1583	1583
q8	2543	2808	2630	2630
q9	7635	7378	7328	7328
q10	3748	3984	3628	3628
q11	508	441	408	408
q12	473	606	455	455
q13	2857	3374	2330	2330
q14	281	307	283	283
q15	848	819	851	819
q16	728	810	762	762
q17	1201	1432	1352	1352
q18	7259	6871	6716	6716
q19	950	933	912	912
q20	2124	2223	1999	1999
q21	4008	3479	3329	3329
q22	471	438	381	381
Total cold run time: 51033 ms
Total hot run time: 48706 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 152765 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 28dfdf86c41272521d5187667900c586c49b5099, data reload: false

query5	4328	642	529	529
query6	326	223	205	205
query7	4213	489	258	258
query8	340	235	250	235
query9	8707	2723	2701	2701
query10	508	367	329	329
query11	7288	5813	5565	5565
query12	188	128	130	128
query13	1268	461	348	348
query14	5699	3904	3581	3581
query14_1	2808	2857	2813	2813
query15	202	195	175	175
query16	992	473	458	458
query17	932	717	616	616
query18	2448	447	353	353
query19	213	219	183	183
query20	140	131	127	127
query21	230	146	129	129
query22	4850	4847	4740	4740
query23	16032	15590	15371	15371
query23_1	15474	16461	15945	15945
query24	7761	1824	1295	1295
query24_1	1294	1281	1308	1281
query25	625	540	477	477
query26	1424	281	170	170
query27	3012	531	301	301
query28	4914	1929	1928	1928
query29	911	646	526	526
query30	325	254	217	217
query31	1418	1353	1267	1267
query32	80	79	72	72
query33	560	379	301	301
query34	979	911	583	583
query35	652	661	597	597
query36	1098	1127	964	964
query37	134	93	82	82
query38	3027	2890	2888	2888
query39	892	872	861	861
query39_1	829	828	827	827
query40	245	151	136	136
query41	61	62	59	59
query42	307	302	303	302
query43	254	239	217	217
query44	
query45	194	196	184	184
query46	887	989	612	612
query47	2094	2129	2042	2042
query48	306	311	229	229
query49	665	452	385	385
query50	689	272	221	221
query51	4071	4091	4113	4091
query52	285	298	282	282
query53	286	335	278	278
query54	293	264	259	259
query55	92	85	83	83
query56	313	311	311	311
query57	1370	1348	1270	1270
query58	291	274	279	274
query59	1374	1441	1229	1229
query60	335	346	317	317
query61	152	138	147	138
query62	614	579	542	542
query63	313	280	276	276
query64	5092	1268	983	983
query65	
query66	1445	474	366	366
query67	16399	16511	16234	16234
query68	
query69	377	308	286	286
query70	1002	931	937	931
query71	354	302	290	290
query72	2786	2751	2463	2463
query73	552	552	325	325
query74	10065	9964	9735	9735
query75	2869	2759	2467	2467
query76	2301	1022	686	686
query77	379	418	310	310
query78	11161	11356	10628	10628
query79	1229	795	612	612
query80	1332	634	533	533
query81	566	284	269	269
query82	993	149	121	121
query83	339	267	245	245
query84	298	121	97	97
query85	899	492	427	427
query86	427	338	303	303
query87	3139	3106	3023	3023
query88	3562	2650	2646	2646
query89	426	367	354	354
query90	2019	176	174	174
query91	168	165	135	135
query92	77	73	73	73
query93	1013	830	499	499
query94	643	319	277	277
query95	593	413	307	307
query96	639	509	225	225
query97	2446	2452	2438	2438
query98	242	218	228	218
query99	1028	948	890	890
Total cold run time: 234496 ms
Total hot run time: 152765 ms

@hello-stephen
Copy link
Contributor

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.66% (19709/37430)
Line Coverage 36.23% (184146/508226)
Region Coverage 32.35% (142155/439475)
Branch Coverage 33.56% (62158/185225)

@hello-stephen
Copy link
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 71.57% (26218/36635)
Line Coverage 54.33% (275169/506504)
Region Coverage 51.44% (228135/443523)
Branch Coverage 52.95% (98323/185707)

Copy link
Contributor

@liaoxin01 liaoxin01 left a comment

Choose a reason for hiding this comment

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

LGTM

@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label Mar 16, 2026
@github-actions
Copy link
Contributor

PR approved by at least one committer and no changes requested.

Copy link
Contributor

@dataroaring dataroaring left a comment

Choose a reason for hiding this comment

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

LGTM

@dataroaring dataroaring merged commit c6c76e9 into apache:master Mar 16, 2026
31 of 33 checks passed
mymeiyi added a commit to mymeiyi/doris that referenced this pull request Mar 18, 2026
…61242)

### What problem does this PR solve?

Issue Number: close #xxx

Related PR: #xxx

Problem Summary:

1. Create table support set `group_commit_mode` table property 
```
CREATE TABLE ... PROPERTIES(
    "group_commit_mode" = "async_mode"
);
```
2. Support alter this property
```
ALTER TABLE ... SET ("group_commit_mode" = "off_mode");
```
3. Show create table shows this property if its value is not `off_mode`
4. For stream load, if it not set `group_commit` header, use the table
property as the group commit mode; if it set `group_commit` header, use
the header value.
5. doc: apache/doris-website#3465


### Release note

None

### Check List (For Author)

- Test <!-- At least one of them must be included. -->
    - [ ] 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 <!-- Add your reason?  -->

- Behavior changed:
    - [ ] No.
    - [ ] Yes. <!-- Explain the behavior change -->

- Does this need documentation?
    - [ ] No.
- [ ] Yes. <!-- Add document PR link here. eg:
apache/doris-website#1214 -->

### Check List (For Reviewer who merge this PR)

- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label <!-- Add branch pick label that this PR
should merge into -->
yiguolei pushed a commit that referenced this pull request Mar 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by one committer. dev/4.1.0-merged reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants