Skip to content

[test](fe) Pin the partition values and null flags of external file ranges - #69001

Merged
924060929 merged 2 commits into
apache:masterfrom
morningman:b2m-t23-ext-partition-meta
Oct 14, 2026
Merged

924060929 merged 2 commits into
apache:masterfrom
morningman:b2m-t23-ext-partition-meta

Conversation

@morningman

@morningman morningman commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: None

Related PR: #66012, #62821, #68124, #68786

Problem Summary:

In short. This PR ports to master the tests of branch-4.1 #66012 whose behavior master already has, so that behavior is pinned. It changes no production code. #66012 made external scans and file loads send each file's partition values with explicit NULL flags; on master the same behavior arrived through #62821 and the connector plugins, but nothing tests three parts of it.

Background. A file scan range tells BE the partition values of its file in columns_from_path_keys, columns_from_path and columns_from_path_is_null, and BE fills the partition columns from them instead of reading them from the file. Two producers matter here:

  • FilePartitionUtils.parseColumnsFromPathWithNullInfo parses key=value directories for Hive-style tables, TVFs and file loads. The Hive default partition (__HIVE_DEFAULT_PARTITION__) becomes SQL NULL through the null flag, and a literal \N stays data.
  • The Iceberg connector sends a file's identity partition values from the file's own partition spec and partition data, not from its path. After partition evolution, files of different specs carry different keys.

The problem, and what it cost. These are the parts of #66012's tests that hold on master and that no master test covers. Each of them decides what BE writes into a partition column:

Behavior What a regression would do
A case-insensitive parse lowercases a copy of the keys, not the caller's list The caller's column list changes under it
__HIVE_DEFAULT_PARTITION__ → "" with the null flag; a literal \N → \N without it; an ACID layout skips its delta directory A NULL partition reads as an empty string, or a \N value reads as NULL
An Iceberg range sends its identity values in spec order, a NULL value through the null flag Values land in the wrong columns, or a NULL partition reads as an empty string
After the spec evolves from (Region, Dt) to (Dt, Category), a file of each spec sends its own spec's keys Files of one spec get the other spec's columns, which BE then fills as NULL

How this PR fixes it. It adds three tests:

#66012 changes six more tests that are not ported, because master differs on purpose:

branch-4.x test Why it does not apply to master
BrokerUtilTest#normalizeColumnsFromPathPreservesNullInfo The connectors map the Hive default partition to NULL themselves (HiveScanRangePartitionValuesTest), so fe-core's normalization only maps a Java null
IcebergUtilsTest#testGetCommonIdentityPartitionColumnsUsesSafeIntersection, IcebergScanNodeTest#testSetPartitionValuesKeepsCommonMetadataWithLegacyFileScanner branch-4.x keeps only the identity columns every spec shares; master keeps the union, so a file written before the spec evolved to unpartitioned keeps its values (#68124)
IcebergUtilsTest#testMappedTypesAreExcludedFromPartitionMetadata, IcebergScanNodeTest#testSetPartitionValuesSkipsValuesUnsupportedByMappedTypes Since #68786, master sends UUID and TIMESTAMPTZ identity values too
BrokerUtilTest#parseColumnsFromPathForLoadKeepsLegacyNullSemantics A real difference: on branch-4.x a file load stores a literal \N path value as NULL, master stores the two characters \N. It needs a code change and comes in a separate PR

Results. The three tests pass on master without any code change, and each catches a regression of what it pins:

Change to master Fails
FilePartitionUtils stops flagging the Hive default partition as NULL parseColumnsFromPathPreservesNullMetadataAndInputKeys
FilePartitionUtils lowercases the caller's key list in place parseColumnsFromPathPreservesNullMetadataAndInputKeys
IcebergScanRange sends a NULL identity value without the null flag both new Iceberg tests
The Iceberg planner sends every identity key of every spec for each file planScanSendsEachFilesOwnIdentityPartitionsAfterSpecEvolution (and the existing planScanKeepsUnpartitionedSpecIdentityAfterEvolvingToPartitioned)

Original author: @suxiaogang223

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
      • BrokerUtilTest (2) and IcebergScanPlanProviderTest (187) pass.
    • 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

…anges

### What problem does this PR solve?

Issue Number: None

Related PR: apache#66012, apache#62821, apache#68124, apache#68786

Problem Summary: branch-4.1 apache#66012 made external scans and file loads
send each file's partition values with explicit NULL flags. Master has
the same behavior through apache#62821 and the connector plugins, but three
parts of it have no test:

- FilePartitionUtils.parseColumnsFromPathWithNullInfo lowercases a copy
  of the keys rather than the caller's list, sends the Hive default
  partition as "" with the null flag, keeps a literal \N as data, and
  skips the delta directory of an ACID layout.
- An Iceberg range sends its identity partition values in spec order,
  with a NULL value through the null flag.
- After the spec evolves from (Region, Dt) to (Dt, Category), a file of
  either spec sends the identity values of its own spec.

Port the matching tests of apache#66012. Its other tests are not ported:
master maps the Hive default partition in the connectors, keeps the
union of identity columns across specs (apache#68124), and sends UUID and
TIMESTAMPTZ values (apache#68786); the load-path handling of a literal \N
needs a code change and is left to a separate change.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - BrokerUtilTest#parseColumnsFromPathPreservesNullMetadataAndInputKeys
    - IcebergScanPlanProviderTest#planScanSendsIdentityPartitionsInSpecOrderWithNullFlags
    - IcebergScanPlanProviderTest#planScanSendsEachFilesOwnIdentityPartitionsAfterSpecEvolution
    - BrokerUtilTest (2) and IcebergScanPlanProviderTest (187) pass.
- Behavior changed: No
- Does this need documentation: No

Co-authored-by: Socrates <[email protected]>
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@morningman

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

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?

@morningman

Copy link
Copy Markdown
Contributor Author

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

Complete static review of PR #69001 at ed4c79c. One new P2 test-coverage finding is included inline: the caller-key preservation fixture cannot detect in-place lowercasing. No P0/P1 finding was identified, and no existing inline findings require carry-forward.

Critical checkpoint conclusions:

  1. Goal/proof: the three tests pin existing partition value/null and historical-spec metadata. Input-key preservation needs the inline correction; current production correctly copies the caller's keys.
  2. Scope/reuse: focused additions to two test files; existing planning/table/range helpers are reused, with a small typed PartitionData helper for genuine nulls.
  3. Concurrency/locking: no new threads, shared mutable state, locks or lock-order changes; fixtures are local to each test.
  4. Lifecycle/static initialization: in-memory metadata fixtures follow neighboring tests, and existing planning closes its iterables; no new static state or resource-lifetime issue found.
  5. Configuration: no runtime settings added; format-version=2 is confined to the evolution fixture and supports its two-field layout.
  6. Compatibility: production symbols, storage behavior and connector SPI are unchanged; no rolling-upgrade adaptation is needed.
  7. Thrift/protobuf: no definition or field-ID changes; tests inspect existing fields.
  8. Parallel paths: traced case-insensitive query parsing, both legacy/Nereids load modes, and Iceberg eager/streaming/count mapping. Shared production helpers and complementary existing tests cover these paths; no mirrored implementation change is missing.
  9. Conditions/errors: added tests propagate unexpected failures, and byPath fails if either expected file is absent. Existing malformed/missing/incomplete path cases remain covered.
  10. Coverage: inspected all changed hunks, parser negative cases, Iceberg null/evolution/splitting tests and both BE consumers. The new Iceberg fixtures catch wrong file-spec selection, extra union keys and lost/misaligned null flags. These unit tests do not establish end-to-end BE decoding coverage.
  11. Expected results: Hive sentinel -> empty string plus true; literal \N -> literal string plus false; ACID parsing skips the delta directory. Iceberg key/value/null lists match the current serializer. No golden result files are changed.
  12. Observability: no runtime path added, so additional logs or metrics are unnecessary.
  13. Transactions/persistence: Iceberg append/spec commits create fixtures only; Doris visibility, MoW, EditLog and failover logic are unchanged.
  14. Writes/atomicity/crashes: no production data-write or recovery behavior changes; fixture commits complete before planning.
  15. FE-to-BE variables: no new fields or send paths. Both BE scanners associate each existing partition value/null flag by its corresponding key and index.
  16. Performance/memory: only tiny local metadata fixtures and linear helper loops are added; no production hot-path overhead or significant tracked-allocation change.
  17. Other concerns: fixture isolation, null varargs, type/cardinality, historical specs, map ownership and ordering were rechecked. Production uses an all-spec key union filtered to each file; aligned ordering remains safe for keyed consumers. No additional actionable issue found. Release note None and no documentation change fit this test-only scope.

No additional user focus was supplied. Review completed after two rounds: both normal reviewers and the separate risk-focused reviewer returned NO_NEW_VALUABLE_FINDINGS against the unchanged final comment set. Every candidate was independently validated and accepted, deduplicated or dismissed with code evidence; the final changed-file/unresolved-candidate sweep is complete.

Validation was static only. No builds or tests were run and no repository source files were modified, as required by this invocation. Author-reported test runs were not treated as reviewer execution evidence.

public void parseColumnsFromPathPreservesNullMetadataAndInputKeys() throws Exception {
// A case-insensitive parse lowercases its own copy of the keys, not the caller's list, and turns the Hive
// default partition into SQL NULL.
List<String> partitionKeys = Lists.newArrayList("region", "dt");

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.

[P2] Use mixed-case keys to exercise input-list preservation

Both caller keys are already lowercase, so normalizing the caller's list in place (for example, with columnsFromPath.replaceAll(String::toLowerCase)) would still produce the expected values/null flags and pass the assertion that partitionKeys is unchanged. This leaves the input-key preservation invariant named by this test unprotected. Initialize partitionKeys with mixed-case names such as Region and Dt, then assert those original spellings after the case-insensitive parse so that this regression fails the test.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Agreed, fixed in fe841c0. The caller now passes Region and Dt, the path spells them REGION and dt, and the test asserts the list still reads Region, Dt after the case-insensitive parse.

Checked against the regression you describe: with FilePartitionUtils lowercasing the caller's list in place (columnsFromPath.replaceAll(String::toLowerCase)), the new assertion fails (expected: <[Region, Dt]> but was: <[region, dt]>), while the old all-lowercase fixture passed under the same change.

### What problem does this PR solve?

Issue Number: None

Related PR: apache#69001

Problem Summary: parseColumnsFromPathPreservesNullMetadataAndInputKeys
checks that a case-insensitive parse lowercases its own copy of the
partition keys and leaves the caller's list alone. The caller's keys were
already lowercase, so a parse that lowercased the caller's list in place
would still have passed. The caller now passes Region and Dt, the path
spells them REGION and dt, and the test asserts the list still reads
Region, Dt after the parse.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - BrokerUtilTest passes. With FilePartitionUtils changed to lowercase
      the caller's list in place, the new assertion fails; the old fixture
      passed under the same change.
- Behavior changed: No
- Does this need documentation: No

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17596	5721	5572	5572
q2	2104	328	252	252
q3	10252	1414	870	870
q4	4684	468	344	344
q5	7424	807	542	542
q6	189	187	150	150
q7	776	791	631	631
q8	9243	1334	1120	1120
q9	5791	4436	4438	4436
q10	6826	1271	1032	1032
q11	424	252	236	236
q12	629	402	286	286
q13	18051	3066	2382	2382
q14	275	268	245	245
q15	q16	727	736	668	668
q17	1164	747	573	573
q18	7158	6277	6212	6212
q19	1166	939	597	597
q20	382	332	236	236
q21	5168	2238	2553	2238
q22	358	321	278	278
Total cold run time: 100387 ms
Total hot run time: 28900 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	6189	6157	6146	6146
q2	710	565	550	550
q3	5224	5387	4921	4921
q4	2000	2109	1539	1539
q5	5241	5188	6175	5188
q6	257	200	157	157
q7	2317	2065	1927	1927
q8	3270	2904	3077	2904
q9	8271	8295	8263	8263
q10	3736	3703	3330	3330
q11	634	448	398	398
q12	722	736	518	518
q13	2897	3232	2454	2454
q14	328	301	270	270
q15	q16	724	725	650	650
q17	8579	7483	7321	7321
q18	13098	12349	13261	12349
q19	974	836	859	836
q20	2220	2207	1994	1994
q21	6097	4652	4917	4652
q22	495	452	406	406
Total cold run time: 73983 ms
Total hot run time: 66773 ms

@hello-stephen

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

query5	4305	586	447	447
query6	420	214	191	191
query7	4812	453	229	229
query8	321	188	172	172
query9	8782	3995	3972	3972
query10	470	312	266	266
query11	5850	3422	3181	3181
query12	150	88	85	85
query13	1268	459	353	353
query14	6550	4784	4485	4485
query14_1	4236	4213	4240	4213
query15	213	205	182	182
query16	935	449	404	404
query17	850	667	537	537
query18	2424	425	308	308
query19	197	173	146	146
query20	81	82	80	80
query21	232	137	112	112
query22	13047	13067	12937	12937
query23	13199	12696	12027	12027
query23_1	12277	12330	12229	12229
query24	7084	859	462	462
query24_1	479	481	475	475
query25	537	419	371	371
query26	1259	260	138	138
query27	2756	453	272	272
query28	4593	1985	1980	1980
query29	1560	597	466	466
query30	296	225	182	182
query31	891	770	648	648
query32	135	88	90	88
query33	505	303	248	248
query34	888	862	493	493
query35	757	759	654	654
query36	862	820	730	730
query37	132	103	97	97
query38	1820	1828	1682	1682
query39	698	723	682	682
query39_1	685	652	656	652
query40	223	117	100	100
query41	74	71	68	68
query42	89	83	84	83
query43	365	374	337	337
query44	1332	706	707	706
query45	231	183	161	161
query46	838	943	565	565
query47	2980	3026	2928	2928
query48	316	320	221	221
query49	556	389	290	290
query50	675	284	211	211
query51	10701	10553	10396	10396
query52	75	85	71	71
query53	185	205	151	151
query54	245	190	183	183
query55	74	69	61	61
query56	220	220	201	201
query57	1585	1566	1563	1563
query58	284	258	244	244
query59	2323	2373	2143	2143
query60	287	239	250	239
query61	148	154	148	148
query62	394	346	289	289
query63	194	163	165	163
query64	2697	911	736	736
query65	3421	3380	3342	3342
query66	1764	468	296	296
query67	20041	19854	20020	19854
query68	3039	1001	614	614
query69	375	287	248	248
query70	908	850	827	827
query71	297	231	205	205
query72	2689	2519	2249	2249
query73	516	532	292	292
query74	4557	4442	4298	4298
query75	2352	2283	1910	1910
query76	2304	1005	616	616
query77	362	415	308	308
query78	9074	8997	8495	8495
query79	977	884	529	529
query80	751	414	345	345
query81	563	320	263	263
query82	581	136	110	110
query83	280	215	176	176
query84	311	118	106	106
query85	934	445	372	372
query86	348	230	233	230
query87	2008	1968	1847	1847
query88	3608	2693	2686	2686
query89	339	299	259	259
query90	1704	181	174	174
query91	164	147	135	135
query92	88	97	86	86
query93	1027	1000	584	584
query94	485	297	275	275
query95	589	348	383	348
query96	674	520	233	233
query97	2517	2432	2288	2288
query98	153	144	145	144
query99	764	758	657	657
Total cold run time: 233913 ms
Total hot run time: 151840 ms

@morningman

Copy link
Copy Markdown
Contributor Author

run buildall

@morningman

Copy link
Copy Markdown
Contributor Author

/review

@hello-stephen

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

query1	0.01	0.00	0.01
query2	0.10	0.05	0.05
query3	0.26	0.12	0.12
query4	1.61	0.13	0.12
query5	0.24	0.22	0.25
query6	1.16	0.67	0.68
query7	0.03	0.01	0.00
query8	0.06	0.04	0.04
query9	0.42	0.35	0.35
query10	0.60	0.58	0.58
query11	0.20	0.14	0.14
query12	0.18	0.14	0.14
query13	0.49	0.49	0.49
query14	0.97	0.98	0.97
query15	0.63	0.61	0.60
query16	0.34	0.36	0.34
query17	1.15	1.10	1.14
query18	0.22	0.20	0.20
query19	2.12	1.91	2.00
query20	0.02	0.01	0.01
query21	15.50	0.26	0.15
query22	4.35	0.06	0.05
query23	16.24	0.32	0.12
query24	2.74	0.75	0.41
query25	0.09	0.07	0.06
query26	1.57	0.25	0.15
query27	0.05	0.04	0.05
query28	1.63	0.58	0.38
query29	12.58	4.09	3.26
query30	0.28	0.13	0.14
query31	2.77	0.58	0.33
query32	3.26	0.60	0.52
query33	3.10	3.21	3.30
query34	15.43	3.97	3.38
query35	3.33	3.33	3.35
query36	0.54	0.44	0.42
query37	0.10	0.07	0.06
query38	0.05	0.03	0.04
query39	0.04	0.04	0.03
query40	0.17	0.14	0.14
query41	0.08	0.03	0.03
query42	0.04	0.03	0.03
query43	0.04	0.04	0.03
Total cold run time: 94.79 s
Total hot run time: 24.34 s

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

Complete static review of PR #69001 at fe841c0. No new actionable finding was identified. Existing P2 comment 4255391430 is resolved: the parser test now supplies Region/Dt, parses REGION/dt, and asserts the caller retains its original spelling. No existing P0/P1 finding applies, so no blocking IDs are carried forward.

Critical checkpoint conclusions:

  1. Goal and proof: the three added tests correctly assert existing partition key/value/null metadata, per-file identity keys after spec evolution, and caller-key preservation. The mixed-case fixture now exposes in-place lowercasing. This conclusion comes from static tracing, not an executed test run.
  2. Scope and reuse: focused additions to two test files reuse the existing in-memory table, recording catalog, scan and Thrift-population helpers. The small PartitionData helper represents genuine null values directly.
  3. Concurrency and locking: no new threads, locks or lock-order changes. Fixture operations are sequential and catalog/table indexes are local to each fresh catalog.
  4. Lifecycle and initialization: no new static initialization dependency or production resource ownership. Existing scan planning closes its task iterables. Shared in-memory FileIO storage does not cause fixture collisions: Iceberg generates UUID metadata filenames, as confirmed in the pinned Iceberg 1.11.0 source.
  5. Configuration: no runtime setting added or dynamic-setting behavior changed. format-version=2 is confined to the evolution fixture; Iceberg 1.11.0's update implementation confirms that Region is removed and Category appended after Dt.
  6. Compatibility: production symbols, storage behavior and connector SPI are unchanged; no plugin API bump or rolling-upgrade adaptation is required.
  7. Thrift and protobuf: no definition or field-ID changes; tests inspect existing fields.
  8. Parallel paths: traced query parsing, legacy and Nereids file-load producers, and Iceberg eager/streaming range mapping. Shared range builders and adjacent streaming/spec-evolution tests support these paths; no corresponding implementation change is missing.
  9. Conditions and errors: unexpected exceptions fail the tests; byPath throws if either expected file is absent. Existing malformed, missing-key and incomplete-path cases remain covered. No silent error handling or speculative defensive branch is introduced.
  10. Coverage: inspected the full diff, fixture helpers, parser negative cases, adjacent Iceberg null/evolution/splitting tests and both BE consumers. Exact list assertions detect missing/extra per-file keys, cross-file values and lost or misaligned null flags. These metadata unit tests do not execute BE decoding or a full cluster scan.
  11. Expected results: Hive's default sentinel produces an empty placeholder with a true null flag; literal backslash-N remains data with a false flag; the ACID layout parses its partition value. Iceberg old/new tuples match the serializer. No golden result files change.
  12. Observability: no production path is added, so new logs or metrics are unnecessary.
  13. Transactions and persistence: only offline Iceberg fixture metadata commits are exercised. Doris visible versions, MoW, EditLog and failover behavior are unchanged.
  14. Writes and atomicity: no production data-write or crash-recovery behavior changes. Fixture append/spec commits complete before planning; data-file paths are metadata and are not remotely read.
  15. FE-to-BE variables: no transmitted variable is added. Both BE scanners associate each existing partition value/null flag with its corresponding key and list index.
  16. Performance and memory: small finite test fixtures and a linear two-field helper add no production hot-path overhead or significant BE allocation change.
  17. Other concerns: rechecked varargs nulls, type/arity, historical specs, map ownership, enumeration order and fixture isolation. Production orders an all-spec key union filtered to each file; aligned keyed consumers make that safe. Additional order permutations or an exclusive ACID branch discriminator would broaden coverage but do not establish an introduced defect. Release note None and no documentation change fit this test-only PR.

No additional user focus was supplied. Review completed after one round: the normal full-review agent and the separate risk-focused agent both returned NO_NEW_VALUABLE_FINDINGS against the unchanged empty final comment set. The main agent independently verified every recorded risk, read the ledger after each result, and completed an explicit sweep of both changed files and the unresolved-candidate list. No unresolved suspicious point remains. Recovery preserved this invocation's round count; the prior GitHub review was for an older head and was not resubmitted. Current PR reviews/comments and exact head/base were refreshed before submission.

Validation was static only. No builds or tests were run, and no repository source files were modified, as required by the review contract. Author-reported test runs were not treated as reviewer execution evidence.

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17581	5758	5598	5598
q2	2112	308	263	263
q3	10231	1396	833	833
q4	4673	486	347	347
q5	7435	792	549	549
q6	184	183	152	152
q7	771	802	613	613
q8	9246	1372	1139	1139
q9	5738	4454	4453	4453
q10	6845	1295	1021	1021
q11	423	254	240	240
q12	629	401	279	279
q13	18068	3054	2376	2376
q14	280	280	247	247
q15	q16	736	737	662	662
q17	1177	741	577	577
q18	7128	6271	6229	6229
q19	1104	959	598	598
q20	399	338	227	227
q21	5710	2552	2647	2552
q22	398	370	315	315
Total cold run time: 100868 ms
Total hot run time: 29270 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	6715	6669	6812	6669
q2	748	643	586	586
q3	5755	5809	5225	5225
q4	2058	2190	1597	1597
q5	5864	5584	5881	5584
q6	250	190	147	147
q7	2268	2005	1848	1848
q8	3165	2824	2719	2719
q9	8324	8195	8028	8028
q10	3670	3629	3262	3262
q11	587	413	380	380
q12	664	695	496	496
q13	2758	3121	2371	2371
q14	298	286	271	271
q15	q16	663	688	615	615
q17	7897	7056	6909	6909
q18	13166	12336	13075	12336
q19	919	791	781	781
q20	2181	2188	1945	1945
q21	5783	4692	4781	4692
q22	520	461	395	395
Total cold run time: 74253 ms
Total hot run time: 66856 ms

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17598	5630	5553	5553
q2	2130	323	267	267
q3	10224	1438	849	849
q4	4681	479	348	348
q5	7451	834	537	537
q6	188	193	161	161
q7	770	804	622	622
q8	9259	1392	1141	1141
q9	5823	4501	4483	4483
q10	6832	1316	1034	1034
q11	434	253	236	236
q12	639	400	292	292
q13	18070	3085	2384	2384
q14	289	283	253	253
q15	q16	752	731	665	665
q17	1212	740	579	579
q18	7185	6271	6241	6241
q19	1243	966	591	591
q20	377	333	228	228
q21	6300	2559	2597	2559
q22	419	371	305	305
Total cold run time: 101876 ms
Total hot run time: 29328 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	6737	6703	6804	6703
q2	772	621	557	557
q3	5702	5762	5358	5358
q4	2049	2152	1588	1588
q5	5721	5761	5889	5761
q6	245	192	155	155
q7	2223	2057	1783	1783
q8	3267	2775	2829	2775
q9	8256	8219	8137	8137
q10	3683	3661	3289	3289
q11	597	408	402	402
q12	669	699	493	493
q13	2759	3081	2375	2375
q14	281	286	256	256
q15	q16	663	677	613	613
q17	7931	7011	6875	6875
q18	13161	12312	13091	12312
q19	918	809	795	795
q20	2176	2171	1928	1928
q21	5890	4716	4831	4716
q22	497	482	426	426
Total cold run time: 74197 ms
Total hot run time: 67297 ms

@hello-stephen

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

query5	4302	599	462	462
query6	422	210	192	192
query7	4797	457	235	235
query8	328	190	169	169
query9	8769	4009	4092	4009
query10	469	312	272	272
query11	5906	3426	3197	3197
query12	152	87	81	81
query13	1252	439	341	341
query14	6560	4760	4523	4523
query14_1	4328	4261	4268	4261
query15	211	206	184	184
query16	967	468	426	426
query17	891	664	555	555
query18	2437	428	321	321
query19	198	173	137	137
query20	84	81	82	81
query21	213	136	114	114
query22	13071	13106	12885	12885
query23	13318	12623	12150	12150
query23_1	12365	12347	12230	12230
query24	7130	817	463	463
query24_1	468	477	460	460
query25	522	398	338	338
query26	1284	258	139	139
query27	2760	438	265	265
query28	4646	1955	1956	1955
query29	1548	577	428	428
query30	288	219	185	185
query31	887	776	648	648
query32	166	94	88	88
query33	505	291	227	227
query34	965	855	498	498
query35	766	778	648	648
query36	846	835	716	716
query37	128	102	100	100
query38	1814	1754	1716	1716
query39	727	718	676	676
query39_1	682	689	662	662
query40	219	116	136	116
query41	68	62	63	62
query42	86	85	88	85
query43	368	390	328	328
query44	1382	711	711	711
query45	185	177	166	166
query46	859	968	565	565
query47	3023	2995	2942	2942
query48	313	308	217	217
query49	575	400	294	294
query50	709	295	212	212
query51	10629	10731	10531	10531
query52	80	86	70	70
query53	191	208	158	158
query54	225	198	182	182
query55	73	74	63	63
query56	258	220	216	216
query57	1624	1609	1556	1556
query58	284	252	242	242
query59	2358	2382	2135	2135
query60	291	239	221	221
query61	151	149	148	148
query62	391	341	289	289
query63	205	164	170	164
query64	2778	924	776	776
query65	3450	3348	3416	3348
query66	1782	424	301	301
query67	20199	20456	20028	20028
query68	2884	1031	640	640
query69	390	287	249	249
query70	924	853	848	848
query71	303	243	233	233
query72	2821	2743	2315	2315
query73	529	535	300	300
query74	4615	4526	4306	4306
query75	2330	2308	1928	1928
query76	2289	1023	636	636
query77	369	391	298	298
query78	9039	8982	8563	8563
query79	1039	877	517	517
query80	539	418	344	344
query81	527	320	275	275
query82	850	142	110	110
query83	311	200	183	183
query84	310	122	96	96
query85	806	438	360	360
query86	330	237	238	237
query87	2024	1990	1853	1853
query88	3679	2732	2710	2710
query89	331	296	256	256
query90	1914	184	174	174
query91	164	151	123	123
query92	100	86	91	86
query93	1043	1031	591	591
query94	463	328	288	288
query95	607	414	326	326
query96	664	542	241	241
query97	2482	2450	2336	2336
query98	161	146	143	143
query99	792	767	663	663
Total cold run time: 235437 ms
Total hot run time: 152791 ms

@hello-stephen

Copy link
Copy Markdown
Contributor

FE Regression Coverage Report

Increment line coverage 0.00% (0/109) 🎉
Increment coverage report
Complete coverage report

@hello-stephen

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

query1	0.01	0.01	0.01
query2	0.10	0.05	0.05
query3	0.27	0.11	0.11
query4	1.61	0.10	0.12
query5	0.28	0.24	0.22
query6	1.17	0.70	0.69
query7	0.04	0.01	0.01
query8	0.06	0.03	0.04
query9	0.43	0.36	0.35
query10	0.58	0.57	0.57
query11	0.20	0.14	0.14
query12	0.20	0.16	0.15
query13	0.49	0.50	0.50
query14	0.97	0.97	0.95
query15	0.64	0.62	0.61
query16	0.36	0.33	0.34
query17	1.11	1.13	1.10
query18	0.23	0.20	0.22
query19	2.04	1.92	2.08
query20	0.02	0.01	0.02
query21	15.51	0.28	0.14
query22	4.38	0.06	0.05
query23	16.27	0.33	0.12
query24	3.09	0.73	0.46
query25	0.11	0.05	0.06
query26	1.59	0.26	0.16
query27	0.05	0.04	0.04
query28	1.79	0.58	0.39
query29	12.51	4.10	3.26
query30	0.29	0.14	0.14
query31	2.78	0.58	0.34
query32	3.22	0.63	0.51
query33	3.16	3.15	3.32
query34	15.56	4.05	3.40
query35	3.34	3.37	3.35
query36	0.56	0.45	0.47
query37	0.10	0.07	0.06
query38	0.05	0.04	0.04
query39	0.04	0.03	0.03
query40	0.17	0.15	0.14
query41	0.09	0.03	0.03
query42	0.04	0.03	0.03
query43	0.05	0.03	0.03
Total cold run time: 95.56 s
Total hot run time: 24.42 s

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage `` 🎉
Increment coverage report
Complete coverage report

@924060929
924060929 merged commit f823bfd into apache:master Oct 14, 2026
43 of 44 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

PR approved by anyone and no changes requested.

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

Copy link
Copy Markdown
Contributor

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

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. backport/4.2-master reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants