The DuckDB driver is a driver for DuckDB. It is based on DuckDB 1.1.3, so should be compatible to all versions of DuckDB 1.x.x starting with version 1.1.3. Any DuckDB with a version number 2.0.0 or higher might be incompatible.
While implementing the first version of the driver, I intentionally left out some things that should be taken care of later on:
* currently it is not possible to use the configuration options for DuckDB because we don't support creating an configuration object that has to be used with duckdb_open_ext
* transaction support is not implemented - StartTransaction, Commit and RollBack will raise errors. Also Setting AutoCommit to false will raise an error.
* changing the schema search order is not implemented. Setting the catalog property to anything but an empty sting or main
will result in an Exception.
* Currency, BCD and FMTBCD are converted to double before binding them to a prepared statement
* The current statement derives from TZAbstractBeginnerPreparedStatement
. While this speeds up development, it has some shortcomings. Deriving from TZRawPreparedStatement
will be better but lead to more work.
* Currently the Statement always unprepares queries before preparing them again because we don't know if the SQL has changed. Finding a way around this might yield in better performance.
* the metadata object implementation for DuckDB is incomplete. Currently only the reading of catalogs, tables and table columns are implemented.
* No change of the Transaction isolation level is implemented. It is unclear, which level(s) DuckDB implements and how to change them.
* Setting "UseMetadata" has no effect currently. But getting metadata is not implemented (yet) anyway.
* getting metadata is not implemented (yet) - it can only be done after the finalization of a first result set.
* The first go at a result uses the Safe Fetch Functions. While they are deprecated and slow, they are easy to use and yield in a shorter development time. Writing a result set based on duckdb_result_get_chunk should give a better performance. Also using duckdb_pending_prepared might give better performance with large result sets.