odbc_fast 0.3.0
odbc_fast: ^0.3.0 copied to clipboard
Enterprise-grade ODBC data platform for Dart with a Rust native engine, streaming queries, pooling, and structured diagnostics.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.3.0 - 2026-01-29 #
Added #
- Configurable result buffer size:
ConnectionOptions.maxResultBufferBytes(optional). When set at connect time, caps the size of query result buffers for that connection; when null, the package default (16 MB) is used. Use for large result sets to avoid "Buffer too small" errors. ConstantdefaultMaxResultBufferBytesis exported for reference.
0.2.9 - 2026-01-29 #
Fixed #
- Async API "QueryError: No error": when executing queries with no parameters, the Dart FFI was passing
nullfor the params buffer toodbc_exec_query_params, which caused invalid argument and led to failures reported as "No error". The native bindings now always pass a valid buffer (e.g.Uint8List(0)) instead ofnull, so both sync and async (worker) paths work correctly for parameterless queries.
0.2.8 - 2026-01-29 #
Added #
scripts/copy_odbc_dll.ps1: copiesodbc_engine.dllfrom package (pub cache) to project root and Flutter runner folders (Debug/Release) for consumers who need the DLL manually
Changed #
- Publish
hook/andscripts/in the package (removed from.pubignore): Native Assets hook runs for consumers so the DLL can be downloaded/cached automatically; scriptcopy_odbc_dll.ps1is available in the package - Minimum SDK constraint raised to
>=3.6.0(required by pub.dev when publishing packages with build hooks)
Fixed #
- Async API (worker isolate): empty result (DDL/DML, SELECT with no rows) is now returned as
Result.ok(QueryResult(columns: [], rows: [], rowCount: 0))instead ofResult.err(QueryError("No error", ...))(fixes "No error" when executing CREATE TABLE, INSERT, ALTER, etc.)
0.2.7 - 2026-01-29 #
Fixed #
- Native DLL cache now keyed by package version (
~/.cache/odbc_fast/<version>/) to avoid loading an older DLL when upgrading the package (fixes symbol lookup error 127 for new symbols e.g.odbc_savepoint_create)
0.2.6 - 2026-01-29 #
0.2.5 - 2026-01-29 #
Added #
- Database type detection in tests:
detectDatabaseType(),skipIfDatabase(),skipUnlessDatabase() - Test helpers for conditional execution by database (SQL Server, PostgreSQL, MySQL, Oracle)
test/helpers/README.mdwith usage and examples
Changed #
- Dart tests run sequentially (
--concurrency=1) to avoid resource contention (ServiceLocator, worker isolates) - Savepoint release test skipped on SQL Server (RELEASE SAVEPOINT not supported)
Fixed #
- Rust FFI E2E:
ffi_test_dsn()loads.envand checksENABLE_E2E_TESTS; invalid stream ID race in tests - Dart integration test timeouts when running in parallel
0.2.4 - 2026-01-27 #
0.2.3 - 2026-01-27 #
Changed #
- CI: run only unit tests that do not require real ODBC connection (domain, protocol, errors)
- CI: exclude stress, integration/e2e, and native-dependent tests from publish pipeline
0.2.1 - 2026-01-27 #
Fixed #
- Fixed Native Assets hook to read package version from correct pubspec.yaml
- Fixed test helper to properly handle empty environment variables
- Fixed GitHub Actions cache paths and key format
Changed #
- Improved CI workflow: now builds Rust library before running tests
- Split unit and integration tests in CI for better organization
- Enhanced GitHub Actions workflows with proper dependency installation
0.2.0 - 2026-01-27 #
Added #
- Savepoints (nested transaction markers)
- Automatic retry with exponential backoff for transient errors
- Connection timeouts (login/connection timeout configuration)
- Connection String Builder (fluent API)
- Backpressure control in streaming queries
Changed #
- Async API with worker isolate for non-blocking operations
- Comprehensive E2E Rust tests with coverage reporting
- Improved documentation and troubleshooting guides
Fixed #
- Various lint issues (very_good_analysis compliance)
- Code formatting and cleanup