fix(isthmus): support more datetime extract variants #360
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, the Substrait to Calcite mappings only support mapping scalar functions with enum arguments for the
extract:req_tsfunction which means it only supports theextractfunction with an enum argument and a timestamp but none of the other datetime extract functions defined in the default datetime extension.This PR adds basic support for all datetime extract functions which are not using the indexing argument which indicates whether e.g. months should start to be counted from 0 instead of 1.
It is still a naive mapping from the enum values defined in the datetime extension YAML to Apache Calcite's
TimeUnitRangeenum which misses some of the Substrait enum values (e.g.US_YEAR,PICOSECONDS) or has spelling differences for some of the enum values (ISOYEARvs.ISO_YEAR).This PR at least allows some of the TPC-H queries to be mapped back from Substrait to Calcite which currently throws an
UnsupportedOperationExceptiondue to missing support for date extract.I would suggest to revisit the function mapping code in a follow-up PR to create a framework which supports more sophisticated mapping logic.