DongLiang-0 commented on code in PR #24810:
URL: https://github.com/apache/doris/pull/24810#discussion_r1336655583
##########
be/src/vec/exec/jni_connector.cpp:
##########
@@ -301,13 +305,82 @@ Status JniConnector::_fill_column(ColumnPtr&
doris_column, DataTypePtr& data_typ
[[fallthrough]];
case TypeIndex::FixedString:
return _fill_string_column(data_column, num_rows);
+ case TypeIndex::Array:
+ return _fill_array_column(data_column, data_type, num_rows);
+ case TypeIndex::Map:
+ return _fill_map_column(data_column, data_type, num_rows);
+ case TypeIndex::Struct:
+ return _fill_struct_column(data_column, data_type, num_rows);
default:
return Status::InvalidArgument("Unsupported type {} in jni scanner",
getTypeName(logical_type));
}
return Status::OK();
}
+Status JniConnector::_fill_array_column(MutableColumnPtr& doris_column,
DataTypePtr& data_type,
+ size_t num_rows) {
+ ColumnPtr& element_column =
static_cast<ColumnArray&>(*doris_column).get_data_ptr();
+ DataTypePtr& element_type = const_cast<DataTypePtr&>(
+ (reinterpret_cast<const
DataTypeArray*>(remove_nullable(data_type).get()))
+ ->get_nested_type());
+ ColumnArray::Offsets64& offsets_data =
static_cast<ColumnArray&>(*doris_column).get_offsets();
+
+ // offsets are stored as int type in java side
+ int* offsets = reinterpret_cast<int*>(_next_meta_as_ptr());
+ size_t origin_size = offsets_data.size();
+ offsets_data.resize(origin_size + num_rows);
+ size_t start_offset = offsets_data[origin_size - 1];
+ for (size_t i = 0; i < num_rows; ++i) {
+ offsets_data[origin_size + i] = offsets[i] + start_offset;
+ }
+
+ // offsets[num_rows - 1] == offsets_data[origin_size + num_rows - 1] -
start_offset
Review Comment:
Can this line of code be deleted?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]