2
0
mirror of https://github.com/boostorg/mysql.git synced 2026-01-27 19:12:10 +00:00
Commit Graph

525 Commits

Author SHA1 Message Date
Dirk Stolle
403ce603aa Fixed a few typos 2025-01-24 15:45:45 +01:00
Anarthal (Rubén Pérez)
25d8f7426e test_pos_map/reset_nonempty no longer triggers an assertion
Disabled warnings-as-errors for examples that use Boost.Context

close #403
2025-01-24 15:44:16 +01:00
Anarthal (Rubén Pérez)
1c67537290 connection_pool now resizes correctly in the presence of pending connections
Changed the algorithm that calculates how many connections to create to
correctly take into account the number of pending requests.
This makes the pool resize as expected and avoids potential deadlocks.

close #395
2025-01-06 17:14:32 +01:00
Anarthal (Rubén Pérez)
94e3d4c282 Removed the -fcf-protection gcc workaround
Required because of
https://github.com/boostorg/context/issues/263
2025-01-03 11:36:47 +01:00
Anarthal (Rubén Pérez)
c343cde1fb Improved discussion and examples
Added a tutorial on UPDATEs, transactions and multi-queries
Added a tutorial on connection_pool
Added a tutorial on error handling
Added examples on INSERTs and DELETEs
Rewrote the discussion page on character sets
Added a discussion page on the templated connection class
Removed superseded examples on timeouts and multi-queries
Updated the coverage build to gcc-14 (gcc-13 was using a non-LTS release
that caused problems)

Contributes to #365 and #366
2024-11-29 17:47:44 +01:00
Anarthal (Rubén Pérez)
ef9224c0ac Updated the coverage build to use gcc-14
Workarounds a problem with the build-gcc13 container, which uses a
non-LTS Ubuntu release and can't be installed packages
2024-11-29 11:03:21 +01:00
Anarthal (Rubén Pérez)
f6c119210d Boost 1.87: new discussion and examples (part 1)
Added tutorials 2, 3 and 4
Changed most of the discussion to use any_connection
Added examples on disabling TLS, multi-function operations, multi-queries and transactions
All examples now use any_connection
Automate parts of example qbk generation

Partially addresses #365 and #366
2024-11-05 00:12:27 +01:00
Anarthal (Rubén Pérez)
c57103bb75 Removed brittle checks in connection_pool_cancel test
These checks could cause false positive race conditions to be reported.
2024-11-04 13:13:36 +01:00
Anarthal (Rubén Pérez)
8b2727f840 with_diagnostics now passes through unknown signatures
This makes asio::as_tuple and asio::redirect_error usable as partial
completion tokens with any_connection and connection_pool.
Fixed a Jamfile issue that caused warnings in dependencies to fail CI builds.
Removed leftover comment in the pipeline example.
2024-11-02 20:10:22 +01:00
Anarthal (Rubén Pérez)
dafe04a38d Removed the Boost::coroutine dependency from cmake_test 2024-10-28 22:04:53 +01:00
Anarthal (Rubén Pérez)
eba723f5a7 connection_pool destructor now cancels async operations
Improved connection_pool docs on thread-safety.

close #370
2024-10-14 13:35:32 +02:00
Anarthal (Rubén Pérez)
6842c2d83d sequence now returns an owning type
Renamed format_sequence_view to format_sequence
format_sequence members are now part of the public API
Moved sequence to a separate header
Added sequence_range_t

close #359
2024-10-11 22:17:17 +02:00
Anarthal (Rubén Pérez)
bb568ba071 Documented connection_pool execution semantics
Refactored pool internals to remove wait_group
Added an external strand thread-safety test

close #361
2024-10-10 15:52:17 +02:00
Anarthal (Rubén Pérez)
b7b206189f connection unit tests now cover get_executor 2024-10-04 16:58:33 +02:00
Anarthal (Rubén Pérez)
146b555817 Replaced run_with_timeout by asio::cancel_after
close #351
2024-10-04 11:35:02 +02:00
Anarthal (Rubén Pérez)
268aa33a84 Connections now support immediate executors
Immediate completions in connection and any_connection are now correctly
    dispatched to the token's immediate executor using asio::async_immediate
    instead of plain asio::post.
Added a section on executors in the reference docs of async functions in
    connection and any_connection
Disabled TSAN connection_pool_cancel_get_connection for libc++ builds

close #301
2024-10-03 20:19:51 +02:00
Anarthal (Rubén Pérez)
7ef6ff8773 Removed pool executor params
Added pool_params::connection_executor

close #350
2024-10-03 06:28:43 +02:00
Anarthal (Rubén Pérez)
a4a40d8b90 async_get_connection now waits if the pool is not running
close #356
2024-09-30 21:38:30 +02:00
Anarthal (Rubén Pérez)
e39c978514 Removed the global io_context in tests
Now tests are independent of each other
Refactor common utilities for separate compilation
2024-09-28 19:36:43 +02:00
Anarthal (Rubén Pérez)
e72b4906af Removed connection_pool::async_get_connection timeout overloads
Please use asio::cancel_after, instead.
Replaced client_errc::timeout, client_errc::cancelled by
    client_errc::no_connection_available, client_errc::pool_cancelled
async_get_connection no longer uses the last connect error code as failure error code,
    but embeds this info in the output diagnostics

close #349
2024-09-26 08:30:52 +02:00
Anarthal (Rubén Pérez)
a84b774bef Per-operation cancellation for connection_pool
close #197
2024-09-21 21:10:31 +02:00
Anarthal (Rubén Pérez)
0f843cd963 Refactored connection_pool unit tests
Removed IoTraits
Removed mock_timer_service
Simplified connection_pool_impl unit tests
2024-09-16 17:32:41 +02:00
Anarthal (Rubén Pérez)
1f79e5ce3f connection_pool thread-safety is now more robust
Thread-safety is now achieved using pool_params::thread_safe.
Removed pool_executor_params::thread_safe
Unsafe pools now use the standard Asio semantics
Safe pools are now safe even if the handlers' associated executors point
    to a context different from the pool's context

close #268
2024-09-14 13:06:54 +02:00
Anarthal (Rubén Pérez)
20335ac99e Modular Boost CI fixes
Added a boost.mysql.valgrind b2 feature
Suppress warnings in dependencies

close #338
2024-09-05 17:00:38 +02:00
René Ferdinand Rivera Morell
69c457a3e7 Add support for modular build structure 2024-08-19 09:40:08 +02:00
Anarthal (Rubén Pérez)
00bc81260c Added LCOV_EXCL_LINE to unreachable lines
close #227
2024-08-13 10:49:38 +02:00
Anarthal (Rubén Pérez)
95a9aa1068 Added with_diagnostics completion token
Made with_diagnostics(deferred) the default token for any_connection and
connection_pool.
throw_on_error is now marked as legacy.

close #329 
close #296
2024-08-13 10:48:49 +02:00
Anarthal (Rubén Pérez)
36dc47693e Async ops now support cancel_after and similar tokens
All initiations have now an associated executor.

close #330
2024-08-08 18:46:34 +02:00
Anarthal (Rubén Pérez)
a20fc3e5ea Added with_params
close #218
2024-08-01 12:59:56 +02:00
Anarthal (Rubén Pérez)
f76e17c37b Using an unconnected any_connection no longer crashes
Refactored `variant_stream` and added tests

close #230 
close #321
2024-07-29 13:37:01 +02:00
Anarthal (Rubén Pérez)
b0c2639dbb Writes exceeding max buffer size no longer resize the buffer before failing
close #297
2024-07-26 11:46:32 +02:00
Anarthal (Rubén Pérez)
820e10ed55 Fuzzers now run normally and are more resilient to failures
Updated build-clang17 and build-clang18 to use ubuntu:24.04
Fix missing package in build-clang18
Fuzzers now fail if OpenSSL can't be found

close #323
2024-07-24 17:38:55 +02:00
Anarthal (Rubén Pérez)
a8c992dd95 as_netresult completion token for tests
Restructured handshake integration tests
Removed er_connection infrastructure
Reworked network_result
Greatly simplified integration tests
2024-07-23 18:27:30 +02:00
Anarthal (Rubén Pérez)
0060494170 Refactored connection_impl to allow diagnostics-aware tokens
All async_initiate's in the library are now uniformly called with a diagnostics* as 1st argument
2024-07-15 17:57:11 +02:00
Anarthal (Rubén Pérez)
cf74314c4e Improved tracker_executor
Added the ability to detect the executor call stack and whether we're
running from an initiating function or not.
Integration tests now consistently check these two.
2024-07-15 12:26:47 +02:00
Anarthal (Rubén Pérez)
c3337d20d4 Added a CI build with UNIX sockets disabled
close #196
2024-07-14 21:51:33 +02:00
Anarthal (Rubén Pérez)
a918c6b6b5 Improved server feature detection for integration tests
Introduced BOOST_MYSQL_DISABLED_SERVER_FEATURES env var
Removed BOOST_MYSQL_NO_UNIX_SOCKET_TESTS env var
JSON tests in database_types are now actually run

close #29
2024-07-11 17:36:42 +02:00
Anarthal (Rubén Pérez)
3a49afeb87 Boost 1.86 new CI builds
Added gcc-14 build
Updated mysql8 to MySQL 8.4.1
Updated mariadb to MariaDB 11.4.2
Updated some CMake builds to the latest compiler versions
Updated GHA workflows to use Node 20 actions
Updated deprecated ENV commands in Dockerfiles
Removed debugging statements in OSX CI build
DB entrypoints are now inline scripts in Dockerfiles
TSAN is now run in ARM CIs and recent gcc's
TSAN is now disabled for TS executors

close #302
2024-07-08 17:12:43 +02:00
Anarthal (Rubén Pérez)
eb4cea7fcb Disabled Naggle's algorithm in any_connection
Fixes a performance issue with pipelines only containing close statement
stages.

close #277
2024-07-02 18:35:03 +02:00
Anarthal (Rubén Pérez)
0944b2af77 Added a max limit to any_connection buffer size
any_connection max buffer size is now 64MB
Renamed any_connection_params::initial_read_buffer_size to initial_buffer_size
Renamed pool_params::initial_read_buffer_size to initial_buffer_size

close #278
2024-06-30 15:49:27 +02:00
Anarthal (Rubén Pérez)
d1f1219e4b Removed the pipeline static interface
close #288
2024-06-26 16:47:27 +02:00
Anarthal (Rubén Pérez)
1ad51fc579 Character set clean-up
character_set::name is now a const char*, since NULL characters are not
   allowed by MySQL
character_set::next_char doesn't need to be noexcept
Removed noexcepts from next_char functions
Internal refactor
2024-06-24 17:10:12 +02:00
Anarthal (Rubén Pérez)
77361353a5 Added formattable_ref
format_context_base::append_value now uses formattable_ref instead of being a template

close #284
2024-06-23 18:35:26 +02:00
Anarthal (Rubén Pérez)
80a86189e9 Support for ranges in client-side SQL formatting
close #280
2024-06-22 11:48:45 +02:00
Anarthal (Rubén Pérez)
759820b470 async_connect now always requires connect_params to be kept alive
This trims down complexity and build times.
asio::ssl::context is now forward-declared in any_connection.
2024-06-20 12:04:13 +02:00
Anarthal (Rubén Pérez)
08abb5d073 Client-side SQL formatting now supports specifiers
Added the 'i' and 'r' specifiers
Removed the identifier class

close #217
2024-06-17 21:53:07 +02:00
Anarthal (Rubén Pérez)
9ba4f9dfed Pipeline API
Removed sansio_algorithm base class

close #75
2024-06-08 12:47:42 +02:00
Anarthal (Rubén Pérez)
44ba9abe1d Date and datetime is now compatible with C++20 local_time
close #263
2024-05-19 10:37:28 +02:00
Anarthal (Rubén Pérez)
752e445752 CMake test targets are now marked EXCLUDE_FROM_ALL
All test targets (including integration tests) are now only built when
the `tests` target is built.
Added a CMake build that doesn't run integration testing (verifying that
BOOST_MYSQL_INTEGRATION_TESTS works)

close #261
2024-05-16 12:45:57 +02:00
Anarthal (Rubén Pérez)
77de54cf2c any_stream->engine, asio::coroutine ODR violation fix
Fixed a potential ODR violation with `asio::coroutine` under MSVC, manifesting as sporadic test failures under release configurations.
`any_stream` has been replaced by the internal `EngineStream` concept
and the `engine` interface.
`algo_runner` has been replaced by `top_level_algo`, improving algorithm
type-erasing

This change is required by #195 and beneficial for #75
close #259
2024-05-10 14:03:05 +02:00