Skip to content

Commit 9e83ff6

Browse files
Fix UT
Signed-off-by: alvin-celerdata <alvin.zhao@celerdata.com>
1 parent 614d943 commit 9e83ff6

10 files changed

Lines changed: 77 additions & 25 deletions

File tree

be/AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ Reusable exec sorting algorithms without pipeline, spill, workgroup, storage, or
210210
Reusable exec join hash table algorithms without join nodes, pipeline, storage, service, or util coupling.
211211
- Targets: `ExecJoinCore`
212212
- Allowed internal include prefixes: `exec/join/`, `exec/sorting/sort_helper.h`, `exprs/`, `serde/`, `runtime/`, `column/`, `types/`, `common/`, `base/`, `gutil/`, `gen_cpp/`
213-
- Allowed target deps: `ExecSortingCore`, `ExprCore`, `Serde`, `RuntimeCore`, `ChunkCore`, `ColumnCore`, `TypesCore`, `Common`, `Base`, `Gutil`, `StarRocksGen`
213+
- Allowed target deps: `ExecSortingCore`, `ExprCore`, `SerdeCore`, `RuntimeCore`, `ChunkCore`, `ColumnCore`, `TypesCore`, `Common`, `Base`, `Gutil`, `StarRocksGen`
214214
- Core tests: `exec_join_core_test`
215215
- Remediation: Keep ExecJoinCore limited to reusable join hash table algorithms; leave join nodes, pipeline operators, storage/service integration, and util diagnostics in higher modules.
216216
<!-- END GENERATED: BE MODULE HARNESSES -->

be/module_boundary_manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,9 +441,9 @@
441441
"exec/hash_joiner.h",
442442
"runtime/exec_env.h"
443443
],
444-
"allowed_target_deps": ["ExecSortingCore", "ExprCore", "Serde", "RuntimeCore", "ChunkCore", "ColumnCore", "TypesCore", "Common", "Base", "Gutil", "StarRocksGen"],
444+
"allowed_target_deps": ["ExecSortingCore", "ExprCore", "SerdeCore", "RuntimeCore", "ChunkCore", "ColumnCore", "TypesCore", "Common", "Base", "Gutil", "StarRocksGen"],
445445
"allowed_test_targets": ["exec_join_core_test"],
446-
"allowed_test_link_deps": ["ExecJoinCore", "ExecSortingCore", "ExprCore", "Serde", "RuntimeCore", "ChunkCore", "ColumnCore", "TypesCore", "Common", "Base", "Gutil", "StarRocksGen"],
446+
"allowed_test_link_deps": ["ExecJoinCore", "ExecSortingCore", "ExprCore", "SerdeCore", "RuntimeCore", "ChunkCore", "ColumnCore", "TypesCore", "Common", "Base", "Gutil", "StarRocksGen"],
447447
"remediation": "Keep ExecJoinCore limited to reusable join hash table algorithms; leave join nodes, pipeline operators, storage/service integration, and util diagnostics in higher modules."
448448
}
449449
]

be/src/column/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,4 @@ ADD_BE_LIB(Column
6767
)
6868

6969
target_link_libraries(ChunkCore PUBLIC ColumnCore)
70-
target_link_libraries(Column PUBLIC ColumnCore ChunkCore)
70+
target_link_libraries(Column PUBLIC ColumnCore ChunkCore SerdeCore)

be/src/exec/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ ADD_BE_LIB(ExecJoinCore
153153
target_link_libraries(ExecJoinCore PUBLIC
154154
ExecSortingCore
155155
ExprCore
156-
Serde
156+
SerdeCore
157157
RuntimeCore
158158
ChunkCore
159159
ColumnCore

be/src/exec/join/join_hash_table.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,13 @@
2222
#include "column/chunk.h"
2323
#include "column/vectorized_fwd.h"
2424
#include "common/runtime_profile.h"
25-
#include "common/statusor.h"
2625
#include "common/stack_util.h"
26+
#include "common/statusor.h"
2727
#include "common/system/cpu_info.h"
2828
#include "exec/join/join_hash_map_method.h"
2929
#include "exec/join/join_key_constructor.h"
3030
#include "exprs/column_ref.h"
3131
#include "runtime/descriptors.h"
32-
#include "serde/column_array_serde.h"
3332
#include "types/logical_type_infra.h"
3433

3534
namespace starrocks {

be/src/serde/CMakeLists.txt

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,34 @@ set(LIBRARY_OUTPUT_PATH "${BUILD_DIR}/src/serde")
1717
# where to put generated binaries
1818
set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/src/serde")
1919

20+
ADD_BE_LIB(SerdeCore
21+
column_array_serde.cpp
22+
)
23+
24+
target_link_libraries(SerdeCore PUBLIC
25+
ColumnCore
26+
TypesCore
27+
Common
28+
Base
29+
Gutil
30+
StarRocksGen
31+
)
32+
2033
ADD_BE_LIB(Serde
2134
encode_context.cpp
22-
column_array_serde.cpp
2335
compress_strategy.cpp
2436
protobuf_serde.cpp
2537
)
38+
39+
target_link_libraries(Serde PUBLIC
40+
SerdeCore
41+
Column
42+
RuntimeCore
43+
ChunkCore
44+
ColumnCore
45+
TypesCore
46+
Common
47+
Base
48+
Gutil
49+
StarRocksGen
50+
)

be/src/serde/column_array_serde.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
#include "column/variant_column.h"
4040
#include "column/vectorized_fwd.h"
4141
#include "common/config_diagnostic_fwd.h"
42-
#include "serde/protobuf_serde.h"
42+
#include "serde/encode_level.h"
4343
#include "types/json_value.h"
4444
#include "types/percentile_value.h"
4545

@@ -214,7 +214,7 @@ class FixedLengthColumnSerde {
214214
// NOTE that `serialize` and `deserialize` will store and load the size as uint32_t.
215215
// If you use `serialize` and `deserialize`, please make sure that the size of the column is less than 2^32.
216216
int64_t size = sizeof(T) * column.size();
217-
if (EncodeContext::enable_encode_integer(encode_level) && size >= ENCODE_SIZE_LIMIT) {
217+
if (is_integer_encoding_enabled(encode_level) && size >= ENCODE_SIZE_LIMIT) {
218218
return sizeof(uint32_t) + sizeof(uint64_t) +
219219
std::max((int64_t)size, (int64_t)streamvbyte_max_compressedbytes(upper_int32(size)));
220220
} else {
@@ -225,7 +225,7 @@ class FixedLengthColumnSerde {
225225
static uint8_t* serialize(const FixedLengthColumnBase<T>& column, uint8_t* buff, const int encode_level) {
226226
uint32_t size = sizeof(T) * column.size();
227227
buff = write_little_endian_32(size, buff);
228-
if (EncodeContext::enable_encode_integer(encode_level) && size >= ENCODE_SIZE_LIMIT) {
228+
if (is_integer_encoding_enabled(encode_level) && size >= ENCODE_SIZE_LIMIT) {
229229
// sorted 32-bit integers have a better optimize branch
230230
buff = encode_integers<(sizeof(T) == 4 && sorted)>(column.raw_data(), size, buff, encode_level);
231231
} else {
@@ -240,7 +240,7 @@ class FixedLengthColumnSerde {
240240
ASSIGN_OR_RETURN(buff, read_little_endian_32(buff, end, &size));
241241
auto& data = column->get_data();
242242
raw::make_room(&data, size / sizeof(T));
243-
if (EncodeContext::enable_encode_integer(encode_level) && size >= ENCODE_SIZE_LIMIT) {
243+
if (is_integer_encoding_enabled(encode_level) && size >= ENCODE_SIZE_LIMIT) {
244244
constexpr bool is_sorted_i32 = sizeof(T) == 4 && sorted;
245245
ASSIGN_OR_RETURN(buff, decode_integers<is_sorted_i32>(buff, end, data.data(), size));
246246
} else {
@@ -258,13 +258,13 @@ class BinaryColumnSerde {
258258
const auto& offsets = column.get_offset();
259259
int64_t res = sizeof(T) * 2;
260260
int64_t offsets_size = offsets.size() * sizeof(typename BinaryColumnBase<T>::Offset);
261-
if (EncodeContext::enable_encode_integer(encode_level) && offsets_size >= ENCODE_SIZE_LIMIT) {
261+
if (is_integer_encoding_enabled(encode_level) && offsets_size >= ENCODE_SIZE_LIMIT) {
262262
res += sizeof(uint64_t) +
263263
std::max((int64_t)offsets_size, (int64_t)streamvbyte_max_compressedbytes(upper_int32(offsets_size)));
264264
} else {
265265
res += offsets_size;
266266
}
267-
if (EncodeContext::enable_encode_string(encode_level) && bytes.size() >= ENCODE_SIZE_LIMIT) {
267+
if (is_string_encoding_enabled(encode_level) && bytes.size() >= ENCODE_SIZE_LIMIT) {
268268
res += sizeof(uint64_t) + std::max((int64_t)bytes.size(), (int64_t)LZ4_compressBound(bytes.size()));
269269
} else {
270270
res += bytes.size();
@@ -283,7 +283,7 @@ class BinaryColumnSerde {
283283
} else {
284284
buff = write_little_endian_64(bytes_size, buff);
285285
}
286-
if (EncodeContext::enable_encode_string(encode_level) && bytes_size >= ENCODE_SIZE_LIMIT &&
286+
if (is_string_encoding_enabled(encode_level) && bytes_size >= ENCODE_SIZE_LIMIT &&
287287
bytes_size <= LZ4_MAX_INPUT_SIZE) {
288288
buff = encode_string_lz4(bytes.data(), bytes_size, buff, encode_level);
289289
} else {
@@ -297,7 +297,7 @@ class BinaryColumnSerde {
297297
} else {
298298
buff = write_little_endian_64(offsets_size, buff);
299299
}
300-
if (EncodeContext::enable_encode_integer(encode_level) && offsets_size >= ENCODE_SIZE_LIMIT) {
300+
if (is_integer_encoding_enabled(encode_level) && offsets_size >= ENCODE_SIZE_LIMIT) {
301301
if (sizeof(T) == 4) { // only support sorted 32-bit integers
302302
buff = encode_integers<true>(offsets.data(), offsets_size, buff, encode_level);
303303
} else {
@@ -322,7 +322,7 @@ class BinaryColumnSerde {
322322
column->get_bytes().resize(bytes_size);
323323

324324
auto* bytes_data = column->get_bytes().data();
325-
if (EncodeContext::enable_encode_string(encode_level) && bytes_size >= ENCODE_SIZE_LIMIT &&
325+
if (is_string_encoding_enabled(encode_level) && bytes_size >= ENCODE_SIZE_LIMIT &&
326326
bytes_size <= LZ4_MAX_INPUT_SIZE) {
327327
ASSIGN_OR_RETURN(buff, decode_string_lz4(buff, end, bytes_data, bytes_size));
328328
} else {
@@ -337,7 +337,7 @@ class BinaryColumnSerde {
337337
}
338338
raw::make_room(&column->get_offset(), offset_bytes_size / sizeof(typename BinaryColumnBase<T>::Offset));
339339

340-
if (EncodeContext::enable_encode_integer(encode_level) && offset_bytes_size >= ENCODE_SIZE_LIMIT) {
340+
if (is_integer_encoding_enabled(encode_level) && offset_bytes_size >= ENCODE_SIZE_LIMIT) {
341341
constexpr bool is_i32 = sizeof(T) == 4;
342342
ASSIGN_OR_RETURN(buff, decode_integers<is_i32>(buff, end, column->get_offset().data(), offset_bytes_size));
343343
} else {

be/src/serde/encode_context.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "column/chunk.h"
2323
#include "column/chunk_extra_data.h"
2424
#include "common/statusor.h"
25+
#include "serde/encode_level.h"
2526

2627
namespace starrocks {
2728
class ChunkPB;
@@ -60,14 +61,11 @@ class EncodeContext {
6061

6162
static constexpr uint16_t STREAMVBYTE_PADDING_SIZE = STREAMVBYTE_PADDING;
6263

63-
static bool enable_encode_integer(const int encode_level) { return encode_level & ENCODE_INTEGER; }
64+
static bool enable_encode_integer(const int encode_level) { return is_integer_encoding_enabled(encode_level); }
6465

65-
static bool enable_encode_string(const int encode_level) { return encode_level & ENCODE_STRING; }
66+
static bool enable_encode_string(const int encode_level) { return is_string_encoding_enabled(encode_level); }
6667

6768
private:
68-
static constexpr int ENCODE_INTEGER = 2;
69-
static constexpr int ENCODE_STRING = 4;
70-
7169
// if encode ratio < EncodeRatioLimit, encode it, otherwise not.
7270
void _adjust(const int col_id);
7371
const int _session_encode_level;
@@ -77,4 +75,4 @@ class EncodeContext {
7775
std::vector<uint64_t> _raw_bytes, _encoded_bytes;
7876
std::vector<uint32_t> _column_encode_level;
7977
};
80-
} // namespace starrocks::serde
78+
} // namespace starrocks::serde

be/src/serde/encode_level.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright 2021-present StarRocks, Inc. All rights reserved.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// https://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
#pragma once
16+
17+
namespace starrocks::serde {
18+
19+
constexpr int ENCODE_INTEGER = 2;
20+
constexpr int ENCODE_STRING = 4;
21+
22+
inline bool is_integer_encoding_enabled(const int encode_level) {
23+
return encode_level & ENCODE_INTEGER;
24+
}
25+
26+
inline bool is_string_encoding_enabled(const int encode_level) {
27+
return encode_level & ENCODE_STRING;
28+
}
29+
30+
} // namespace starrocks::serde

be/test/exec/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ set(JOIN_CORE_TEST_LINK_LIBS
172172
ExecJoinCore
173173
ExecSortingCore
174174
ExprCore
175-
Serde
175+
SerdeCore
176176
RuntimeCore
177177
ChunkCore
178178
ColumnCore

0 commit comments

Comments
 (0)