0.8.7 - R*Tree spatial indexing, CHECK constraints, better DEFAULT and type handling
Added
- CHECK Constraint Support - Column-level CHECK constraints in migrations
- R*Tree Spatial Indexing - Full support for SQLite R*Tree virtual tables with 1D-5D indexing, validation, and comprehensive test coverage
- ecto_sqlite3 Compatibility Test Suite - Comprehensive tests ensuring feature parity with ecto_sqlite3
- Type Encoding Improvements - Automatic JSON encoding for plain maps, DateTime/Decimal parameter encoding, improved type coercion
- Comprehensive Type Loader/Dumper Support - Full support for encoding/decoding temporal types (DateTime, NaiveDateTime, Date, Time), Decimal, and special nil values with proper ISO 8601 formatting
- Default Value Type Handling - Support for Decimal, DateTime, NaiveDateTime, Date, Time, and
:nullas default values in migrations with warning logging for unsupported types - Connection Recovery Testing - Test suite for connection failure scenarios and recovery patterns
- Query Encoding Improvements - Explicit test coverage for query parameter encoding with various data types and edge cases
Fixed
- DateTime Microsecond Type Loading - Fixed
:utc_datetime_usec,:naive_datetime_usec, and:time_usecloading from ISO 8601 strings with microsecond precision - Parameter Encoding - Automatic map-to-JSON conversion, DateTime/Decimal encoding for compatibility with Oban and other libraries
- Migration Robustness - Handle
:serial/:bigserialtypes, improved default value handling with warnings for unsupported types - JSON and RETURNING Clauses - Fixed JSON encoding in RETURNING queries and datetime function calls
- Test Isolation - Comprehensive database cleanup across all test suites, per-test table clearing, improved resource management
- DateTime Type Handling - Fixed datetime_decode to handle timezone-aware ISO 8601 strings and nil value encoding for date/time/bool types
- Decimal Type Handling - Updated assertions to accept both numeric and string representations of decimal values in database queries
- Datetime Roundtrip Preservation - Strengthened microsecond precision preservation in datetime round-trip tests
Changed
- Test Suite Consolidation - Streamlined and improved test organisation with better coverage of edge cases, error handling, and concurrent operations
- Documentation - Updated documentation with SQLite-specific query limitations, compatibility testing results, and guidance for type encoding edge cases
Full Changelog: 0.8.6...0.8.7