Skip to content

[feat](iceberg) Support iceberg v3 row lineage - #61398

Merged
morningman merged 7 commits into
apache:masterfrom
hubgeter:support_iceberg_v3_row_lineage
Mar 30, 2026
Merged

[feat](iceberg) Support iceberg v3 row lineage#61398
morningman merged 7 commits into
apache:masterfrom
hubgeter:support_iceberg_v3_row_lineage

Conversation

@hubgeter

@hubgeter hubgeter commented Mar 16, 2026

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Problem Summary:

This PR adds Iceberg v3 support in Doris.

Main changes:

  • support hidden row lineage columns _row_id and _last_updated_sequence_number
  • support querying and filtering on row lineage columns
  • forbid explicitly writing row lineage columns in INSERT
  • support Iceberg v3 deletion vectors in DELETE/MERGE
  • support rewrite_data_files for Iceberg v3 tables
  • improve v2-to-v3 compatibility for query and DML paths
  • add FE/BE/unit/regression tests for Parquet and ORC

Release note

Support Iceberg v3 row lineage and deletion vectors in Doris.

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

Thearas commented Mar 16, 2026

Copy link
Copy Markdown
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?

@hubgeter
hubgeter force-pushed the support_iceberg_v3_row_lineage branch from 5b8b125 to 8f69d42 Compare March 26, 2026 15:07
@hubgeter

Copy link
Copy Markdown
Contributor Author

run buildall

@hubgeter

Copy link
Copy Markdown
Contributor Author

/review

@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 78.67% (1796/2283)
Line Coverage 64.41% (32288/50128)
Region Coverage 65.27% (16161/24761)
Branch Coverage 55.75% (8616/15454)

@CalvinKirs

Copy link
Copy Markdown
Member

/review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review: Support Iceberg V3 Row Lineage

Summary

This PR adds Iceberg V3 row lineage support including deletion vectors (Puffin format), _row_id and _last_updated_sequence_number hidden columns, and rewrite_data_files action. The feature covers both FE planning/transaction and BE reading/writing paths across Parquet and ORC formats.

Critical Issue Found

[BUG] IcebergRewritableDeletePlanner.java: setDeleteFiles(value) is never called — The thrift struct TIcebergRewritableDeleteFileSet is populated with setReferencedDataFilePath(key) but the value (the list of TIcebergDeleteFileDesc) from deleteFilesDescByReferencedDataFile is never set on the struct. On the BE side (viceberg_delete_sink.cpp), the code checks !delete_file_set.__isset.delete_files and skips entries without delete files, so previously existing position deletes and deletion vectors are never loaded for merging. This means when a second DELETE is issued against the same data file on a V3 table, the old deleted rows won't be merged into the new DV, causing previously deleted rows to reappear (data correctness regression).

Other Issues

  1. file_scanner.cpp: Uses starts_with("_row_id") and starts_with("_last_updated_sequence_number") instead of exact match (==). While unlikely to cause false matches in practice, it's inconsistent with the adjacent == BeConsts::ICEBERG_ROWID_COL pattern and could match unintended column names. Should use == for correctness.

  2. Missing test coverage: No regression test covers the scenario of issuing multiple DELETEs against the same data file, which is the exact path where the critical bug manifests. Adding such a test would have caught this.

Code Review Checkpoint Conclusions (Part 1.3)

  • Goal: The code implements V3 row lineage with deletion vectors, hidden columns, and rewrite support. A critical bug in delete merging prevents correct behavior for repeated deletes on the same data file.
  • Modification scope: Large (54 files, 3222+/236-) but focused on a single cohesive feature.
  • Concurrency: No new concurrency introduced; single-threaded pipeline operator paths.
  • Lifecycle management: Standard RAII patterns used; no special concerns.
  • Configuration items: None added.
  • Incompatible changes: Thrift changes are additive (optional fields, new enum). Forward-compatible for rolling upgrades.
  • Parallel code paths: Parquet and ORC reader paths both updated consistently.
  • Special conditional checks: starts_with should be == in file_scanner.cpp.
  • Test coverage: 4 regression tests + 2 BE unit tests. Missing negative test for repeated DELETE merging.
  • Observability: Adequate logging in key paths.
  • Transaction/persistence: Follows existing Iceberg transaction patterns.
  • Data writes: Critical bug in delete merging causes data correctness issue.
  • FE-BE variable passing: New thrift fields added in all required paths.
  • Performance: No obvious issues; CRC32 computation acceptable for DV sizes.

(key, value) -> {
TIcebergRewritableDeleteFileSet deleteFileSet = new TIcebergRewritableDeleteFileSet();
deleteFileSet.setReferencedDataFilePath(key);
thriftDeleteFileSets.add(deleteFileSet);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[Critical Bug] setDeleteFiles(value) is never called on deleteFileSet. The lambda captures (key, value) from deleteFilesDescByReferencedDataFile but only uses keyvalue (the List<TIcebergDeleteFileDesc>) is silently discarded.

On the BE side (viceberg_delete_sink.cpp:174), the code skips entries where !delete_file_set.__isset.delete_files, so all rewritable entries are effectively no-ops. This means when a second DELETE hits a data file that already has deletion vectors, the previous deletes are not merged into the new DV, causing those previously deleted rows to reappear.

Fix:

icebergScanNode.deleteFilesDescByReferencedDataFile.forEach(
        (key, value) -> {
            TIcebergRewritableDeleteFileSet deleteFileSet = new TIcebergRewritableDeleteFileSet();
            deleteFileSet.setReferencedDataFilePath(key);
            deleteFileSet.setDeleteFiles(value);  // <-- missing line
            thriftDeleteFileSets.add(deleteFileSet);
        }
);

Comment thread be/src/exec/scan/file_scanner.cpp Outdated
_row_lineage_columns.row_id_column_idx = _default_val_row_desc->get_column_id(slot_id);
}

if (it->second->col_name().starts_with(IcebergTableReader::ROW_LINEAGE_LAST_UPDATED_SEQ_NUMBER)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[Minor] starts_with(IcebergTableReader::ROW_LINEAGE_ROW_ID) should be an exact match (==) instead. The constant is "_row_id", and starts_with would incorrectly match any column name that begins with _row_id (e.g., _row_id_backup). The adjacent code uses exact match for BeConsts::ICEBERG_ROWID_COL; this should be consistent.

Same applies to the starts_with(IcebergTableReader::ROW_LINEAGE_LAST_UPDATED_SEQ_NUMBER) check 4 lines below.

if (it->second->col_name() == IcebergTableReader::ROW_LINEAGE_ROW_ID) {
    _row_lineage_columns.row_id_column_idx = _default_val_row_desc->get_column_id(slot_id);
}

if (it->second->col_name() == IcebergTableReader::ROW_LINEAGE_LAST_UPDATED_SEQ_NUMBER) {
    _row_lineage_columns.last_updated_sequence_number_column_idx = ...
}

@hubgeter

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 78.67% (1796/2283)
Line Coverage 64.40% (32283/50128)
Region Coverage 65.28% (16165/24761)
Branch Coverage 55.71% (8610/15454)

@doris-robot

Copy link
Copy Markdown
TPC-H: Total hot run time: 26996 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 80b69a374fe5e7cda0d9b1b407e00bd2c16dc564, 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	17644	4517	4380	4380
q2	q3	10741	810	537	537
q4	4721	363	250	250
q5	8198	1218	1027	1027
q6	244	172	146	146
q7	828	847	678	678
q8	10692	1495	1379	1379
q9	6932	4786	4794	4786
q10	6318	1957	1642	1642
q11	466	257	239	239
q12	720	588	454	454
q13	18073	2777	1969	1969
q14	228	237	211	211
q15	q16	730	745	686	686
q17	728	838	458	458
q18	5930	5524	5312	5312
q19	1105	985	648	648
q20	537	487	375	375
q21	4706	2050	1546	1546
q22	407	327	273	273
Total cold run time: 99948 ms
Total hot run time: 26996 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	4757	4691	4596	4596
q2	q3	3864	4384	3869	3869
q4	919	1201	780	780
q5	4092	4433	4351	4351
q6	181	178	144	144
q7	1772	1681	1572	1572
q8	2557	2725	2600	2600
q9	7571	7443	7602	7443
q10	3773	4027	3568	3568
q11	496	438	416	416
q12	479	588	485	485
q13	2763	2936	2122	2122
q14	282	323	296	296
q15	q16	754	764	735	735
q17	1196	1406	1338	1338
q18	7208	6829	6670	6670
q19	906	915	957	915
q20	2079	2181	2034	2034
q21	3947	3486	3313	3313
q22	448	510	439	439
Total cold run time: 50044 ms
Total hot run time: 47686 ms

@doris-robot

Copy link
Copy Markdown
TPC-DS: Total hot run time: 168453 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 80b69a374fe5e7cda0d9b1b407e00bd2c16dc564, data reload: false

query5	4321	630	492	492
query6	337	220	202	202
query7	4220	468	263	263
query8	330	240	227	227
query9	8712	2694	2685	2685
query10	532	384	338	338
query11	6998	5099	4868	4868
query12	184	129	121	121
query13	1283	479	331	331
query14	5766	3632	3401	3401
query14_1	2822	2794	2815	2794
query15	209	194	173	173
query16	963	468	449	449
query17	865	699	629	629
query18	2421	445	341	341
query19	222	201	175	175
query20	136	124	131	124
query21	230	136	111	111
query22	13256	13895	14637	13895
query23	16583	16236	16046	16046
query23_1	16343	16026	15665	15665
query24	7190	1626	1223	1223
query24_1	1248	1213	1246	1213
query25	582	483	441	441
query26	1234	267	155	155
query27	2781	485	305	305
query28	4495	1867	1828	1828
query29	856	591	510	510
query30	301	228	192	192
query31	1017	949	880	880
query32	86	77	71	71
query33	521	352	310	310
query34	902	881	512	512
query35	655	696	618	618
query36	1144	1090	986	986
query37	140	98	84	84
query38	2953	2915	2874	2874
query39	859	828	812	812
query39_1	794	793	793	793
query40	243	154	141	141
query41	68	68	64	64
query42	267	262	257	257
query43	241	263	213	213
query44	
query45	201	189	185	185
query46	892	986	601	601
query47	2145	2146	2056	2056
query48	311	322	225	225
query49	631	447	377	377
query50	685	273	230	230
query51	4159	4092	4014	4014
query52	258	263	265	263
query53	297	332	276	276
query54	293	268	268	268
query55	94	91	81	81
query56	299	324	309	309
query57	1846	1881	1770	1770
query58	280	266	265	265
query59	2799	2949	2756	2756
query60	327	333	324	324
query61	149	149	148	148
query62	631	593	532	532
query63	305	275	277	275
query64	5026	1308	1002	1002
query65	
query66	1455	459	350	350
query67	24323	24537	24211	24211
query68	
query69	398	300	282	282
query70	925	877	956	877
query71	330	312	292	292
query72	2803	2841	2445	2445
query73	536	541	312	312
query74	9613	9595	9318	9318
query75	2833	2734	2447	2447
query76	2275	1025	663	663
query77	372	369	309	309
query78	10945	11130	10476	10476
query79	1117	764	578	578
query80	689	607	533	533
query81	479	260	226	226
query82	1308	164	122	122
query83	365	258	242	242
query84	299	124	98	98
query85	868	505	442	442
query86	389	310	297	297
query87	3211	3123	3049	3049
query88	3519	2643	2634	2634
query89	416	363	353	353
query90	1972	182	184	182
query91	177	171	139	139
query92	83	72	75	72
query93	915	865	495	495
query94	470	322	300	300
query95	595	404	315	315
query96	654	522	230	230
query97	2455	2502	2395	2395
query98	232	224	230	224
query99	999	993	913	913
Total cold run time: 248974 ms
Total hot run time: 168453 ms

@hubgeter
hubgeter force-pushed the support_iceberg_v3_row_lineage branch from 80b69a3 to 89919c9 Compare March 27, 2026 06:04
@hubgeter

Copy link
Copy Markdown
Contributor Author

run buildall

@hubgeter
hubgeter force-pushed the support_iceberg_v3_row_lineage branch from 89919c9 to 85ccf8b Compare March 27, 2026 06:13
@hubgeter

Copy link
Copy Markdown
Contributor Author

run buildall

@hubgeter
hubgeter marked this pull request as ready for review March 27, 2026 06:35
@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 78.67% (1796/2283)
Line Coverage 64.39% (32276/50128)
Region Coverage 65.26% (16159/24761)
Branch Coverage 55.73% (8613/15454)

@hubgeter
hubgeter force-pushed the support_iceberg_v3_row_lineage branch from 85ccf8b to 775cdf6 Compare March 27, 2026 07:11
@hubgeter

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 78.67% (1796/2283)
Line Coverage 64.42% (32291/50128)
Region Coverage 65.28% (16163/24761)
Branch Coverage 55.73% (8612/15454)

@doris-robot

Copy link
Copy Markdown
TPC-H: Total hot run time: 26857 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 775cdf64483456de9136370f326fb091c7c261cb, 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	17631	4496	4307	4307
q2	q3	10711	772	532	532
q4	4713	358	253	253
q5	8002	1228	1011	1011
q6	224	173	151	151
q7	840	860	682	682
q8	10729	1485	1337	1337
q9	6283	4786	4757	4757
q10	6419	1917	1659	1659
q11	458	239	255	239
q12	754	582	471	471
q13	18040	2821	1934	1934
q14	231	234	205	205
q15	q16	753	736	656	656
q17	749	841	447	447
q18	6300	5341	5336	5336
q19	1117	987	630	630
q20	536	497	385	385
q21	4572	2109	1600	1600
q22	367	313	265	265
Total cold run time: 99429 ms
Total hot run time: 26857 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	4702	4599	4567	4567
q2	q3	3863	4312	3831	3831
q4	893	1211	825	825
q5	4086	4398	4411	4398
q6	196	180	153	153
q7	1812	1697	1533	1533
q8	2460	2904	2632	2632
q9	7649	7426	7519	7426
q10	3758	4049	3673	3673
q11	522	449	412	412
q12	479	593	454	454
q13	2494	2902	2020	2020
q14	367	422	339	339
q15	q16	722	761	704	704
q17	1191	1387	1417	1387
q18	7203	6834	6614	6614
q19	917	983	917	917
q20	2188	2150	2015	2015
q21	3997	3635	3401	3401
q22	443	417	387	387
Total cold run time: 49942 ms
Total hot run time: 47688 ms

@doris-robot

Copy link
Copy Markdown
TPC-DS: Total hot run time: 169177 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 775cdf64483456de9136370f326fb091c7c261cb, data reload: false

query5	4337	648	515	515
query6	334	231	204	204
query7	4222	474	268	268
query8	338	240	240	240
query9	8751	2739	2760	2739
query10	502	399	348	348
query11	7062	5116	4875	4875
query12	185	130	125	125
query13	1289	462	363	363
query14	5776	3665	3530	3530
query14_1	2854	2856	2840	2840
query15	206	197	176	176
query16	1028	489	461	461
query17	1113	735	632	632
query18	2466	472	360	360
query19	217	222	191	191
query20	134	128	128	128
query21	211	143	113	113
query22	13266	14173	14623	14173
query23	16592	16295	15947	15947
query23_1	16137	15689	15683	15683
query24	7146	1621	1230	1230
query24_1	1251	1250	1304	1250
query25	549	461	406	406
query26	1237	263	146	146
query27	2794	476	292	292
query28	4492	1858	1851	1851
query29	841	576	491	491
query30	307	227	193	193
query31	1021	960	870	870
query32	84	75	70	70
query33	505	336	291	291
query34	924	872	542	542
query35	634	681	606	606
query36	1110	1121	924	924
query37	143	100	84	84
query38	2911	2874	2949	2874
query39	858	825	796	796
query39_1	796	785	806	785
query40	228	155	135	135
query41	63	60	60	60
query42	259	250	251	250
query43	240	251	216	216
query44	
query45	198	189	186	186
query46	888	983	619	619
query47	2124	2113	2484	2113
query48	336	325	240	240
query49	634	474	383	383
query50	719	293	217	217
query51	4079	4073	4003	4003
query52	260	266	255	255
query53	299	343	286	286
query54	305	266	273	266
query55	89	91	83	83
query56	328	347	316	316
query57	1940	1791	1686	1686
query58	284	276	276	276
query59	2790	2928	2786	2786
query60	338	347	328	328
query61	154	155	154	154
query62	647	592	540	540
query63	317	284	279	279
query64	5063	1282	1014	1014
query65	
query66	1473	463	354	354
query67	24193	24283	24233	24233
query68	
query69	394	317	284	284
query70	959	913	938	913
query71	347	309	297	297
query72	2713	2608	2454	2454
query73	541	548	321	321
query74	9587	9526	9402	9402
query75	2865	2789	2484	2484
query76	2273	1034	672	672
query77	353	375	307	307
query78	11002	11185	10439	10439
query79	1160	755	587	587
query80	1331	637	583	583
query81	555	262	226	226
query82	1289	161	123	123
query83	331	266	246	246
query84	252	115	96	96
query85	896	511	441	441
query86	422	312	283	283
query87	3159	3085	2981	2981
query88	3585	2666	2667	2666
query89	433	373	360	360
query90	2012	180	180	180
query91	173	169	131	131
query92	80	76	73	73
query93	935	859	513	513
query94	649	325	304	304
query95	589	348	315	315
query96	653	521	230	230
query97	2447	2488	2391	2391
query98	243	223	228	223
query99	1014	987	925	925
Total cold run time: 250719 ms
Total hot run time: 169177 ms

@hubgeter

Copy link
Copy Markdown
Contributor Author

run buildall

@doris-robot

Copy link
Copy Markdown
TPC-H: Total hot run time: 26348 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 34b071b133fdfa89a067848b0e4774fd523d2cba, 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	17610	4531	4270	4270
q2	q3	10640	810	542	542
q4	4686	354	245	245
q5	7568	1201	1030	1030
q6	173	172	147	147
q7	773	867	656	656
q8	9308	1500	1355	1355
q9	4982	4721	4717	4717
q10	6255	1919	1658	1658
q11	459	246	252	246
q12	692	574	456	456
q13	18035	2716	1899	1899
q14	224	228	211	211
q15	q16	715	735	669	669
q17	738	816	480	480
q18	5875	5386	5124	5124
q19	1105	993	607	607
q20	538	513	378	378
q21	4189	1832	1411	1411
q22	334	289	247	247
Total cold run time: 94899 ms
Total hot run time: 26348 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	4948	4730	4590	4590
q2	q3	3870	4355	3828	3828
q4	897	1209	789	789
q5	4072	4387	4372	4372
q6	203	177	143	143
q7	1764	1660	1532	1532
q8	2498	2777	2525	2525
q9	7618	7408	7413	7408
q10	3801	3963	3631	3631
q11	514	420	415	415
q12	492	620	456	456
q13	2548	3063	2089	2089
q14	291	294	275	275
q15	q16	720	743	717	717
q17	1139	1351	1318	1318
q18	7205	6690	6693	6690
q19	926	932	941	932
q20	2079	2172	2001	2001
q21	4029	3520	3316	3316
q22	506	442	370	370
Total cold run time: 50120 ms
Total hot run time: 47397 ms

@doris-robot

Copy link
Copy Markdown
TPC-DS: Total hot run time: 168285 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 34b071b133fdfa89a067848b0e4774fd523d2cba, data reload: false

query5	4329	622	495	495
query6	336	233	206	206
query7	4215	473	270	270
query8	333	238	217	217
query9	8744	2724	2688	2688
query10	530	389	339	339
query11	6969	5123	4863	4863
query12	190	131	125	125
query13	1301	467	349	349
query14	5666	3662	3460	3460
query14_1	2844	2864	2882	2864
query15	212	200	177	177
query16	971	468	472	468
query17	1028	745	621	621
query18	2465	455	361	361
query19	225	215	189	189
query20	136	126	125	125
query21	216	143	117	117
query22	13151	13520	13136	13136
query23	16147	15910	16268	15910
query23_1	16280	16395	15952	15952
query24	7817	1769	1291	1291
query24_1	1277	1269	1292	1269
query25	534	454	405	405
query26	1243	260	146	146
query27	2791	483	298	298
query28	4525	1832	1806	1806
query29	824	555	473	473
query30	304	230	188	188
query31	1011	944	882	882
query32	81	70	75	70
query33	520	337	288	288
query34	889	869	526	526
query35	639	690	594	594
query36	1059	1154	987	987
query37	133	98	84	84
query38	2947	2892	2858	2858
query39	855	875	800	800
query39_1	791	802	785	785
query40	240	155	137	137
query41	68	59	62	59
query42	260	255	257	255
query43	240	249	224	224
query44	
query45	197	189	180	180
query46	885	971	613	613
query47	2131	2137	2042	2042
query48	300	326	223	223
query49	639	464	389	389
query50	708	277	220	220
query51	4065	4060	4017	4017
query52	261	270	254	254
query53	291	339	291	291
query54	303	280	266	266
query55	100	88	84	84
query56	316	330	313	313
query57	1913	1798	1767	1767
query58	285	271	272	271
query59	2800	2966	2770	2770
query60	342	324	326	324
query61	161	155	147	147
query62	638	596	536	536
query63	305	285	283	283
query64	4999	1276	1010	1010
query65	
query66	1456	481	363	363
query67	24220	24285	24166	24166
query68	
query69	408	310	287	287
query70	904	972	903	903
query71	345	308	296	296
query72	2846	2663	2481	2481
query73	543	540	316	316
query74	9681	9584	9413	9413
query75	2854	2786	2450	2450
query76	2346	1047	680	680
query77	367	387	313	313
query78	11067	11188	10486	10486
query79	1115	767	571	571
query80	1364	621	551	551
query81	553	263	218	218
query82	1031	151	119	119
query83	373	263	249	249
query84	271	118	96	96
query85	1055	500	452	452
query86	420	320	302	302
query87	3127	3106	3026	3026
query88	3619	2672	2656	2656
query89	428	377	344	344
query90	1911	183	183	183
query91	175	164	140	140
query92	82	79	74	74
query93	950	876	507	507
query94	657	342	312	312
query95	607	350	325	325
query96	655	519	230	230
query97	2460	2495	2405	2405
query98	236	220	217	217
query99	1007	996	926	926
Total cold run time: 250526 ms
Total hot run time: 168285 ms

@doris-robot

Copy link
Copy Markdown

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 78.67% (1796/2283)
Line Coverage 64.41% (32285/50128)
Region Coverage 65.30% (16168/24761)
Branch Coverage 55.72% (8611/15454)

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 37.50% (144/384) 🎉
Increment coverage report
Complete coverage report

@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 78.67% (1796/2283)
Line Coverage 64.47% (32316/50128)
Region Coverage 65.36% (16183/24761)
Branch Coverage 55.83% (8628/15454)

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 44.17% (178/403) 🎉
Increment coverage report
Complete coverage report

@doris-robot

Copy link
Copy Markdown
TPC-H: Total hot run time: 26990 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit c7653223cc9ce26ef0ab46b4743228b8a577bbf1, 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	17621	4555	4536	4536
q2	q3	10731	812	526	526
q4	4766	363	254	254
q5	8126	1231	1016	1016
q6	222	176	145	145
q7	796	874	663	663
q8	10486	1543	1339	1339
q9	6698	4727	4747	4727
q10	6317	1990	1685	1685
q11	460	253	253	253
q12	752	579	466	466
q13	18028	2713	1939	1939
q14	230	238	213	213
q15	q16	743	737	665	665
q17	741	858	448	448
q18	5965	5418	5279	5279
q19	1107	996	623	623
q20	536	483	384	384
q21	4438	2151	1512	1512
q22	362	361	317	317
Total cold run time: 99125 ms
Total hot run time: 26990 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	4752	4511	4585	4511
q2	q3	3925	4399	3863	3863
q4	879	1292	817	817
q5	4123	4461	4356	4356
q6	195	190	145	145
q7	1782	1719	1535	1535
q8	2471	2695	2604	2604
q9	7580	7466	7424	7424
q10	3809	4006	3866	3866
q11	528	441	418	418
q12	472	583	445	445
q13	2553	2921	2085	2085
q14	291	339	279	279
q15	q16	717	769	712	712
q17	1208	1379	1379	1379
q18	7191	6834	6624	6624
q19	938	907	935	907
q20	2082	2135	1988	1988
q21	3955	3525	3437	3437
q22	492	423	398	398
Total cold run time: 49943 ms
Total hot run time: 47793 ms

@doris-robot

Copy link
Copy Markdown
TPC-DS: Total hot run time: 168722 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 c7653223cc9ce26ef0ab46b4743228b8a577bbf1, data reload: false

query5	4331	632	509	509
query6	332	221	196	196
query7	4211	473	261	261
query8	342	254	233	233
query9	8740	2723	2730	2723
query10	495	427	340	340
query11	7014	5102	4879	4879
query12	173	129	125	125
query13	1287	466	353	353
query14	5782	3751	3454	3454
query14_1	2873	2865	2853	2853
query15	207	198	174	174
query16	1004	492	453	453
query17	1137	735	634	634
query18	2451	455	357	357
query19	221	216	188	188
query20	135	127	127	127
query21	214	133	112	112
query22	13226	14106	14636	14106
query23	16874	16272	16005	16005
query23_1	16168	16011	15575	15575
query24	7256	1608	1204	1204
query24_1	1247	1212	1228	1212
query25	543	493	408	408
query26	1242	260	148	148
query27	2783	478	300	300
query28	4463	1858	1824	1824
query29	871	558	482	482
query30	289	228	188	188
query31	1001	946	874	874
query32	84	69	71	69
query33	504	336	299	299
query34	884	877	510	510
query35	629	681	594	594
query36	1064	1174	1024	1024
query37	132	94	85	85
query38	2992	2849	2890	2849
query39	847	830	796	796
query39_1	794	793	813	793
query40	246	188	134	134
query41	61	61	60	60
query42	264	265	265	265
query43	239	250	220	220
query44	
query45	190	186	180	180
query46	881	986	607	607
query47	2097	2113	2068	2068
query48	308	317	227	227
query49	632	454	385	385
query50	688	281	214	214
query51	4083	4081	3986	3986
query52	261	265	250	250
query53	293	334	284	284
query54	312	270	263	263
query55	90	86	88	86
query56	310	323	317	317
query57	1922	1648	1632	1632
query58	284	272	294	272
query59	2791	2926	2720	2720
query60	346	323	315	315
query61	149	148	153	148
query62	629	593	524	524
query63	308	277	276	276
query64	5147	1299	983	983
query65	
query66	1470	453	357	357
query67	24193	24221	24253	24221
query68	
query69	412	316	289	289
query70	980	946	902	902
query71	342	322	301	301
query72	2771	2671	2424	2424
query73	551	545	309	309
query74	9629	9536	9409	9409
query75	2869	2769	2479	2479
query76	2300	1064	688	688
query77	358	380	322	322
query78	10904	11123	10447	10447
query79	1101	780	565	565
query80	834	631	588	588
query81	509	257	230	230
query82	1318	165	129	129
query83	355	273	254	254
query84	255	119	106	106
query85	964	568	532	532
query86	393	306	325	306
query87	3184	3171	3028	3028
query88	3526	2657	2697	2657
query89	432	372	345	345
query90	1894	184	171	171
query91	179	218	150	150
query92	82	77	71	71
query93	919	850	512	512
query94	508	318	303	303
query95	578	345	386	345
query96	644	519	222	222
query97	2438	2497	2401	2401
query98	261	223	225	223
query99	980	980	876	876
Total cold run time: 249967 ms
Total hot run time: 168722 ms

@doris-robot

Copy link
Copy Markdown

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.88% (19947/37719)
Line Coverage 36.42% (187038/513533)
Region Coverage 32.66% (144950/443869)
Branch Coverage 33.85% (63600/187872)

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 73.48% (27143/36939)
Line Coverage 57.03% (291955/511976)
Region Coverage 54.23% (242951/447989)
Branch Coverage 55.97% (105469/188438)

@hubgeter

Copy link
Copy Markdown
Contributor Author

run buildall

@doris-robot

Copy link
Copy Markdown
TPC-H: Total hot run time: 26673 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 2c4034f5c60782aef64c1bb6116f0ffb72c36c81, 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	17471	4584	4352	4352
q2	q3	10527	769	523	523
q4	4673	348	252	252
q5	7553	1208	1028	1028
q6	182	173	146	146
q7	773	879	685	685
q8	9296	1479	1310	1310
q9	4829	4745	4786	4745
q10	6305	1914	1638	1638
q11	478	240	230	230
q12	710	581	462	462
q13	18055	2781	1965	1965
q14	228	226	204	204
q15	q16	733	733	658	658
q17	745	802	492	492
q18	6127	5306	5291	5291
q19	1214	980	608	608
q20	546	500	361	361
q21	4460	1834	1425	1425
q22	339	298	368	298
Total cold run time: 95244 ms
Total hot run time: 26673 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	4837	4669	4593	4593
q2	q3	3926	4555	3842	3842
q4	907	1232	808	808
q5	4134	4386	4351	4351
q6	190	178	137	137
q7	1752	1629	1532	1532
q8	2518	2738	2596	2596
q9	7745	7378	7492	7378
q10	3799	3991	3705	3705
q11	535	455	445	445
q12	521	602	452	452
q13	2506	3427	2109	2109
q14	296	317	301	301
q15	q16	726	770	709	709
q17	1161	1373	1367	1367
q18	7277	6724	6734	6724
q19	939	910	939	910
q20	2108	2185	2035	2035
q21	3976	3464	3338	3338
q22	488	420	372	372
Total cold run time: 50341 ms
Total hot run time: 47704 ms

@doris-robot

Copy link
Copy Markdown

Cloud UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 78.67% (1796/2283)
Line Coverage 64.36% (32263/50128)
Region Coverage 65.27% (16161/24761)
Branch Coverage 55.71% (8610/15454)

@doris-robot

Copy link
Copy Markdown
TPC-DS: Total hot run time: 168696 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 2c4034f5c60782aef64c1bb6116f0ffb72c36c81, data reload: false

query5	4336	640	507	507
query6	335	225	201	201
query7	4241	486	262	262
query8	363	268	232	232
query9	8705	2693	2699	2693
query10	539	418	353	353
query11	6959	5109	4862	4862
query12	184	142	127	127
query13	1272	455	357	357
query14	5752	3689	3436	3436
query14_1	2863	2823	2775	2775
query15	202	193	176	176
query16	1021	452	479	452
query17	1135	721	652	652
query18	2470	456	359	359
query19	217	221	185	185
query20	133	125	125	125
query21	216	135	110	110
query22	13206	14062	14573	14062
query23	16591	16220	16130	16130
query23_1	16229	15658	15773	15658
query24	7240	1598	1210	1210
query24_1	1221	1235	1233	1233
query25	572	458	402	402
query26	1254	265	160	160
query27	2756	473	293	293
query28	4448	1817	1855	1817
query29	820	568	477	477
query30	299	227	191	191
query31	1005	958	874	874
query32	85	69	71	69
query33	515	339	283	283
query34	874	874	524	524
query35	645	670	582	582
query36	1049	1126	926	926
query37	141	102	82	82
query38	3038	2918	2870	2870
query39	844	809	823	809
query39_1	806	801	807	801
query40	228	150	130	130
query41	61	60	72	60
query42	263	254	253	253
query43	234	248	220	220
query44	
query45	195	190	179	179
query46	883	982	596	596
query47	2137	2158	2076	2076
query48	311	312	234	234
query49	618	458	388	388
query50	703	269	218	218
query51	4231	3963	4093	3963
query52	266	266	248	248
query53	288	329	279	279
query54	306	282	262	262
query55	89	87	83	83
query56	320	309	297	297
query57	1938	1725	1679	1679
query58	287	277	264	264
query59	2793	2939	2731	2731
query60	338	355	332	332
query61	156	159	157	157
query62	635	586	549	549
query63	307	277	272	272
query64	5060	1293	1019	1019
query65	
query66	1453	451	364	364
query67	24250	24251	24097	24097
query68	
query69	404	323	278	278
query70	974	978	941	941
query71	331	316	278	278
query72	2866	2645	2469	2469
query73	554	552	312	312
query74	9604	9551	9408	9408
query75	2860	2788	2453	2453
query76	2229	1025	680	680
query77	367	369	301	301
query78	10924	11073	10467	10467
query79	1176	764	570	570
query80	1349	669	615	615
query81	546	268	225	225
query82	994	157	126	126
query83	342	275	256	256
query84	261	133	110	110
query85	998	580	529	529
query86	417	294	331	294
query87	3119	3099	3019	3019
query88	3571	2706	2654	2654
query89	422	377	340	340
query90	1950	190	180	180
query91	168	164	143	143
query92	74	72	73	72
query93	1015	854	498	498
query94	644	311	275	275
query95	593	332	322	322
query96	657	511	231	231
query97	2443	2503	2426	2426
query98	233	219	226	219
query99	1001	994	923	923
Total cold run time: 250471 ms
Total hot run time: 168696 ms

@doris-robot

Copy link
Copy Markdown

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.88% (19947/37719)
Line Coverage 36.42% (187023/513539)
Region Coverage 32.63% (144856/443872)
Branch Coverage 33.85% (63592/187876)

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 73.52% (27156/36939)
Line Coverage 57.02% (291948/511982)
Region Coverage 54.35% (243489/447992)
Branch Coverage 56.05% (105621/188442)

1 similar comment
@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 73.52% (27156/36939)
Line Coverage 57.02% (291948/511982)
Region Coverage 54.35% (243489/447992)
Branch Coverage 56.05% (105621/188442)

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions github-actions Bot added the approved Indicates a PR has been approved by one committer. label Mar 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR approved by anyone and no changes requested.

yiguolei pushed a commit that referenced this pull request Mar 30, 2026
…61848)

bp #61398
### What problem does this PR solve?

Issue Number: close #xxx

Related PR: #xxx

Problem Summary:

### 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 -->
@morningman
morningman merged commit 018601c into apache:master Mar 30, 2026
30 of 33 checks passed
HappenLee pushed a commit to HappenLee/incubator-doris that referenced this pull request Mar 31, 2026
### What problem does this PR solve?
Problem Summary:

This PR adds Iceberg v3 support in Doris.

Main changes:
- support hidden row lineage columns `_row_id` and
`_last_updated_sequence_number`
- support querying and filtering on row lineage columns
- forbid explicitly writing row lineage columns in INSERT
- support Iceberg v3 deletion vectors in DELETE/MERGE
- support rewrite_data_files for Iceberg v3 tables
- improve v2-to-v3 compatibility for query and DML paths
- add FE/BE/unit/regression tests for Parquet and ORC

### Release note

Support Iceberg v3 row lineage and deletion vectors in Doris.
@morningman morningman mentioned this pull request Jul 3, 2026
76 tasks
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 kind/need-document-merged reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants