connector_arrow 0.2.0

Load data from databases to Apache Arrow, the fastest way.
Documentation
# Connector Arrow

An database client for many databases, exposing an interface that produces Apache Arrow.

[Documentation](https://docs.rs/connector_arrow)

Inspired by [ConnectorX](https://github.com/sfu-db/connector-x), with focus on being a Rust library, instead of a Python library.

To be more specific, this crate:

- does not support multiple destinations, but only [arrow]https://crates.io/crates/arrow,
- does not include parallelism, but allows downstream creates to implement it themselves,
- does not include connection pooling, but allows downstream creates to implement it themselves,
- uses minimal dependencies (it even disables default features).

## API features

- [x] Querying that returns `Vec<RecordBatch>`
- [x] Record batch streaming
- [ ] Database introspection
- [ ] Query parameters
- [ ] Writing to the data store

## Sources

None of the sources are enabled by default, use `src_` features to enable them:

- [x] SQLite (`src_sqlite`, using [rusqlite]https://crates.io/crates/rusqlite)
- [x] DuckDB (`src_duckdb`)
- [x] PostgreSQL (`src_postgres`)
- [x] Redshift (through postgres protocol, untested)
- [ ] MySQL
- [ ] MariaDB (through mysql protocol)
- [ ] ClickHouse (through mysql protocol)
- [ ] SQL Server
- [ ] Azure SQL Database (through mssql protocol)
- [ ] Oracle
- [ ] Big Query

## Types

When converting non-arrow data sources (everything except DuckDB), only a subset of all possible arrows types is produced. Here is a list of what it is currently possible to produce:

- [ ] Null
- [x] Boolean
- [x] Int8
- [x] Int16
- [x] Int32
- [x] Int64
- [x] UInt8
- [x] UInt16
- [x] UInt32
- [x] UInt64
- [ ] Float16
- [x] Float32
- [x] Float64
- [ ] Timestamp
- [ ] Date32
- [ ] Date64
- [ ] Time32
- [ ] Time64
- [ ] Duration
- [ ] Interval
- [ ] Binary
- [ ] FixedSizeBinary
- [x] LargeBinary
- [ ] Utf8
- [x] LargeUtf8
- [ ] List
- [ ] FixedSizeList
- [ ] LargeList
- [ ] Struct
- [ ] Union
- [ ] Dictionary
- [ ] Decimal128
- [ ] Decimal256
- [ ] Map
- [ ] RunEndEncoded

This restriction mostly has to do with non-trivial mapping of Arrow type into Rust native types.