Skip to content

[draft](ivm) for run pipeline test - #66266

Draft
yujun777 wants to merge 226 commits into
apache:masterfrom
yujun777:ivm-yj-pipeline
Draft

[draft](ivm) for run pipeline test#66266
yujun777 wants to merge 226 commits into
apache:masterfrom
yujun777:ivm-yj-pipeline

Conversation

@yujun777

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: close #xxx

Related PR: #xxx

Problem Summary:

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason
  • Behavior changed:

    • No.
    • Yes.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

yujun777 added 30 commits July 30, 2026 10:33
…ogging

- Require non-null detailMessage in IVMRefreshResult.fallback() to match
  IVMCapabilityResult.unsupported() contract; remove single-arg overload
- Add toString() to IVMRefreshResult for log readability
- Add WARN logging on all fallback paths in IVMRefreshManager with MV name
- Make doRefresh() the public API; remove redundant ivmRefresh() wrapper
- Remove IVMPlanPattern, IVMPlanAnalysis, IVMPlanAnalyzer, IVMDeltaPlannerDispatcher
- IVMCapabilityChecker now takes List<DeltaPlanBundle> instead of IVMPlanAnalysis
- IVMRefreshManager simplified to 2 deps: capabilityChecker + deltaExecutor
- Delta bundles produced by Nereids rules, retrieved via MTMVAnalyzeQueryInfo
- Add analyzeDeltaBundles() hook for testability
- Add ivmDeltaBundles to MTMVAnalyzeQueryInfo, populated from CascadesContext
- Update tests to JUnit 5 and new interface signatures
- Fix checkstyle import order in CreateTableCommandTest
- Delete IvmRewriteMtmvPlan placeholder and its test
- Remove rewriteRootPlan field from CascadesContext (no longer needed)
- Replace IVM_REWRITE_MTMV_PLAN with IVM_NORMALIZE_MTMV_PLAN in RuleType
- Add IvmNormalizeMtmvPlan skeleton (row-id injection, avg rewrite, TODO)
- Add IvmDeltaScanOnly and IvmDeltaAggRoot skeletons
- Merge delta rules into single topic in Rewriter
- Add IvmAnalyzeMode enum (NONE/NORMALIZE_ONLY/FULL) to replace boolean flags
- Replace enableIvmRewriteInNereids with enableIvmNormalRewrite + enableIvmDeltaRewrite
- MTMVPlanUtil.analyzeQuery/analyzeQueryWithSql take IvmAnalyzeMode parameter
- CreateMTMVInfo: NORMALIZE_ONLY for incremental MV, NONE otherwise
- ensureMTMVQueryUsable: same mode as CREATE MV
- IVMRefreshManager: FULL mode (normalize + delta)
- Update IvmNormalizeMtmvPlan/IvmDeltaScanOnly/IvmDeltaAggRoot to use new session vars
- Fix MTMVPlanUtilTest: JUnit5, IvmAnalyzeMode.NONE, updated CountingSessionVariable
- Add testAnalyzeQueryIvmAnalyzeModeSetSessionVariables covering all 3 modes
- Add IvmContext: holds Map<Slot, isDeterministic> rowIdDeterminism + List<DeltaPlanBundle>
- Replace ivmDeltaBundles in CascadesContext with Optional<IvmContext>
- IvmNormalizeMtmvPlan: whitelist-based visitor (DefaultPlanRewriter<IvmContext>)
  - visitLogicalOlapScan: inject __IVM_ROW_ID__ at index 0 via LogicalProject
    - MOW: Alias(buildRowIdHash(uk...), __IVM_ROW_ID__) -> deterministic
    - DUP_KEYS: Alias(UuidNumeric(), __IVM_ROW_ID__) -> non-deterministic
    - MOR / AGG_KEYS: throw AnalysisException
  - visitLogicalProject: propagate child row-id; throw if child has none
  - visit: throw for any unwhitelisted node
  - buildRowIdHash: uses murmur_hash3_64 (TODO: replace with 128-bit hash)
- MTMVPlanUtil: read delta bundles from IvmContext instead of direct field
- Tests: DUP_KEYS, MOW (deterministic), MOR (throws), AGG_KEYS (throws),
  project propagation, unsupported node, gate disabled
- IvmNormalizeMtmvPlan: whitelist LogicalResultSink, prepend row-id;
  extract hasRowIdInOutputs/prependRowId helpers
- ColumnDefinition: add newIvmRowIdColumnDefinition with mv_ prefix
- MTMVPlanUtil: prepend row-id ColumnDefinition at index 0; reset IVM
  session vars in finally block to prevent test leakage
- BaseViewInfo: extract static rewriteProjectsToUserDefineAlias overload
- CreateMTMVInfo: fix rewriteQuerySql to snapshot/restore rewrite map
  and call alias rewrite when simpleColumnDefinitions present
- CreateTableCommandTest: add 4 IVM UTs covering scan, project-scan,
  no-alias, alias rewrite, and column count mismatch
- CreateMTMVInfo: set UNIQUE_KEYS + enable_unique_key_merge_on_write=true
  for INCREMENTAL refresh MVs; reject user-specified key columns
- MTMVPlanUtil.analyzeKeys: return new List instead of mutating the
  immutable input list; throw if IVM row-id column not found in columns
- MTMVPlanUtil.analyzeQuery: only reset IVM session vars in finally block
  for modes that actually set them (NORMALIZE_ONLY resets NORMAL only,
  FULL resets both, NONE resets neither)
- MTMVPlanUtilTest: add 4 new UTs covering UNIQUE_KEYS+MOW assertion,
  DUP_KEYS for non-IVM, and rejection of user-specified UNIQUE/DUP keys
- CountingSessionVariable: count only enabling ("true") setVarOnce calls
…aRewriter

Move IVM delta plan generation out of Nereids rewrite rules into an
external IvmDeltaRewriter that will be called by IVMRefreshManager.
IvmNormalizeMtmvPlan now stores the normalized plan in IvmContext so
IVMRefreshManager can retrieve it for delta rewriting.

- Add normalizedPlan field to IvmContext, store after normalization
- Add ivmNormalizedPlan field to MTMVAnalyzeQueryInfo
- Delete IvmDeltaScanOnly, IvmDeltaAggRoot, IvmAnalyzeMode
- Remove IVM_DELTA_SCAN_ONLY/IVM_DELTA_AGG_ROOT from RuleType/Rewriter
- Remove ENABLE_IVM_DELTA_REWRITE session variable
- Remove deltaCommandBundles from IvmContext
- Replace IvmAnalyzeMode enum with boolean enableIvmNormalize
- Create skeleton IvmDeltaRewriter + IvmDeltaRewriteContext
- Rewrite IVMRefreshManager.analyzeDeltaCommandBundles to use
  normalized plan (returns empty bundles for now, triggers fallback)
IvmDeltaRewriter no longer extends DefaultPlanRewriter. It now validates
the normalized plan is a supported scan-only or project-scan pattern,
extracts the base table, and produces an INSERT INTO mv command wrapped
in a DeltaCommandBundle. IvmDeltaRewriteContext gains a ConnectContext
field, and IVMRefreshManager.analyzeDeltaCommandBundles is wired to
call the rewriter.
…es to concrete classes

IVMDeltaExecutor now contains real execution logic following the MTMVTask.exec()
pattern: creates ConnectContext/StatementContext/StmtExecutor, runs the command,
and checks query state. IVMCapabilityChecker returns ok() by default.
IVMRefreshManager uses a no-arg public constructor, instantiating both
collaborators internally, with a @VisibleForTesting constructor for injection.
For INCREMENTAL MVs, attempt IVM refresh first via IVMRefreshManager.
On success, return early and skip partition-based refresh.
On fallback, log the reason and continue with existing refresh path.
…eltaExecutor

Extract common command execution boilerplate shared by MTMVTask.exec()
and IVMDeltaExecutor.executeBundle() into MTMVPlanUtil.executeCommand().
This also adds the missing audit logging to IVM delta execution.
Keep the hidden IVM row id in refresh planning and exclude it from MV nondeterministic checks.
Adjust exchange fragment output expr handling for incremental refresh, rename the MV-specific collector, and add FE UT plus mtmv regression coverage.

Tests: ./run-fe-ut.sh --run org.apache.doris.nereids.rules.rewrite.IvmNormalizeMtmvPlanTest,org.apache.doris.nereids.trees.plans.PlanVisitorTest,org.apache.doris.nereids.trees.plans.commands.UpdateMvByPartitionCommandTest
Tests: ./run-regression-test.sh --run -d mtmv_p0 -s test_ivm_basic_mtmv
Ensure the root fragment always rewrites output exprs from the final physical plan outputs so aggregate and TopN plans do not keep stale SlotRefs. Add FE/unit and regression coverage for MTMV hidden row-id changes after complete refresh.
Disable table-sink MV rewrite in the MTMV refresh execution context so refresh planning cannot rewrite back to the target MV.

Add a SessionVariable setter and extend UpdateMvByPartitionCommandTest to assert both MV rewrite switches are disabled for the refresh executor.

Test: ./run-fe-ut.sh --run org.apache.doris.nereids.trees.plans.commands.UpdateMvByPartitionCommandTest
Move IVM normalization after sink binding so incremental MTMV inserts keep hidden columns aligned with bound olap sink outputs and target slots.

Tests:
- bash ./run-fe-ut.sh --run org.apache.doris.nereids.trees.plans.CreateTableCommandTest
- bash ./run-fe-ut.sh --run org.apache.doris.mtmv.MTMVTest,org.apache.doris.nereids.rules.rewrite.IvmNormalizeMtmvPlanTest
… normalization

- Remove dead condition in BindSink.getColumnToChildOutput: the second
  clause of the IVM hidden column skip guard was always true by definition
  of missingIvmHiddenColumns (columns guaranteed absent from child output)
- Add integration test testSinkWithPlaceholderChildReplacesRowIdAndPreservesExprId
  covering the BindSink placeholder -> IvmNormalizeMtmvPlan replacement pipeline
- Fix checkstyle import order violations in BindSink, IvmNormalizeMtmvPlan,
  MTMVTest, and IvmNormalizeMtmvPlanTest introduced in the previous commit
### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: Rename the IVM MTMV normalize rule class, its RuleType constant, and the matching FE unit test to remove the stale Plan suffix and keep the analyzer registration aligned with the new symbol names.

### Release note

None

### Check List (For Author)

- Test: FE unit test via   bash ./run-fe-ut.sh --run org.apache.doris.nereids.rules.rewrite.IvmNormalizeMtmvTest
- Behavior changed: No
- Does this need documentation: No
yujun777 and others added 23 commits July 30, 2026 10:37
Rename partition refresh methods to make the PARTITIONS/COMPLETE refresh path explicit.

Key changes:
- Rename the retry wrapper to refreshPartitionsWithRetry
- Rename the refresh implementation to refreshPartitions
- Update MTMVTaskTest reflection call

Unit Test:
- MTMVTaskTest: 31 tests passed
Replacing an incremental materialized view with `swap=false` removes the old
MV but leaves its hidden table streams registered in the database and
`TableStreamManager`. The orphaned metadata also remains after journal replay.

**Root cause:** `Alter.replaceTableInternal()` bypasses the normal MTMV drop
path, so the IVM stream cleanup in `InternalCatalog.unprotectDropTable()` is
not invoked.

**Change Summary:**

| File | Change Description |
|------|-------------------|
| `Alter.java` | Clean up the replaced IVM streams for non-swap replacement on both Leader handling and journal replay |
| `InternalCatalog.java` | Extract reusable IVM stream cleanup and hold each stream write lock during deletion |
| `AlterMTMVTest.java` | Cover non-swap cleanup, replay cleanup, and swap preservation |
| Regression test | Verify the old stream is removed and the replacement stream remains |

```mermaid
graph LR
    A[REPLACE MTMV] --> B{swap}
    B -->|true| C[Keep both IVM streams]
    B -->|false| D[Drop old IVM streams]
    E[Journal replay] --> D
    D --> F[Clean database and TableStreamManager]
```
Make default incremental refresh explain match pending-stream execution while
providing an explicit structural mode for exhausted streams.

Key changes:
- Add EXPLAIN REFRESH ... INCREMENTAL WITH ALL STREAMS syntax.
- Keep ordinary REFRESH and partition refresh syntax unchanged.
- Propagate exhausted-stream inclusion through IVM rewrite contexts.
- Add FE parser/unit and mtmv_p0/ivm regression coverage.

Unit Test:
- ExplainRefreshMTMVCommandTest: 23 tests passed.
- test_ivm_explain_refresh: 1 suite passed.
Incremental materialized views used the materialized view ID and the base table's short name to name internal streams. When one materialized view referenced same-named tables in different databases or catalogs, both inputs resolved to the same stream name. Creating the later stream replaced the earlier one, so incremental refresh lost one input.

Root cause: `IvmUtil.streamName()` did not include the base table catalog and database. The create, lookup, alter, and drop paths therefore could not uniquely identify or verify the stream belonging to a fully qualified base table.

Change Summary:

| Area | Change Description |
|------|--------------------|
| `IvmUtil` | Generate a fixed-length stream suffix from the length-prefixed catalog, database, and table path using SHA-256, a 128-bit prefix, and lowercase Base36. |
| Stream lifecycle | Use the fully qualified base table path for stream creation, lookup, alter cleanup, and MV cleanup; verify persisted stream ownership before using or deleting a candidate. |
| Tests | Cover deterministic naming, ownership conflicts, cross-database same-name base tables, incremental refresh, and internal stream access guards. |

The fixed-length digest keeps names within the table-name limit while separating same-named tables across database and catalog boundaries. Persisted ownership remains the source of truth: a hash collision or an unrelated object with the candidate name causes creation to fail, while cleanup leaves that object untouched.

```mermaid
flowchart LR
    A[Catalog, database, table] --> B[Length-prefixed UTF-8 encoding]
    B --> C[SHA-256, first 128 bits, Base36]
    C --> D[IVM stream name]
    D --> E[Create stream]
    D --> F[Lookup for refresh]
    D --> G[Alter or drop cleanup]
    E --> H[Verify persisted base table ownership]
    F --> H
    G --> H
```
Record query IDs from IVM and ordinary refresh paths, including failure paths where a refresh statement has already created a query ID.

Key changes:
- Pass a query ID callback through IVM refresh execution and record it in MTMVTask.
- Record query IDs for complete and partition refreshes while ignoring empty IDs.
- Add unit and regression coverage for complete and incremental refreshes.

Unit Test:
- IvmRefreshManagerTest
- test_ivm_task_query_id regression
Pass audit metadata and QueryId recording through IvmRefreshContext, and keep refresh audit statements consistent across incremental and partition-based refreshes.

Key changes:
- Move IVM context construction into each retry attempt.
- Include refresh mode and qualified MV name in audit statements.
- Reduce IvmRefreshContext constructors and update affected tests.

Unit Test:
- IvmRefreshManagerTest
- MTMVTaskTest
- fast-compile-fe main source validation
Add the DORIS-27275 INNER JOIN aggregate scenario where a dimension key is updated and then deleted before the next incremental refresh. Validate that the IVM result removes the old group.

Key changes:
- Add the IVM regression SQL scenario without a complete MV reference.
- Add the generated expected output containing only the retained group.

Unit Test:
- test_ivm_inner_join_update_delete
Use one setupComputeGroup flow for IVM and partition refresh, and verify both the session context and recorded task metadata.
Rename refresh context, result, manager, and their tests to make their incremental-only scope explicit. Document the shared rewrite context/result and inline the fallback result factory.

Key changes:
- Rename IvmRefreshContext/Result/Manager to IvmIncrRefreshContext/Result/Manager.
- Update all FE production and test references.
- Add normalize, incremental, and full refresh scope comments.

Unit Test:
- FE main incremental compilation passed.
- FE UT attempted with Maven cache disabled; blocked by Byte Buddy JVM attach failure in the environment.
Use the IVM-specific exception type for invalid hidden slots and missing full-refresh stream columns so IVM failure reasons are preserved consistently.

Key changes:\n- Replace direct AnalysisException throws in IVM utility and full-refresh analysis rule.\n- Classify both failures as PLAN_REWRITE_FAILED.\n\nUnit Test:\n- IvmUtilTest (14 tests passed).\n- FE main incremental compilation passed.
Remove obsolete IVM visible TSO and refresh helper APIs, and simplify refresh exception propagation while keeping known fallback classification.

Key changes:
- Remove OlapTable.getVisibleTso mock and MTMVPlanUtil ctxCustomizer overloads.
- Inline IVM refresh execution and propagate unknown exceptions directly.
- Update affected MTMV task tests and Mockito stubs.

Unit Test:
- ./build.sh --fe --clean
- Focused IVM/MTMV FE UT started after clean build; CreateMTMVCommandTest passed before the run was stopped for scope review.
Prevent IVM FE unit tests from inheriting stale thread-local ConnectContext and add regression coverage for aggregate joins with deltas from both inputs.

Key changes:
- Clear ConnectContext after each IVM delta test.
- Reuse the test context when constructing and normalizing alias-based aggregate plans.
- Add aggregate join incremental refresh regression coverage.

Unit Test:
- IvmDeltaRewriterTest
- FE Maven validate
- test_ivm_agg_join_2 regression test
Allow nested outer joins on the null side during IVM creation when explicitly enabled, and warn that the complex delta calculation can significantly reduce incremental refresh performance. Add context coverage and a regression test with two real incremental refreshes.
IVM refresh can race with base-table partition creation, causing the MV insert to fail before the MV partition is synchronized.

Key changes:
- Classify missing MV partition errors and retry IVM after synchronizing partitions.
- Bound IVM retries and preserve existing fallback behavior for other failures.
- Add regression coverage for ALTER ADD PARTITION with binlog updates.

Unit Test:
- MTMVTaskTest: 32 tests passed
- mtmv_p0/ivm/test_ivm_partition_sync_retry: passed
Prevent background MTMV tasks from consuming execute-limited IVM fault injection points intended for a specific regression MV.

Key changes:
- Add MV-name filter points for partition-sync and IVM RPC failure injection.
- Keep execute: 1 only on the action debug points and extract the FE predicates into helpers.
- Update both IVM regression suites to configure and clean up filter/action points.

Unit Test:
- FE incremental compilation.
- test_ivm_partition_sync_retry and test_ivm_execution_failure_no_fallback regression suites.
Allow nested outer joins on null-producing sides during IVM normalization and remove the obsolete session variable. Keep retained-side row-id determinism checks and add creation/refresh coverage for nested joins on both sides.

Key changes:
- Remove the null-side complexity guard and session variable.
- Update IVM normalization and CREATE MTMV tests.
- Add left-nested outer-join incremental refresh regression coverage.

Unit Test:
- CreateMTMVCommandTest
- IvmNormalizeMTMVJoinTest, IvmFullRefreshMTMVTest, IvmIncrRefreshMTMVTest
- test_ivm_nested_outer_join_create
Support stable row IDs and initial complete refreshes for OneRowRelation plans in IVM materialized views. Reject partitioned IVM definitions that contain OneRowRelation and add focused unit and regression coverage.

Key changes:
- Normalize OneRowRelation with a stable LARGEINT row ID and include it in plan signatures.
- Detect OneRowRelation plans during refresh and force the initial IVM refresh to COMPLETE.
- Add join, union, aggregate, and base-table mutation regression coverage.

Unit Test:
- MTMVTaskTest
- IvmNormalizeMTMVTest
- CreateMTMVCommandTest
- test_ivm_one_row_relation_1 regression
Fix chained IVM refresh failures caused by missing commit TSO hidden columns and keep CREATE-time normalized plan signatures diagnosable.

Key changes:
- Treat commit TSO as a common IVM hidden column only when it is present in the plan or schema.
- Align IVM hidden-column fallback, signature normalization, and MTMV unique-key merge-on-write analysis.
- Add chained MTMV regression coverage for stream reads and incremental refreshes.

Unit Test:
- IvmRewriteContextTest, IvmUtilTest, and IvmPlanSignatureGeneratorTest
- test_ivm_chained_mtmv_2 regression
Reject explicit incremental MTMV creation when its query reads a non-IVM MTMV, because the base MTMV refreshes by partition overwrite and cannot provide an incremental changelog. Add FE coverage for the creation failure.

Key changes:
- Reject non-IVM MTMV base tables during IVM normalization.
- Add CreateMTMVCommandTest coverage for the invalid dependency.

Unit Test:
- CreateMTMVCommandTest: 93 tests passed.
Add typed IVM sequence calculation so native MIN_DELTA streams use BIGINT while the encoding can be extended to LARGEINT for binlog sequences. Propagate the selected sequence type through MTMV creation and delta rewrite, and add a LARGEINT outer-join regression case.

Key changes:
- Encode refresh version, delta index, binlog sequence, and operation according to the selected sequence type.
- Propagate sequence type to MTMV hidden columns and normalize hidden-column defaults.
- Add sequence boundary tests and the LARGEINT outer-join regression case.

Unit Test:
- IvmSequenceCalculatorTest
- CreateMTMVCommandTest
- MTMV IVM unit tests
- test_ivm_outer_join_6
@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?

@yujun777

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17811	3974	3993	3974
q2	2087	319	201	201
q3	10318	1395	805	805
q4	4683	478	334	334
q5	7523	838	559	559
q6	198	170	137	137
q7	752	821	592	592
q8	9749	1620	1583	1583
q9	6172	4253	4304	4253
q10	6844	1745	1472	1472
q11	517	365	326	326
q12	764	584	461	461
q13	18064	3255	2703	2703
q14	259	256	251	251
q15	q16	790	776	708	708
q17	1031	918	1093	918
q18	6909	5814	5478	5478
q19	1455	1294	1130	1130
q20	829	684	602	602
q21	5895	2659	2323	2323
q22	437	362	297	297
Total cold run time: 103087 ms
Total hot run time: 29107 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4405	4277	4271	4271
q2	291	317	207	207
q3	4536	4936	4384	4384
q4	2054	2141	1371	1371
q5	4388	4322	4277	4277
q6	230	183	127	127
q7	1708	2034	1704	1704
q8	2515	2201	2118	2118
q9	7823	7763	7626	7626
q10	4684	4585	4199	4199
q11	572	401	381	381
q12	748	748	528	528
q13	3393	3495	2975	2975
q14	330	316	285	285
q15	q16	696	748	657	657
q17	1343	1316	1338	1316
q18	8035	7369	6874	6874
q19	1119	1078	1097	1078
q20	2213	2185	1929	1929
q21	5259	4547	4417	4417
q22	509	470	396	396
Total cold run time: 56851 ms
Total hot run time: 51120 ms

@hello-stephen

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

query5	4337	624	471	471
query6	505	221	209	209
query7	4857	570	361	361
query8	355	188	175	175
query9	8766	4054	4031	4031
query10	462	345	294	294
query11	5967	2299	2110	2110
query12	164	105	102	102
query13	1254	602	468	468
query14	6244	5182	4866	4866
query14_1	4215	4205	4208	4205
query15	215	196	178	178
query16	998	473	446	446
query17	1119	730	593	593
query18	2448	474	352	352
query19	218	197	157	157
query20	116	111	107	107
query21	239	160	144	144
query22	13620	13545	13255	13255
query23	17281	16399	16093	16093
query23_1	16207	16208	16215	16208
query24	7495	1812	1313	1313
query24_1	1314	1319	1295	1295
query25	575	468	398	398
query26	1338	355	217	217
query27	2586	598	381	381
query28	4437	2033	2023	2023
query29	1098	628	485	485
query30	352	269	222	222
query31	1112	1090	981	981
query32	116	66	61	61
query33	542	329	252	252
query34	1200	1165	659	659
query35	773	792	671	671
query36	1041	1050	914	914
query37	163	122	91	91
query38	1900	1709	1680	1680
query39	874	882	855	855
query39_1	839	853	828	828
query40	315	156	146	146
query41	66	63	64	63
query42	93	88	89	88
query43	319	326	279	279
query44	1401	790	774	774
query45	190	183	176	176
query46	1051	1208	745	745
query47	2198	2151	2090	2090
query48	405	435	290	290
query49	574	441	304	304
query50	1053	454	370	370
query51	10646	10522	10352	10352
query52	84	92	76	76
query53	265	282	201	201
query54	293	228	214	214
query55	73	71	68	68
query56	300	279	302	279
query57	1330	1313	1231	1231
query58	275	271	262	262
query59	1607	1623	1411	1411
query60	311	273	254	254
query61	163	149	146	146
query62	556	493	431	431
query63	238	200	201	200
query64	2854	1044	906	906
query65	4712	4624	4640	4624
query66	1832	497	391	391
query67	29225	29252	29165	29165
query68	3205	1564	919	919
query69	413	308	266	266
query70	891	808	767	767
query71	375	350	313	313
query72	3078	2665	2398	2398
query73	833	792	429	429
query74	5027	4889	4684	4684
query75	2516	2519	2121	2121
query76	2323	1173	760	760
query77	350	378	278	278
query78	11843	11874	11201	11201
query79	1401	1160	781	781
query80	1308	585	465	465
query81	558	335	291	291
query82	809	153	118	118
query83	359	324	295	295
query84	282	160	131	131
query85	1002	622	543	543
query86	430	242	230	230
query87	1831	1813	1719	1719
query88	3774	2868	2837	2837
query89	428	364	337	337
query90	2061	196	192	192
query91	204	194	163	163
query92	64	60	53	53
query93	1854	1562	949	949
query94	749	344	326	326
query95	776	591	461	461
query96	1143	805	370	370
query97	2642	2676	2521	2521
query98	216	209	199	199
query99	1082	1106	974	974
Total cold run time: 263918 ms
Total hot run time: 176900 ms

@hello-stephen

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

query1	0.00	0.00	0.00
query2	0.09	0.05	0.05
query3	0.26	0.13	0.14
query4	1.61	0.14	0.14
query5	0.24	0.21	0.24
query6	1.16	0.83	0.79
query7	0.04	0.01	0.01
query8	0.05	0.04	0.03
query9	0.38	0.31	0.33
query10	0.58	0.53	0.55
query11	0.19	0.14	0.13
query12	0.18	0.15	0.14
query13	0.47	0.48	0.46
query14	1.03	1.00	1.01
query15	0.62	0.59	0.61
query16	0.31	0.33	0.31
query17	1.05	1.11	1.10
query18	0.22	0.20	0.20
query19	2.08	1.91	1.95
query20	0.02	0.01	0.01
query21	15.42	0.22	0.15
query22	4.94	0.06	0.06
query23	16.16	0.30	0.12
query24	2.94	0.41	0.31
query25	0.11	0.05	0.04
query26	0.74	0.20	0.16
query27	0.04	0.04	0.04
query28	3.49	0.90	0.54
query29	12.49	4.07	3.28
query30	0.28	0.15	0.15
query31	2.77	0.58	0.31
query32	3.21	0.59	0.49
query33	3.27	3.18	3.24
query34	15.50	4.22	3.54
query35	3.51	3.51	3.53
query36	0.55	0.42	0.43
query37	0.10	0.07	0.06
query38	0.05	0.04	0.04
query39	0.04	0.04	0.03
query40	0.18	0.16	0.16
query41	0.09	0.04	0.03
query42	0.06	0.03	0.03
query43	0.05	0.04	0.03
Total cold run time: 96.57 s
Total hot run time: 24.73 s

@hello-stephen

Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 59.06% (25569/43296)
Line Coverage 43.14% (256325/594222)
Region Coverage 38.83% (203094/523058)
Branch Coverage 40.15% (92580/230557)

@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 75.67% (31951/42226)
Line Coverage 60.34% (356170/590250)
Region Coverage 56.87% (298452/524801)
Branch Coverage 58.22% (134251/230595)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants