632 lines
24 KiB
Markdown
632 lines
24 KiB
Markdown
|
|
## v2.2.4 - 2025-03-28
|
||
|
|
|
||
|
|
- Remove Stdlib qualification from caqti.blocking to restore compatibility
|
||
|
|
with OCaml 4.
|
||
|
|
|
||
|
|
## v2.2.3 - 2025-03-28
|
||
|
|
|
||
|
|
- Make the pool implementation shared-memory safe.
|
||
|
|
|
||
|
|
## v2.2.2 - 2025-03-25
|
||
|
|
|
||
|
|
- Fix one test and comment out a failing assertion in another test, the
|
||
|
|
latter awaiting solution to #126.
|
||
|
|
|
||
|
|
## v2.2.1 - 2025-03-21
|
||
|
|
|
||
|
|
A few minor fixes discovered while making the 2.2.0 release:
|
||
|
|
|
||
|
|
- Restored compatibility with OCaml before 5.1 in a test code.
|
||
|
|
- Make it clear in the documentation that caqti.template is a preview.
|
||
|
|
- Fixed version constraint for lru.
|
||
|
|
|
||
|
|
## v2.2.0 - 2025-03-20
|
||
|
|
|
||
|
|
Improvements:
|
||
|
|
|
||
|
|
- The sqlite3 driver now supports the refined error causes
|
||
|
|
(`Caqti_error.cause`) for integrity constraint violations.
|
||
|
|
- There is now experimental support for Miou (#117 by Calascibetta
|
||
|
|
Romain).
|
||
|
|
- The new library `caqti.template` provides a preview of a interface for
|
||
|
|
creating and working with request templates, with a few new features
|
||
|
|
and, I think, a tidier design. This is not yet suitable for production
|
||
|
|
code, since it will change before the final version. Feedback is
|
||
|
|
welcome.
|
||
|
|
|
||
|
|
Fixes:
|
||
|
|
|
||
|
|
- Fixed a memory leak in the fall-back implementation of the `populate`
|
||
|
|
connection method which affects all except the postgresql drivers.
|
||
|
|
|
||
|
|
Deprecations:
|
||
|
|
|
||
|
|
- `Caqti_request.query_id` is deprecated and will be removed.
|
||
|
|
- Constructors of `Caqti_type.t` are now fully private and will be moved
|
||
|
|
away and likely defined differently in the next major release.
|
||
|
|
|
||
|
|
Dependency updates:
|
||
|
|
|
||
|
|
- Prepare for upcoming mirage (#124 by Hannes Mehnert).
|
||
|
|
|
||
|
|
The following packages are updated in this release: caqti, caqti-lwt,
|
||
|
|
caqti-miou, caqti-mirage, and all drivers.
|
||
|
|
|
||
|
|
## v2.1.2 - 2024-09-04
|
||
|
|
|
||
|
|
Fixes:
|
||
|
|
|
||
|
|
- Improve error reporting when failing to load a driver (#115).
|
||
|
|
- Fix validation of dead connection in postgresql driver (#119 by Sam
|
||
|
|
Tombury).
|
||
|
|
- Tolerate exceptions from pool resource allocators (#116 reported by Ryan
|
||
|
|
Moore).
|
||
|
|
- Fix install script for the caqti.opam package to work with caqti.plugin.
|
||
|
|
- Fix the announced license exception in the caqti-driver-pgx package.
|
||
|
|
|
||
|
|
Dependency updates:
|
||
|
|
|
||
|
|
- Update to `tls` >= 1.0.0 for caqti-mirage (#120 by Hannes Mehnert).
|
||
|
|
- Update tls-eio to >= 0.17.4 for caqti-tls-eio (to eliminate a hack).
|
||
|
|
- Update `async_kernel` to >= v0.17.0 and `tcpip` to >= 8.1.0 (due to
|
||
|
|
resolving deprecations for future compatibility).
|
||
|
|
|
||
|
|
## v2.1.1 - 2024-02-19
|
||
|
|
|
||
|
|
This minor update fixes running of the test suite and packaging issues.
|
||
|
|
|
||
|
|
## v2.1.0 - 2024-02-19
|
||
|
|
|
||
|
|
This release has been replaced by 2.1.1.
|
||
|
|
|
||
|
|
- There is now TLS support for PGX. The networking code (for PGX) was
|
||
|
|
revised in the process, in particular the EIO variant is now buffered,
|
||
|
|
which improves performance. TLS implementations are shipped as separate
|
||
|
|
packages (`caqti-tls*`) but `caqti-tls-async`, `caqti-tls-eio`, and
|
||
|
|
`caqti-tls-lwt` should be considered experimental and will be omitted
|
||
|
|
from the OPAM release for now. On the other hand, `caqti-mirage` now
|
||
|
|
ships with built-in TLS support for PGX.
|
||
|
|
|
||
|
|
- Connect functions now accept an optional configuration. For the time
|
||
|
|
being, this is used for TLS parameters and for the optional
|
||
|
|
`tweaks_version` argument, which is still available for backwards
|
||
|
|
compatibility.
|
||
|
|
|
||
|
|
- The newly introduced `Caqti_query.qprintf` and associated formatters
|
||
|
|
have been moved to a separate module `Caqti_query_fmt` (#108), to limit
|
||
|
|
clashes when used in local open, and since the formatters were nominally
|
||
|
|
underqualified.
|
||
|
|
|
||
|
|
- Constants of any field type can now be embedded in queries using the new
|
||
|
|
`Caqti_query.V` constructor and associated shortcuts. This allows
|
||
|
|
taking advantage of driver-specific encoders, e.g. to correctly convert
|
||
|
|
a `Ptime.Span.t` to the representation expected by the target database
|
||
|
|
system.
|
||
|
|
|
||
|
|
- Equality with type unification evidence is now available for
|
||
|
|
`Caqti_type.t` and `Caqti_type.Field.t`. The equality type introduced
|
||
|
|
for the purpose is compatible with `Type.eq` from OCaml 5.1, but will
|
||
|
|
not be aliased yet. This required a backwards incompatible adjustment
|
||
|
|
of the `Caqti_type.Product` constructor.
|
||
|
|
|
||
|
|
- Added tuples type constructors with arity up to 12.
|
||
|
|
|
||
|
|
- Added multi-statement parser (`Caqti_query.angstrom_list_parser`)
|
||
|
|
intended for loading SQL schema files.
|
||
|
|
|
||
|
|
- The new `caqti.plugin` sublibrary is a drop-in replacement for the
|
||
|
|
`caqti-dynload` package. It is based on the `dune-site.plugin` library.
|
||
|
|
Please try it and report back if there are issues.
|
||
|
|
|
||
|
|
- Some updates to external dependencies, esp. we are now at EIO 0.12+.
|
||
|
|
|
||
|
|
- Fixed lacking details in error messages related to driver load failures.
|
||
|
|
|
||
|
|
- Fixed uncaught exceptions for PGX (#113).
|
||
|
|
|
||
|
|
## v2.0.1 - 2023-08-14
|
||
|
|
|
||
|
|
Fixes:
|
||
|
|
|
||
|
|
- Upgrade Eio to 0.11.
|
||
|
|
- Update README and make a note about caqti-eio and caqti-mirage being
|
||
|
|
experimental.
|
||
|
|
- Fix build and packaging issues.
|
||
|
|
|
||
|
|
This release was sponsored by the OCaml Software Foundation.
|
||
|
|
|
||
|
|
## v2.0.0 - 2023-08-10
|
||
|
|
|
||
|
|
New features:
|
||
|
|
|
||
|
|
- Added driver based on the pure-OCaml PGX library (#38). However, due to
|
||
|
|
lack of TLS support it is not suitable for production, unless you have a
|
||
|
|
dedicated secure network.
|
||
|
|
|
||
|
|
- Added support for MirageOS. This only works for the PGX driver, since
|
||
|
|
the other drivers link against external C libraries.
|
||
|
|
|
||
|
|
- Added experimental support for Eio, both pure-OCaml and Unix. The
|
||
|
|
former supports PGX while the latter supports all drivers.
|
||
|
|
|
||
|
|
- Implemented single-row mode for PostgreSQL (#24), but while this avoids
|
||
|
|
uncontrolled memory consumption when a large number of rows is returned,
|
||
|
|
it is a lot less efficient.
|
||
|
|
|
||
|
|
- A new pool connection parameter `?max_idle_age` provides removal
|
||
|
|
resources from pools which have been unused for the given period.
|
||
|
|
|
||
|
|
- Printf-style function `Caqti_query.qprintf` for dynamic queries
|
||
|
|
(GPR#103, Basile Clément).
|
||
|
|
|
||
|
|
- Added general-purpose product type to provide functionality covering
|
||
|
|
both product and custom types.
|
||
|
|
|
||
|
|
- Added new tuple types `t3`, ..., `t8` based on the new product type and
|
||
|
|
deprecated `tup2`, `tup3`, `tup4` which are now aliases for these.
|
||
|
|
|
||
|
|
Breaking changes:
|
||
|
|
|
||
|
|
- The minimal OCaml requirement is now 4.08.0.
|
||
|
|
|
||
|
|
- The connection functions previously found in `caqti-lwt` has been moved
|
||
|
|
into a sublibrary `caqti-lwt.unix` as part of the addition of
|
||
|
|
`caqti-mirage`, whereas shared functionality remains in `caqti-lwt`.
|
||
|
|
The LWT connection function is therefore now found in `Caqti_lwt_unix`.
|
||
|
|
|
||
|
|
- Removed all deprecated functionality and a few unintended or
|
||
|
|
undocumented definitions like the type `Caqti_blocking.future` and
|
||
|
|
`Caqti_driver_info.describe_has_typed_*`.
|
||
|
|
|
||
|
|
- Reworked the driver API to accommodate the addition of the PGX driver
|
||
|
|
and MirageOS and Eio support, and to avoid exposting internal interfaces
|
||
|
|
in the main library. These modules are now found in the sublibraries
|
||
|
|
`caqti.platform` and `caqti.platform.unix`, depending on their external
|
||
|
|
depnedencies. They are not meant for use by applications, though this
|
||
|
|
might not have fully clear previously.
|
||
|
|
|
||
|
|
- Removed constructors Custom, Unit, Tup2, Tup3, Tup4 from `Caqti_type.t`.
|
||
|
|
They were private but could in prinicle be matched against.
|
||
|
|
|
||
|
|
- The extensibility of `Caqti_type.Field.t` has been dropped along with
|
||
|
|
the associated functions for registering conversions. This means that
|
||
|
|
there are no custom field types any more, only custom row types. The
|
||
|
|
purpose of custom field types where to support non-standard types for
|
||
|
|
3rd party drivers; we should coordinate additions to the core type
|
||
|
|
instead if needed.
|
||
|
|
|
||
|
|
- According to the above point, the `caqti-type-calendar` is reimplemented
|
||
|
|
as a row type, which means the `Cdate` and `Ctime` constructors are
|
||
|
|
gone.
|
||
|
|
|
||
|
|
- There are adjustments for the pretty printer for types. (The context is
|
||
|
|
assumed to start at the lowest precedence, meaning parentheses around
|
||
|
|
lowest-precedence expressions are dropped. Also, `redacted` is shown
|
||
|
|
with suffix notation, allowing us to remove one precedence level.)
|
||
|
|
|
||
|
|
- Moved pool tuning parameters into a configuration object.
|
||
|
|
|
||
|
|
Fixes:
|
||
|
|
|
||
|
|
- Fixed a missing `Preemptive.detach` call for `to_stream` for Sqlite3.
|
||
|
|
|
||
|
|
- Incorrect error reporting related to type conversions were discovered by
|
||
|
|
exhaustiveness checks when making field types non-extensible.
|
||
|
|
|
||
|
|
Other:
|
||
|
|
|
||
|
|
- The documentation of `call` now makes clear that the result *must* be
|
||
|
|
retrieved in order to make sure the request is performed. This is made
|
||
|
|
relevant by the addition of the PGX driver where request and retrieval
|
||
|
|
are fused.
|
||
|
|
|
||
|
|
- Customized the top-level index and some other documentation work.
|
||
|
|
Removal of private modules from the main library should also help to
|
||
|
|
make the documentation more accessible.
|
||
|
|
|
||
|
|
- Added a benchmark to measure row decoding performance.
|
||
|
|
|
||
|
|
- Improved decoding performance by partially applying the type descriptor.
|
||
|
|
|
||
|
|
This release was sponsored by the OCaml Software Foundation.
|
||
|
|
|
||
|
|
## v1.9.1 - 2022-09-21
|
||
|
|
|
||
|
|
This release only updates the caqti-driver-postgresql package, with the
|
||
|
|
following fixes:
|
||
|
|
|
||
|
|
- PostgreSQL expects "=" in query values to be URI-encoded (#95).
|
||
|
|
|
||
|
|
- The validation logic for PostgreSQL was missing a call to consume
|
||
|
|
available input, meaning that broken pooled connections were reused.
|
||
|
|
|
||
|
|
This release was sponsored by the OCaml Software Foundation.
|
||
|
|
|
||
|
|
## v1.9.0 - 2022-09-06
|
||
|
|
|
||
|
|
New features:
|
||
|
|
|
||
|
|
- Allow unquoted semicolons in query strings in the new API. There are
|
||
|
|
corner cases where it is needed, as reported in issue #87, and a parser
|
||
|
|
which rejects semicolons are still available for loading schema files
|
||
|
|
statement by statement.
|
||
|
|
|
||
|
|
- Add support for MySQL and MariaDB configuration files, as a solution to
|
||
|
|
issue #86.
|
||
|
|
|
||
|
|
- Add a limit to the number of times a database connection is reused when
|
||
|
|
pooling connections (#94). Thanks to Peter Mondlock for investigating
|
||
|
|
resource usage server side motivating this addition.
|
||
|
|
|
||
|
|
- Provide access to the raw SQLite3 connection handle for the purpose of
|
||
|
|
defining custom functions (#56).
|
||
|
|
|
||
|
|
Fixes:
|
||
|
|
|
||
|
|
- Add missing dune dependency on unix (GPR#85 by David Allsopp).
|
||
|
|
|
||
|
|
- Documentation fixes (GPR#82, GPR#83, GPR#84 by Reynir Björnsson,
|
||
|
|
GPR#88 by Jonathan Duarte, and GPR#92 by Jim Tittsler).
|
||
|
|
|
||
|
|
Deprecations:
|
||
|
|
|
||
|
|
- `Caqti_type.field` was deprecated in favour of `Caqti_type.Field.t`.
|
||
|
|
|
||
|
|
Other:
|
||
|
|
|
||
|
|
- Replace deprecated core\_kernel dependency with core.
|
||
|
|
|
||
|
|
This release was sponsored by the OCaml Software Foundation.
|
||
|
|
|
||
|
|
## v1.8.0 - 2022-03-24
|
||
|
|
|
||
|
|
New features:
|
||
|
|
|
||
|
|
- A matchable representation of common causes of errors on the database
|
||
|
|
side is now available, with limitations. It focuses on conditions which
|
||
|
|
seem most likely useful to handle. At the moment we lack extended error
|
||
|
|
codes from SQLite3 needed to make the cause fully precise.
|
||
|
|
|
||
|
|
- Expose the underlying error details from database client libraries.
|
||
|
|
This is meant to be use as a last resort, and requires directly linking
|
||
|
|
with the relevant drivers.
|
||
|
|
|
||
|
|
- A second set of request construction operators `->.`, `->?`, `->!`, and
|
||
|
|
`->*` were introduced after experience with converting existing code.
|
||
|
|
Given the parameter and result type they return a function which
|
||
|
|
constructs a request directly from a query string. Avoiding the need to
|
||
|
|
compose with `@:-` simplifies local opens and usage with `List.map` etc.
|
||
|
|
|
||
|
|
- Environment variables are now expanded in the debug log when using the
|
||
|
|
new request constructors introduced in 1.7.0.
|
||
|
|
|
||
|
|
- A new `?tweaks_version` connection parameter has been added to control
|
||
|
|
when the client is ready to adapt to changes in database session
|
||
|
|
parameters or other adjustments of the interaction with specific
|
||
|
|
database systems.
|
||
|
|
|
||
|
|
- Enable foreign key constraint checks for SQLite3 starting at tweaks
|
||
|
|
version 1.8.
|
||
|
|
|
||
|
|
Fixes:
|
||
|
|
|
||
|
|
- Fixed debug logging to pass the correct driver info to the query
|
||
|
|
callback instead of a dummy driver info which would cause a failure if
|
||
|
|
unsupported.
|
||
|
|
|
||
|
|
Deprecations:
|
||
|
|
|
||
|
|
- The `-->` operator was renamed to `-->!`, with a deprecated alias, for
|
||
|
|
consistency with the new `->!` operator.
|
||
|
|
|
||
|
|
- The old convenience interface for creating requests has been deprecated
|
||
|
|
in favour of the new infix operators and the new query template parser.
|
||
|
|
|
||
|
|
- Documented-only deprecations of `Caqti_sql_io`, `Caqti_lwt_sql_io`, and
|
||
|
|
`Caqti_async_sql_io` have been annotated.
|
||
|
|
|
||
|
|
This release was sponsored by the OCaml Software Foundation.
|
||
|
|
|
||
|
|
## v1.7.0 - 2022-02-13
|
||
|
|
|
||
|
|
New features:
|
||
|
|
|
||
|
|
- Added a new query-string parser based on Angstrom. Its main advantage
|
||
|
|
is that it can be used stand-alone e.g. to load SQL schemas from files
|
||
|
|
split into individual statements which can be sent to the database.
|
||
|
|
|
||
|
|
- Support passing a query environment to the connect and pool construction
|
||
|
|
functions. This avoids using globals to modify the environment and
|
||
|
|
facilitates e.g. targeting different database schemas with different
|
||
|
|
connetions or connection pools.
|
||
|
|
|
||
|
|
- A new `Caqti_query.E` case was added to support the two above cases.
|
||
|
|
This is a breaking change, but hopefully does not break existing code.
|
||
|
|
The exception (not counting `module type of`) would be if the
|
||
|
|
constructors are aliased along with an alias of the type. On the other
|
||
|
|
hand, pattern matching should be compatible since the new constructor is
|
||
|
|
only emitted by newly introduced functions.
|
||
|
|
|
||
|
|
- Added a module `Caqti_request.Infix` providing a new high-level API for
|
||
|
|
constructing requests. It uses two-stage combinators, first to apply
|
||
|
|
type arguments then to apply the query string. Apart from allowing
|
||
|
|
nicer looking code, this solves the problem of switching to a the query
|
||
|
|
string parser while maintaining backwards compatibility.
|
||
|
|
|
||
|
|
- Added `set_statement_timeout` to connection modules, used to set query
|
||
|
|
timeout. It is only supported for PostgreSQL and MariaDB. (#74)
|
||
|
|
|
||
|
|
- Added `with_transaction` function to connection modules. This is just
|
||
|
|
fail-safed wrapper around `start`, `commit`, and `rollback`.
|
||
|
|
|
||
|
|
Fixes:
|
||
|
|
|
||
|
|
- Fixed delayed recovery of connection pools after loosing connections to
|
||
|
|
PostgreSQL. Due to a missing call to consume inputs, the pool validator
|
||
|
|
did not discover that a connection was lost before it was attempted
|
||
|
|
reused.
|
||
|
|
|
||
|
|
- Improved resilience against exceptions and monadic errors in callbacks
|
||
|
|
and fixed in-use checking.
|
||
|
|
|
||
|
|
- Changed Sqlite3 driver to use non-linear parameters and improve error
|
||
|
|
reporting when the wrong number of arguments are received (#77 & GPR#79
|
||
|
|
Reynir Björnsson).
|
||
|
|
|
||
|
|
Other changes:
|
||
|
|
|
||
|
|
- The Caqti license now uses the LGPL-3.0 Linking Exception instead of a
|
||
|
|
rephrasing of the OCaml LGPL Linking Exception which was written for
|
||
|
|
LGPL-2.1.
|
||
|
|
|
||
|
|
- Improved documentation, pretty-printing, logging, and exception details.
|
||
|
|
|
||
|
|
- The test suite has been switched to use Alcotest; not without some
|
||
|
|
struggle due to the use of test harness and argument-dependent test
|
||
|
|
suite, but the result seems like a clear improvement.
|
||
|
|
|
||
|
|
This release was sponsored by the OCaml Software Foundation.
|
||
|
|
|
||
|
|
## v1.6.0 - 2021-06-10
|
||
|
|
|
||
|
|
- Set the time zone of PostgreSQL connections to UTC to mitigate an
|
||
|
|
undesirable implicit conversion to the local time zone for `timestamp`.
|
||
|
|
This issue was exposed by the specification of field types introduced in
|
||
|
|
version 1.4.0. Earlier versions worked as expected, if only accidentally,
|
||
|
|
since the time zone is ignored when a string is converted to a
|
||
|
|
`timestamp`. While this change makes `timestamp` more usable again for
|
||
|
|
storing UTC time stamps, I strongly recommend using `timestamp with time
|
||
|
|
zone` since it's interpretation is unambiguous. The API reference is now
|
||
|
|
updated with details about how the `ptime` OCaml type is mapped for
|
||
|
|
different database systems.
|
||
|
|
- Drop specification of OCaml `string` as SQL `text` for PostgreSQL. This is
|
||
|
|
due to issues with implicit conversions and function overloading when the
|
||
|
|
desired type on the SQL side is `char`, `varchar`, or `jsonb`.
|
||
|
|
- Add `Caqti_type.redact` to protect sensitive information from being
|
||
|
|
logged.
|
||
|
|
- Only log parameters if `$CAQTI_DEBUG_PARAM` is set to "`true`".
|
||
|
|
- When logging requests, show underlying values for custom types.
|
||
|
|
- Reject multi-row response in `find_opt` implementation for sqlite3.
|
||
|
|
- Tolerate Lwt promise rejections in `Pool.use`.
|
||
|
|
|
||
|
|
## v1.5.1 - 2021-04-18
|
||
|
|
|
||
|
|
- Fix option recognition in PostgreSQL driver (GPR#67 mefyl).
|
||
|
|
- Fix option recognition in MariaDB driver and add test (Petter A. Urkedal).
|
||
|
|
|
||
|
|
## v1.5.0 - 2021-04-11
|
||
|
|
|
||
|
|
- Request the full UTF-8 character for the MariaDB connection.
|
||
|
|
- Support int16 and enum types for parameters and rows.
|
||
|
|
|
||
|
|
## v1.4.0 - 2021-03-11
|
||
|
|
|
||
|
|
- Fix infinite loop when deserializing an optional tuple (GPR#63 mefyl).
|
||
|
|
- Add `Caqti_connect_sig.S.with_connection` (GPR#61 Anton Bachin).
|
||
|
|
- Pass parameter types to PostgreSQL prepare and query functions. This
|
||
|
|
avoids the need to CAST parameters on the SQL side in some cases.
|
||
|
|
- Add `?post_connect` callback to `connect_pool`.
|
||
|
|
- Documentation fixes and improvements (Aaron L. Zeng, Anton Bachin, Petter
|
||
|
|
A. Urkedal).
|
||
|
|
|
||
|
|
## v1.3.0 - 2021-01-17
|
||
|
|
|
||
|
|
- Implement `affected_count` for sqlite backend (GPR#46 jakob).
|
||
|
|
- Add method `exec_with_affected_count` to `Caqti_connection_sig.S` (GPR#45
|
||
|
|
jakob).
|
||
|
|
- Add `?max_idle_size` to pool creation functions.
|
||
|
|
- Dropped dependency on `ppx_deriving` due to issue with static compilation
|
||
|
|
(GPR#50 Ulrik Strid).
|
||
|
|
- Pass through `$<var>$` in query strings and deprecate `$$`.
|
||
|
|
- Log statements to be executed at debug level.
|
||
|
|
- Add COPYING.OCAML and fix license expression in opam files.
|
||
|
|
- Misc improvements to tests and documentation (GPR#51 Philippe Wang, GPR#54
|
||
|
|
Reynir Björnsson, etc.).
|
||
|
|
|
||
|
|
## v1.2.4 - 2020-06-07
|
||
|
|
|
||
|
|
- Switch to TEXT format for PostgreSQL populate implementation.
|
||
|
|
|
||
|
|
## v1.2.3 - 2020-06-02
|
||
|
|
|
||
|
|
- Silence PostgreSQL notifications which were printed to stderr. They can
|
||
|
|
be re-enabled with a parameter on the connection URI (#33).
|
||
|
|
- Improve details in exceptions in two places.
|
||
|
|
- Fix info about connection caching for sqlite in README (#35, dgllghr).
|
||
|
|
|
||
|
|
## v1.2.2 - 2019-12-19
|
||
|
|
|
||
|
|
- Update for core v0.13 (GPR#31 Xavier Clerc).
|
||
|
|
|
||
|
|
## v1.2.1 - 2019-12-08
|
||
|
|
|
||
|
|
- Support TEXT literals in queries.
|
||
|
|
- Fix decoding of binary results for PostgreSQL (thanks to James Owen).
|
||
|
|
- Implement copy-mode for PostgreSQL (GPR#30 James Owen).
|
||
|
|
|
||
|
|
## v1.2.0 - 2019-10-02
|
||
|
|
|
||
|
|
- Add a signature for the populate function, and add basic implementations
|
||
|
|
for all drivers (GPR#28).
|
||
|
|
- Add stream for result extraction (GPR#22 Nathan Rebours).
|
||
|
|
- Use the postgres driver when `postgres` is specified as the URL scheme
|
||
|
|
(GPR#25 James Owen).
|
||
|
|
- Documentation improvements (GPR#20 Nathan Rebours, etc.).
|
||
|
|
- Reimplemented partly ineffective prepare-cache for PostgreSQL.
|
||
|
|
- Backwards incompatible changes to the driver API.
|
||
|
|
- Backwards incompatible changes to modules marked internal but exposed due
|
||
|
|
to being split across packages.
|
||
|
|
- Fix forward compatibility past OCaml 4.08 as announced by deprecations.
|
||
|
|
|
||
|
|
## v1.1.0 - 2019-02-03
|
||
|
|
|
||
|
|
- Add pretty printer for requests.
|
||
|
|
- Add variance to `'a future` declarations.
|
||
|
|
- Add blocking instance of API.
|
||
|
|
- Generalize `$.` to `$<var>.` in queries.
|
||
|
|
- Infer the expansion of `$(<var>.)` from `$(<var>)` if not provided.
|
||
|
|
- Fix connection recovery for PostgreSQL (issue #19, Dave Aitken).
|
||
|
|
- Fix some unhandled exceptions for PostgreSQL.
|
||
|
|
- Fix connection validation for MariaDB.
|
||
|
|
|
||
|
|
## v1.0.0 - 2018-08-26
|
||
|
|
|
||
|
|
- Added `Caqti_type.Std : Caqti_type_sig.Std`, containing type descriptors
|
||
|
|
needed for building requests, for easy inclusion in custom modules.
|
||
|
|
- Fix ptime to string conversion for PostgreSQL (monstasat).
|
||
|
|
- Support microsecond precision for MariaDB.
|
||
|
|
- Removed `Caqti_type.Field.ex` and renamed `Caqti_type.ex` to
|
||
|
|
`Caqti_type.any` and related functions.
|
||
|
|
- Removed other deprecated definitions.
|
||
|
|
- Moved `Caqti_system_sig` into `Caqti_driver` and split up the signature to
|
||
|
|
make room for future drivers on alternative platforms.
|
||
|
|
|
||
|
|
## v0.11.0 - 2018-05-25
|
||
|
|
|
||
|
|
Added and improved:
|
||
|
|
|
||
|
|
- Compliance with Lwt 4.0 contributed by Brendan Long.
|
||
|
|
- Switched to the logs library for logging.
|
||
|
|
- Strengthen detection of concurrent use of connection.
|
||
|
|
- Support microsecond precision for timestamps for PostgreSQL and
|
||
|
|
millisecond for Sqlite3.
|
||
|
|
- Use float for time spans in Sqlite3.
|
||
|
|
- Map the `octets` type to BLOBs for MariaDB and Sqlite3.
|
||
|
|
- Log recoverable errors for MariaDB and Sqlite3.
|
||
|
|
|
||
|
|
Removed:
|
||
|
|
|
||
|
|
- The v1 API is now removed.
|
||
|
|
|
||
|
|
Ecosystem:
|
||
|
|
|
||
|
|
- CI setup contributed by Brendan Long.
|
||
|
|
- Various documentation updates.
|
||
|
|
|
||
|
|
## v0.10.2 - 2018-04-05
|
||
|
|
|
||
|
|
- Fix incompatibility with `ppx_optcomp` v0.11.0 by dropping it, since the
|
||
|
|
conditionals where no longer needed.
|
||
|
|
- Restore test during opam build.
|
||
|
|
- The v1 API is now fully `[@@@deprecated]` and will be removed in the next
|
||
|
|
major release.
|
||
|
|
|
||
|
|
## v0.10.1 - 2018-02-27
|
||
|
|
|
||
|
|
- Fix a pool size counting bug when resource allocation fails. This can
|
||
|
|
cause deadlock due to pool exhaustion.
|
||
|
|
|
||
|
|
## v0.10.0 - 2018-02-14
|
||
|
|
|
||
|
|
- Added `-linkall` flags to driver libraries to fix direct linking (#9).
|
||
|
|
- Added convenience functions `collect_list` and `rev_collect_list` (#8).
|
||
|
|
- Renamed `template` to `query` and related function, leaving deprecated
|
||
|
|
aliases.
|
||
|
|
- Added `ptime_span` field type mapping to SQL intervals.
|
||
|
|
- Be more permissive about types of data returned from MariaDB when
|
||
|
|
expecting numerical results.
|
||
|
|
|
||
|
|
## v0.9.0 - 2018-01-04
|
||
|
|
|
||
|
|
- Move v1 into findlib sublibraries and announce deprecation.
|
||
|
|
- Port remaining tests to v2 and fix issues in MariaDB and Sqlite3 drivers.
|
||
|
|
- Don't include password component of URIs in error messages.
|
||
|
|
- Rename `io` type constructor to `future`.
|
||
|
|
- Fix pool size limit enforcement.
|
||
|
|
- Drop error on disconnect.
|
||
|
|
- Support substitutions in request convenience functions.
|
||
|
|
|
||
|
|
## v0.8.1 - 2017-12-06
|
||
|
|
|
||
|
|
- Fix `start` transaction for PostgreSQL v2.
|
||
|
|
- Fix dependency on ptime in `caqti.opam` in distribution.
|
||
|
|
|
||
|
|
## v0.8.0 - 2017-12-04
|
||
|
|
|
||
|
|
- Remove most deprecations.
|
||
|
|
- Add new v2 API.
|
||
|
|
- Move away most of the v1 API, but keep deprecated aliases for the client
|
||
|
|
API.
|
||
|
|
|
||
|
|
The main difference of the new API compared to the old is:
|
||
|
|
|
||
|
|
- It uses typed parameters and rows with an extensible variant for field
|
||
|
|
type and a custom definable compound type.
|
||
|
|
- The connection has a `call` method which gives access to a result object
|
||
|
|
before iterating over the returned rows.
|
||
|
|
- Error handling is done with the `result` type, using a collection of error
|
||
|
|
types formed as polymorphic variants of records.
|
||
|
|
|
||
|
|
*Notice:* This version is mostly backwards compatible. New code should use
|
||
|
|
v2, but v1 will be kept for now. To keep using the v1 in upcoming releases:
|
||
|
|
|
||
|
|
- Fix the new deprecations from this release.
|
||
|
|
- Link with `caqti-dynload` to keep using dynamic loading, or link with the
|
||
|
|
needed `caqti-driver-*.v1` driver libraries.
|
||
|
|
- Link with `caqti.v1` instead of `caqti`.
|
||
|
|
- Link with `caqti-lwt.v1` instead of `caqti-lwt`.
|
||
|
|
- Link with `caqti-async.v1` instead of `caqti-async`.
|
||
|
|
|
||
|
|
## v0.7.0 - 2017-11-03
|
||
|
|
|
||
|
|
- Remove WRAPPER and REPORT functionality.
|
||
|
|
- Remove deprecated findlib aliases.
|
||
|
|
- Renamed `date` and `utc` conversions to `date_cl` and `utc_cl`.
|
||
|
|
- Deprecate `Caqti_metadata` in favour of the new `Caqti_driver_info`.
|
||
|
|
- Move various signature to separate files, leaving deprecated aliases.
|
||
|
|
|
||
|
|
## v0.6.1 - 2017-10-26
|
||
|
|
|
||
|
|
- Fixed support for lwt >= 3, but keep supporting 2.7 as well for now.
|
||
|
|
- Fixed preparation of query after reconnect to PostgreSQL.
|
||
|
|
- Fixed support for ocaml 4.03.x.
|
||
|
|
- Added `Tuple.length`.
|
||
|
|
- Deprecated `Param.sub_types`.
|
||
|
|
- Deprecated `Param.other` and `Tuple.other`.
|
||
|
|
|
||
|
|
## v0.6.0 - 2017-06-05
|
||
|
|
|
||
|
|
- Split into separate packages to avoid depopts and rename findlib names
|
||
|
|
accordingly.
|
||
|
|
- Use findlib to load DB drivers, and use `-linkall`. This hopefully solves
|
||
|
|
loading issues.
|
||
|
|
|
||
|
|
## v0.5.3 - 2017-05-22
|
||
|
|
|
||
|
|
- Fix handling of spaces in Sqlite3 URIs and allow setting mode.
|
||
|
|
- Split `Caqti` (now deprecated) into `Caqti_errors` and `Caqti_connect`.
|
||
|
|
- Update to async 0.9.0.
|
||
|
|
|
||
|
|
## v0.5.2 - 2017-02-25
|
||
|
|
|
||
|
|
- Fix plugin loader to handle modernised `META`.
|
||
|
|
|
||
|
|
## v0.5.1 - 2017-02-25 retracted
|
||
|
|
|
||
|
|
- Rename libraries to match `META`.
|
||
|
|
|
||
|
|
## v0.5.0 - 2017-02-25 retracted
|
||
|
|
|
||
|
|
- Added MariaDB backend.
|
||
|
|
- Fixed VARCHAR for SQLite3 describe.
|