# Changelog
All notable changes will be documented in this file.
The format is loosely based on [Keep a Changelog][keepachangelog], and this
project adheres to [Semantic Versioning][semver].
## Unreleased
## v0.24.0
- changed: Updated `decimal` dependency requirement to `~> 3.0`
- changed: Updated `ecto_sql` dependency requirement to `~> 3.14`
- changed: Updated `ecto` dependency requirement to `~> 3.14`
- changed: Require elixir `~> 1.17`
## v0.23.0
- changed: Updated decimal requirements
## v0.22.0
- added: Ability to use `values/1` in ecto queries.
- changed: Updated locked dependencies.
## v0.21.0
- added: Ability to specify type extensions for custom sqlite types. See: [#167](https://github.com/elixir-sqlite/ecto_sqlite3/pull/167).
## v0.20.0
- added: Ecto [`identifier/1`](https://hexdocs.pm/ecto/Ecto.Query.API.html#identifier/1) support
- changed: Bump (and restrict) Ecto to `3.13.0`
## v0.19.0
- changed: Configurable encoding for `:map` and `:array`, allowing usage of SQLite's JSONB storage format.
## v0.18.1
- fixed: Support both `Jason` and `JSON`.
## v0.18.0
- changed: Drop Elixir `1.14` support. Elixir `1.18` was released and I am only supporting 3 minor versions back.
- fixed: Pass through unrecognized values for float, bool, and json decodes.
## v0.17.5
- fixed: Report correct error for value lists in joins.
## v0.17.4
- added: Documentation for `default_transaction_mode`.
- changed: Clarified some documentation.
## v0.17.3
- fixed: Handle placeholders for `insert_all` calls.
- changed: Added cell-wise placeholders for inserts.
## v0.17.2
- fixed: Handle datetime serialization format via `:datetime_type` config.
- fixed: Retain microsecond serialization.
## v0.17.1
- changed: Bump minimum ecto to `3.12`.
## v0.17.0
- added: Added an explicit `:integer` column type support. Under the hood it is stored the same regardless.
- fixed: Handle new style of distinct expressions introduce upstream in Ecto `3.12`.
- changed: Allow `insert_all` to no longer require a where clause.
- changed: Made some public functions now private.
- changed: Test against elixir 1.17 and OTP 27, 26, and 25.
## v0.16.0
- changed: Set minimum `exqlite` dependency to `0.22`.
## v0.15.1
- fixed: Encode nil blobs. This was previously unhandled.
## v0.15.0
- fixed: Support `nil` decoding for `:decimal`.
- changed: Dropped support for Elixir v1.13.
- changed: Added Elixir v1.16 to CI build.
- changed: Bump minimum `exqlite` to `~ 0.19`.
## v0.14.0
- added: Support for encoding nil values in `:utc_datetime`, `:utc_datetime_usec`, `:naive_datetime`, and `:naive_datetime_usec` column dates.
- added: Allow subquery values in `insert_all`.
## v0.13.0
- added: Support fragment splicing.
- added: Support parent_as with combination queries.
- changed: Don't need to consider `{:maybe, type}`` when loading or dumping.
- changed: Handle nil values in dumpers and loaders.
## v0.12.0
- changed: raise if an in memory database is opened with a pool_size != 1
- added: support `{:unsafe_fragment, ".."}` as a conflict target.
- changed: Dropped support for Elixir `1.12`.
- changed: Dropped support for OTP 23.
## v0.11.0
- added: Support for DDL transactions.
## v0.10.4
- fixed: Handle binary uuid casting when `binary_id` is specified.
## v0.10.3
- fixed: Handle unique constraint error formats.
- changed: Updated dependencies.
## v0.10.2
- added: Missing support for `Date` type.
## v0.10.1
- fixed: Ignore bad `init` file when using `dump_cmd/3`
## v0.10.0
- changed: Add support for Ecto `v3.10`
- changed: Bring SQLite closer to the Postgres adapter implementation
- changed: Enable `AUTOINCREMENT` for `serial` and `bigserial`.
- changed: **breaking** Add support for sqlite strict mode.
With sqlite strict mode support being added, the following field "types" were altered.
* `TEXT_DATETIME` => `TEXT`
* `TEXT_UUID` => `TEXT`: This is when `:binary_id_type` is `:string`
* `UUID` => `BLOB`: This is when `:binary_id_type` is `:binary`
This is a breaking change in the sense that rebuilding the schema from scratch will cause those columns to show up differently. Under the hood sqlite does not actually care.
We kept `TEXT_DATETIME` to satisfy the old Ecto2 implementation to keep backwards compatibility.
- changed: **breaking** Raise when table prefixes are used.
## v0.9.1
- changed: Use `Connection.connect` instead of `Sqlite3.open`.
## v0.9.0
- fixed: Added `dump_cmd/3`
- fixed: Added `query_many/4`
## v0.8.2
- fixed: `exists()` expression building.
## v0.8.1
- changed: Allow `FROM` hints to be used.
## v0.8.0
- changed: Set minimum elixir version to `~> 1.11`
- added: Allow index hints on joins.
- added: Allow datetime type to be configurable.
## v0.7.7
- fixed: issue with missing space in `EXPLAIN QUERY PLAN`.
## v0.7.6
- changed: explain query to `EXPLAIN QUERY PLAN`.
## v0.7.5
- fixed: generate `binary_id` values according to the `binary_id_type` config.
## v0.7.4
- fixed: double encoding of a string when converting to json.
## v0.7.3
- added: information to the help docs about utilizing `exqlite` with database encryption.
- changed: raise more meaningful error when an expression fails to match. Backported from [ecto_sql#362](https://github.com/elixir-ecto/ecto_sql/commit/93038c2cac16706b642121a5839d1068d5b45212).
## v0.7.2
- added: `:time` decode support.
## v0.7.1
- fixed: Backport of default drops to `:restrict` are now backwards compatible with older versions of `ecto_sql`. We don't really have support for `drop index ... cascade` as it is not in the grammar of sqlite.
## v0.7.0
- changed: update dependencies to the latest.
- changed: drop support for OTP 20. It is not supported by `telemetry` and won't compile. For now we will just support Elixir 1.8 and OTP 21.
## v0.6.1
- changed: UUID encoding for both `:binary_id` and `:uuid`/`Ecto.UUID` is now configurable
- changed: `:uuid`/`Ecto.UUID` is now encoded as a string by default
## v0.6.0
- changed: `:utc_datetime` handling has been updated to completely remove the `Z` supplied and made to conform closer to what is done for Postgrex and MyXQL. [#49](https://github.com/elixir-sqlite/ecto_sqlite3/pull/49)
- changed: updated error message for OTP24
## v0.5.7
- changed: prepared statements can now be released manually.
- changed: added ability to specify `:asc_nulls_last`, `:asc_nulls_first`, `:desc_nulls_last`, and `:desc_nulls_first`.
## v0.5.6
- fixed: double quote missing from sql query generation.
## v0.5.5
- added: `:check` constraint column option.
- fixed: "database is locked" issue by setting `journal_mode` at `storage_up` time.
## v0.5.4
- changed: upgrade `ecto_sql` dependency to `3.6.0``
- changed: removed old `Ecto.Adapters.SQLite3.Connection.insert/6` was replaced with `Ecto.Adapters.SQLite3.Connection.insert/7`.
## v0.5.3
- added: `collate:` opts support to `:string` column type
## v0.5.1
- changed: updated exqlite to `0.5.0`
- changed: updated documentation
- changed: updated git repository url
## v0.5.0
- initial release.
[keepachangelog]:
[semver]: