MohamedAbdeen21 commented on issue #10280:
URL: https://github.com/apache/datafusion/issues/10280#issuecomment-2093703254
Hey, this optimizer rule is used by so many test cases, so I wanted to
collect opinions before proceeding with implementing the change.
# My suggestion
Using `let alias_symbol = format!("${{{curr_expr_id}}}");` to mark common
expressions. So the query above would be:
```sql
AggregateExec: mode=Partial, gby=[${CAST(number.c0 AS Int64) + Int64(1)}@0
as number.c0 + Int64(1)], aggr=[COUNT(number.c0 + Int64(1))]
ProjectionExec: expr=[CAST(c0@0 AS Int64) + 1 as ${CAST(number.c0 AS
Int64) + Int64(1)}]
```
# Some naming alternatives I've considered
- Using `@0`, `@1`, etc ... However, the @ symbol is already used in the
physical plan (check the query above), which means that you may have columns
like `@0@0` which makes no sense.
- `let alias_symbol = format!("{curr_expr_id}").replace(" ", "_");`. Sound
like a good idea until you see it.
```sql
AggregateExec: mode=Partial, gby=[CAST(number.c0_AS_Int64)_+_Int64(1)@0 as
number.c0 + Int64(1)], aggr=[COUNT(number.c0 + Int64(1))]
ProjectionExec: expr=[CAST(c0@0 AS Int64) + 1 as
CAST(number.c0_AS_Int64)_+_Int64(1)
```
It's not immediately obvious + what happens if the column doesn't have a
space?
Please feel free to share other alternatives.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]