Skip to content

Commit 1d2d4d7

Browse files
committed
Merge remote-tracking branch 'base/main' into sdcg-poc
# Conflicts: # be/src/exec/file_scanner/json_scanner.cpp
2 parents ba7e33b + 0943f84 commit 1d2d4d7

255 files changed

Lines changed: 9921 additions & 2604 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

be/AGENTS.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,13 @@ Core runtime building blocks without full Runtime/Exec/Storage coupling.
174174
- Core tests: `runtime_core_test`
175175
- Remediation: Keep RuntimeCore restricted to core runtime infrastructure; move service/storage/stream-load/integration code into Runtime.
176176

177-
### FormatsIO (`formatsio`)
178-
Format-oriented output stream primitives above RuntimeCore, FSCore, and Types.
179-
- Targets: `FormatsIO`
180-
- Allowed internal include prefixes: `formats/io/`, `runtime/`, `fs/`, `types/`, `common/`, `base/`, `gutil/`, `gen_cpp/`
181-
- Allowed target deps: `RuntimeCore`, `FSCore`, `Types`, `Common`, `Base`, `Gutil`, `StarRocksGen`
182-
- Core tests: `formats_io_test`
183-
- Remediation: Keep FormatsIO limited to reusable format output stream primitives; move connector orchestration and higher execution policy upward.
177+
### FormatCore (`formatcore`)
178+
Format-oriented core primitives above ComputeEnv, ExprCore, RuntimeCore, FSCore, ChunkCore, ColumnCore, and Types.
179+
- Targets: `FormatCore`
180+
- Allowed internal include prefixes: `formats/column_evaluator.h`, `formats/deletion_bitmap.h`, `formats/disk_range.hpp`, `formats/file_writer.h`, `formats/io/`, `formats/utils.h`, `exprs/`, `runtime/`, `fs/`, `column/`, `types/`, `common/`, `base/`, `gutil/`, `gen_cpp/`
181+
- Allowed target deps: `ComputeEnv`, `ExprCore`, `RuntimeCore`, `FSCore`, `ChunkCore`, `ColumnCore`, `Types`, `Common`, `Base`, `Gutil`, `StarRocksGen`
182+
- Core tests: `format_test`
183+
- Remediation: Keep FormatCore limited to reusable format primitives; move connector orchestration and higher execution policy upward.
184184

185185
### RuntimeEnv (`runtimeenv`)
186186
Process-scoped runtime environment resources below full Runtime and above RuntimeCore.
@@ -207,12 +207,12 @@ Base storage algorithms and mask-buffer helpers above StoragePrimitive and Compu
207207
- Remediation: Keep StorageBase limited to reusable storage algorithms and helpers that may depend on ComputeEnv; move concrete storage engine, tablet, rowset, lake, service, connector, cache, and full Exec integration upward.
208208

209209
### ComputeEnv (`computeenv`)
210-
Shared compute-side BE environment boundary for process-scoped compute resources, query-scoped scan coordination helpers, query-cache primitives, WorkGroup scheduling/executor resources, and pipeline controls below full Exec/Storage and above RuntimeEnv.
210+
Shared compute-side BE environment boundary for process-scoped compute resources, load-path management, query-scoped scan coordination helpers, query-cache primitives, WorkGroup scheduling/executor resources, and pipeline controls below full Exec/Storage and above RuntimeEnv.
211211
- Targets: `ComputeEnv`
212212
- Allowed internal include prefixes: `compute_env/`, `exec/runtime_filter/`, `exec/pipeline/pipeline_fwd.h`, `exec/pipeline/operator.h`, `exec/pipeline/primitives/`, `exec/pipeline/runtime_filter_core_types.h`, `exec/pipeline/scan/scan_morsel.h`, `exec/pipeline/scan/morsel_queue.h`, `exec/pipeline/scan/morsel_queue_builder.h`, `exec/pipeline/scan/fixed_morsel_queue.h`, `exec/pipeline/scan/fixed_morsel_queue_builder.h`, `exec/pipeline/scan/dynamic_morsel_queue.h`, `exec/pipeline/scan/dynamic_morsel_queue_builder.h`, `exec/pipeline/scan/ticketed_morsel_queue.h`, `storage/primitive/`, `exprs/`, `serde/`, `runtime/env/`, `runtime/`, `util/time_guard.h`, `platform/`, `fs/`, `io/`, `column/`, `types/`, `common/`, `base/`, `gutil/`, `gen_cpp/`
213213
- Allowed target deps: `StoragePrimitive`, `ExecPrimitive`, `ExprCore`, `Serde`, `Util`, `RuntimeEnv`, `RuntimeCore`, `Platform`, `FSCore`, `IO`, `ChunkCore`, `ColumnCore`, `Types`, `Common`, `Base`, `Gutil`, `StarRocksGen`
214214
- Core tests: `compute_env_test`, `compute_env_sorting_test`
215-
- Remediation: Keep ComputeEnv limited to process-scoped compute resources, query-scoped scan coordination helpers without concrete scan/storage policy, query-cache primitives without concrete storage policy, WorkGroup scheduling/executor resources, shared compute-side service contracts, stable execution primitives, reusable compute-side sorting algorithms, and spill infrastructure; move concrete Exec, Storage, Service, Connector, and Agent integration upward.
215+
- Remediation: Keep ComputeEnv limited to process-scoped compute resources, load-path management without ExecEnv or concrete storage engine coupling, query-scoped scan coordination helpers without concrete scan/storage policy, query-cache primitives without concrete storage policy, WorkGroup scheduling/executor resources, shared compute-side service contracts, stable execution primitives, reusable compute-side sorting algorithms, and spill infrastructure; move concrete Exec, Storage, Service, Connector, and Agent integration upward.
216216

217217
### ExprCore (`exprcore`)
218218
Core expression infrastructure that depends only on RuntimeCore and lower layers.

be/CMakeLists.txt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,12 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
312312
endif()
313313
set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-unused-parameter -Wno-documentation -Wno-weak-vtables")
314314
set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-unknown-warning-option")
315+
# GCC 15's libstdc++ annotates __find_if (used by std::find_if/any_of/all_of/remove_if) with
316+
# "#pragma GCC unroll 4". clang treats that as an explicit unroll request and emits
317+
# -Wpass-failed=transform-warning when the predicate is not trivially unrollable, which -Werror
318+
# turns into a build failure. These are missed-optimization diagnostics, not correctness issues,
319+
# so keep the warning but do not let it fail the build.
320+
set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-error=pass-failed")
315321
# Turn on following warning as error explicitly
316322
set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Werror=string-plus-int")
317323
set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Werror=pessimizing-move")
@@ -545,15 +551,18 @@ set(STARROCKS_LINK_LIBS
545551
${WL_WHOLE_ARCHIVE_PREFIX} Exprs ${WL_WHOLE_ARCHIVE_SUFFIX}
546552
FileSystem
547553
Formats
548-
FormatsIO
549554
Storage
550555
Rowset
551556
Runtime
552557
Udf
553558
Util
554559
Script
555-
orc
556560
${WL_END_GROUP}
561+
FormatAvro
562+
FormatCsv
563+
FormatJson
564+
FormatOrc
565+
FormatCore
557566
ExecRuntime
558567
ComputeEnv
559568
ExecPrimitive

be/module_boundary_manifest.json

Lines changed: 63 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,6 @@
264264
],
265265
"forbidden_includes": [
266266
"runtime/arrow_result_writer.h",
267-
"runtime/base_load_path_mgr.h",
268267
"runtime/broker_mgr.h",
269268
"runtime/buffer_control_block.h",
270269
"runtime/command_executor.h",
@@ -273,7 +272,6 @@
273272
"runtime/data_stream_recvr.h",
274273
"runtime/data_stream_sender.h",
275274
"runtime/diagnose_daemon.h",
276-
"runtime/dummy_load_path_mgr.h",
277275
"runtime/exec_env.h",
278276
"runtime/export_sink.h",
279277
"runtime/external_scan_context_mgr.h",
@@ -287,7 +285,6 @@
287285
"runtime/lake_tablets_channel.h",
288286
"runtime/load_channel.h",
289287
"runtime/load_channel_mgr.h",
290-
"runtime/load_path_mgr.h",
291288
"runtime/local_pass_through_buffer.h",
292289
"runtime/lookup_stream_mgr.h",
293290
"runtime/message_body_sink.h",
@@ -312,16 +309,67 @@
312309
"remediation": "Keep RuntimeCore restricted to core runtime infrastructure; move service/storage/stream-load/integration code into Runtime."
313310
},
314311
{
315-
"id": "formatsio",
316-
"doc_label": "FormatsIO",
317-
"summary": "Format-oriented output stream primitives above RuntimeCore, FSCore, and Types.",
318-
"owned_targets": ["FormatsIO"],
319-
"owned_globs": ["be/src/formats/io/**"],
320-
"allowed_include_prefixes": ["formats/io/", "runtime/", "fs/", "types/", "common/", "base/", "gutil/", "gen_cpp/"],
321-
"allowed_target_deps": ["RuntimeCore", "FSCore", "Types", "Common", "Base", "Gutil", "StarRocksGen"],
322-
"allowed_test_targets": ["formats_io_test"],
323-
"allowed_test_link_deps": ["FormatsIO", "RuntimeCore", "FSCore", "Types", "Common", "Base", "Gutil", "StarRocksGen"],
324-
"remediation": "Keep FormatsIO limited to reusable format output stream primitives; move connector orchestration and higher execution policy upward."
312+
"id": "formatcore",
313+
"doc_label": "FormatCore",
314+
"summary": "Format-oriented core primitives above ComputeEnv, ExprCore, RuntimeCore, FSCore, ChunkCore, ColumnCore, and Types.",
315+
"owned_targets": ["FormatCore"],
316+
"owned_globs": [
317+
"be/src/formats/column_evaluator.*",
318+
"be/src/formats/deletion_bitmap.*",
319+
"be/src/formats/disk_range.hpp",
320+
"be/src/formats/file_writer.*",
321+
"be/src/formats/io/**",
322+
"be/src/formats/utils.h"
323+
],
324+
"allowed_include_prefixes": [
325+
"formats/column_evaluator.h",
326+
"formats/deletion_bitmap.h",
327+
"formats/disk_range.hpp",
328+
"formats/file_writer.h",
329+
"formats/io/",
330+
"formats/utils.h",
331+
"exprs/",
332+
"runtime/",
333+
"fs/",
334+
"column/",
335+
"types/",
336+
"common/",
337+
"base/",
338+
"gutil/",
339+
"gen_cpp/"
340+
],
341+
"allowed_target_deps": [
342+
"ComputeEnv",
343+
"ExprCore",
344+
"RuntimeCore",
345+
"FSCore",
346+
"ChunkCore",
347+
"ColumnCore",
348+
"Types",
349+
"Common",
350+
"Base",
351+
"Gutil",
352+
"StarRocksGen"
353+
],
354+
"allowed_test_targets": ["format_test"],
355+
"allowed_test_link_deps": [
356+
"FormatOrc",
357+
"FormatAvro",
358+
"FormatJson",
359+
"FormatCsv",
360+
"FormatCore",
361+
"ExprCore",
362+
"RuntimeCore",
363+
"FSCore",
364+
"ChunkCore",
365+
"ColumnCore",
366+
"Types",
367+
"Common",
368+
"Base",
369+
"Gutil",
370+
"StarRocksGen"
371+
],
372+
"remediation": "Keep FormatCore limited to reusable format primitives; move connector orchestration and higher execution policy upward."
325373
},
326374
{
327375
"id": "runtimeenv",
@@ -389,7 +437,7 @@
389437
{
390438
"id": "computeenv",
391439
"doc_label": "ComputeEnv",
392-
"summary": "Shared compute-side BE environment boundary for process-scoped compute resources, query-scoped scan coordination helpers, query-cache primitives, WorkGroup scheduling/executor resources, and pipeline controls below full Exec/Storage and above RuntimeEnv.",
440+
"summary": "Shared compute-side BE environment boundary for process-scoped compute resources, load-path management, query-scoped scan coordination helpers, query-cache primitives, WorkGroup scheduling/executor resources, and pipeline controls below full Exec/Storage and above RuntimeEnv.",
393441
"owned_targets": ["ComputeEnv"],
394442
"owned_roots": ["be/src/compute_env"],
395443
"allowed_include_prefixes": [
@@ -428,7 +476,7 @@
428476
"allowed_target_deps": ["StoragePrimitive", "ExecPrimitive", "ExprCore", "Serde", "Util", "RuntimeEnv", "RuntimeCore", "Platform", "FSCore", "IO", "ChunkCore", "ColumnCore", "Types", "Common", "Base", "Gutil", "StarRocksGen"],
429477
"allowed_test_targets": ["compute_env_test", "compute_env_sorting_test"],
430478
"allowed_test_link_deps": ["ComputeEnv", "ExprCore", "RuntimeCore", "FSCore", "IO", "ChunkCore", "ColumnCore", "Types", "Common", "Base", "Gutil", "StarRocksGen"],
431-
"remediation": "Keep ComputeEnv limited to process-scoped compute resources, query-scoped scan coordination helpers without concrete scan/storage policy, query-cache primitives without concrete storage policy, WorkGroup scheduling/executor resources, shared compute-side service contracts, stable execution primitives, reusable compute-side sorting algorithms, and spill infrastructure; move concrete Exec, Storage, Service, Connector, and Agent integration upward."
479+
"remediation": "Keep ComputeEnv limited to process-scoped compute resources, load-path management without ExecEnv or concrete storage engine coupling, query-scoped scan coordination helpers without concrete scan/storage policy, query-cache primitives without concrete storage policy, WorkGroup scheduling/executor resources, shared compute-side service contracts, stable execution primitives, reusable compute-side sorting algorithms, and spill infrastructure; move concrete Exec, Storage, Service, Connector, and Agent integration upward."
432480
},
433481
{
434482
"id": "exprcore",

be/src/base/string/utf8.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
#pragma once
1616

17+
#include <algorithm>
18+
#include <cstdint>
1719
#include <cstring>
1820
#include <vector>
1921

@@ -150,4 +152,33 @@ static inline bool validate_ascii_fast(const char* src, size_t len) {
150152
return simdutf::validate_ascii(src, len);
151153
}
152154

155+
// Returns the number of trailing bytes of [data, data+len) that form an incomplete
156+
// multi-byte UTF-8 sequence, i.e. a leading byte followed by fewer continuation bytes
157+
// than its encoded width requires. Returns 0 when the buffer already ends on a UTF-8
158+
// character boundary, or when the trailing bytes are not a clean truncation of a valid
159+
// sequence (e.g. a stray continuation byte or an invalid leading byte) -- those are
160+
// left for the downstream validator to reject.
161+
//
162+
// This is meant for inputs read in fixed-size chunks and handed to a UTF-8-validating
163+
// parser (e.g. simdjson's iterate_many, which raises UTF8_ERROR on a partial trailing
164+
// character): the returned bytes should be held back and prepended to the next chunk so
165+
// the split character can be completed.
166+
static inline size_t incomplete_trailing_utf8_len(const char* data, size_t len) {
167+
// A UTF-8 character is at most 4 bytes, so an incomplete trailing sequence spans at
168+
// most 3 bytes; scanning back at most 4 bytes always reaches its leading byte.
169+
const size_t lookback = std::min<size_t>(len, 4);
170+
for (size_t i = 1; i <= lookback; ++i) {
171+
const auto b = static_cast<uint8_t>(data[len - i]);
172+
if ((b & 0xC0) == 0x80) {
173+
// continuation byte (10xxxxxx); keep scanning back for the leading byte.
174+
continue;
175+
}
176+
// `b` is a leading byte (or ASCII) and `i` bytes of this character are present.
177+
// If fewer than its encoded width are present, the trailing sequence is incomplete.
178+
const size_t width = UTF8_BYTE_LENGTH_TABLE[b];
179+
return i < width ? i : 0;
180+
}
181+
return 0;
182+
}
183+
153184
} // namespace starrocks

be/src/common/config.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1499,6 +1499,10 @@ CONF_mInt64(lake_put_txn_log_timeout_guard_ms, "-1");
14991499
CONF_mString(lake_vacuum_retry_pattern, "*request rate*");
15001500
CONF_mInt64(lake_vacuum_retry_max_attempts, "5");
15011501
CONF_mInt64(lake_vacuum_retry_min_delay_ms, "100");
1502+
// Whether vacuum tasks honor the timeout carried in the request (VacuumRequest.timeout_ms)
1503+
// and abort themselves once it elapses. Set to false to let vacuum tasks always run to
1504+
// completion no matter how long the FE caller waits.
1505+
CONF_mBool(lake_vacuum_enable_task_timeout, "true");
15021506
CONF_mInt64(lake_max_garbage_version_distance, "100");
15031507
CONF_mBool(enable_primary_key_recover, "false");
15041508
CONF_mBool(lake_enable_compaction_async_write, "false");

be/src/common/config_fwd_headers_manifest.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -858,6 +858,7 @@
858858
"lake_vacuum_retry_pattern",
859859
"lake_vacuum_retry_max_attempts",
860860
"lake_vacuum_retry_min_delay_ms",
861+
"lake_vacuum_enable_task_timeout",
861862
"lake_max_garbage_version_distance",
862863
"enable_strict_delvec_crc_check",
863864
"lake_clear_corrupted_cache_meta",

be/src/common/config_lake_fwd.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ CONF_mInt64(lake_vacuum_retry_max_attempts, "5");
8383

8484
CONF_mInt64(lake_vacuum_retry_min_delay_ms, "100");
8585

86+
// Whether vacuum tasks honor the timeout carried in the request (VacuumRequest.timeout_ms)
87+
// and abort themselves once it elapses. Set to false to let vacuum tasks always run to
88+
// completion no matter how long the FE caller waits.
89+
CONF_mBool(lake_vacuum_enable_task_timeout, "true");
90+
8691
CONF_mInt64(lake_max_garbage_version_distance, "100");
8792

8893
// Enable cleanup of orphan delvec entries during compaction.

be/src/compute_env/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,13 @@ set(COMPUTE_ENV_GLOBAL_DICT_FILES
7979
global_dict/parser.cpp
8080
)
8181

82+
set(COMPUTE_ENV_LOAD_PATH_FILES
83+
load_path/load_path_state_helper.cpp
84+
load_path/load_path_mgr.cpp
85+
load_path/dummy_load_path_mgr.cpp
86+
load_path/rejected_record_writer.cpp
87+
)
88+
8289
ADD_BE_LIB(ComputeEnv
8390
compute_env.cpp
8491
data_stream/data_stream_mgr.cpp
@@ -98,6 +105,7 @@ ADD_BE_LIB(ComputeEnv
98105
${COMPUTE_ENV_QUERY_CACHE_FILES}
99106
${COMPUTE_ENV_QUERY_FILES}
100107
${COMPUTE_ENV_GLOBAL_DICT_FILES}
108+
${COMPUTE_ENV_LOAD_PATH_FILES}
101109
)
102110

103111
target_link_libraries(ComputeEnv PUBLIC

be/src/compute_env/compute_env.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
#include "common/logging.h"
2323
#include "common/system/cpu_info.h"
2424
#include "compute_env/data_stream/data_stream_mgr.h"
25+
#include "compute_env/load_path/dummy_load_path_mgr.h"
26+
#include "compute_env/load_path/load_path_mgr.h"
2527
#include "compute_env/pipeline/driver_limiter.h"
2628
#include "compute_env/pipeline/pipeline_timer.h"
2729
#include "compute_env/profile_report_worker.h"
@@ -93,6 +95,21 @@ Status ComputeEnv::init_workgroup(const ComputeEnvWorkGroupOptions& options) {
9395
return Status::OK();
9496
}
9597

98+
Status ComputeEnv::init_load_path(std::vector<std::string> store_paths, bool use_dummy_load_path_mgr) {
99+
if (_load_path_mgr != nullptr) {
100+
return Status::InternalError("LoadPathMgr has been initialized");
101+
}
102+
std::unique_ptr<BaseLoadPathMgr> load_path_mgr;
103+
if (use_dummy_load_path_mgr) {
104+
load_path_mgr = std::make_unique<DummyLoadPathMgr>();
105+
} else {
106+
load_path_mgr = std::make_unique<LoadPathMgr>(std::move(store_paths));
107+
}
108+
RETURN_IF_ERROR(load_path_mgr->init());
109+
_load_path_mgr = std::move(load_path_mgr);
110+
return Status::OK();
111+
}
112+
96113
Status ComputeEnv::init_spill(const std::vector<std::string>& store_paths, MetricRegistry* metrics) {
97114
auto spill_dir_mgr = std::make_shared<spill::DirManager>();
98115
RETURN_IF_ERROR(spill_dir_mgr->init(config::spill_local_storage_dir, store_paths));
@@ -168,8 +185,13 @@ void ComputeEnv::destroy_profile_report_worker() {
168185
_profile_report_worker.reset();
169186
}
170187

188+
void ComputeEnv::destroy_load_path() {
189+
_load_path_mgr.reset();
190+
}
191+
171192
void ComputeEnv::destroy() {
172193
destroy_profile_report_worker();
194+
destroy_load_path();
173195
_global_spill_manager.reset();
174196
_spill_dir_mgr.reset();
175197
if (_workgroup_manager != nullptr) {

be/src/compute_env/compute_env.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
#include <cstddef>
1818
#include <cstdint>
1919
#include <memory>
20+
#include <string>
2021
#include <vector>
2122

2223
#include "common/status.h"
2324
#include "compute_env/workgroup/work_group_manager.h"
2425

2526
namespace starrocks {
2627

28+
class BaseLoadPathMgr;
2729
class DataStreamMgr;
2830
class MetricRegistry;
2931
class ProfileReportWorker;
@@ -68,6 +70,7 @@ class ComputeEnv {
6870

6971
Status init(const ComputeEnvOptions& options);
7072
Status init_workgroup(const ComputeEnvWorkGroupOptions& options);
73+
Status init_load_path(std::vector<std::string> store_paths, bool use_dummy_load_path_mgr);
7174
Status init_spill(const std::vector<std::string>& store_paths, MetricRegistry* metrics);
7275
Status init_query_cache(size_t capacity);
7376
Status init_profile_report_worker(ProfileReportWorkerOptions options);
@@ -77,6 +80,7 @@ class ComputeEnv {
7780
Status start_result_mgr();
7881
void stop_result_mgr();
7982
void destroy_profile_report_worker();
83+
void destroy_load_path();
8084
void destroy();
8185

8286
pipeline::DriverLimiter* driver_limiter() const { return _driver_limiter.get(); }
@@ -89,6 +93,7 @@ class ComputeEnv {
8993
spill::GlobalSpillManager* global_spill_manager() const { return _global_spill_manager.get(); }
9094
query_cache::CacheManagerRawPtr cache_mgr() const { return _cache_mgr.get(); }
9195
ProfileReportWorker* profile_report_worker() const { return _profile_report_worker.get(); }
96+
BaseLoadPathMgr* load_path_mgr() const { return _load_path_mgr.get(); }
9297

9398
private:
9499
std::unique_ptr<pipeline::DriverLimiter> _driver_limiter;
@@ -101,6 +106,7 @@ class ComputeEnv {
101106
std::shared_ptr<spill::GlobalSpillManager> _global_spill_manager;
102107
std::unique_ptr<query_cache::CacheManager> _cache_mgr;
103108
std::unique_ptr<ProfileReportWorker> _profile_report_worker;
109+
std::unique_ptr<BaseLoadPathMgr> _load_path_mgr;
104110
};
105111

106112
} // namespace starrocks

0 commit comments

Comments
 (0)