Description
Only passThrough is needed.
Currently, when Values is created, it will enumerate all the possible collations no matter parent operator requires it or not, it will be a disaster if the Values has thousands of columns, and the parent operator may be just a hash aggregate or hashjoin, which doesn't care about its collation.
The collation should be created on demand by calling passThrough.
e.g.
SELECT * from (values (1, 1), (2, 1), (1, 2), (2, 2) ) as t(a, b) order by b, a
Currently Calcite will generate plan:
EnumerableSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC]) EnumerableValues(tuples=[[{ 1, 1 }, { 2, 1 }, { 1, 2 }, { 2, 2 }]])
But after this JIRA, I am expecting a plan without Sort.
Attachments
Issue Links
- blocks
-
CALCITE-4052 Enable Top-down Optimization
- Open