[vectorized](udaf) java udaf support with map type (#22397)

[vectorized](udaf) java udaf support with map type (#22397)
* test
* remove some unused
* update
* add case
This commit is contained in:
Mryange
2023-08-02 15:03:44 +08:00
committed by GitHub
parent 16461fdc1c
commit ddd90855a9
11 changed files with 915 additions and 683 deletions

View File

@ -115,39 +115,8 @@ private:
jobject executor = nullptr;
bool is_closed = false;
std::unique_ptr<int64_t[]> input_values_buffer_ptr;
std::unique_ptr<int64_t[]> input_nulls_buffer_ptr;
std::unique_ptr<int64_t[]> input_offsets_ptrs;
//used for array type nested column null map, because array nested column must be nullable
std::unique_ptr<int64_t[]> input_array_nulls_buffer_ptr;
//used for array type of nested string column offset, not the array column offset
std::unique_ptr<int64_t[]> input_array_string_offsets_ptrs;
std::unique_ptr<int64_t> output_value_buffer;
std::unique_ptr<int64_t> output_null_value;
std::unique_ptr<int64_t> output_offsets_ptr;
//used for array type nested column null map
std::unique_ptr<int64_t> output_array_null_ptr;
//used for array type of nested string column offset
std::unique_ptr<int64_t> output_array_string_offsets_ptr;
std::unique_ptr<int32_t> batch_size_ptr;
// intermediate_state includes two parts: reserved / used buffer size and rows
std::unique_ptr<IntermediateState> output_intermediate_state_ptr;
JniContext(int64_t num_args, jclass executor_cl, jmethodID executor_close_id)
: executor_cl_(executor_cl),
executor_close_id_(executor_close_id),
input_values_buffer_ptr(new int64_t[num_args]),
input_nulls_buffer_ptr(new int64_t[num_args]),
input_offsets_ptrs(new int64_t[num_args]),
input_array_nulls_buffer_ptr(new int64_t[num_args]),
input_array_string_offsets_ptrs(new int64_t[num_args]),
output_value_buffer(new int64_t()),
output_null_value(new int64_t()),
output_offsets_ptr(new int64_t()),
output_array_null_ptr(new int64_t()),
output_array_string_offsets_ptr(new int64_t()),
batch_size_ptr(new int32_t()),
output_intermediate_state_ptr(new IntermediateState()) {}
: executor_cl_(executor_cl), executor_close_id_(executor_close_id) {}
void close() {
if (is_closed) {