You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@datafusion.apache.org by "adriangb (via GitHub)" <gi...@apache.org> on 2026/08/24 18:49:15 UTC
[I] `to_timestamp` with string input returns an array whose timezone does not match its declared return type [datafusion]
adriangb opened a new issue, #24632:
URL: https://github.com/apache/datafusion/issues/24632
### Describe the bug
When `datafusion.execution.time_zone` is set, `to_timestamp()` on a string input declares a
return type of `Timestamp(ns, <tz>)` but produces an array of `Timestamp(ns, None)`. The
declared type and the produced array disagree, so any plan that materializes the column
fails at execution. Planning succeeds — `EXPLAIN` returns a plan for both queries below.
### To Reproduce
datafusion-cli 55.0.0:
```sql
SET datafusion.execution.time_zone = 'UTC';
SELECT to_timestamp(s) AS v FROM (VALUES ('2026-01-01T00:00:00')) AS t(s);
```
```
Error: Arrow error: Invalid argument error: column types must match schema types,
expected Timestamp(ns, "UTC") but found Timestamp(ns) at column index 0
```
Not specific to UTC:
```sql
SET datafusion.execution.time_zone = 'America/New_York';
SELECT to_timestamp(s) AS v FROM (VALUES ('2026-01-01T00:00:00')) AS t(s);
-- expected Timestamp(ns, "America/New_York") but found Timestamp(ns) at column index 0
```
A second symptom: because the planner trusts the declared type, it inserts no coercion
before comparing against another timezone-aware value, so the comparison reaches the Arrow
kernel with mismatched types:
```sql
SET datafusion.execution.time_zone = 'UTC';
SELECT to_timestamp(concat('2026-01-01T00:00:0', (value % 10)::text)) <= now() AS cmp
FROM generate_series(1, 3) AS t(value);
```
```
Error: Arrow error: Invalid argument error:
Invalid comparison operation: Timestamp(ns) <= Timestamp(ns, "UTC")
```
Unaffected, for contrast:
- Numeric input: `to_timestamp(1767225600)` returns `Timestamp(ns, "UTC")`; declared and
actual agree.
- Default config (`datafusion.execution.time_zone` unset): declared is `Timestamp(ns, None)`
and matches the array, so nothing fails.
### Expected behavior
`to_timestamp` on a string input should produce an array annotated with the execution
timezone, matching what `return_type` advertises.
`return_type` returns `Timestamp(Nanosecond, self.timezone.clone())`, and the string branch
does receive the configured timezone (it is passed into the parse helper). The gap appears
to be that the resulting array is not annotated with it.
### Additional context
Reproduced on datafusion-cli 54.0.0 and 55.0.0.
Related:
- #17998 / #19078 — made `to_timestamp` respect `datafusion.execution.time_zone`.
- #23841 — a separate issue in the same family from #19078 (already-zoned inputs having
their timezone discarded).
- #17993 / #18017 — the equivalent change for `now()`, which reads the config at execution
time rather than capturing it.
- #13351 — umbrella issue for PostgreSQL-consistent `to_timestamp` semantics.
- #12892 — the same config-awareness gap in `from_unixtime`.
--
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: github-unsubscribe@datafusion.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [I] `to_timestamp` with string input returns an array whose timezone does not match its declared return type [datafusion]
Posted by "adriangb (via GitHub)" <gi...@apache.org>.
adriangb closed issue #24632: `to_timestamp` with string input returns an array whose timezone does not match its declared return type
URL: https://github.com/apache/datafusion/issues/24632
--
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: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org