61 Commits

Author SHA1 Message Date
Anarthal (Rubén Pérez)
07200f17c2
Made the asio::yield_context HTTP server single-threaded and reworked it
The example is now much more legible
The example no longer crashes on termination
Renamed it to match the C++ standard it requires

close #414
2025-02-14 21:13:01 +01:00
Anarthal (Rubén Pérez)
c89e4f3751
Renamed the connection_pool example to http_server_cpp11_coroutines 2025-02-12 16:15:19 +01:00
Anarthal (Rubén Pérez)
793b678287
Updated file copyrights to 2025 2025-02-11 20:42:41 +01:00
Anarthal (Rubén Pérez)
c3f1cbfd8f
Added an HTTP server example using C++20 coroutines
Contributes to #365
2025-02-11 18:43:35 +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)
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)
41f07d2e1e
clang builds now include llvm-symbolizer
Added the llvm package to clang Docker containers
2024-10-11 17:41:02 +02:00
Anarthal (Rubén Pérez)
6d08247bab
Migrate docs to pydocca
Improved reference docs linkage and fixed several formatting issues
Removed obsolete performance warning about close_statement

close #334
2024-09-06 16:38:38 +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)
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)
6c48d6c6a6
Boost 1.86 new server error codes
close #304
2024-07-08 10:57:48 +02:00
Anarthal (Rubén Pérez)
1b6a908ba9
Marked constants as inline constexpr
close #265
2024-05-16 17:13:11 +02:00
Anarthal (Rubén Pérez)
03f1dd5df2
Pipeline-friendly serialization
Updated the serialization functions to take framing into account when
serializing. This is a requirement to implement #75.

close #255
2024-05-08 11:02:19 +02:00
Anarthal (Rubén Pérez)
75c7415118
Added is_fatal_error
Updated osx CIs to run in macos-latest (macos 14)

close #253
2024-04-30 16:17:16 +02:00
Anarthal (Rubén Pérez)
7eec4954a7
Added support for Boost.PFR in the static interface
target_include_directories no longer uses the SYSTEM option

close #185
2024-04-18 15:52:00 +02:00
Anarthal (Rubén Pérez)
343006142b
Test Jamfiles now use the built-in OpenSSL module
Added a Linux b2 build without OpenSSL
Fixed issue in install_boost.py that made rebuilds to error
Removed workaround for https://github.com/boostorg/boost/issues/711
Changed boost.mysql.use-ts-executor default value to off

close #235
2024-03-27 16:43:37 +01:00
Anarthal (Rubén Pérez)
f7acfbe306
Unified CMake workflows
close #238
2024-03-18 17:46:33 +01:00
Anarthal (Rubén Pérez)
5e3220fce3
Updated workflows to always use PRs
close #233
2024-03-14 17:18:05 +01:00
Ruben Perez
5d97dd8d81 New code coverage workflow
Code coverage is now using GHA and b2
Split Linux and Windows docker image builds
Updated some Linux images to include gpg

close #152
2024-03-14 13:28:05 +01:00
Ruben Perez
cdb31452f6 Added fuzzers for client-side SQL formatting functions
Refactored seed corpus generation
Refactored ci.py into smaller modules
Removed unnecessary check in utf8mb4_next_char

close #214
2024-03-07 23:00:28 +01:00
Ruben Perez
d8b69d0e78 Bumped copyright to 2024 2024-02-18 12:48:14 +01:00
Ruben Perez
ce53f3e0c0 Support for BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT
Fixed connection_pool to build under this macro
Fixed tests and examples to build under this macro
Added CIs for this macro

close #184
2024-02-16 17:27:31 +01:00
Ruben Perez
5e8992ba88 Client-side SQL formatting functions
Added format_sql, format_sql_to and basic_format_context
Boost.Charconv is now a mandatory dependency
Text queries are now locale-independent
any_connection::current_character_set now uses system::result
Added any_connection::format_opts
field_view, field and statement::bind now disallow character types
escape_string can now be used with any OutputString type
Added constant_string_view
character_set now uses string_view and span
set_character_set hardening

close #69
close #208
2024-02-15 16:02:39 +01:00
Ruben Perez
2c46f54098 Removed __unused error codes
Such codes used reserved C++ identifiers, containing two consecutive underscores, and are no longer used by MySQL.

close #205
2024-01-03 12:50:49 +01:00
Ruben Perez
e38506d0b2 common_error_messages is now correctly namespaced
close #204
2024-01-02 21:56:09 +01:00
Ruben Perez
bc5577ede5 Connection pool
Added any_connection and any_address
Added connection_pool and pooled_connection
Added thread_safety tests
Added defaults.hpp header

close 19
2023-12-20 18:46:31 +01:00
Ruben Perez
0bc8554627 Upgrade to MySQL 8.1.0, MariaDB 11.1.2
Updated test database containers
Added new error codes
Fixed build problem in OSX CI
Docker images are now built automatically when they change

close #178
2023-10-11 23:15:26 +02:00
Ruben Perez
c60de9cee4 Support for reset_connection
Refactored integration tests network functions

Close #141
2023-07-14 16:27:31 +02:00
Ruben Perez
cc73a0592f Fuzz testing
close #31
2023-07-07 17:22:54 +02:00
Ruben Perez
2f5f391c56 Boost 1.83 new error codes
Boost 1.83 new error codes
Error code generation now uses a CSV and a new algorithm
    to guarantee backwards compatibility

close #168
2023-06-24 23:21:12 +02:00
Ruben Perez
2dcea3f5e7 Added sanitizer builds
Fixed problem with header-only builds where
    meta_check_context didn't include its .ipp file
Fixed integer overflow problems in datetime::datetime
Fixed NULL memcpy problem in serialization_context::write
Updated tested systems in README and intro

close #33
2023-06-24 22:41:49 +02:00
Ruben Perez
00c605565d Boost 1.83 builds for latest compilers & DBs
Updated MySQL to 8.0.33
Updated MariaDB to 11.0
Added a clang 16 build
Added a clang 16 32-bit build
Added a gcc 13 build
Fixed a warning in Windows/CMake about _WINNT_VERSION not being defined

close #167
2023-06-23 20:32:05 +02:00
Ruben Perez
88fbe387ac Separate compilation
Separate compilation
Immediate completions are now posted through the I/O executor
Jamfiles now correctly requires C++11
Refactored the protocol and channel modules
Removed example on default completion tokens

close #23
close #112
2023-06-22 12:03:24 +02:00
Ruben Perez
b51115668d Added support for the static interface
Added support for the static interface
Statement execution now supports bool and optionals
Replaced the FieldLikeTuple and FieldLike concepts
    by WritableFieldTuple and WritableField
Added diagnostics::client_message
Solved a problem with blob types and stored procedures
    under MariaDB
Removed a troublesome assert in row_impl
Protected numeric_limits min/max from intrusive macros
Added C++11/14 order management examples
Documentation section collapsing
Test Jamfiles now show output only on failure

close #60
close #153
close #154
2023-05-22 14:05:12 +02:00
Ruben Perez
ed007e31ae Multi-resultset
Added support for running stored procedures that SELECT data
Added support for running multiple semicolon-separated queries
Added support for running stored procedures with OUT params
Added resultset and resultset_view
Fixed documentation typos and wording
Refactored object creation in tests

Close #133
Close #132
Close #8
2023-03-31 00:44:46 +02:00
Ruben Perez
3606474a50 Added ARM CIs
Added ARM docker images
Added ARM CIs for gcc and clang on Linux
Fixed a linker error on cmake when no CMAKE_CXX_STD
    is specified and the compiler defaults to C++03
ci.py now supports empty cxxstd for cmake

Close #130
Close #134
2023-03-26 23:28:46 +02:00
Ruben Perez
643e39f85e JSON and TEXT fields with binary collations support.
JSON fields are now read as strings instead of blobs.
TEXT fields with binary collations (e.g. utf8_bin or
    the JSON type in MariaDB) are now read as strings instead of blobs.
Added the column_type::json type.
The CI script now loads all data into the databases. There is no
    longer need to rebuild DB containers when test data changes.
2023-03-04 10:21:36 +01:00
Ruben Perez
7ebea35291 General documentation fixes.
Removed the notion of "single stream read and write"
    for the notion of "single async operation"
UNIX socket examples no longer use SSL.
Added Doxygen reference template and applied it
    to all functions and classes.
Improved the overview section.
Misc corrections in discussion.
Added missing members to quickref.
Fixed usage instructions.
Fixed issue in rows that caused an unnecessary copy of the strings.
Added upgrade instructions from 0.2.x.
Added SQL injection warnings in connection::query docs.
Fixed problems with missing icons.

Close #66
Close #96
Close #78
Close #47
2023-02-24 19:26:41 +01:00
Ruben Perez
b63eaf761e Revert "Added a warning on the API being experimental"
This reverts commit 06357f17d153d2578c61ef507825c431097b03b5.
2023-02-21 13:34:48 +01:00
Ruben Perez
06357f17d1 Added a warning on the API being experimental 2023-02-20 13:23:56 +01:00
Ruben Perez
7c5c7a6cd4 Collations for MySQL and MariaDB are now independent.
The collation enum has been converted into plain integers.
Separate headers for MySQL and MariaDB collation IDs have been added.
A script to generate those headers from table dumps has been added.

Close #120
2023-02-20 02:18:44 +01:00
Ruben Perez
fb87e840f0 Separate mysql and mariadb error codes.
Separate error categories for common, mysql and mariadb codes.
DB "flavor" detection.
CI mechanism to run db-specific integration tests.
Recovered PCHs in cmake and made them more sane.

close #108
2023-02-20 00:42:14 +01:00
Ruben Perez
7280ad6ed9 B2 CIs now runs unit tests
Fixed problem that caused build failures under GCC11/C++17
Close #117
2023-02-08 18:30:01 +01:00
Ruben Perez
ac7285c621 server_diagnostics and client/server error categories.
Renamed error_info to server_diagnostics.
server_diagnostics::message is now correctly treated as user-supplied input
  (security fix). Added notes on examples on this.
Split server and client errors in different categories.
Added throw_on_error.
Added connection::rebind_executor.
Made error categories public.
Exception throwing now uses Boost.Exception.
Improved error handling in examples.
Updated Asio dependencies for stackful coroutines.

Close #64
Close #107
2023-01-17 19:41:21 +01:00
Ruben Perez
7c4de363bb CMake version & OpenSSL degradation
The integrated CMake Boost build won't fail if OpenSSL is not found
The integrated CMake Boost build now requires cmake 3.5
2023-01-01 22:21:11 +01:00
Ruben Perez
31bc3b9dac Copyright year bump 2022-12-31 16:28:59 +01:00
Ruben Perez
a975273490 Multi-function operations
Added proper support for multi-function operations, segregating
  the API in single-function and multi-function operations.
  Removed resultset as I/O object, the read_xxx owning functions
  and read_all.
Unit test infrastructure for async testing.
Reference types lifetime fixes.
Removed connection::valid.
Fixed a serialization bug for statements with no parameters.
Binary protocol strings now use the type recommended by MySQL.
Refactored Jamfile to match best practices.
Updated description in libraries.json.

Close #82
Close #81
Close #73
Close #59
Close #58
Close #53
Close #41
Close #22
2022-12-31 15:49:09 +01:00
Ruben Perez
bf4071f370 Boostification, part 2
Fully migrated Linux and Windows jobs to Drone
Fixed time-zone related issue in integ tests
Support for MSVC 14.1
Support for latest docca version
Recover codecov support
Test to verify cmake find_package for a b2-generated distribution
Resilience against openssl not being found in Windows
2022-12-05 19:04:24 +01:00
Ruben Perez
f662df3635 Boostification, part 1
Proper cmake support
New UNIX B2 builds
New UNIX CMake builds
Removed appveyor support
New Windows B2 drone builds
2022-11-28 17:29:56 +01:00