Hi Xuren,
This jira CALCITE-4512 <https://issues.apache.org/jira/browse/CALCITE-4512>
may be similar to your problem, hope helpful for you.

徐仁和 <[email protected]> 于2022年3月10日周四 18:14写道:

> Hi community
>
> I found some different behaviors in the SQL's verification phase using
> `SqlConformance#isGroupByAlias=true`.
> This case is that the alias in the grouping is equal to the name of the
> table's column.
>
>
> For example:
> CREATE TABLE test_tbl (
>   id integer,
>   col1 varchar
> );
>  id | col1
> ----+------
>   1 | abc
>   2 | abb
>   3 | abcd
>   4 | a
>   5 | abc
>
>
> -- origin sql
> SELECT LENGTH(`col1`) AS `col1`, COUNT(*)
> FROM `test_tbl`
> GROUP BY `col1`
>
> -- converted rel
> LogicalAggregate(group=[{0}], EXPR$1=[COUNT()])
>   LogicalProject(col1=[LENGTH($1)])
>     LogicalTableScan(table=[[default, test_tbl]])
>
> According to rel, we will get results as below:
> col1| EXPR$1
> ----+-------
>   3 | 3
>   1 | 1
>   4 | 1
>
>
> But, It's different from mysql.
>
> MySQL-Result(MySQL5.7 or MySQL8.0):
> +------+----------+
> | col1 | COUNT(*) |
> +------+----------+
> |    1 |        1 |
> |    3 |        1 |
> |    3 |        2 |
> |    4 |        1 |
> +------+----------+
>
> The behavior of MySQL is grouping by table[test_tbl]'s column[col1]
> firstly, not grouping by LENGTH(`col1`).
> And it calc expression of LENGTH(`col1`) after executing aggregate.
>
>
> I tried this case in PostgreSQL and SQLite, and found that the two
> sql-engine's behavior is the same as MySQL.
>
> PostgreSQL-Result(PostgreSQL 13):
>  col1 | count
> ------+-------
>     1 |     1
>     3 |     1
>     4 |     1
>     3 |     2
>
> SQLite-Result:(SQLite 3)
>  col1 | count
> ------+-------
>     1 |     1
>     3 |     1
>     4 |     1
>     3 |     2
>
>
> PS:
> -- Plan of PostgreSQL:
> EXPLAIN SELECT LENGTH("col1") AS "col1", COUNT(*)
> FROM "test_tbl"
> GROUP BY "col1";
>                             QUERY PLAN
> -------------------------------------------------------------------
>  HashAggregate  (cost=12.10..13.85 rows=140 width=528)
>    Group Key: col1
>    ->  Seq Scan on test_tbl  (cost=0.00..11.40 rows=140 width=516)
> (3 rows)
>
>
> Best
> Xurenhe
>

Reply via email to