Enable casting from Date64 to Timestamp #3038
Merged
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.
Which issue does this PR close?
Closes #3037
Rationale for this change
I'm working on adding support for remote tables in Seafowl (in analogy with PG FDWs) using the connector-x crate. An issue that comes up is the fact that connector-x uses arrow's Date64 as the target type for coercion of various datetime/timestamp types from other DBs.
More specifically, Postgres TIMESTAMP is converted into Date64. On the other hand, Datafusion interprets TIMESTAMP type as arrow's Timestamp(TimeUnit::Nanosecond, None). Consequently, I end up needing to cast from Date64 (as returned by connector-x) into Timestamp (as expected by Datafusion), but such cast is not supported at the moment.
What changes are included in this PR?
I expanded the cast kernel to facilitate the Date64 -> Timestamp cast, as well as the
can_cast_types
function to reflect this.Are there any user-facing changes?
Trying to cast from Date64 to Timestamp will not error out after this; not sure whether this warrants a doc change somewhere.