You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2023/04/06 01:50:33 UTC
[doris] branch master updated: [fix](column) Add unimplemented replicate function in ColumnStruct (#18368)
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 <mr...@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-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org