This is an automated email from the ASF dual-hosted git repository.

eldenmoon pushed a commit to branch branch-2.0-var
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0-var by this push:
     new 35b9cd5a422 [Fix](variant) fix groupby multi variant columns leading 
to error (#26023)
35b9cd5a422 is described below

commit 35b9cd5a42200c9403f3407d29aac3727ce3398a
Author: lihangyu <15605149...@163.com>
AuthorDate: Mon Oct 30 14:09:30 2023 +0800

    [Fix](variant) fix groupby multi variant columns leading to error (#26023)
    
    ```
    ERROR 1105 (HY000): errCode = 2, detailMessage = select list expression not 
produced by aggregation output (missing from GROUP BY clause?): CAST(`var` AS 
TEXT)
    ```
    
    The hash code of slot ref should consider sub column names
---
 fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java | 9 ++++++++-
 regression-test/suites/variant_p0/load.groovy                   | 3 +++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
index 9a7d7308d35..27088de26f3 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
@@ -341,7 +341,14 @@ public class SlotRef extends Expr {
         if (desc != null) {
             return desc.getId().hashCode();
         }
-        return Objects.hashCode((tblName == null ? "" : tblName.toSql() + "." 
+ label).toLowerCase());
+        if (subColLables == null || subColLables.isEmpty()) {
+            return Objects.hashCode((tblName == null ? "" : tblName.toSql() + 
"." + label).toLowerCase());
+        }
+        int result = Objects.hashCode((tblName == null ? "" : tblName.toSql() 
+ "." + label).toLowerCase());
+        for (String sublabel : subColLables) {
+            result = 31 * result + Objects.hashCode(sublabel);
+        }
+        return result;
     }
 
     @Override
diff --git a/regression-test/suites/variant_p0/load.groovy 
b/regression-test/suites/variant_p0/load.groovy
index a014911034c..5501347a51a 100644
--- a/regression-test/suites/variant_p0/load.groovy
+++ b/regression-test/suites/variant_p0/load.groovy
@@ -449,6 +449,9 @@ suite("regression_test_variant", "variant_type"){
         sql """insert into var_index values(7, '{"a1" : 0, "b1": 3}', 'hello 
world'), (8, '{"a2" : 123}', 'world'),(9, '{"a3" : 123}', 'hello world')"""
         qt_sql_inv6 """select * from ${table_name} order by k desc limit 4"""
 
+        // test groupby with multiple variants
+        sql """select cast(v:xxx as int),  cast(v:yyy as text) from 
${table_name} group by cast(v:xxx as int),  cast(v:yyy as text)"""
+
     } finally {
         // reset flags
         set_be_config.call("max_filter_ratio_for_variant_parsing", "0.05")


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to