Skip to content

[fix](fe) Fix Paimon JDBC driver registration for JNI scans#61513

Open
xylaaaaa wants to merge 4 commits intoapache:masterfrom
xylaaaaa:fix-paimon-jdbc-jni-driver-registration
Open

[fix](fe) Fix Paimon JDBC driver registration for JNI scans#61513
xylaaaaa wants to merge 4 commits intoapache:masterfrom
xylaaaaa:fix-paimon-jdbc-jni-driver-registration

Conversation

@xylaaaaa
Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: Paimon JDBC system tables that execute through the BE JNI scanner could not initialize the PostgreSQL JDBC driver, so queries such as snapshots/manifests/partitions failed with No suitable driver found. This change propagates JDBC driver metadata to BE and registers the driver in a DriverManager-visible classloader before Paimon table initialization. The regression case is also extended to cover all supported Paimon JDBC system tables, including row_tracking on a row-tracking-enabled table.

Release note

Fix Paimon JDBC catalog system table queries that run through the BE JNI scanner.

Check List (For Author)

  • Test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • Regression test
    • 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

Manual test:

  • ./run-fe-ut.sh --run org.apache.doris.datasource.property.metastore.PaimonJdbcMetaStorePropertiesTest,org.apache.doris.datasource.paimon.source.PaimonScanNodeTest

  • env JAVA_HOME=/mnt/disk1/chenjunwei/doris_tools/jdk-17.0.9+9 /mnt/disk1/chenjunwei/doris_tools/apache-maven-3.9.9/bin/mvn -pl be-java-extensions/paimon-scanner -am test -Dtest=PaimonJdbcDriverUtilsTest -DfailIfNoTests=false

  • Verified all Paimon JDBC system tables on the local FE/BE cluster, including row_tracking on a row-tracking-enabled table

  • Behavior changed:

    • Yes. Paimon JDBC system tables now work through BE JNI scans.
  • Does this need documentation?

    • No.

Copilot AI review requested due to automatic review settings March 19, 2026 06:43
@Thearas
Copy link
Copy Markdown
Contributor

Thearas commented Mar 19, 2026

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@xylaaaaa
Copy link
Copy Markdown
Contributor Author

run buildall

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Fixes Paimon JDBC catalog system table queries executed via the BE JNI scanner by ensuring the JDBC driver JAR/class metadata is propagated from FE to BE and registered in a DriverManager-visible classloader before Paimon table initialization.

Changes:

  • Add FE-side propagation of JDBC driver URL/class into scan-range Paimon options for BE execution.
  • Register JDBC drivers in BE (JNI scanner) using a shared JdbcDriverUtils helper and JniScannerClassLoader URL injection.
  • Extend/introduce tests: FE unit tests, BE Java extension unit test, and broader regression coverage for Paimon JDBC system tables (including row_tracking).

Reviewed changes

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

Show a summary per file
File Description
regression-test/suites/external_table_p0/paimon/test_paimon_jdbc_catalog.groovy Extends regression to validate all supported Paimon JDBC system tables are readable and adds a row-tracking case.
fe/fe-core/src/test/java/org/apache/doris/datasource/property/metastore/PaimonJdbcMetaStorePropertiesTest.java Adds UT verifying backend options include full driver URL and driver class.
fe/fe-core/src/test/java/org/apache/doris/datasource/paimon/source/PaimonScanNodeTest.java Adds UT verifying PaimonScanNode extracts backend Paimon options for JDBC catalogs.
fe/fe-core/src/main/java/org/apache/doris/datasource/property/metastore/PaimonJdbcMetaStoreProperties.java Adds getBackendPaimonOptions() to expose JDBC driver metadata for BE scans.
fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/source/PaimonScanNode.java Propagates backend Paimon options into TPaimonFileDesc for JNI scan ranges.
fe/be-java-extensions/paimon-scanner/src/test/java/org/apache/doris/paimon/PaimonJdbcDriverUtilsTest.java New unit test validating driver registration path for the JNI scanner classloader.
fe/be-java-extensions/paimon-scanner/src/main/java/org/apache/doris/paimon/PaimonJniScanner.java Registers the JDBC driver (when configured) before initializing Paimon table/reader.
fe/be-java-extensions/paimon-scanner/src/main/java/org/apache/doris/paimon/PaimonJdbcDriverUtils.java Adds Paimon-specific wrapper to register JDBC drivers based on params.
fe/be-java-extensions/java-common/src/main/java/org/apache/doris/common/jdbc/JdbcDriverUtils.java Introduces shared driver registration utility (URLClassLoader/JniScannerClassLoader-aware).
fe/be-java-extensions/java-common/src/main/java/org/apache/doris/common/classloader/JniScannerClassLoader.java Adds addURLIfAbsent to support safe dynamic URL injection.
be/src/gen_cpp/CMakeLists.txt Excludes generated Thrift skeleton sources from compilation.

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

return Collections.emptyMap();
}
if (StringUtils.isBlank(driverClass)) {
throw new IllegalStateException("jdbc.driver_class or paimon.jdbc.driver_class is required when "
Comment on lines +45 to +53
Map<String, String> params = new HashMap<>();
params.put(PaimonJdbcDriverUtils.PAIMON_JDBC_DRIVER_URL, driverJar.toUri().toURL().toString());
params.put(PaimonJdbcDriverUtils.PAIMON_JDBC_DRIVER_CLASS, DummyJdbcDriver.class.getName());

JniScannerClassLoader scannerClassLoader = new JniScannerClassLoader("paimon-test", List.of(), null);
PaimonJdbcDriverUtils.registerDriverIfNeeded(params, scannerClassLoader);

Driver driver = DriverManager.getDriver("jdbc:dummy:test");
Assert.assertTrue(driver.acceptsURL("jdbc:dummy:test"));
Comment on lines +66 to +81
private Path createDriverJar() throws IOException {
Path jarPath = Files.createTempFile("paimon-jdbc-driver", ".jar");
String resourceName = DummyJdbcDriver.class.getName().replace('.', '/') + ".class";
try (JarOutputStream jarOutputStream = new JarOutputStream(Files.newOutputStream(jarPath));
InputStream inputStream = DummyJdbcDriver.class.getClassLoader().getResourceAsStream(resourceName)) {
Assert.assertNotNull(inputStream);
jarOutputStream.putNextEntry(new JarEntry(resourceName));
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) >= 0) {
jarOutputStream.write(buffer, 0, bytesRead);
}
jarOutputStream.closeEntry();
}
return jarPath;
}
@doris-robot
Copy link
Copy Markdown

TPC-H: Total hot run time: 26912 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 87b2ee4e7a8fd31ff4eed030fb726b1dd52bfd8d, 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	17679	4571	4335	4335
q2	q3	10649	779	523	523
q4	4677	347	250	250
q5	7557	1200	1010	1010
q6	180	175	145	145
q7	761	840	669	669
q8	9309	1493	1332	1332
q9	5030	4740	4775	4740
q10	6307	1936	1665	1665
q11	452	254	231	231
q12	744	580	466	466
q13	18041	2960	2177	2177
q14	229	234	213	213
q15	q16	753	739	658	658
q17	737	867	423	423
q18	5981	5502	5307	5307
q19	1173	990	619	619
q20	541	481	373	373
q21	4546	1850	1492	1492
q22	486	367	284	284
Total cold run time: 95832 ms
Total hot run time: 26912 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	4729	4614	4752	4614
q2	q3	3891	4409	3845	3845
q4	867	1210	814	814
q5	4073	4396	4364	4364
q6	181	175	143	143
q7	1734	1688	1538	1538
q8	2534	2727	2646	2646
q9	7563	7479	7359	7359
q10	3734	4024	3638	3638
q11	556	462	441	441
q12	497	621	454	454
q13	2871	3367	2294	2294
q14	290	304	288	288
q15	q16	729	754	721	721
q17	1191	1419	1332	1332
q18	7405	6981	6616	6616
q19	880	915	992	915
q20	2088	2173	1981	1981
q21	4088	3505	3324	3324
q22	469	448	369	369
Total cold run time: 50370 ms
Total hot run time: 47696 ms

@doris-robot
Copy link
Copy Markdown

TPC-DS: Total hot run time: 168467 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 87b2ee4e7a8fd31ff4eed030fb726b1dd52bfd8d, data reload: false

query5	4330	649	507	507
query6	337	239	220	220
query7	4203	466	272	272
query8	352	252	230	230
query9	8764	2709	2686	2686
query10	506	374	339	339
query11	6988	5126	4907	4907
query12	184	129	126	126
query13	1286	475	366	366
query14	5807	3765	3470	3470
query14_1	2833	2805	2801	2801
query15	202	191	172	172
query16	988	477	445	445
query17	1129	737	637	637
query18	2466	457	356	356
query19	219	211	188	188
query20	142	131	126	126
query21	216	138	119	119
query22	13282	14231	14859	14231
query23	16201	15803	15679	15679
query23_1	15823	15552	15555	15552
query24	7236	1616	1215	1215
query24_1	1241	1216	1247	1216
query25	565	510	398	398
query26	1230	265	152	152
query27	2754	480	306	306
query28	4449	1822	1826	1822
query29	843	568	490	490
query30	293	230	192	192
query31	990	943	873	873
query32	84	70	67	67
query33	523	336	283	283
query34	877	861	528	528
query35	631	691	600	600
query36	1121	1104	1010	1010
query37	131	94	84	84
query38	2950	2892	2860	2860
query39	874	828	804	804
query39_1	799	806	795	795
query40	231	152	137	137
query41	64	61	59	59
query42	259	255	253	253
query43	236	245	217	217
query44	
query45	193	190	184	184
query46	859	985	597	597
query47	2140	2563	2082	2082
query48	329	313	226	226
query49	636	452	406	406
query50	675	279	210	210
query51	4072	4011	3969	3969
query52	263	274	259	259
query53	292	343	291	291
query54	300	270	267	267
query55	92	85	81	81
query56	315	314	310	310
query57	1913	1756	1643	1643
query58	297	277	271	271
query59	2789	2941	2784	2784
query60	357	340	326	326
query61	159	154	149	149
query62	633	581	530	530
query63	311	279	279	279
query64	5049	1280	1015	1015
query65	
query66	1471	453	357	357
query67	24320	24292	24122	24122
query68	
query69	406	299	302	299
query70	975	945	968	945
query71	342	310	299	299
query72	2793	2795	2423	2423
query73	536	539	315	315
query74	9594	9591	9397	9397
query75	2857	2740	2446	2446
query76	2285	1037	728	728
query77	354	379	311	311
query78	10973	11034	10501	10501
query79	3133	746	574	574
query80	1716	625	532	532
query81	567	258	224	224
query82	986	154	120	120
query83	328	263	252	252
query84	257	124	98	98
query85	926	498	457	457
query86	500	313	329	313
query87	3114	3134	3012	3012
query88	3552	2648	2620	2620
query89	427	367	343	343
query90	2215	182	173	173
query91	164	166	144	144
query92	96	76	78	76
query93	2444	825	493	493
query94	651	322	285	285
query95	596	343	326	326
query96	647	513	227	227
query97	2471	2458	2446	2446
query98	245	228	221	221
query99	1017	998	904	904
Total cold run time: 253786 ms
Total hot run time: 168467 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.74% (19793/37532)
Line Coverage 36.27% (184908/509870)
Region Coverage 32.50% (143069/440261)
Branch Coverage 33.68% (62571/185791)

@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 71.61% (26307/36735)
Line Coverage 54.46% (276734/508151)
Region Coverage 51.66% (229518/444307)
Branch Coverage 53.15% (99011/186275)

@morningman
Copy link
Copy Markdown
Contributor

/review

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Code Review Summary

This PR fixes Paimon JDBC system table queries that run through the BE JNI scanner by propagating JDBC driver metadata from FE to BE and registering the driver before Paimon table initialization. The approach is correct and the end-to-end data flow works: FE puts jdbc.driver_url and jdbc.driver_class into paimon_options → BE C++ adds paimon. prefix → Java scanner reads paimon.jdbc.driver_url / paimon.jdbc.driver_class → driver registration happens before initTable().

Critical Checkpoint Conclusions

  • Goal accomplished? Yes. The code correctly propagates JDBC driver info from FE → BE thrift → JNI scanner, and registers the driver before Paimon table initialization, fixing the No suitable driver found error.
  • Test coverage? Adequate. Unit tests cover the FE getBackendPaimonOptions(), the BE-side PaimonJdbcDriverUtils.registerDriverIfNeeded() (including error cases), and the regression test covers all JDBC system tables.
  • Concurrency? JniScannerClassLoader.addURLIfAbsent() is synchronized, REGISTERED_DRIVER_KEYS uses ConcurrentHashMap.newKeySet(), and DRIVER_CLASS_LOADER_CACHE uses ConcurrentHashMap.computeIfAbsent(). The race between REGISTERED_DRIVER_KEYS.add() and the subsequent registration in JdbcDriverUtils.registerDriver() is acceptable — worst case is a redundant DriverManager.registerDriver() call, which is idempotent.
  • Lifecycle / memory? DRIVER_CLASS_LOADER_CACHE entries are never evicted, which is acceptable since the number of distinct JDBC driver URLs is bounded and small.
  • Incompatible changes? None. Uses the existing paimon_options thrift field, no new thrift fields added.
  • Parallel code paths? The PaimonCppReader (native C++ reader) also reads paimon_options but only for file format hints, not driver registration — this is correct since native reader doesn't need JDBC drivers.
  • Configuration items? No new configs added.
  • FE-BE variable passing? Properly uses the existing paimon_options map in TPaimonFileDesc.

Issues Found

See inline comments for details. Summary of issues:

  1. Unrelated change: be/src/gen_cpp/CMakeLists.txt modification is unrelated to the Paimon JDBC driver fix and should be in a separate PR.
  2. Per-split redundancy: paimon_options is set identically for every split, while the codebase convention (as seen with paimon_predicate and Hadoop conf) is to set scan-node-wide data at the scan-node level. This adds unnecessary serialization overhead for many-split queries.
  3. Code duplication opportunity: DriverShim is now triplicated across the codebase (FE Paimon, FE Iceberg, BE java-extensions). The new JdbcDriverUtils was created as a shared utility but the FE-side copies were not consolidated.

${GEN_CPP_DIR}/*.cc
)
list(FILTER SRC_FILES EXCLUDE REGEX "_server\\.skeleton\\.cpp$")

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.

This change (skeleton filter + trailing blank line removal) is unrelated to the Paimon JDBC driver fix. It was introduced by a different commit (JuiceFS compatibility). Per the commit standards in AGENTS.md: "Files in git commit should only be related to the current modification task." This should be in a separate PR or excluded from this one.

}
fileDesc.setFileFormat(fileFormat);
if (!backendPaimonOptions.isEmpty()) {
fileDesc.setPaimonOptions(backendPaimonOptions);
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.

Per-split redundancy: backendPaimonOptions contains the same JDBC driver URL and class for every split, yet it's set per-split in TPaimonFileDesc.paimon_options. This is inconsistent with the existing pattern — see the comment at line 267-268 ("Hadoop conf is set at ScanNode level via params.properties in createScanRangeLocations(), no need to set it for each split to avoid redundant configuration") and line 205-207 where paimon_predicate is also set at the scan-node level.

For queries with many splits, this means the same two key-value pairs are serialized redundantly in every TFileRangeDesc. Consider setting these options at the scan-node level (e.g., via params.properties or a dedicated field in TFileScanRangeParams) instead.

}

private static final class DriverShim implements Driver {
private final Driver delegate;
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 duplication: This DriverShim class is the third identical copy in the codebase — the other two are:

  • PaimonJdbcMetaStoreProperties.DriverShim (FE side, line 222)
  • IcebergJdbcMetaStoreProperties.DriverShim (FE side, line 191)

Since JdbcDriverUtils was explicitly created as a shared utility class, consider also consolidating the FE-side copies to reduce maintenance burden. (The FE copies live in a different classloader context, but the DriverShim class itself is trivially shareable — it's a pure delegation wrapper with no classloader-specific behavior.)

This is a minor improvement suggestion, not a blocking issue.

### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: Paimon JDBC system tables that execute through the BE JNI scanner could not initialize the PostgreSQL JDBC driver, so queries such as snapshots/manifests/partitions failed with 'No suitable driver found'. This change propagates JDBC driver metadata to BE and registers the driver in a DriverManager-visible classloader before Paimon table initialization.

### Release note

Fix Paimon JDBC catalog system table queries that run through the BE JNI scanner.

### Check List (For Author)

- Test: FE unit test / Java extension unit test / Manual test
    - FE unit test: ./run-fe-ut.sh --run org.apache.doris.datasource.property.metastore.PaimonJdbcMetaStorePropertiesTest,org.apache.doris.datasource.paimon.source.PaimonScanNodeTest
    - Java extension unit test: env JAVA_HOME=/mnt/disk1/chenjunwei/doris_tools/jdk-17.0.9+9 /mnt/disk1/chenjunwei/doris_tools/apache-maven-3.9.9/bin/mvn -pl be-java-extensions/paimon-scanner -am test -Dtest=PaimonJdbcDriverUtilsTest -DfailIfNoTests=false
    - Manual test: Paimon JDBC catalog system tables on local FE/BE cluster
- Behavior changed: Yes (Paimon JDBC system tables now work through BE JNI scans)
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: The Paimon JDBC regression case only verified schemas and snapshots, which left the other system tables and the row_tracking table unexercised. Extend the regression case to cover every system table exposed through table$system_name syntax, including a separate row-tracking-enabled table.

### Release note

None

### Check List (For Author)

- Test: Manual test
    - Manual test: Verified all Paimon JDBC system tables on the local FE/BE cluster, including row_tracking on a row-tracking-enabled table
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: None

Related PR: apache#61513

Problem Summary: Address review feedback for Paimon JDBC JNI scans by moving backend Paimon options to scan-level params with BE fallback, aligning driver_class validation exceptions, cleaning up JDBC driver test state, and removing the unrelated build change from the PR branch history.

### Release note

None

### Check List (For Author)

- Test: Unit Test / Static check

    - git diff --check on the staged files

    - ./run-fe-ut.sh --run org.apache.doris.datasource.property.metastore.PaimonJdbcMetaStorePropertiesTest,org.apache.doris.datasource.paimon.source.PaimonScanNodeTest,org.apache.doris.paimon.PaimonJdbcDriverUtilsTest (still running in the PR worktree at commit time)

- Behavior changed: Yes (Paimon backend options now propagate at scan level with BE fallback; validation exception type is aligned)

- Does this need documentation: No
@xylaaaaa xylaaaaa force-pushed the fix-paimon-jdbc-jni-driver-registration branch from 87b2ee4 to a0ed403 Compare March 28, 2026 14:29
### What problem does this PR solve?

Issue Number: None

Related PR: apache#61513

Problem Summary: Adjust the Paimon C++ reader conditional formatting so the updated option fallback logic matches the repository style and does not trip format checks.

### Release note

None

### Check List (For Author)

- Test: No need to test (format-only change); verified with `git diff --check -- be/src/format/table/paimon_cpp_reader.cpp`
- Behavior changed: No
- Does this need documentation: No
@xylaaaaa
Copy link
Copy Markdown
Contributor Author

run buildall

@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% (32289/50128)
Region Coverage 65.31% (16172/24761)
Branch Coverage 55.76% (8617/15454)

@hello-stephen
Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 50.00% (12/24) 🎉
Increment coverage report
Complete coverage report

@doris-robot
Copy link
Copy Markdown

TPC-H: Total hot run time: 26994 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit fac0362599ac4b718fc01c631d21ba92a5529595, 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	17642	4529	4480	4480
q2	q3	10731	790	533	533
q4	4731	360	255	255
q5	8115	1217	1026	1026
q6	206	175	145	145
q7	802	860	675	675
q8	10545	1527	1397	1397
q9	6706	4724	4724	4724
q10	6284	1947	1689	1689
q11	472	258	250	250
q12	723	591	485	485
q13	18046	2700	1923	1923
q14	229	243	210	210
q15	q16	737	735	667	667
q17	730	845	448	448
q18	6315	5366	5334	5334
q19	1110	978	622	622
q20	541	493	364	364
q21	4434	2126	1510	1510
q22	399	350	257	257
Total cold run time: 99498 ms
Total hot run time: 26994 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	4722	4544	4649	4544
q2	q3	4036	4364	3812	3812
q4	892	1202	770	770
q5	4099	4414	4324	4324
q6	188	177	143	143
q7	1766	1673	1533	1533
q8	2523	2742	3040	2742
q9	7623	7370	7432	7370
q10	3751	4018	3578	3578
q11	517	430	417	417
q12	509	593	459	459
q13	2605	2885	2129	2129
q14	283	299	280	280
q15	q16	702	792	739	739
q17	1283	1444	1388	1388
q18	7385	6776	6729	6729
q19	885	904	900	900
q20	2056	2259	2048	2048
q21	3931	3488	3352	3352
q22	474	450	390	390
Total cold run time: 50230 ms
Total hot run time: 47647 ms

@doris-robot
Copy link
Copy Markdown

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

query5	4325	697	529	529
query6	336	233	208	208
query7	4225	496	275	275
query8	335	244	248	244
query9	8696	2754	2729	2729
query10	533	434	380	380
query11	6957	5146	4899	4899
query12	193	142	136	136
query13	1283	473	354	354
query14	5571	4091	3808	3808
query14_1	3168	3111	3038	3038
query15	209	197	181	181
query16	996	473	437	437
query17	866	737	601	601
query18	2434	456	342	342
query19	227	215	180	180
query20	140	130	126	126
query21	209	145	122	122
query22	13381	14446	14693	14446
query23	16915	16332	15986	15986
query23_1	16154	15699	15679	15679
query24	7127	1699	1236	1236
query24_1	1251	1262	1237	1237
query25	619	485	415	415
query26	1246	268	155	155
query27	2779	496	314	314
query28	4472	1847	1861	1847
query29	858	585	476	476
query30	310	225	194	194
query31	1016	962	888	888
query32	82	71	71	71
query33	513	349	305	305
query34	913	919	522	522
query35	680	706	614	614
query36	1099	1099	1014	1014
query37	135	101	84	84
query38	2993	2954	2948	2948
query39	869	837	804	804
query39_1	804	789	809	789
query40	239	162	140	140
query41	65	59	59	59
query42	268	265	261	261
query43	250	261	226	226
query44	
query45	247	195	186	186
query46	936	1028	614	614
query47	3105	2119	2456	2119
query48	315	320	231	231
query49	640	481	388	388
query50	706	281	215	215
query51	4184	4129	3997	3997
query52	276	281	264	264
query53	325	365	298	298
query54	312	295	264	264
query55	97	91	88	88
query56	332	340	321	321
query57	1919	1854	1528	1528
query58	289	283	279	279
query59	2845	3054	2715	2715
query60	357	344	326	326
query61	159	147	158	147
query62	636	587	541	541
query63	323	290	280	280
query64	5103	1315	1030	1030
query65	
query66	1464	498	362	362
query67	24282	24458	24285	24285
query68	
query69	411	325	298	298
query70	1005	1004	849	849
query71	361	311	312	311
query72	3067	2954	2704	2704
query73	547	555	326	326
query74	9690	9592	9463	9463
query75	3098	2931	2549	2549
query76	2296	1136	738	738
query77	372	388	311	311
query78	10964	11033	10431	10431
query79	2942	814	577	577
query80	1747	656	578	578
query81	580	272	234	234
query82	1009	160	123	123
query83	349	270	244	244
query84	308	125	101	101
query85	909	525	465	465
query86	558	314	299	299
query87	3150	3099	2995	2995
query88	3585	2625	2661	2625
query89	448	403	354	354
query90	2088	189	186	186
query91	171	167	138	138
query92	85	77	73	73
query93	1754	897	509	509
query94	647	320	286	286
query95	593	353	381	353
query96	645	540	231	231
query97	2482	2489	2428	2428
query98	246	234	244	234
query99	990	980	913	913
Total cold run time: 255772 ms
Total hot run time: 170657 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.89% (19936/37690)
Line Coverage 36.41% (186791/513017)
Region Coverage 32.68% (144887/443401)
Branch Coverage 33.87% (63523/187558)

@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.56% (27152/36912)
Line Coverage 57.09% (291989/511479)
Region Coverage 54.36% (243288/447523)
Branch Coverage 56.10% (105533/188124)

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.

6 participants