- Fix: Due to fixes in the upstream
arrow-odbc
Rust crate it is now possible to fetch timestamps before unix-epoch without a panic
- Fix:
typing_extension
has been pinned to strictly, preventing users from updating to the newest version.
- Parameter
fetch_concurrently
now defaults toTrue
. This causesarrow-odbc-py
to use more memory by default, but enables fetching concurrently with the rest of the application logic. You can set this parameter explicitly toFalse
to get the old behaviour. - Removed deprecated method
fetch_concurrently
. Use the paremeter instead.
- Deprecate method
fetch_concurrently
in favour of dedicated parameters inread_arrow_batches_from_odbc
andmore_results
. This is intended to increase discoverability of the feature.
- Fix build for Mac ARM wheel. It seems like fly-ci runners do no longer pick up the job, switching to GitHub runners.
- Fix: Typo in connect function, lead to connections not properly established and failing opertions.
- Updated Rust dependencies
- Build wheel for MacOS 13 x86
- unsigned TinyInt is now mapped to
UInt8
.
- Support for passing desired packet size to the ODBC driver. This may help with packet loss on fragile connections if the ODBC driver supports it.
insert_into_table
will now wrap column names in double quotes then creating the statement, if the column name is not a valid identifier in transact SQL.
- Fix: Database connection have not been cleaned up in case the parameters caused a type error.
- Changend
BatchReader.to_pyarrow_record_batch_reader
intoBatchReader.into_pyarrow_record_batch_reader
. The new method fully passes ownership and leaves self empty.
- Adds
BatchReader.to_pyarrow_record_batch_reader
in order to avoid for conviniently create a PyArrowRecordBatchReader
which can be consumed by other libraries like DuckDB.
- Release wheel also for MacOS ARM 64 architectures to PyPi. Thanks to FlyCI for their free tier!
- Removed parameter
driver_returns_memory_garbage_for_indicators
fromread_arrow_batches_from_odbc
as it was intended as a workaround for IBM/DB2 drivers. Turns out IBM offers drivers which work correctly with 64Bit driver managers. Look for file names ending in 'o'. - Add support for mapping inferred schemas via the
map_schema
parameter. It accepts a callable taking and returning an Arrow Schema. This allows you to avoid data types which are not supported in downstream operations and map them e.g. to string. It also enables you to work around quirks of your ODBC driver and map float 32 to float 64 if precisions inferred by the driver are too small.
- Updated Rust dependencies. This includes an update to
odbc-api
which fixes a bug in decimal parsing. Decimal values with a magnitude smaller 1 and negative sign would have been interpreted as positive without this fix.
read_arrow_batches_from_odbc
now requires the paramteterdriver_returns_memory_garbage_for_indicators
explicitly set toTrue
in order to compensate for weaknesses in the IBM/DB2 driver and no longer tries to autodetect this. This change in interface has been made in order to not accidentially apply the workaround to drivers which in actuallity report indices just fine.
BatchReader.more_results
now shares the same default value for fetch buffer size asread_arrow_batches_from_odbc
.
- Updated Rust dependencies. This includes an update to
odbc-api
which activates db2 specific workaround for any platform
- Updated Rust dependencies. This includes an update to
arrow-odbc
(the Rust crate) which features a more robust parsing of decimals. Decimals now work even if they do not have all trailing zeroes in their text representation.
- Updated Rust dependencies. This includes an update to
arrow-odbc
(the Rust crate) which features a more robust parsing of decimals. Decimals now work even if they are rendered with a comma,
as a radix character instead of a decimal point (.
).
- Better comments for
max_text_size
- Change default `max_bytes_per_batch`` from 2MiB to 256MiB.
- Allow overwriting automatically deduced arrow schemas through optional schema arguments.
- Updated Rust dependencies. This includes an update to
arrow-odbc
(the Rust crate) which fixes a panic occuring if the database returns column names in non UTF-8 encodings on non-windows platforms. This version will raise an exception instead.
- Updated Rust dependencies.
- In order to work with mandatory columns workaround for IBM DB2 returning memory garbage now no longer maps empty strings to zero.
- Updated Rust dependencies. Use terminating zeros instead of indicators to determine string length, if the database management system name is reported to be 'DB2/LINUX'. This is to work around a bug in the IBM ODBC driver which returns garbage memory as indicators.
- Updated Rust dependencies. Including an update to
arrow-odbc
(the Rust crate) which fixes an issue which would cause a panic if extracting JSON from a MySQL database.
- Updated Rust dependencies. Including an update to
arrow-odbc
(the Rust crate) which fixes an issue which would cause a division by zero if iterating usingmore_results
over several SQL statements, there one of them would not be a "true" cursor, i.e. not emitting a result set, or having an empty schema.
- Transit buffers are now limited to 2GiB by default. You can use the
max_bytes_per_batch
parameter to adjust or deactivate that limit. read_arrow_batches_from_odbc
has the order of its arguments changed, sobatch_size
can have a default argument.fallibale_allocations
now defaults toFalse
, as due to the size limits, it would rarerly trigger and it can have huge potential performance implications.
- Updated rust dependencies
- Error message indicating that an update of unixODBC could help if failing to create an environment.
- Then failing to create an environment
arrow-odbc
is no longer going to panic and emit an exception instead.
- Add method
fetch_concurrently
toBatchReader
allowing for fetching batches concurrently from the ODBC data source at the price of an additional transit buffer.
- Debug logging around the inspection of relational types using the ODBC driver.
- Update Rust dependencies. Including an update to
odbc-api 2.0.0
, which provides more details on truncation errors.
- Update Rust dependencies. Including an update to
odbc-api 1.0.1
, which contains a fix preventing false positive truncation errors in the presence ofNULL
values and ODBC diagnostics. This bugfix fixes the error in variadic text fields theras the previous one only fixed the issue for variadic binary fields.
- Update Rust dependencies. Including an update to
odbc-api 1.0.1
, which contains a fix preventing false positive truncation errors in the presence ofNULL
values and ODBC diagnostics.
- Update Rust dependencies
- Better error message if passing a non-string argument using
parameters
intoread_arrow_batches_from_odbc
.
- Update Rust dependencies. Includes update to arrow-odbc 0.28.12, which does not add a semicolon at the end of INSERT statements any more in an effort to increase compatbility with IBM db2.
- Update Rust dependencies. Includes update to arrow-odbc 0.28.11 which raises an error in case timestamp with nano seconds precision are outside of the valid range.
- Update Rust dependencies. Includes update to arrow-odbc 0.28.9 which forwards the original error message from the ODBC driver in situtations there it has been previously hidden by error translation.
- Introduce
enable_odbc_connection_pooling
to allow for reducing overhead then creating "new" connections.
- Update Rust dependencies
- Declare minimal version in pyproject.toml
- Fix version number in documentation.
- Update Rust dependencies
- Adds
log_to_stderr
for emitting diagnostics directly to standard output.
- More code examples in Docstrings
- Breaking change:
read_arrow_batches_from_odbc
now also returns a batch reader instead ofNone
, even if the SQL statement did not produce a result set. The resulting reader will be empty, i.e. iterating over batches stops immediatly. The assaciated schema attribute will contain no columns. - Support for querying stored procedures returning multiple result sets is added. Call
more_results
on the reader to advance to the next result set.
- Update Rust dependencies
- Add
from_table_to_db
to better support insertion directly from an arrow header rather than a record batch reader.
- Support for inserting large binary strings
- Fix: If an error occurrs during inintalizing the writer it is now correctly translated into a python exception interrupting the control flow befor accessing an invalid writer object. Before this fix an error would have caused an invalid memory access violation.
- Fix manylinux wheel build
- Support for explicit login timeout in seconds via the
login_timeout_sec
parameter in bothread_arrow_batches_from_odbc
andinsert_into_table
. - Updated Rust dependencies
- Updated Rust dependencies
- This includes an update to
odbc-api 0.54.0
. This avoids escalating into an error if a query emits at least 32767 warnings.
- This includes an update to
- Fix: Be resilient against ineterior
Nul
s in error messages.
- Updated Rust dependencies
- Better error message in case the ODBC driver emits more than 32767 diagnostic records then fetching data.
- Rerelease due to failed build of windows wheel.
- Update Rust dependencies
- Update Rust dependencies
- Update Rust dependencies
- Update Rust dependencies
- Disabled arrow default features again for leaner build. They had been enabled to workaround an upstream bug, there the
ffi
feature has not been self reliant. This update uses a smaller workaround and only enables theipc
feature in addition toffi
.
- Update Rust dependencies
- Use narrow strings on non-windows platforms. Assumes Sytem locale with UTF-8.
- Docs are now available on http://arrow-odbc.readthedocs.org
BatchWriter
is now "public" in top level scope.- Test release pipeline using
maturin
instead ofsetuptools
withmilksnake
. - Fix: Non-linux wheels are no longer tagged to support Python 2
- Update Rust dependencies
- Update Rust dependencies
- Support for inserting
Decimal256
- Updated Rust dependencies
- Support for inserting record batches into a database table
BatchReader
now exposesschema
as an attribute rather than a function.
- Updated Rust dependencies
- Updated Rust dependencies
- Add paramater
falliable_allocations
to give users the option to opt out of falliable allocations, and potential performance overhead.
- Support specifying an upper limit for text and binary columns. This allows to circumvent allocation and or zero sized column errors.
- Raise exception in case buffer allocation fails instead of panicing.
- Updated Rust dependencies
- Updated Rust dependencies
- Updated Rust dependencies
- Updated Rust dependencies
- Support for positional query parameters
- Updated dependencies
- Improved error messages.
Fix: There had been an issue, there the correct binary size for the longest possible text has been underestimated on Linux then querying a column with UTF-8 encoded characters.
- Fix: There had been an issue, there the correct binary size for the longest possible text has been underestimated on Linux then querying a column with UTF-16 encoded characters.
- Fix: There had been an issue, there the correct binary size for the longest possible text has been underestimated on Windown then querying a column with UTF-8 encoded characters.
- Allow specifying user and password seperatly from the connection string.
- Fix: Manylinux wheel are now build against a recent version of Unix ODBC and link against the
libodbc.so
provided by the system.
Fix: An upstream issue causing overflows for timestamp['us']
has been fixed.
- Fix:
BatchReader.__next__()
now returnspyarrow.RecordBatch
. Previous version returned aStructArray
. - Fix:
BatchReader.schema()
now returnpyarrow.Schema
instead ofpyarrow.Datatype
.
Replace maturin with milksnake
- Fix windows wheel
- Fixed a memory leak, than iterating over batches.
Test Release process for Wheels
Initial release