sfu-db / connector-x

Fastest library to load data from DB to DataFrames in Rust and Python
https://sfu-db.github.io/connector-x
MIT License
2.02k stars 163 forks source link

Cannot load timestamp from oracle when before '1677-09-22 00:00:00' #681

Open lscheilling opened 2 months ago

lscheilling commented 2 months ago

What language are you using?

Python

What version are you using?

Python 3.9 connectorx==0.3.4a1

What database are you using?

OracleDB

What dataframe are you using?

Polars

Can you describe your bug?

Seems to not be able to load timestamps before 1677-09-22 00:00:00

What are the steps to reproduce the behavior?

import connectorx as cx

connection = "oracle://..."

cx.read_sql(connection, "SELECT timestamp '1677-09-22 00:00:00' FROM table", return_type="polars2") # works
cx.read_sql(connection, "SELECT timestamp '1677-09-21 00:00:00' FROM table", return_type="polars2") # fails

Error: pyo3_runtime.PanicException: out of range DateTime

Database setup if the error only happens on specific data or data type

Included in example above (no specific table needed for this query)

Example query / code
import connectorx as cx

connection = "oracle://..."

cx.read_sql(connection, "SELECT timestamp '1677-09-22 00:00:00' FROM table", return_type="polars2") # works
cx.read_sql(connection, "SELECT timestamp '1677-09-21 00:00:00' FROM table", return_type="polars2") # fails
cx.read_sql(connection, "SELECT timestamp '1677-09-22 00:00:00' FROM table", return_type="polars") # works
cx.read_sql(connection, "SELECT timestamp '1677-09-21 00:00:00' FROM table", return_type="polars") # fails

What is the error?

pyo3_runtime.PanicException: out of range DateTime

rudyryk commented 2 months ago

Also related https://github.com/sfu-db/connector-x/issues/634