Skip to content

[improvement](paimon) Support IOManager for JNI reads#65332

Merged
Gabriel39 merged 1 commit into
apache:masterfrom
Gabriel39:codex/paimon-jni-io-manager
Jul 8, 2026
Merged

[improvement](paimon) Support IOManager for JNI reads#65332
Gabriel39 merged 1 commit into
apache:masterfrom
Gabriel39:codex/paimon-jni-io-manager

Conversation

@Gabriel39

@Gabriel39 Gabriel39 commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Paimon JNI reads created TableRead without withIOManager, so Paimon primary-key merge reads could not spill through Paimon IOManager. This PR wires Doris catalog properties through FE and BE into the Java scanner, creates the Paimon IOManager for JNI reads, and closes it on scanner close or open failure.

The same IOManager option/default temp-dir handling is implemented in both Paimon JNI scan paths:

  • legacy be/src/format/table/paimon_jni_reader.cpp
  • Format V2 be/src/format_v2/jni/paimon_jni_reader.cpp

Issue Number: None

How to configure

Users enable the Paimon JNI IOManager on the Paimon catalog:

CREATE CATALOG paimon_catalog PROPERTIES (
  "type" = "paimon",
  "paimon.doris.enable_jni_io_manager" = "true"
);

Users can optionally set the spill temp directory explicitly:

ALTER CATALOG paimon_catalog SET PROPERTIES (
  "paimon.doris.jni_io_manager.tmp_dir" = "/path/to/paimon_spill_tmp"
);

If paimon.doris.jni_io_manager.tmp_dir is not set, Doris uses ${storage_root_path}/paimon_jni_scanner_io_tmp as the default parent directory. When a BE has multiple storage_root_path entries, Doris passes all corresponding directories to Paimon IOManager, joined by the platform path separator, for example /data1/doris/paimon_jni_scanner_io_tmp:/data2/doris/paimon_jni_scanner_io_tmp on Linux. The Java scanner creates these parent directories when opening IOManager; Paimon creates and removes its own paimon-* child directory under them.

IOManager implementation

Doris delegates IOManager behavior to the Java scanner. By default, the scanner calls org.apache.paimon.disk.IOManager.create(...). With the Paimon 1.3.1 dependency used by Doris, that factory creates Paimon's default org.apache.paimon.disk.IOManagerImpl, which lazily creates a FileChannelManagerImpl, creates paimon-io-* child directories under the configured temp directories, and removes those child directories when the IOManager is closed.

Users can optionally select a custom IOManager implementation class with a catalog property:

ALTER CATALOG paimon_catalog SET PROPERTIES (
  "paimon.doris.jni_io_manager.impl_class" = "com.example.CustomIOManager"
);

The custom class must already be available on the BE Paimon scanner classpath and must implement Paimon's Java interface org.apache.paimon.disk.IOManager. Doris does not load arbitrary jar URLs from this property; deployment of the custom implementation jar is an operator action. The scanner instantiates the class with the first public constructor it finds in this order:

  1. CustomIOManager(String[] tempDirs)
  2. CustomIOManager(String tempDirs)
  3. CustomIOManager()

After instantiation, the scanner passes it to TableRead.withIOManager(customIOManager).

public class CustomIOManager implements IOManager {
    public CustomIOManager(String[] tempDirs) {
        // initialize custom spill backend
    }
}

Release note

Paimon JNI scanner can enable Paimon IOManager spill with catalog property paimon.doris.enable_jni_io_manager=true; paimon.doris.jni_io_manager.tmp_dir can optionally override the spill temp directory, and paimon.doris.jni_io_manager.impl_class can optionally select a custom org.apache.paimon.disk.IOManager implementation already available on the scanner classpath.

Check List (For Author)

  • Test: Unit Test / Manual test
    • Added PaimonJniReaderTest.BuildScannerParamsInjectsStorageRootTmpDirForEnabledIOManager to cover the Format V2 enable-only IOManager path.
    • Added PaimonJniScannerTest.testCreateDefaultAndCustomIOManager to cover default and custom IOManager instantiation.
    • mvn test -Dmaven.build.cache.enabled=false -pl be-java-extensions/paimon-scanner -Dtest=PaimonJniScannerTest passed on gabriel@10.26.20.3:/mnt/disk3/gabriel/Workspace/dev2/doris.
    • python3 build-support/run_clang_format.py ... check-only passed for modified BE C++ files.
    • git diff --check passed locally and for the modified test file on the remote validation host.
    • ninja -C be/ut_build_ASAN src/format/CMakeFiles/Format.dir/table/paimon_jni_reader.cpp.o src/format/CMakeFiles/Format.dir/__/format_v2/jni/paimon_jni_reader.cpp.o compiled the modified reader objects on the remote validation host.
    • ./run-be-ut.sh --run --filter="PaimonJniReaderTest.*" was attempted on the remote validation host but stopped before target tests due to unrelated missing header faiss/invlists/PreadInvertedLists.h while compiling be/src/storage/index/ann/faiss_ann_index.cpp.
    • ./run-fe-ut.sh --run org.apache.doris.datasource.paimon.source.PaimonScanNodeTest was attempted on the remote validation host but stopped before target tests due to unrelated generated ScalarBuiltins compile errors referencing missing FunctionSet.
  • Behavior changed: Yes. When enabled, Paimon JNI reads now create a Paimon IOManager and use a storage-root scoped temp directory by default. Users can optionally choose a preinstalled custom IOManager implementation class.
  • Does this need documentation: No. The PR description documents the catalog properties, default temp directory, and custom IOManager implementation behavior.

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

@Gabriel39 Gabriel39 marked this pull request as ready for review July 7, 2026 11:11
@Gabriel39

Copy link
Copy Markdown
Contributor Author

/review

@Gabriel39

Copy link
Copy Markdown
Contributor Author

run buildall

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

I found one correctness issue that should be fixed before merge: the IOManager tmp-dir fallback is only added in the legacy Paimon JNI reader, while the default FileScannerV2 Paimon JNI path still reaches Java without the tmp-dir option and fails for enable-only catalogs.

Critical checkpoint conclusions:

  • Goal: partially met; IOManager support works on the changed legacy path but not on the default scanner-v2 path.
  • Scope: the change is focused, but misses a parallel BE reader implementation.
  • Concurrency/lifecycle: no new shared concurrency issue found; Java close handles reader and IOManager cleanup on normal/error paths.
  • Configuration/session propagation: the opt-in catalog property is forwarded, but BE defaulting is incomplete across reader paths.
  • Compatibility/persistence: no storage-format or edit-log compatibility issue found.
  • Tests: helper/unit coverage was added, but it does not cover scanner v2 with paimon.doris.enable_jni_io_manager=true and no explicit tmp dir.
  • Validation: static review only in this runner because thirdparty/installed and thirdparty/installed/bin/protoc are missing.

Subagent conclusions: optimizer-rewrite proposed OPT-1 and tests-session-config proposed duplicate TSC-1; both were merged into the single inline comment. The plugin-driven Paimon connector path was dismissed because current catalog dispatch still routes paimon to the built-in catalog. Convergence round 1 ended with both subagents reporting NO_NEW_VALUABLE_FINDINGS for the final ledger/comment set.

User focus: no additional user-provided focus was present.

Comment thread be/src/format/table/paimon_jni_reader.cpp
@Gabriel39 Gabriel39 force-pushed the codex/paimon-jni-io-manager branch from a2b2223 to 8f8029e Compare July 7, 2026 11:50
@Gabriel39 Gabriel39 requested a review from yiguolei as a code owner July 7, 2026 11:50
@Gabriel39 Gabriel39 force-pushed the codex/paimon-jni-io-manager branch from 8f8029e to b70411d Compare July 7, 2026 11:59
@Gabriel39

Copy link
Copy Markdown
Contributor Author

run buildall

@Gabriel39

Copy link
Copy Markdown
Contributor Author

/review

### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: Paimon JNI reads did not attach Paimon IOManager when creating TableRead, so primary-key merge reads in the Java scanner could not spill through Paimon IOManager. This change forwards catalog-level Paimon JNI IOManager options from FE to BE, creates and closes the IOManager in the Java scanner, supports an optional custom IOManager implementation class that is already available on the scanner classpath, and injects a default IOManager temp directory for both legacy and Format V2 JNI scan paths when the user enables IOManager without specifying a temp dir. The default temp directory is `${storage_root_path}/paimon_jni_scanner_io_tmp` for each BE storage root.

### Release note

Paimon JNI scanner can enable Paimon IOManager spill with catalog property `paimon.doris.enable_jni_io_manager=true`; `paimon.doris.jni_io_manager.tmp_dir` can optionally override the spill temp directory, and `paimon.doris.jni_io_manager.impl_class` can optionally select a custom `org.apache.paimon.disk.IOManager` implementation already available on the scanner classpath.

### Check List (For Author)

- Test: Unit Test / Manual test
    - `mvn test -Dmaven.build.cache.enabled=false -pl be-java-extensions/paimon-scanner -Dtest=PaimonJniScannerTest` passed on `gabriel@10.26.20.3:/mnt/disk3/gabriel/Workspace/dev2/doris`.
    - `python3 build-support/run_clang_format.py ...` check-only passed for modified BE C++ files.
    - `git diff --check` passed.
    - `ninja -C be/ut_build_ASAN src/format/CMakeFiles/Format.dir/table/paimon_jni_reader.cpp.o src/format/CMakeFiles/Format.dir/__/format_v2/jni/paimon_jni_reader.cpp.o` compiled the modified reader objects on the remote validation host.
    - `./run-be-ut.sh --run --filter="PaimonJniReaderTest.*"` was attempted on the remote validation host but stopped before target tests due to unrelated missing header `faiss/invlists/PreadInvertedLists.h` while compiling `be/src/storage/index/ann/faiss_ann_index.cpp`.
    - `./run-fe-ut.sh --run org.apache.doris.datasource.paimon.source.PaimonScanNodeTest` was attempted on the remote validation host but stopped before target tests due to unrelated generated `ScalarBuiltins` compile errors referencing missing `FunctionSet`.
- Behavior changed: Yes. When enabled, Paimon JNI reads now create a Paimon IOManager and use a storage-root scoped temp directory by default. Users can optionally choose a preinstalled custom IOManager implementation class.
- Does this need documentation: No. The PR description documents the catalog properties, default temp directory, and custom IOManager implementation behavior.
@Gabriel39 Gabriel39 force-pushed the codex/paimon-jni-io-manager branch from b70411d to c6bca61 Compare July 7, 2026 12:15

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

Current head addresses the earlier blocking V2-path issue. I did not find another substantiated correctness issue that warrants a new inline comment.

Critical checkpoint conclusions:

  • Goal: met for this patch. FE forwards the opt-in Paimon JNI IOManager catalog options, both legacy and FileScannerV2 JNI readers inject a storage-root scoped tmp-dir default for enable-only catalogs, and the Java scanner creates/closes the Paimon IOManager.
  • Scope: focused on Paimon JNI IOManager option propagation, BE tmp-dir defaulting, Java scanner lifecycle, and targeted tests.
  • Concurrency/lifecycle: no new shared concurrency issue found. The Java scanner closes reader and IOManager on normal close and after open/read failures; Paimon 1.3.1 creates/removes per-IOManager child directories under the configured parent temp dirs.
  • Configuration/session propagation: scan-level TFileScanRangeParams.paimon_options is populated from Paimon catalog properties and consumed by both legacy and V2 JNI paths. The prior scanner-v2 enable-only gap is now fixed.
  • Compatibility/persistence: no storage-format, edit-log, or wire-format compatibility issue found; existing scan-level paimon_options thrift fields are reused.
  • Parallel paths: legacy JNI and FileScannerV2 JNI paths were checked. Native/C++ split paths are not enabled by these Doris-only IOManager keys.
  • Tests: focused FE, Java scanner, and BE V2 reader unit coverage was added. I could not run tests in this runner because .worktree_initialized, thirdparty/installed, and thirdparty/installed/bin/protoc are missing, so validation here is static.
  • Observability/performance: the added Java-side IOManager counter is lightweight; no hot-path performance regression was substantiated.

Subagent conclusions: optimizer-rewrite and tests-session-config both found no new valuable candidates on the initial pass. The existing V2 fallback concern was treated as duplicate of discussion_r3536066774 and verified fixed in current head. Convergence round 1 ended with both live subagents replying NO_NEW_VALUABLE_FINDINGS for the same ledger and empty final inline comment set.

User focus: no additional user-provided review focus was present.

@Gabriel39

Copy link
Copy Markdown
Contributor Author

run buildall

@Gabriel39

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.

I re-reviewed the refreshed head c6bca61a45652fb229c554fd01d8f01b578c684c, including the force-pushed custom Paimon JNI IOManager implementation-class support. I did not find a new substantiated correctness issue that warrants an inline comment.

Critical checkpoint conclusions:

  • Goal: met for this patch. FE forwards the opt-in Paimon JNI IOManager catalog options, both legacy and FileScannerV2 JNI readers inject a storage-root scoped tmp-dir default for enable-only catalogs, and the Java scanner creates/closes the Paimon IOManager.
  • Scope: focused on Paimon JNI IOManager option propagation, BE tmp-dir defaulting, Java scanner lifecycle, optional custom IOManager implementation selection, and targeted tests.
  • Concurrency/lifecycle: no new shared concurrency issue found. The Java scanner closes reader and IOManager on normal close and after open/read failures; the custom implementation path uses the created IOManager through the same close path.
  • Configuration/session propagation: scan-level TFileScanRangeParams.paimon_options is populated from Paimon catalog properties and consumed by both legacy and V2 JNI paths. The new paimon.doris.jni_io_manager.impl_class option is forwarded as doris.jni_io_manager.impl_class from FE, then passed to Java as paimon.doris.jni_io_manager.impl_class.
  • Compatibility/persistence: no storage-format, edit-log, or wire-format compatibility issue found; existing scan-level paimon_options thrift fields are reused.
  • Parallel paths: legacy JNI and FileScannerV2 JNI paths were checked. Native/C++ split paths can receive the scan-level option map but do not enable Java IOManager behavior from these Doris-only JNI keys.
  • Tests: focused FE, Java scanner, and BE V2 reader unit coverage was added, including forwarding of impl_class and the Java custom IOManager construction path. I could not run tests in this runner because .worktree_initialized, thirdparty/installed, and thirdparty/installed/bin/protoc are missing, so validation here is static.
  • Observability/performance: the Java-side IOManager counter remains lightweight; no hot-path performance regression was substantiated.

Subagent conclusions: after the head refresh and main ledger update, both live subagents reran convergence for the same empty inline comment set and replied NO_NEW_VALUABLE_FINDINGS. The existing V2 fallback concern remains duplicate of discussion_r3536066774 and is verified fixed in current head.

User focus: no additional user-provided review focus was present.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Codex automated review failed and did not complete.

Error: Codex completed, but no new pull request review was submitted for the current head SHA.
Workflow run: https://github.com/apache/doris/actions/runs/28864697882

Please inspect the workflow logs and rerun the review after the underlying issue is resolved.

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

Reviewed the current head for Paimon JNI IOManager support across FE catalog option propagation, legacy and FileScannerV2 BE JNI reader parameter construction, Java scanner IOManager creation/close, and the added FE/BE/Java tests.

Critical checkpoint conclusions:

  • Goal and correctness: the PR wires the catalog-level Paimon JNI IOManager options to the backend, creates the IOManager before TableRead.withIOManager(...), and closes it on normal close and open/read failure paths. The current head also covers the FileScannerV2 Paimon JNI path, so the earlier inline concern about missing V2 fallback appears addressed.
  • Scope: the change is focused on Paimon JNI scan option propagation and scanner lifecycle, with related tests only.
  • Concurrency and lifecycle: I did not find new shared mutable concurrency hazards. The Java scanner owns one reader/IOManager per scanner instance and clears them during close; open failure calls close and suppresses close failures onto the original exception.
  • Configuration and compatibility: the new catalog properties are passed through as backend Paimon options without changing persisted formats or FE/BE thrift schema. The BE injects a storage-root scoped default temp dir when IOManager is enabled without an explicit dir.
  • Parallel paths: both legacy PaimonJniReader and Format V2 format_v2/jni/PaimonJniReader now apply the enable-only temp-dir fallback. The C++/native Paimon path may receive the same scan-level options but does not use this IOManager behavior.
  • Tests: added coverage checks FE backend option extraction, scan-level option application, V2 scanner parameter fallback, Java default/custom IOManager creation, and IOManager close cleanup. I did static review in this runner and a changed-file whitespace check; I did not run the full unit test suites here.
  • User focus: no additional user-provided review focus was supplied.

Subagent conclusions:

  • optimizer-rewrite: no candidates became inline comments; final convergence response was NO_NEW_VALUABLE_FINDINGS.
  • tests-session-config: no candidates became inline comments; final convergence response was NO_NEW_VALUABLE_FINDINGS.
  • Existing thread 3536066774 was treated as already-known review context and not duplicated; the current head contains the requested V2 fallback and test coverage.

I found no new blocking issue to submit as an inline review comment.

@Gabriel39

Copy link
Copy Markdown
Contributor Author

run buildall

2 similar comments
@Gabriel39

Copy link
Copy Markdown
Contributor Author

run buildall

@Gabriel39

Copy link
Copy Markdown
Contributor Author

run buildall

@Gabriel39

Copy link
Copy Markdown
Contributor Author

run beut

@Gabriel39

Copy link
Copy Markdown
Contributor Author

run feut

@Gabriel39

Copy link
Copy Markdown
Contributor Author

run performance

1 similar comment
@Gabriel39

Copy link
Copy Markdown
Contributor Author

run performance

@Gabriel39

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17658	4109	4074	4074
q2	2469	308	196	196
q3	10452	1420	859	859
q4	4720	467	340	340
q5	7585	833	570	570
q6	186	167	133	133
q7	758	821	621	621
q8	9944	1547	1486	1486
q9	5767	4340	4330	4330
q10	6806	1759	1500	1500
q11	504	345	316	316
q12	694	536	429	429
q13	18161	3239	2724	2724
q14	257	257	242	242
q15	q16	792	770	704	704
q17	1034	1076	940	940
q18	6999	5846	5504	5504
q19	1298	1202	1047	1047
q20	742	621	520	520
q21	5830	2549	2359	2359
q22	431	353	290	290
Total cold run time: 103087 ms
Total hot run time: 29184 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4401	4350	4290	4290
q2	293	313	208	208
q3	4527	4955	4366	4366
q4	2078	2140	1331	1331
q5	4429	4296	4369	4296
q6	220	174	129	129
q7	1707	1968	1733	1733
q8	2466	2138	2086	2086
q9	7903	7773	7854	7773
q10	4760	4703	4251	4251
q11	571	436	391	391
q12	736	780	550	550
q13	3440	3568	3022	3022
q14	324	322	274	274
q15	q16	718	776	637	637
q17	1334	1301	1293	1293
q18	7993	7269	7142	7142
q19	1056	1021	1048	1021
q20	2213	2206	1966	1966
q21	5168	4491	4320	4320
q22	524	467	433	433
Total cold run time: 56861 ms
Total hot run time: 51512 ms

@hello-stephen

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

query5	4348	644	487	487
query6	471	214	202	202
query7	4852	572	330	330
query8	340	189	181	181
query9	8742	3984	3992	3984
query10	441	361	294	294
query11	5908	2343	2162	2162
query12	157	128	101	101
query13	1268	577	405	405
query14	6276	5297	4942	4942
query14_1	4283	4284	4290	4284
query15	214	201	179	179
query16	1009	431	443	431
query17	1094	707	561	561
query18	2429	458	344	344
query19	205	181	142	142
query20	108	105	106	105
query21	229	159	132	132
query22	13826	13602	13457	13457
query23	17190	16379	16154	16154
query23_1	16368	16219	16247	16219
query24	7520	1787	1293	1293
query24_1	1324	1304	1322	1304
query25	577	488	398	398
query26	1335	332	205	205
query27	2623	577	386	386
query28	4497	2006	2004	2004
query29	1075	616	511	511
query30	348	265	230	230
query31	1137	1102	1000	1000
query32	121	67	67	67
query33	535	328	270	270
query34	1192	1131	672	672
query35	769	796	670	670
query36	1443	1357	1226	1226
query37	150	111	93	93
query38	1888	1708	1622	1622
query39	943	928	894	894
query39_1	876	874	880	874
query40	240	160	147	147
query41	70	68	70	68
query42	95	95	94	94
query43	319	324	279	279
query44	1408	791	769	769
query45	200	194	182	182
query46	1085	1209	760	760
query47	2309	2334	2269	2269
query48	400	437	308	308
query49	592	422	328	328
query50	1069	438	337	337
query51	10818	10843	10815	10815
query52	88	99	78	78
query53	260	295	209	209
query54	295	269	234	234
query55	76	76	68	68
query56	313	292	310	292
query57	1419	1403	1301	1301
query58	278	314	272	272
query59	1555	1634	1453	1453
query60	325	286	266	266
query61	176	213	147	147
query62	683	651	581	581
query63	259	207	211	207
query64	2541	739	604	604
query65	4867	4828	4776	4776
query66	1825	497	377	377
query67	29714	29567	29301	29301
query68	3149	1657	949	949
query69	421	306	273	273
query70	1080	961	912	912
query71	349	313	310	310
query72	2937	2616	2372	2372
query73	857	783	422	422
query74	5083	4986	4742	4742
query75	2605	2591	2214	2214
query76	2311	1182	751	751
query77	350	378	291	291
query78	12288	12306	11767	11767
query79	1479	1153	739	739
query80	1323	538	451	451
query81	563	323	279	279
query82	653	156	122	122
query83	374	316	291	291
query84	278	158	131	131
query85	943	594	503	503
query86	440	313	265	265
query87	1845	1813	1769	1769
query88	3639	2744	2742	2742
query89	466	404	369	369
query90	1926	201	202	201
query91	206	192	195	192
query92	65	62	57	57
query93	1679	1492	973	973
query94	727	359	330	330
query95	771	575	467	467
query96	1083	788	343	343
query97	2686	2676	2581	2581
query98	213	203	195	195
query99	1144	1171	1027	1027
Total cold run time: 265779 ms
Total hot run time: 179737 ms

@hello-stephen

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

query1	0.01	0.01	0.01
query2	0.09	0.05	0.05
query3	0.25	0.15	0.14
query4	1.62	0.14	0.15
query5	0.25	0.23	0.22
query6	1.28	1.09	1.10
query7	0.04	0.01	0.01
query8	0.05	0.04	0.03
query9	0.37	0.32	0.32
query10	0.57	0.55	0.54
query11	0.18	0.14	0.13
query12	0.18	0.15	0.15
query13	0.47	0.46	0.47
query14	1.02	1.01	1.02
query15	0.61	0.60	0.59
query16	0.31	0.33	0.34
query17	1.13	1.13	1.13
query18	0.23	0.21	0.21
query19	2.08	1.96	2.00
query20	0.02	0.02	0.02
query21	15.44	0.22	0.12
query22	4.76	0.05	0.06
query23	16.12	0.30	0.12
query24	2.98	0.42	0.31
query25	0.14	0.05	0.03
query26	0.71	0.21	0.16
query27	0.04	0.03	0.03
query28	3.50	0.88	0.55
query29	12.49	4.05	3.24
query30	0.27	0.16	0.15
query31	2.76	0.58	0.31
query32	3.23	0.60	0.49
query33	3.20	3.29	3.20
query34	15.57	4.21	3.52
query35	3.59	3.51	3.51
query36	0.54	0.45	0.42
query37	0.09	0.07	0.06
query38	0.05	0.04	0.04
query39	0.04	0.03	0.03
query40	0.18	0.16	0.16
query41	0.08	0.03	0.03
query42	0.04	0.02	0.02
query43	0.04	0.04	0.03
Total cold run time: 96.62 s
Total hot run time: 25.12 s

@Gabriel39

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 64.44% (29/45) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 56.53% (23203/41042)
Line Coverage 40.08% (225145/561774)
Region Coverage 36.04% (177795/493333)
Branch Coverage 37.08% (79012/213061)

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 84.62% (11/13) 🎉
Increment coverage report
Complete coverage report

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17678	4111	4054	4054
q2	2083	329	205	205
q3	10196	1389	802	802
q4	4686	462	348	348
q5	7570	823	566	566
q6	178	171	137	137
q7	772	863	624	624
q8	9651	1489	1584	1489
q9	6026	4342	4328	4328
q10	6891	1782	1533	1533
q11	494	334	305	305
q12	746	555	438	438
q13	18104	3342	2737	2737
q14	272	257	250	250
q15	q16	776	778	706	706
q17	1024	1008	982	982
q18	6968	5748	5641	5641
q19	1346	1246	1055	1055
q20	771	637	532	532
q21	5939	2611	2449	2449
q22	434	352	294	294
Total cold run time: 102605 ms
Total hot run time: 29475 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4409	4374	4374	4374
q2	286	324	215	215
q3	4596	4920	4408	4408
q4	2043	2132	1349	1349
q5	4441	4349	4354	4349
q6	225	180	129	129
q7	1716	2073	1679	1679
q8	2459	2183	2055	2055
q9	7865	7911	7816	7816
q10	4724	4702	4334	4334
q11	580	419	365	365
q12	877	807	543	543
q13	3346	3527	3006	3006
q14	304	315	285	285
q15	q16	709	722	657	657
q17	1344	1322	1328	1322
q18	8045	7320	7197	7197
q19	1071	1064	1122	1064
q20	2232	2198	1968	1968
q21	5182	4475	4326	4326
q22	504	468	397	397
Total cold run time: 56958 ms
Total hot run time: 51838 ms

@hello-stephen

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

query5	4356	619	490	490
query6	475	226	197	197
query7	4836	586	338	338
query8	358	196	186	186
query9	8760	4080	4046	4046
query10	493	343	309	309
query11	6084	2398	2168	2168
query12	164	117	107	107
query13	1251	643	448	448
query14	6099	5324	4979	4979
query14_1	4320	4310	4310	4310
query15	211	208	184	184
query16	1042	495	418	418
query17	1148	738	580	580
query18	2436	483	357	357
query19	209	191	159	159
query20	114	107	108	107
query21	233	162	138	138
query22	13717	13635	13481	13481
query23	17390	16488	16024	16024
query23_1	16347	16287	16240	16240
query24	7605	1765	1281	1281
query24_1	1308	1274	1308	1274
query25	558	500	397	397
query26	1326	355	208	208
query27	2581	600	386	386
query28	4444	2023	1985	1985
query29	1101	673	497	497
query30	335	261	233	233
query31	1112	1097	993	993
query32	109	64	63	63
query33	519	320	267	267
query34	1185	1129	660	660
query35	776	782	692	692
query36	1413	1384	1214	1214
query37	157	105	94	94
query38	1886	1726	1646	1646
query39	935	907	922	907
query39_1	902	919	901	901
query40	265	201	141	141
query41	65	63	63	63
query42	91	91	91	91
query43	330	324	285	285
query44	1460	772	759	759
query45	198	191	176	176
query46	1105	1217	755	755
query47	2365	2359	2230	2230
query48	401	391	285	285
query49	575	415	298	298
query50	1029	437	325	325
query51	10816	10853	10682	10682
query52	85	85	77	77
query53	263	286	199	199
query54	273	246	227	227
query55	73	70	67	67
query56	268	283	270	270
query57	1416	1376	1307	1307
query58	285	255	244	244
query59	1571	1644	1408	1408
query60	300	265	243	243
query61	148	150	147	147
query62	715	649	583	583
query63	238	207	206	206
query64	2496	748	603	603
query65	4854	4759	4655	4655
query66	1842	515	386	386
query67	29465	29379	29304	29304
query68	3081	1611	1026	1026
query69	401	331	270	270
query70	1092	1003	988	988
query71	341	324	315	315
query72	2842	2642	2354	2354
query73	819	808	428	428
query74	5109	4999	4751	4751
query75	2618	2557	2208	2208
query76	2323	1191	771	771
query77	350	396	282	282
query78	12141	12343	11686	11686
query79	2365	1233	735	735
query80	1632	541	448	448
query81	530	316	277	277
query82	597	162	125	125
query83	369	312	290	290
query84	281	156	133	133
query85	961	595	503	503
query86	427	294	277	277
query87	1829	1815	1756	1756
query88	3764	2788	2745	2745
query89	452	406	368	368
query90	1859	198	191	191
query91	203	186	164	164
query92	61	62	59	59
query93	1768	1541	1006	1006
query94	712	363	326	326
query95	795	516	532	516
query96	1008	794	327	327
query97	2701	2664	2541	2541
query98	226	213	210	210
query99	1179	1134	1038	1038
Total cold run time: 266398 ms
Total hot run time: 179547 ms

@hello-stephen

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

query1	0.01	0.01	0.01
query2	0.10	0.06	0.05
query3	0.26	0.17	0.14
query4	1.62	0.15	0.14
query5	0.25	0.23	0.22
query6	1.28	1.07	1.04
query7	0.04	0.01	0.01
query8	0.05	0.04	0.04
query9	0.39	0.31	0.31
query10	0.56	0.58	0.58
query11	0.20	0.14	0.15
query12	0.19	0.15	0.15
query13	0.48	0.48	0.49
query14	1.04	1.03	0.99
query15	0.63	0.60	0.61
query16	0.32	0.34	0.31
query17	1.13	1.10	1.13
query18	0.24	0.23	0.21
query19	2.00	1.94	1.92
query20	0.01	0.01	0.01
query21	15.42	0.23	0.13
query22	4.86	0.05	0.06
query23	16.13	0.31	0.13
query24	3.01	0.41	0.32
query25	0.12	0.05	0.05
query26	0.72	0.21	0.15
query27	0.04	0.04	0.04
query28	3.51	0.93	0.54
query29	12.50	4.02	3.22
query30	0.27	0.16	0.15
query31	2.77	0.59	0.32
query32	3.24	0.59	0.50
query33	3.21	3.27	3.22
query34	15.68	4.26	3.52
query35	3.60	3.55	3.61
query36	0.54	0.43	0.44
query37	0.08	0.06	0.07
query38	0.05	0.04	0.03
query39	0.04	0.03	0.03
query40	0.18	0.16	0.15
query41	0.09	0.04	0.03
query42	0.04	0.02	0.02
query43	0.05	0.03	0.03
Total cold run time: 96.95 s
Total hot run time: 25.12 s

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

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

PR approved by anyone and no changes requested.

@shuke987

shuke987 commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

skip buildall

@Gabriel39 Gabriel39 merged commit 4e74105 into apache:master Jul 8, 2026
35 of 36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants