package caqti
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
- v1.6.0 - 2021-06-10
- v1.5.1 - 2021-04-18
- v1.5.0 - 2021-04-11
- v1.4.0 - 2021-03-11
- v1.3.0 - 2021-01-17
- v1.2.4 - 2020-06-07
- v1.2.3 - 2020-06-02
- v1.2.2 - 2019-12-19
- v1.2.1 - 2019-12-08
- v1.2.0 - 2019-10-02
- v1.1.0 - 2019-02-03
- v1.0.0 - 2018-08-26
- v0.11.0 - 2018-05-25
- v0.10.2 - 2018-04-05
- v0.10.1 - 2018-02-27
- v0.10.0 - 2018-02-14
- v0.9.0 - 2018-01-04
- v0.8.1 - 2017-12-06
- v0.8.0 - 2017-12-04
- v0.7.0 - 2017-11-03
- v0.6.1 - 2017-10-26
- v0.6.0 - 2017-06-05
- v0.5.3 - 2017-05-22
- v0.5.2 - 2017-02-25
- v0.5.1 - 2017-02-25 retracted
- v0.5.0 - 2017-02-25 retracted
Unified interface to relational database libraries
Install
dune-project
Dependency
Authors
Maintainers
Sources
caqti-v1.7.0.tbz
sha256=a363cfcc15f2a3ab9721d08789a65aaa1108d27f974a9b68425a889596e27fb8
sha512=982b9c65fde0405b5d33822ff2743d1c8a8c0611dcd6615dd0af5b32048262f7ddbcae8434193cfd2b7ee845f29c2821d869862b34086099fcffc912b51d61a2
doc/CHANGES.html
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.Ecase was added to support the two above cases. This is a breaking change, but hopefully does not break existing code. The exception (not countingmodule 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.Infixproviding 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_timeoutto connection modules, used to set query timeout. It is only supported for PostgreSQL and MariaDB. (#74) - Added
with_transactionfunction to connection modules. This is just fail-safed wrapper aroundstart,commit, androllback.
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.
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 atimestamp. While this change makestimestampmore usable again for storing UTC time stamps, I strongly recommend usingtimestamp with time zonesince it's interpretation is unambiguous. The API reference is now updated with details about how theptimeOCaml type is mapped for different database systems. - Drop specification of OCaml
stringas SQLtextfor PostgreSQL. This is due to issues with implicit conversions and function overloading when the desired type on the SQL side ischar,varchar, orjsonb. - Add
Caqti_type.redactto protect sensitive information from being logged. - Only log parameters if
$CAQTI_DEBUG_PARAMis set to "true". - When logging requests, show underlying values for custom types.
- Reject multi-row response in
find_optimplementation 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_connectcallback toconnect_pool. - Documentation fixes and improvements (Aaron L. Zeng, Anton Bachin, Petter A. Urkedal).
v1.3.0 - 2021-01-17
- Implement
affected_countfor sqlite backend (GPR#46 jakob). - Add method
exec_with_affected_counttoCaqti_connection_sig.S(GPR#45 jakob). - Add
?max_idle_sizeto pool creation functions. - Dropped dependency on
ppx_derivingdue 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
postgresis 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 futuredeclarations. - 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.exand renamedCaqti_type.extoCaqti_type.anyand related functions. - Removed other deprecated definitions.
- Moved
Caqti_system_sigintoCaqti_driverand 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
octetstype 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_optcompv0.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
-linkallflags to driver libraries to fix direct linking (#9). - Added convenience functions
collect_listandrev_collect_list(#8). - Renamed
templatetoqueryand related function, leaving deprecated aliases. - Added
ptime_spanfield 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
iotype constructor tofuture. - Fix pool size limit enforcement.
- Drop error on disconnect.
- Support substitutions in request convenience functions.
v0.8.1 - 2017-12-06
- Fix
starttransaction for PostgreSQL v2. - Fix dependency on ptime in
caqti.opamin 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
callmethod which gives access to a result object before iterating over the returned rows. - Error handling is done with the
resulttype, 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-dynloadto keep using dynamic loading, or link with the neededcaqti-driver-*.v1driver libraries. - Link with
caqti.v1instead ofcaqti. - Link with
caqti-lwt.v1instead ofcaqti-lwt. - Link with
caqti-async.v1instead ofcaqti-async.
v0.7.0 - 2017-11-03
- Remove WRAPPER and REPORT functionality.
- Remove deprecated findlib aliases.
- Renamed
dateandutcconversions todate_clandutc_cl. - Deprecate
Caqti_metadatain favour of the newCaqti_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.otherandTuple.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) intoCaqti_errorsandCaqti_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.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
- v1.6.0 - 2021-06-10
- v1.5.1 - 2021-04-18
- v1.5.0 - 2021-04-11
- v1.4.0 - 2021-03-11
- v1.3.0 - 2021-01-17
- v1.2.4 - 2020-06-07
- v1.2.3 - 2020-06-02
- v1.2.2 - 2019-12-19
- v1.2.1 - 2019-12-08
- v1.2.0 - 2019-10-02
- v1.1.0 - 2019-02-03
- v1.0.0 - 2018-08-26
- v0.11.0 - 2018-05-25
- v0.10.2 - 2018-04-05
- v0.10.1 - 2018-02-27
- v0.10.0 - 2018-02-14
- v0.9.0 - 2018-01-04
- v0.8.1 - 2017-12-06
- v0.8.0 - 2017-12-04
- v0.7.0 - 2017-11-03
- v0.6.1 - 2017-10-26
- v0.6.0 - 2017-06-05
- v0.5.3 - 2017-05-22
- v0.5.2 - 2017-02-25
- v0.5.1 - 2017-02-25 retracted
- v0.5.0 - 2017-02-25 retracted