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: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org