Skip to content

Commit 1b77dce

Browse files
[Refactor] Extract common format scanner context types (#74866)
Signed-off-by: alvin-phoenix-ai <alvin.zhao@phoenixdata.ai>
1 parent 0943f84 commit 1b77dce

32 files changed

Lines changed: 279 additions & 260 deletions

be/AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ Core runtime building blocks without full Runtime/Exec/Storage coupling.
177177
### FormatCore (`formatcore`)
178178
Format-oriented core primitives above ComputeEnv, ExprCore, RuntimeCore, FSCore, ChunkCore, ColumnCore, and Types.
179179
- 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/`
180+
- Allowed internal include prefixes: `formats/column_evaluator.h`, `formats/deletion_bitmap.h`, `formats/disk_range.hpp`, `formats/file_writer.h`, `formats/io/`, `formats/scan_context.h`, `formats/utils.h`, `exprs/`, `runtime/`, `fs/`, `column/`, `types/`, `common/`, `base/`, `gutil/`, `gen_cpp/`
181181
- Allowed target deps: `ComputeEnv`, `ExprCore`, `RuntimeCore`, `FSCore`, `ChunkCore`, `ColumnCore`, `Types`, `Common`, `Base`, `Gutil`, `StarRocksGen`
182182
- Core tests: `format_test`
183183
- Remediation: Keep FormatCore limited to reusable format primitives; move connector orchestration and higher execution policy upward.

be/module_boundary_manifest.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,7 @@
319319
"be/src/formats/disk_range.hpp",
320320
"be/src/formats/file_writer.*",
321321
"be/src/formats/io/**",
322+
"be/src/formats/scan_context.h",
322323
"be/src/formats/utils.h"
323324
],
324325
"allowed_include_prefixes": [
@@ -327,6 +328,7 @@
327328
"formats/disk_range.hpp",
328329
"formats/file_writer.h",
329330
"formats/io/",
331+
"formats/scan_context.h",
330332
"formats/utils.h",
331333
"exprs/",
332334
"runtime/",

be/src/connector/deletion_vector/deletion_vector.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ Status DeletionVector::fill_row_indexes(const SkipRowsContextPtr& skip_rows_ctx)
3333
} else {
3434
std::shared_ptr<SharedBufferedInputStream> shared_buffered_input_stream = nullptr;
3535
std::shared_ptr<CacheInputStream> cache_input_stream = nullptr;
36-
HdfsScannerStats app_stats;
37-
HdfsScannerStats fs_stats;
36+
FormatScannerStats app_stats;
37+
FormatScannerStats fs_stats;
3838

3939
ASSIGN_OR_RETURN(auto path, get_absolute_path(_ctx.table_location));
4040
int64_t offset = _deletion_vector_descriptor->offset;
@@ -78,7 +78,7 @@ Status DeletionVector::fill_row_indexes(const SkipRowsContextPtr& skip_rows_ctx)
7878
}
7979

8080
StatusOr<std::unique_ptr<RandomAccessFile>> DeletionVector::open_random_access_file(
81-
const std::string& file_path, HdfsScannerStats& fs_stats, HdfsScannerStats& app_stats,
81+
const std::string& file_path, FormatScannerStats& fs_stats, FormatScannerStats& app_stats,
8282
std::shared_ptr<SharedBufferedInputStream>& shared_buffered_input_stream,
8383
std::shared_ptr<CacheInputStream>& cache_input_stream) const {
8484
const OpenFileOptions options{.fs = _ctx.fs,
@@ -172,7 +172,7 @@ std::string DeletionVector::assemble_deletion_vector_path(const string& table_lo
172172
}
173173

174174
void DeletionVector::update_dv_file_io_counter(
175-
RuntimeProfile* parent_profile, const HdfsScannerStats& app_stats, const HdfsScannerStats& fs_stats,
175+
RuntimeProfile* parent_profile, const FormatScannerStats& app_stats, const FormatScannerStats& fs_stats,
176176
const std::shared_ptr<CacheInputStream>& cache_input_stream,
177177
const std::shared_ptr<SharedBufferedInputStream>& shared_buffered_input_stream) {
178178
const std::string DV_TIMER = DeletionVector::DELETION_VECTOR;

be/src/connector/deletion_vector/deletion_vector.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class DeletionVector {
4646

4747
private:
4848
StatusOr<std::unique_ptr<RandomAccessFile>> open_random_access_file(
49-
const std::string& file_path, HdfsScannerStats& fs_stats, HdfsScannerStats& app_stats,
49+
const std::string& file_path, FormatScannerStats& fs_stats, FormatScannerStats& app_stats,
5050
std::shared_ptr<SharedBufferedInputStream>& shared_buffered_input_stream,
5151
std::shared_ptr<CacheInputStream>& cache_input_stream) const;
5252

@@ -56,8 +56,8 @@ class DeletionVector {
5656
std::string assemble_deletion_vector_path(const std::string& table_location, std::string&& uuid,
5757
std::string& prefix) const;
5858

59-
void update_dv_file_io_counter(RuntimeProfile* parent_profile, const HdfsScannerStats& app_stats,
60-
const HdfsScannerStats& fs_stats,
59+
void update_dv_file_io_counter(RuntimeProfile* parent_profile, const FormatScannerStats& app_stats,
60+
const FormatScannerStats& fs_stats,
6161
const std::shared_ptr<CacheInputStream>& cache_input_stream,
6262
const std::shared_ptr<SharedBufferedInputStream>& shared_buffered_input_stream);
6363

be/src/exec/hdfs_scanner/hdfs_scanner.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ namespace starrocks {
3434

3535
class CountedSeekableInputStream final : public io::SeekableInputStreamWrapper {
3636
public:
37-
explicit CountedSeekableInputStream(const std::shared_ptr<io::SeekableInputStream>& stream, HdfsScannerStats* stats)
37+
explicit CountedSeekableInputStream(const std::shared_ptr<io::SeekableInputStream>& stream,
38+
FormatScannerStats* stats)
3839
: io::SeekableInputStreamWrapper(stream.get(), kDontTakeOwnership), _stream(stream), _stats(stats) {}
3940

4041
~CountedSeekableInputStream() override = default;
@@ -69,7 +70,7 @@ class CountedSeekableInputStream final : public io::SeekableInputStreamWrapper {
6970

7071
private:
7172
std::shared_ptr<io::SeekableInputStream> _stream;
72-
HdfsScannerStats* _stats;
73+
FormatScannerStats* _stats;
7374
};
7475

7576
Status HdfsScanner::init(RuntimeState* runtime_state, HdfsScannerContext* scanner_ctx) {
@@ -127,7 +128,7 @@ Status HdfsScanner::_build_scanner_context() {
127128
slot->col_name() == ICEBERG_LAST_UPDATED_SEQUENCE_NUMBER) {
128129
ctx.reserved_field_slots.emplace_back(slot);
129130
} else {
130-
HdfsScannerContext::ColumnInfo column;
131+
FormatColumnInfo column;
131132
column.slot_desc = slot;
132133
column.idx_in_chunk = _scanner_ctx->materialize_index_in_chunk[i];
133134
// A slot must be decoded eagerly if it is an output column OR if it
@@ -140,15 +141,15 @@ Status HdfsScanner::_build_scanner_context() {
140141

141142
for (size_t i = 0; i < _scanner_ctx->partition_slots.size(); i++) {
142143
auto* slot = _scanner_ctx->partition_slots[i];
143-
HdfsScannerContext::ColumnInfo column;
144+
FormatColumnInfo column;
144145
column.slot_desc = slot;
145146
column.idx_in_chunk = _scanner_ctx->partition_index_in_chunk[i];
146147
ctx.partition_columns.emplace_back(column);
147148
}
148149

149150
for (size_t i = 0; i < _scanner_ctx->extended_col_slots.size(); i++) {
150151
auto* slot = _scanner_ctx->extended_col_slots[i];
151-
HdfsScannerContext::ColumnInfo column;
152+
FormatColumnInfo column;
152153
column.slot_desc = slot;
153154
column.idx_in_chunk = _scanner_ctx->extended_col_index_in_chunk[i];
154155
ctx.extended_columns.emplace_back(column);

be/src/exec/hdfs_scanner/hdfs_scanner.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ struct OpenFileOptions {
3232
FileSystem* fs = nullptr;
3333
std::string file_path;
3434
int64_t file_size = -1;
35-
HdfsScannerStats* fs_stats = nullptr;
36-
HdfsScannerStats* app_stats = nullptr;
35+
FormatScannerStats* fs_stats = nullptr;
36+
FormatScannerStats* app_stats = nullptr;
3737

3838
// for datacache
3939
DataCacheOptions datacache_options;
@@ -107,8 +107,8 @@ class HdfsScanner {
107107
protected:
108108
HdfsScannerContext* _scanner_ctx = nullptr;
109109
RuntimeState* _runtime_state = nullptr;
110-
HdfsScannerStats _app_stats;
111-
HdfsScannerStats _fs_stats;
110+
FormatScannerStats _app_stats;
111+
FormatScannerStats _fs_stats;
112112
std::unique_ptr<RandomAccessFile> _file;
113113
// by default it's no compression.
114114
CompressionTypePB _compression_type = CompressionTypePB::NO_COMPRESSION;

be/src/exec/hdfs_scanner/hdfs_scanner_context.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ void HdfsScannerContext::update_return_count_columns() {
9696
// special handling for ___count__ optimization.
9797
// this is different from `can_use_count_optimization` , which uses iceberg metadata to return count value
9898
// this optimizaton is to fill with `count` rows of default value from parquet/orc header
99-
std::vector<ColumnInfo> updated_columns;
99+
std::vector<FormatColumnInfo> updated_columns;
100100
for (auto& column : materialized_columns) {
101101
if (column.name() == kCountOptColumnName) {
102102
update_with_none_existed_slot(column.slot_desc);
@@ -111,7 +111,7 @@ void HdfsScannerContext::update_min_max_columns() {
111111
if (!options.use_min_max_opt) {
112112
return;
113113
}
114-
std::vector<ColumnInfo> updated_columns;
114+
std::vector<FormatColumnInfo> updated_columns;
115115
const std::map<int32_t, TExprMinMaxValue>& min_max_values = scan_range->min_max_values;
116116
for (auto& column : materialized_columns) {
117117
if (min_max_values.find(column.slot_id()) != min_max_values.end()) {
@@ -146,7 +146,7 @@ void HdfsScannerContext::update_min_max_columns() {
146146
}
147147

148148
Status HdfsScannerContext::update_materialized_columns(const std::unordered_set<std::string>& names) {
149-
std::vector<ColumnInfo> updated_columns;
149+
std::vector<FormatColumnInfo> updated_columns;
150150
for (auto& column : materialized_columns) {
151151
auto col_name = column.formatted_name(options.case_sensitive);
152152
if (names.find(col_name) == names.end()) {
@@ -353,7 +353,7 @@ void HdfsScannerContext::append_or_update_extended_column_to_chunk(ChunkPtr* chu
353353
}
354354

355355
void HdfsScannerContext::append_or_update_column_to_chunk(ChunkPtr* chunk, size_t row_count,
356-
const std::vector<ColumnInfo>& columns,
356+
const std::vector<FormatColumnInfo>& columns,
357357
const Columns& values) {
358358
if (columns.size() == 0) return;
359359

0 commit comments

Comments
 (0)