-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: extract (epoch from col) #5555
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add more tests to cover null values and different scales
datafusion/core/tests/sql/expr.rs
Outdated
@@ -1313,6 +1313,23 @@ async fn test_extract_date_part() -> Result<()> { | |||
Ok(()) | |||
} | |||
|
|||
#[tokio::test] | |||
async fn test_extract_epoch() -> Result<()> { | |||
// test_expression!( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @Weijun-H are this commented tests needed?
} | ||
} | ||
} | ||
_ => return Err(DataFusionError::Internal("Invalid data type".to_string())), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it might be useful to output the wrong datatype in error message
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @Weijun-H -- I double checked the answers against postgres and it looks great.
postgres=# select extract(epoch from '1870-01-01T07:29:10.256'::timestamp);
extract
--------------------
-3155646649.744000
(1 row)
postgres=# select extract(epoch from '2000-01-01T00:00:00.000'::timestamp);
extract
------------------
946684800.000000
(1 row)
postgres=# select extract(epoch from null::timestamp);
extract
---------
(1 row)
if array.is_null(i) { | ||
b.append_null(); | ||
} else { | ||
let scale = match tu { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I double checked that this is consistent with postgres docs: https://www.postgresql.org/docs/8.1/functions-datetime.html. 👍
Thank you @comphead for the review |
Benchmark runs are scheduled for baseline = 1f8ede5 and contender = 146a949. 146a949 is a master commit associated with this PR. Results will be available as each benchmark for each run completes. |
Which issue does this PR close?
Closes #2785
Rationale for this change
Explain #2785
What changes are included in this PR?
Add
EXTRACT( EPOCH FROM COL)
Are these changes tested?
Are there any user-facing changes?