Skip to content

Commit 057fd1a

Browse files
committed
fix
1 parent 4c56ff9 commit 057fd1a

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

be/src/vec/json/parse2column.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ void parse_json_to_variant(IColumn& column, const char* src, size_t length,
168168
auto [doc_snapshot_data_paths, doc_snapshot_data_values] =
169169
column_variant.get_doc_snapshot_data_paths_and_values();
170170
auto& doc_snapshot_data_offsets = column_variant.serialized_doc_snapshot_column_offsets();
171+
std::unordered_set<std::string> subcolumn_set;
171172
if (config.parse_to_subcolumns) {
172173
for (size_t i = 0; i < paths.size(); ++i) {
173174
FieldInfo field_info;
@@ -198,6 +199,11 @@ void parse_json_to_variant(IColumn& column, const char* src, size_t length,
198199
paths[i].get_path());
199200
}
200201
subcolumn->insert(std::move(values[i]), std::move(field_info));
202+
if (subcolumn_set.contains(paths[i].get_path())) {
203+
throw doris::Exception(ErrorCode::INVALID_ARGUMENT, "may contains duplicated entry : {}",
204+
paths[i].get_path());
205+
}
206+
subcolumn_set.insert(paths[i].get_path());
201207
if (!paths[i].empty() && config.parse_to_doc_snapshot) {
202208
subcolumn->serialize_to_sparse_column(doc_snapshot_data_paths, paths[i].get_path(),
203209
doc_snapshot_data_values, old_num_rows);
@@ -208,6 +214,11 @@ void parse_json_to_variant(IColumn& column, const char* src, size_t length,
208214
for (size_t i = 0; i < paths.size(); ++i) {
209215
FieldInfo field_info;
210216
schema_util::get_field_info(values[i], &field_info);
217+
if (subcolumn_set.contains(paths[i].get_path())) {
218+
throw doris::Exception(ErrorCode::INVALID_ARGUMENT, "may contains duplicated entry : {}",
219+
paths[i].get_path());
220+
}
221+
subcolumn_set.insert(paths[i].get_path());
211222
if (paths[i].empty()) {
212223
column_variant.get_subcolumn(paths[i])->insert(std::move(values[i]),
213224
std::move(field_info));

0 commit comments

Comments
 (0)