Releases: smyrgeorge/sqlx4k
1.7.2
Release Notes: Version 1.7.2
This release focuses on refactoring the SQLite module, particularly for Android, to improve code maintainability and streamline internal logic by leveraging the shared implementation of the QueryExecutor interface.
🛠 Refactorings & Improvements
- SQLite (Android) Optimization: Removed redundant overrides of
executeandfetchAllfromSQLite.ConnectionandSQLite.Transactionclasses. These methods now correctly rely on the base implementation provided by theQueryExecutorinterface. - SQLite Result Set Handling: Enhanced the conversion logic from Android's
CursortoResultSet. Improved handling ofNULLvalues and provided more robust type mapping for common SQLite field types (Integer, Float, String, Blob). - Code Cleanup: Removed unused imports and redundant internal functions in the
sqlx4k-sqlitemodule for better performance and clarity.
Full Changelog: 1.7.1...1.7.2
1.7.1
Release Notes: Version 1.7.1
Release Date: 2026-03-03
This release focuses on improving build maintainability and internal code clarity.
🛠 Build & Infrastructure
- Migrate Plugin Structure: Simplified build logic by transitioning from custom Kotlin classes to precompiled script plugins in
build-logic. This change improves maintainability and streamlines the Gradle configuration across the project modules.
♻️ Refactoring
- Codegen Improvement: Renamed
BUILT_IN_TYPEStoPRIMITIVE_TYPESin thesqlx4k-codegenmodule for better semantic clarity. Updated related comments and simplified the underlying logic.
Full Changelog: 1.7.0...1.7.1
1.7.0
Release Notes - Version 1.7.0
🚀 New Features
- Android Support: Introduced official Android platform support for
sqlx4k-sqlite, including integration with the native Android SQLite API. - Expanded iOS Support: Added
iosX64target support across the project, expanding the library's reach in the Apple ecosystem.
🛠 Improvements & Refactorings
- Multiplatform Conventions: Updated build-logic plugins to support new targets and streamline binary distribution for iOS and Android.
- Documentation: Comprehensive documentation updates for version 1.7.0.
📦 Dependency Updates
- KSP: Bumped from
2.3.5to2.3.6. - Kotlinx-io-core: Bumped from
0.8.2to0.9.0. - Spring Boot: Bumped from
4.0.2to4.0.3. - JetBrains Annotations: Bumped from
26.0.2-1to26.1.0.
Full Changelog: 1.6.0...1.7.0
1.6.0
Release Notes - Version 1.6.0
This release introduces significant improvements to connection pooling, enhanced native prepared statement support across all drivers, and more robust SQL parameter handling.
🚀 Features & Enhancements
- Enhanced Connection Pooling & Transactions:
- Improved semaphore handling to prevent race conditions during connection acquisition.
- Enhanced error safety and robustness when closing transactions.
- Native Prepared Statement Support:
- Added full native prepared statement support for SQLite, MySQL, and PostgreSQL.
- Expanded type handling within prepared statements, including support for
byteparameters andlongArrayexpansion.
- Typed Null Parameters:
- Introduced
TypedNullwrapper to allow specifying explicit type information for null parameters. - Added
bindNullmethods to theStatementAPI for both positional and named parameters.
- Introduced
- SQL Guards:
- Added an
EmptyCollectionguard to prevent and gracefully handle empty list bindings in SQL statements.
- Added an
- Refactored SQL Parsing:
- Improved SQL parsing logic by extracting it into a reusable
scanSqlutility, ensuring more robust parameter detection and extraction.
- Improved SQL parsing logic by extracting it into a reusable
- PostgreSQL Driver Optimizations:
- Streamlined initialization logic and improved type cast handling for named parameters.
- PGMQ Updates:
- Added
lastReadAtproperty toMessageto track read timestamps. - Switched
MessageRowMapperto use column names for better reliability.
- Added
🛠 Bug Fixes
- Removed unnecessary exception handling in
executemethods for MySQL and PostgreSQL drivers to allow for cleaner error propagation. - Fixed an issue where empty named parameters in PostgreSQL were incorrectly handled during type casting.
📦 Dependency Updates
- Kotlin: Updated to
2.3.10. - SQLite JDBC: Updated
org.xerial:sqlite-jdbcfrom3.51.1.0to3.51.2.0.
🧪 Testing
- Significant increase in cross-platform test coverage for prepared statements, custom type utilities, and collection expansions across all supported databases.
Full Changelog: 1.5.20...1.6.0
1.5.20
What's Changed
- Bump ksp from 2.3.4 to 2.3.5 by @dependabot[bot] in #97
- Bump gradle-wrapper from 9.3.0 to 9.3.1 by @dependabot[bot] in #96
Full Changelog: 1.5.19...1.5.20
1.5.19
Full Changelog: 1.5.18...1.5.19
1.5.18
Full Changelog: 1.5.17...1.5.18
1.5.17
Full Changelog: 1.5.16...1.5.17
1.5.16
Release Notes for Version 1.5.16
This release focuses on significant internal refactoring of the Foreign Function Interface (FFI) layer, simplifying the project structure by removing redundant header files and modularizing dialect-specific logic.
🚀 Key Improvements & Refactoring
- FFI Layer Simplification:
- Removed
sqlx4k.hand its associated.deffile in favor of a more streamlined native interop approach. - Simplified FFI logic within
MultiplatformLibConventionsto reduce build-logic complexity. - Modularized FFI logic across different database dialects (MySQL, PostgreSQL, SQLite).
- Removed
- Unified Native Callbacks:
- Implemented a unified
fncallback system across all supported dialects, improving consistency in how native results are handled. - Refactored dialect-specific implementations (
MySQL.kt,PostgreSQL.kt,SQLite.kt) to utilize the new modularized FFI structure.
- Implemented a unified
- Code Quality & Maintenance:
- Removed redundant imports and cleaned up unused native utility functions (
DriverNativeUtils.kt). - Added auto-generated stubs for key structs like
PtrandSqlx4kResultto ensure better type safety and interop stability.
- Removed redundant imports and cleaned up unused native utility functions (
🛠 Build & Infrastructure
- Updated
MultiplatformLibConventionsplugin to handle cinterop more dynamically based on the target platform and project name. - Refined
sqlx4k/build.gradle.ktsto align with the new plugin structure.
For a full list of changes from the previous version, please refer to the commit history.
Full Changelog: 1.5.15...1.5.16
1.5.15
Release Notes - Version 1.5.15
This release introduces significant new features, including batch operation support across multiple dialects, improved error handling with Result.fold, and architectural modularization for better maintainability.
🚀 New Features
- Batch Operations Support: Added
batchInsertandbatchUpdatemethods toCrudRepositoryandContextCrudRepository.- PostgreSQL: Full support for batch
INSERTandUPDATEwithRETURNINGclauses. - SQLite: Added
batchUpdatesupport using CTE-based implementations (WITH ... UPDATE ... RETURNING).
- PostgreSQL: Full support for batch
- Improved Error Handling: Replaced
mapwithfoldinRepositoryProcessorfor better result wrapping and consistent error handling across generated CRUD operations.
🛠 Refactoring & Modularization
- Dialect-Specific Modularization: Refactored platform-specific code and interop methods for MySQL, PostgreSQL, and SQLite.
- Standardized method prefixes (e.g.,
sqlx4k_mysql_,sqlx4k_postgresql_). - Updated package names to
sqlx4k.mysql,sqlx4k.postgresql, andsqlx4k.sqlite.
- Standardized method prefixes (e.g.,
- Optimization: Updated Rust
Cargo.tomlto optimize release profiles (opt-level = 3,codegen-units = 1) and enabled dynamic linking for dialect-specific builds to prevent symbol duplication. - Core Improvements:
- Refactored
AbstractStatementfor explicitnullhandling and optimized parameter map initialization. - Moved benchmark logic to
commonMainfor better cross-platform reusability. - Removed legacy
sqlx4k.hand updatedsqlx4k.defcompiler options.
- Refactored
📦 Dependency Updates
- Kotlinx Serialization: Bumped from
1.9.0to1.10.0. - Spring Boot: Bumped from
4.0.1to4.0.2. - Gradle Wrapper: Updated from
9.2.1to9.3.0.
📖 Documentation & Examples
- Updated
README.mdwith SQLite support details and batch operation examples. - Added
exampleBatchOperationsto the PostgreSQL example project. - Annotated
QueryExecutormethods with@Language("SQL")for better IDE support.
Full Changelog: 1.5.14...1.5.15