Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion be/src/storage/meta_reader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ Status SegmentMetaCollecter::_collect_dict_for_column(ColumnIterator* column_ite
auto& tablet_column = _params->tablet_schema->column(cid);
// For JSON data, the schema may be heterogeneous, meaning that some segments might not contain the dictionary column,
// but a global dictionary could still be present and usable.
if (!tablet_column.is_extended()) {
if (!tablet_column.is_extended() || !column_iter->only_nulls()) {
return Status::GlobalDictError("no global dict");
} else {
return Status::OK();
Expand Down
2 changes: 2 additions & 0 deletions be/src/storage/rowset/column_iterator.h
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,8 @@ class ColumnIterator {

virtual ordinal_t get_current_ordinal() const = 0;

virtual bool only_nulls() const { return false; }

virtual bool has_zone_map() const { return false; }

/// Store the row ranges that satisfy the given predicates into |row_ranges|.
Expand Down
2 changes: 2 additions & 0 deletions be/src/storage/rowset/default_value_column_iterator.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ class DefaultValueColumnIterator final : public ColumnIterator {
}
}

bool only_nulls() const override { return _is_default_value_null; }

Status init(const ColumnIteratorOptions& opts) override;

Status seek_to_first() override {
Expand Down
27 changes: 13 additions & 14 deletions test/sql/test_semi/R/test_flat_json_dict
Original file line number Diff line number Diff line change
Expand Up @@ -77,23 +77,22 @@ from (table(generate_series(1, 100)));
-- !result
select dict_merge(get_json_string(c1, 'f1'), 255) from js2 [_META_];
-- result:
{"2":{"lst":["str",10,"YTA","YTE","YTI","YTM","YTQ","YTU","YTY","YTc","YTg","YTk"]},"3":{"lst":["i32",10,1,2,3,4,5,6,7,8,9,10]}}
[REGEX].*no global dict.*
-- !result
select dict_merge(get_json_string(c1, 'f2'), 255) from js2 [_META_];
-- result:
{"2":{"lst":["str",100,"YTA","YTE","YTEw","YTEx","YTEy","YTEz","YTE0","YTE1","YTE2","YTE3","YTE4","YTE5","YTI","YTIw","YTIx","YTIy","YTIz","YTI0","YTI1","YTI2","YTI3","YTI4","YTI5","YTM","YTMw","YTMx","YTMy","YTMz","YTM0","YTM1","YTM2","YTM3","YTM4","YTM5","YTQ","YTQw","YTQx","YTQy","YTQz","YTQ0","YTQ1","YTQ2","YTQ3","YTQ4","YTQ5","YTU","YTUw","YTUx","YTUy","YTUz","YTU0","YTU1","YTU2","YTU3","YTU4","YTU5","YTY","YTYw","YTYx","YTYy","YTYz","YTY0","YTY1","YTY2","YTY3","YTY4","YTY5","YTc","YTcw","YTcx","YTcy","YTcz","YTc0","YTc1","YTc2","YTc3","YTc4","YTc5","YTg","YTgw","YTgx","YTgy","YTgz","YTg0","YTg1","YTg2","YTg3","YTg4","YTg5","YTk","YTkw","YTkx","YTky","YTkz","YTk0","YTk1","YTk2","YTk3","YTk4","YTk5"]},"3":{"lst":["i32",100,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]}}
[REGEX].*no global dict.*
-- !result
select dict_merge(get_json_string(c1, 'f3'), 255) from js2 [_META_];
-- result:
{"2":{"lst":["str",200,"YTA","YTE","YTEw","YTEwMA","YTEwMQ","YTEwMg","YTEwMw","YTEwNA","YTEwNQ","YTEwNg","YTEwNw","YTEwOA","YTEwOQ","YTEx","YTExMA","YTExMQ","YTExMg","YTExMw","YTExNA","YTExNQ","YTExNg","YTExNw","YTExOA","YTExOQ","YTEy","YTEyMA","YTEyMQ","YTEyMg","YTEyMw","YTEyNA","YTEyNQ","YTEyNg","YTEyNw","YTEyOA","YTEyOQ","YTEz","YTEzMA","YTEzMQ","YTEzMg","YTEzMw","YTEzNA","YTEzNQ","YTEzNg","YTEzNw","YTEzOA","YTEzOQ","YTE0","YTE0MA","YTE0MQ","YTE0Mg","YTE0Mw","YTE0NA","YTE0NQ","YTE0Ng","YTE0Nw","YTE0OA","YTE0OQ","YTE1","YTE1MA","YTE1MQ","YTE1Mg","YTE1Mw","YTE1NA","YTE1NQ","YTE1Ng","YTE1Nw","YTE1OA","YTE1OQ","YTE2","YTE2MA","YTE2MQ","YTE2Mg","YTE2Mw","YTE2NA","YTE2NQ","YTE2Ng","YTE2Nw","YTE2OA","YTE2OQ","YTE3","YTE3MA","YTE3MQ","YTE3Mg","YTE3Mw","YTE3NA","YTE3NQ","YTE3Ng","YTE3Nw","YTE3OA","YTE3OQ","YTE4","YTE4MA","YTE4MQ","YTE4Mg","YTE4Mw","YTE4NA","YTE4NQ","YTE4Ng","YTE4Nw","YTE4OA","YTE4OQ","YTE5","YTE5MA","YTE5MQ","YTE5Mg","YTE5Mw","YTE5NA","YTE5NQ","YTE5Ng","YTE5Nw","YTE5OA","YTE5OQ","YTI","YTIw","YTIx","YTIy","YTIz","YTI0","YTI1","YTI2","YTI3","YTI4","YTI5","YTM","YTMw","YTMx","YTMy","YTMz","YTM0","YTM1","YTM2","YTM3","YTM4","YTM5","YTQ","YTQw","YTQx","YTQy","YTQz","YTQ0","YTQ1","YTQ2","YTQ3","YTQ4","YTQ5","YTU","YTUw","YTUx","YTUy","YTUz","YTU0","YTU1","YTU2","YTU3","YTU4","YTU5","YTY","YTYw","YTYx","YTYy","YTYz","YTY0","YTY1","YTY2","YTY3","YTY4","YTY5","YTc","YTcw","YTcx","YTcy","YTcz","YTc0","YTc1","YTc2","YTc3","YTc4","YTc5","YTg","YTgw","YTgx","YTgy","YTgz","YTg0","YTg1","YTg2","YTg3","YTg4","YTg5","YTk","YTkw","YTkx","YTky","YTkz","YTk0","YTk1","YTk2","YTk3","YTk4","YTk5"]},"3":{"lst":["i32",200,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200]}}
[REGEX].*no global dict.*
-- !result
select dict_merge(get_json_string(c1, 'f4'), 255) from js2 [_META_];
[UC]select dict_merge(get_json_string(c1, 'f4'), 255) from js2 [_META_];
-- result:
[REGEX].*global dict size:500 greater than low_cardinality_threshold:255: BE:.*
-- !result
select dict_merge(get_json_string(c1, 'f5'), 255) from js2 [_META_];
-- result:
None
[REGEX].*no global dict.*
-- !result
truncate table js2;
-- result:
Expand Down Expand Up @@ -264,7 +263,7 @@ from (table(generate_series(1, 1000)));
-- !result
select get_json_string(inspect_global_dict('js2', 'c1.f1'), 'dict');
-- result:
{"a0": 1, "a1": 2, "a2": 3, "a3": 4, "a4": 5, "a5": 6, "a6": 7, "a7": 8, "a8": 9, "a9": 10}
None
-- !result
select get_json_string(inspect_global_dict('js2', 'c1.f2'), 'dict');
-- result:
Expand All @@ -287,7 +286,7 @@ truncate table js2;
-- !result
select get_json_string(inspect_global_dict('js2', 'c1.f1'), 'dict');
-- result:
{"a0": 1, "a1": 2, "a2": 3, "a3": 4, "a4": 5, "a5": 6, "a6": 7, "a7": 8, "a8": 9, "a9": 10}
None
-- !result
select get_json_string(inspect_global_dict('js2', 'c1.f2'), 'dict');
-- result:
Expand Down Expand Up @@ -353,23 +352,23 @@ from (table(generate_series(1, 1000)));
-- !result
select get_json_string(inspect_global_dict('js2', 'c1.f1'), 'dict');
-- result:
{"a0": 1, "a1": 2, "a2": 3, "a3": 4, "a4": 5, "a5": 6, "a6": 7, "a7": 8, "a8": 9, "a9": 10}
None
-- !result
select get_json_string(inspect_global_dict('js2', 'c1.f2'), 'dict');
-- result:
{"a0": 1, "a1": 2, "a10": 3, "a11": 4, "a12": 5, "a13": 6, "a14": 7, "a15": 8, "a16": 9, "a17": 10, "a18": 11, "a19": 12, "a2": 13, "a3": 14, "a4": 15, "a5": 16, "a6": 17, "a7": 18, "a8": 19, "a9": 20}
None
-- !result
select get_json_string(inspect_global_dict('js2', 'c1.f3'), 'dict');
-- result:
{"a0": 1, "a1": 2, "a10": 3, "a11": 4, "a12": 5, "a13": 6, "a14": 7, "a15": 8, "a16": 9, "a17": 10, "a18": 11, "a19": 12, "a2": 13, "a20": 14, "a21": 15, "a22": 16, "a23": 17, "a24": 18, "a25": 19, "a26": 20, "a27": 21, "a28": 22, "a29": 23, "a3": 24, "a4": 25, "a5": 26, "a6": 27, "a7": 28, "a8": 29, "a9": 30}
None
-- !result
select get_json_string(inspect_global_dict('js2', 'c1.f4'), 'dict');
-- result:
{"a0": 1, "a1": 2, "a10": 3, "a11": 4, "a12": 5, "a13": 6, "a14": 7, "a15": 8, "a16": 9, "a17": 10, "a18": 11, "a19": 12, "a2": 13, "a20": 14, "a21": 15, "a22": 16, "a23": 17, "a24": 18, "a25": 19, "a26": 20, "a27": 21, "a28": 22, "a29": 23, "a3": 24, "a30": 25, "a31": 26, "a32": 27, "a33": 28, "a34": 29, "a35": 30, "a36": 31, "a37": 32, "a38": 33, "a39": 34, "a4": 35, "a5": 36, "a6": 37, "a7": 38, "a8": 39, "a9": 40}
None
-- !result
select get_json_string(inspect_global_dict('js2', 'c1.f5'), 'dict');
-- result:
{"a0": 1, "a1": 2, "a10": 3, "a11": 4, "a12": 5, "a13": 6, "a14": 7, "a15": 8, "a16": 9, "a17": 10, "a18": 11, "a19": 12, "a2": 13, "a20": 14, "a21": 15, "a22": 16, "a23": 17, "a24": 18, "a25": 19, "a26": 20, "a27": 21, "a28": 22, "a29": 23, "a3": 24, "a30": 25, "a31": 26, "a32": 27, "a33": 28, "a34": 29, "a35": 30, "a36": 31, "a37": 32, "a38": 33, "a39": 34, "a4": 35, "a40": 36, "a41": 37, "a42": 38, "a43": 39, "a44": 40, "a45": 41, "a46": 42, "a47": 43, "a48": 44, "a49": 45, "a5": 46, "a6": 47, "a7": 48, "a8": 49, "a9": 50}
None
-- !result
CREATE TABLE js3 (
v1 BIGINT NULL,
Expand Down Expand Up @@ -477,4 +476,4 @@ None
select get_json_string(inspect_global_dict('js3', 'c1.deep_nested.level1.level2.leaf_num'), 'dict');
-- result:
None
-- !result
-- !result
Loading