14.1.0 - 2025-01-01
- Support arrow 53
14.0.1 - 2024-12-09
- Inserting multiple small batches now works, even if the second batch triggers rebinding the buffer due to element size. Previously in this scenario not all values already inserted were correctly copied into the new buffer. This caused strings to be replaced with
null
bytes.
14.0.0 - 2024-11-25
-
You can now compile with using the wide (i.e. UTF-16) character set versions of ODBC functions calls on non-windows platforms by specifying the
wide
feature. Similarly you can now complie using the narrow character set on windows platforms by specifying thenarrow
feature. The default remainswide
on windows andnarrow
on non-windows targets. This required updating usingodbc-api 10.0.0
. The only thing thing changing however fromodbc-api
9 to 10 are the default compilation of feature flags, so your code should just continue working. -
[breaking] Update odbc-api
>= 9, < 10
->>= 10, < 11
13.0.2 - 2024-11-24
- Overflow in epoch to timestamp is fixed. It is now possible to insert 1600-06-18 23:12:44.123 into a database with ms precision
13.0.1 - 2024-11-20
- Timestamps with fractional seconds now work even if they are older than unix epoch.
- setup release-plz
- use uppercase for changelog
- Update thiserror requirement from 1.0.65 to 2.0.0
- Update odbc-api
>= 6, < 9
->>= 9, < 10
- Update arrow
>= 29, < 53
->>= 29, < 54
- Enabling trimming of fixed sized character data via
OdbcReaderBuilder::trim_fixed_sized_characters
.
- Enable mapping out of ranges dates to
NULL
. You can do so usingOdbcReaderBuilder::value_errors_as_null
. - Breaking:
arrow_schema_from
now takes an additional boolean parametermap_value_errors_to_null
.
- Update odbc-api
>= 6, < 8
->>= 6, < 9
- Update arrow
>= 29, < 52
->>= 29, < 53
- Unsigned Tinyint are now mapped to
UInt8
instead ofInt8
.
- Removed quirk
indicators_returned_from_bulk_fetch_are_memory_garbage
. Turns out the issue with IBM DB/2 drivers which triggered this can better be solved using a version of their ODBC driver which ends ino
and is compiled with a 64Bit size forSQLLEN
. - Remove
Quirks
.
- Then generating the insert statement on behalf of the user quote column names which are not valid transact SQL qualifiers using double quotes (
"
)
- Update odbc-api
>= 6, < 7
->>= 6, < 8
ConcurrentOdbcReader
is nowSend
.
- Update arrow
>= 29, < 51
->>= 29, < 52
- Replace
odbc_api::Quirks
witharrow_odbc::Quirks
.
- Update odbc-api
>= 5, < 6
->>= 6, < 7
- Update arrow
>= 29, < 50
->>= 29, < 51
- Update odbc-api
>= 4, < 5
->>= 5, < 6
- Decimal parsing is now more robust. It does no longer require the text representation to have all trailing zeroes explicit in order to figure out the correct scale of the decimal. E.g. for a decimal with scale 5 a text representation of
10
would have been interpreted as000.1
for scale five. Decimal parsing relied on databases making all trailing zeroes explicit e.g.10.00000
. Oracle however does not do this, so parsing has been adopted to be more robust.
- Fixes a bug introduced in 5.0.1, causing negative decimals not to be parsed correctly and to be returned as non-negative values.
- Decimal parsing logic is now more robust and also works if the decimal point is not an actual point but a
,
.
- Fixes a panic which occurred if database returned column names with invalid encodings.
- Introduces new
Error
variantEncodingInvalid
, which is returned in case a column name can not be interpreted as UTF-16 on windows platforms or UTF-8 on non-windows platforms. - Removes deprecated
WriteError::TimeZoneNotSupported
,OdbcConcurrentReader::new
,OdbcConcurrentReader::with_arrow_schema
,OdbcConcurrentReader::with
,OdbcReader::new
,OdbcReader::with_arrow_schema
,OdbcReader::with
.
- In order to work with mandatory columns workaround for IBM DB2 returning memory garbage now no longer maps empty strings to zero.
- Update odbc-api
>= 4, < 5
->>= 4.1, < 5
- Support for fetching text from IBM DB2. This has been difficult because of a bug in the IBM DB2 driver which causes it to return garbage memory instead of string lengths. A workaround can now be activated using
with_shims
onOdbcReaderBuilder
.
- Update odbc-api
>= 2.2, < 4
->>= 4, < 5
- An assumption has been removed, that unknown column types are always representable in ASCII. Now on Linux the system encoding is used which is assumed to be UTF-8 and on windows UTF-16. The same as for other text columns.
- MySQL seems to report negative display sizes for JSON columns (-4). This is normally used to indicate no upper bound in other parts of the ODBC standard. Arrow ODBC will now return a
ColumnFailure::ZeroSizedColumn
in these scenarios, if no buffer limit has been specified.
- Prevent division by zero errors when using
OdbcReaderBuilder::buffer_size_in_rows
on empty schemas.
- Update arrow
>= 29, < 49
->>= 29, < 50
- Introduce
OdbcReaderBuilder
as the prefered way to create instances ofOdbcReader
. - Allow for limiting ODBC buffer sizes using a memory limit expressed in bytes using
OdbcReaderBuilder::max_bytes_per_batch
. - Add new variant
Error::OdbcBufferTooSmall
.
- Log memory usage per row
- Update odbc-api
>= 2.2, < 3
->>= 2.2, < 4
- Update arrow
>= 29, < 48
->>= 29, < 49
- Update odbc-api
>= 0.56.1, < 3
->>= 2.2, < 3
- Add
ConcurrentOdbcReader
to allow fetching ODBC row groups concurrently.
- Additional debug messages emmitted to indicate relational types reported by ODBC
- Update odbc-api
>= 0.56.1, < 2
->>= 0.56.1, < 3
- Update arrow
>= 29, < 47
->>= 29, < 48
- Update odbc-api
>= 0.56.1, < 0.58.0
->>= 0.56.1, < 2
insert_statement_from_schema
will no longer end statements with a semicolon (;
) as to not confuse an IBM db2 driver into thinking that multiple statements are intended to be executed. Thanks to @rosscoleman for reporting the issue and spending a lot of effort reproducing the issue.
- Fix: Emit an error if nanoprecision timestamps are outside of valid range, rather than overflowing silently.
- Update arrow
>= 29, < 46
->>= 29, < 47
- Update arrow
>= 29, < 45
->>= 29, < 46
- Better error messages which contain the original error emitted by
odbc-api
even then printed using theDisplay
trait.
- Update arrow
>= 29, < 44
->>= 29, < 45
- Update arrow
>= 29, < 43
->>= 29, < 44
- Update arrow
>= 29, < 42
->>= 29, < 43
- Update arrow
>= 29, < 39
->>= 29, < 42
- Update arrow
>= 29, < 39
->>= 29, < 41
- Update arrow
>= 29, < 39
->>= 29, < 40
- Update arrow
>= 29, < 38
->>= 37, < 39
- Update odbc-api
>= 0.56.1, < 0.57.0
->>= 0.56.1, < 0.58.0
- Update arrow
>= 29, < 37
->>= 37, < 38
- Update odbc-api
>= 0.52.3, < 0.57.0
->>= 0.56.1, < 0.57.0
- Introduced
OdbcReader::into_cursor
in order to enable processing stored procedures returning multiple result sets.
- Update odbc-api
>= 0.52.3, < 0.56.0
->>= 0.52.3, < 0.57.0
- Support for
LargeUtf8
then inserting data.
- Update arrow
>= 29, < 36
->>= 29, < 37
- Fix code sample in Readme
- Update odbc-api
>= 0.52.3, < 0.55.0
->>= 0.52.3, < 0.56.0
- Fix crate version for release
- Update arrow
>= 29, < 34
->>= 29, < 36
- Update arrow
>= 29, < 33
->>= 29, < 34
- Update arrow
>= 29, < 31
->>= 29, < 33
- Depreacte
WriterError::TimeZonesNotSupported
in favor ofWriterError::UnsupportedArrowDataType
.
- Update arrow
>= 29, < 31
->>= 29, < 32
- Update odbc-api
>= 0.52.3, < 0.54.0
->>= 0.52.3, < 0.55.0
- Update arrow
>= 29, < 30
->>= 29, < 31
- Update arrow
>= 28, < 30
->>= 29, < 30
- Update odbc-api
>= 0.52.3, < 0.53.0
->>= 0.52.3, < 0.54.0
- Update arrow
>= 25, < 29
->>= 28, < 30
- Update arrow
>= 25, < 28
->>= 28, < 29
- Update odbc-api
>= 0.50.0, < 0.53.0
->>= 0.52.3, < 0.53.0
- Update arrow
>=25, < 27
->>= 25, < 28
- Update odbc-api
>= 0.50.0, < 0.52.0
->>= 0.50.0, < 0.53.0
- Update odbc-api
>= 0.50.0, < 0.51.0
->>= 0.50.0, < 0.52.0
- Update arrow
>= 25, < 26
->>=25, < 27
- Update odbc-api
>= 0.45.0, < 0.51.0
->>= 0.50.0, < 0.51.0
- Update arrow
>= 22, < 25
->>= 25, < 26
- Update odbc-api
>= 0.45.0, < 0.50.0
->>= 0.45.0, < 0.51.0
- Update arrow
>= 22, < 23
->>= 22, < 25
- Update arrow
>= 22, < 23
->>= 22, < 24
- Update arrow
>= 21, < 22
->>= 22, < 23
- Update odbc-api
>= 0.45.0, < 0.49.0
->>= 0.45.0, < 0.50.0
- Update arrow
>= 20, < 21
->>= 21, < 22
- Fix:
OdbcWriter::inserter
had only been public by accident.
- Use
narrow
text on non-windows platforms by default. Connection strings, queries and error messages are assumed to be UTF-8 and not transcoded to and from UTF-16.
- Update odbc-api
>= 0.45.0, < 0.48.0
->>= 0.45.0, < 0.49.0
- Update odbc-api
>= 0.45.0, < 0.46.0
->>= 0.45.0, < 0.48.0
- Update odbc-api
>= 0.45.0, < 0.46.0
->>= 0.45.0, < 0.47.0
- Update arrow
>= 19, < 20
->>= 20, < 21
- Support for inserting
Decimal256
.
- Update arrow
>= 7.0.0, < 19
->>= 19, < 20
- Update arrow
>= 7.0.0, < 18
->>= 7.0.0, < 19
- Update arrow
>= 7.0.0, < 17
->>= 7.0.0, < 18
- Update odbc-api
>= 0.44.3, < 0.45
->>= 0.45.0, < 0.46.0
- Allow for creating an
OdbcWriter
which takes ownership of the connection usingOdbcWriter::from_connection
.
- Support for inserting
RecordBatch
es into a database table.
- Update odbc-api
>= 0.40.2, < 0.45
->>= 0.44.3, < 0.45
unstable
: prototype for inserting arrow arrays into ODBC- Update arrow
>= 7.0.0, < 16
->>= 7.0.0, < 17
arrow_schema_from
now requires an exclusive reference (&mut
) toResultSetMetadata
.- Update odbc-api
>= 0.40.2, < 0.44
->>= 0.40.2, < 0.45
- Update odbc-api
>= 0.40.2, < 0.43
->>= 0.40.2, < 0.44
- Update arrow
>= 7.0.0, < 15
->>= 7.0.0, < 16
- Update odbc-api =
>= 0.40.2, < 0.42
->>= 0.40.2, < 0.43
- Update odbc-api
>= 0.40 < 0.41
->>= 0.40.2, < 0.42
- Update arrow
>= 7.0.0, < 14
->>= 7.0.0, < 15
panic
is now default behaviour on allocation errors. Activatefallibale_allocations
in theBufferAllocationOptions
in order to get a recoverable error instead.
- Update odbc-api
>= 0.39, < 0.40
->>= 0.40 < 0.41
- Update odbc-api
>= 0.38, < 0.39
->>= 0.39, < 0.40
- Support for fetching values from
VARCHAR(max)
andVARBINARY(max)
columns, through specifying upper limits usingBufferAllocationOptions
inOdbcReader::with
.
- Update odbc-api
>= 0.36, < 0.37
->>= 0.38, < 0.39
- Recoverable errors if allocation for binary or text columns fails.
- Update arrow
>= 7.0.0, < 10
->>= 7.0.0, < 13
- Update arrow
>= 7.0.0, < 10
->>= 7.0.0, < 12
- Update odbc-api
>= 0.33.0, < 0.36
->0.36 < 0.37
- Update arrow
>= 7.0.0, < 10
->>= 7.0.0, < 11
- Update odbc-api
>= 0.33.0, < 0.35
->>= 0.33.0, < 0.36
- Update arrow
>= 7.0.0, < 8
->>= 7.0.0, < 10
- Update odbc-api
>= 0.31.0, < 0.33
->>= 0.33.0, < 0.35
- Update arrow
>= 6.1.0, < 7
->>= 7.0.0, < 8
- Use Rust edition 2021
- Update arrow
>= 6.1.0, < 7
->>= 7.0.0, < 8
- Update odbc-api
>= 0.31.0, < 0.33
->>= 0.33.0, < 0.34
- Fix: Formatting of error message for
ZeroSizedColumn
.
Error::ColumnFailure
now prints also the errors cause.
InvalidDisplaySize
replaced withZeroSizedColumn
.- Refactored error handling, to have separate variant for column specific errors.
- Base allocations of text columns on column size instead of octet length.
- Fixed an issue there not enough memory to hold the maximum string size has been allocated, if querying a VARCHAR column on windows or an NVARCHAR column on a non-windows platform.
- Update arrow v6.0.0 ->
>= 6.1.0, < 7
- Update odbc-api v0.31.0 ->
>= 0.31.0, < 0.33
- Fix: There had been issue causing an overflow for timestamps with Microseconds precision.
- Update odbc-api v0.30.0 -> v0.31.0
- Update arrow v6.0.0 -> v6.1.0
- Update odbc-api v0.29.0 -> v0.30.0
- Introduced
arrow_schema_from
to support inferring arrow schemas without creating anOdbcReader
.
- Estimate memory usage of text columns more accuratly.
- Udpate arrow v5.4.0 -> v6.0.0
- Update arrow v5.4.0 -> v5.5.0
- Update odbc-api v0.28.0 -> v0.29.0
- Updated code examples to odbc-api use safe Environment construction introduced in
odbc-api
version 0.28.3
odbc-api
version 0.28.0arrow
version 5.4.0
- Support fixed sized binary types.
- Add Readme path to manifest
Initial release
Allows for fetching arrow batches from ODBC data sources
arrow
version 5.3.0odbc-api
version 0.27.3