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.
Currently Calcite will generate plan:
But after this JIRA, I am expecting a plan without Sort.