This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 66a0c090b8 [fix](column) Add unimplemented replicate function in ColumnStruct (#18368) 66a0c090b8 is described below commit 66a0c090b8ba14cce8194d801d1ef0bb88e9f63a Author: Jerry Hu <mrh...@gmail.com> AuthorDate: Thu Apr 6 09:50:27 2023 +0800 [fix](column) Add unimplemented replicate function in ColumnStruct (#18368) --- be/src/vec/columns/column_struct.cpp | 15 +++++++++++++++ be/src/vec/columns/column_struct.h | 2 ++ .../aggregate/aggregate_group_by_metric_type.out | Bin 0 -> 170 bytes .../aggregate/aggregate_group_by_metric_type.groovy | 19 +++++++++++++++++++ 4 files changed, 36 insertions(+) diff --git a/be/src/vec/columns/column_struct.cpp b/be/src/vec/columns/column_struct.cpp index 092157655e..e0663b6386 100644 --- a/be/src/vec/columns/column_struct.cpp +++ b/be/src/vec/columns/column_struct.cpp @@ -248,6 +248,21 @@ ColumnPtr ColumnStruct::replicate(const Offsets& offsets) const { return ColumnStruct::create(new_columns); } +void ColumnStruct::replicate(const uint32_t* counts, size_t target_size, IColumn& column, + size_t begin, int count_sz) const { + size_t col_size = count_sz < 0 ? size() : count_sz; + if (0 == col_size) { + return; + } + + auto& res = reinterpret_cast<ColumnStruct&>(column); + res.columns.resize(columns.size()); + + for (size_t i = 0; i != columns.size(); ++i) { + columns[i]->replicate(counts, target_size, *res.columns[i], begin, count_sz); + } +} + MutableColumns ColumnStruct::scatter(ColumnIndex num_columns, const Selector& selector) const { const size_t tuple_size = columns.size(); std::vector<MutableColumns> scattered_tuple_elements(tuple_size); diff --git a/be/src/vec/columns/column_struct.h b/be/src/vec/columns/column_struct.h index 9a00244b5a..d43d8801f6 100644 --- a/be/src/vec/columns/column_struct.h +++ b/be/src/vec/columns/column_struct.h @@ -110,6 +110,8 @@ public: Status filter_by_selector(const uint16_t* sel, size_t sel_size, IColumn* col_ptr) override; ColumnPtr permute(const Permutation& perm, size_t limit) const override; ColumnPtr replicate(const Offsets& offsets) const override; + void replicate(const uint32_t* counts, size_t target_size, IColumn& column, size_t begin = 0, + int count_sz = -1) const override; MutableColumns scatter(ColumnIndex num_columns, const Selector& selector) const override; // ColumnPtr index(const IColumn & indexes, size_t limit) const override; diff --git a/regression-test/data/query_p0/aggregate/aggregate_group_by_metric_type.out b/regression-test/data/query_p0/aggregate/aggregate_group_by_metric_type.out new file mode 100644 index 0000000000..d9f26a0fa7 Binary files /dev/null and b/regression-test/data/query_p0/aggregate/aggregate_group_by_metric_type.out differ diff --git a/regression-test/suites/query_p0/aggregate/aggregate_group_by_metric_type.groovy b/regression-test/suites/query_p0/aggregate/aggregate_group_by_metric_type.groovy index ee6ccf63a3..bf514cb6f1 100644 --- a/regression-test/suites/query_p0/aggregate/aggregate_group_by_metric_type.groovy +++ b/regression-test/suites/query_p0/aggregate/aggregate_group_by_metric_type.groovy @@ -130,4 +130,23 @@ suite("aggregate_group_by_metric_type") { sql "select s_struct,count(*) from test_group_by_struct group by s_struct" exception "${error_msg}" } + + sql "DROP TABLE IF EXISTS test_group_by_struct_join" + sql """ + CREATE TABLE IF NOT EXISTS test_group_by_struct_join (id int, value int) + DISTRIBUTED BY HASH(`id`) BUCKETS 1 properties("replication_num" = "1"); + """ + + sql """ + insert into test_group_by_struct_join values(1, 1), (1, 2), (1, 3), (1, 4); + """ + + qt_select """ + select + t1.s_struct + , t2.value + from + test_group_by_struct t1 right join test_group_by_struct_join t2 on t1.id = t2.id + order by t2.value; + """ } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org