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

Reply via email to