From c9ff97205407d61aaa68e96a9947ede3855bac2b Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 6 Dec 2024 13:47:01 +0100 Subject: [PATCH 01/50] Initial prototype --- doc/CMakeLists.txt | 25 +++++++ doc/antora.yml | 8 ++ doc/local-playbook.yml | 41 +++++++++++ doc/modules/ROOT/nav.adoc | 4 + doc/modules/ROOT/pages/index.adoc | 105 +++++++++++++++++++++++++++ doc/modules/ROOT/pages/overview.adoc | 3 + doc/mrdocs.cpp | 66 +++++++++++++++++ doc/mrdocs.yml | 21 ++++++ 8 files changed, 273 insertions(+) create mode 100644 doc/CMakeLists.txt create mode 100644 doc/antora.yml create mode 100644 doc/local-playbook.yml create mode 100644 doc/modules/ROOT/nav.adoc create mode 100644 doc/modules/ROOT/pages/index.adoc create mode 100644 doc/modules/ROOT/pages/overview.adoc create mode 100644 doc/mrdocs.cpp create mode 100644 doc/mrdocs.yml diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 000000000..c4befa3ea --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,25 @@ +# +# Copyright (c) 2019-2024 Ruben Perez Hidalgo (rubenperez038 at gmail dot com) +# +# Distributed under the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +# + +cmake_minimum_required(VERSION 3.8...3.22) + +# Project +project(boost_mysql_mrdocs LANGUAGES CXX) + +# MrDocs forces CMAKE_EXPORT_COMPILE_COMMANDS=ON, incorrectly +# causing all targets to be dumped to the compilation database. +# Disable this setting so we can set EXPORT_COMPILE_COMMANDS +# only to our target of interest +set(CMAKE_EXPORT_COMPILE_COMMANDS OFF) + +# Add Boost +add_subdirectory($ENV{BOOST_SRC_DIR} deps/boost) + +# Add the target for mrdocs to analyze +add_executable(mrdocs mrdocs.cpp) +target_link_libraries(mrdocs PRIVATE Boost::mysql) +set_target_properties(mrdocs PROPERTIES EXPORT_COMPILE_COMMANDS ON) diff --git a/doc/antora.yml b/doc/antora.yml new file mode 100644 index 000000000..06f04c29f --- /dev/null +++ b/doc/antora.yml @@ -0,0 +1,8 @@ +name: mysql +title: Boost.MySQL +version: ~ +nav: + - modules/ROOT/nav.adoc +ext: + cpp-reference: + config: doc/mrdocs.yml diff --git a/doc/local-playbook.yml b/doc/local-playbook.yml new file mode 100644 index 000000000..d8b85218f --- /dev/null +++ b/doc/local-playbook.yml @@ -0,0 +1,41 @@ + +site: + url: https://test.com/ # TODO: change this + title: Boost.MySQL documentation + robots: allow + +antora: + extensions: + - require: '@cppalliance/antora-cpp-tagfiles-extension' + cpp-tagfiles: + using-namespaces: + - 'boost::' + - require: '@cppalliance/antora-cpp-reference-extension' + dependencies: + - name: 'boost' + repo: 'https://github.com/boostorg/boost.git' + tag: 'develop' + variable: 'BOOST_SRC_DIR' + system-env: 'BOOST_SRC_DIR' + +asciidoc: + attributes: + # Enable pagination + page-pagination: '' + extensions: + - '@cppalliance/asciidoctor-boost-links' + - '@asciidoctor/tabs' + +# Libraries that support Antora should be included here +content: + sources: + - url: .. + start_path: doc + +ui: + bundle: + url: https://github.com/boostorg/website-v2-docs/releases/download/ui-master/ui-bundle.zip + snapshot: true + +output: + dir: ../__build/doc diff --git a/doc/modules/ROOT/nav.adoc b/doc/modules/ROOT/nav.adoc new file mode 100644 index 000000000..2917581d5 --- /dev/null +++ b/doc/modules/ROOT/nav.adoc @@ -0,0 +1,4 @@ +* xref:index.adoc[Introduction] +* xref:overview.adoc[] +* xref:reference:boost/mysql.adoc[Reference] + diff --git a/doc/modules/ROOT/pages/index.adoc b/doc/modules/ROOT/pages/index.adoc new file mode 100644 index 000000000..b4d46cc64 --- /dev/null +++ b/doc/modules/ROOT/pages/index.adoc @@ -0,0 +1,105 @@ + +[#intro] += Introduction + +Boost.MySQL is a pass:[C++11] client for the https://www.mysql.com/[MySQL] and https://mariadb.com/[MariaDB] database servers, based on Boost.Asio. + +== Motivation + +MySQL and MariaDB are widespread SQL database servers. MySQL +clients connect to the server in order to issue SQL queries. For this +purpose, MySQL employs a dedicated protocol. Boost.MySQL is an +implementation of the client side of this protocol. + +This library is a full implementation of the +https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_PROTOCOL.html[MySQL client/server protocol]. +It aims to expose the protocol primitives in an efficient but easy-to-use way. +It is similar in scope to the official https://dev.mysql.com/doc/c-api/8.0/en/[libmysqlclient], +but interoperable with Asio, safer and more expressive. Note that Boost.MySQL +*does not use libmysqlclient*: it's a full implementation of the MySQL protocol, which makes +it natively compatible with Asio. + +This library is relatively low level. It gives you access to text SQL queries and +prepared statements. Don't expect an ORM. xref:overview.adoc[This section] presents a quick tour +over the main library capabilities. + +The design goals of this library are: + +- *Interoperability with Asio*: this library employs the same principles as Boost.Asio and Boost.Beast. + Users of any of these libraries will immediately understand Boost.MySQL, and will have it easy + to integrate it in their programs. +* *Basis for further abstraction*: it allows efficient access to the MySQL client/server protocol + so it can be used by higher level components as a building block. Do a single thing and do it well. +* *Efficiency*. +* *Ease of use*: the MySQL protocol is full of pitfalls. We believe in simplicity. While retaining + control over the important parts, the library hides as much complexity from the protocol as possible. + +Non-goals: + +* *Being an ORM*. +* *Portability to other SQL databases*. This library focuses on MySQL. It won't work with Postgres + or SQLite. + +== When to use + +If any of the following statements is true, you may consider using Boost.MySQL: + +* Your application uses Boost.Asio and you need to access a MySQL server. +* You need asynchronous access to a MySQL server from a pass:[C++] application. +* You need efficient access to a MySQL server from a pass:[C++] application. +* You need a BSL-licensed library to access your MySQL server. +* You are writing a higher-level database access library, like an ORM. + +Use cases may include web servers, ETL processes and IoT systems. + +It may not be a good fit for you if: + +* You only need synchronous access to a MySQL server and efficiency doesn't matter + to your application. The official client libraries may be better suited for you, in this case. +* You need homogeneous SQL access to different SQL databases (and not only MySQL access). + You may find more value in using https://github.com/rbock/sqlpp11[sqlpp11] or a similar wrapper + library. + + + +== Tested compilers and systems + +Boost.MySQL is tested under the following compilers: + +* gcc 5.4 (Linux) +* gcc 6.5 (Linux) +* gcc 10.3 (Linux) +* gcc 11.2 (Linux) +* gcc 13.0 (Linux) +* gcc 14.0 (Linux) +* clang 3.6 (Linux) +* clang 7.0 (Linux) +* clang 11.0 (Linux) +* clang 14.0 (Linux) +* clang 16.0 (Linux) +* clang 17.0 (Linux) +* clang 18.0 (Linux) +* Apple clang 14.0 (OSX) +* MSVC 14.1 - Visual Studio 2017 (Windows) +* MSVC 14.2 - Visual Studio 2019 (Windows) +* MSVC 14.3 - Visual Studio 2022 (Windows) + +And with the following RDBMS systems: + +* MySQL v5.7.41. +* MySQL v8.4.1. +* MariaDB v11.4.2. + +== Acknowledgements + +I would like to specially acknowledge https://github.com/madmongo1[Richard Hodges] (hodges.r@gmail.com) +for his invaluable technical guidance during development. Thanks also to +Christian Mazakas for his ideas in early stages, and to +https://github.com/klemens-morgenstern[Klemens Morgenstern] and +and https://github.com/vinniefalco[Vinnie Falco] for his techincal advice. +Without you, this library would not exist. + +Finally, thanks to https://github.com/chriskohlhoff[Christopher Kohlhoff] +for his awesome Asio library, and to https://github.com/HowardHinnant[Howard Hinnant] +for his date algorithms, shamelessly copied in this lib. + diff --git a/doc/modules/ROOT/pages/overview.adoc b/doc/modules/ROOT/pages/overview.adoc new file mode 100644 index 000000000..4b478055c --- /dev/null +++ b/doc/modules/ROOT/pages/overview.adoc @@ -0,0 +1,3 @@ += Overview + +Under construction \ No newline at end of file diff --git a/doc/mrdocs.cpp b/doc/mrdocs.cpp new file mode 100644 index 000000000..542d9a99f --- /dev/null +++ b/doc/mrdocs.cpp @@ -0,0 +1,66 @@ +// + +// #include + +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +#include + +// // #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// // #include +// // #include +// #include +// #include +// #include +// // #include +// // #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// // #include +// // #include +// #include +// #include +// #include +// // #include +// // #include +// #include +// #include diff --git a/doc/mrdocs.yml b/doc/mrdocs.yml new file mode 100644 index 000000000..94390ce8d --- /dev/null +++ b/doc/mrdocs.yml @@ -0,0 +1,21 @@ +# $schema: https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json +# yaml-language-server: $schema=https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json + +source-root: .. +compilation-database: ./CMakeLists.txt +cmake: '-DCMAKE_CXX_STANDARD=23 -DBOOST_INCLUDE_LIBRARIES=mysql' +multipage: true + +filters: + symbols: + exclude: + - 'boost::system::*' + - 'boost::asio::*' + - 'boost::mysql::detail' + - 'boost::mysql::mysql_collations' + include: + - 'boost::mysql' +referenced-declarations: never +inaccessible-members: never +inaccessible-bases: never +verbose: true \ No newline at end of file From 6f4705e7c89f0289198925cbc5c970fb2e9309ae Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 6 Dec 2024 13:48:32 +0100 Subject: [PATCH 02/50] Doxygen cleanup --- include/boost/mysql/any_connection.hpp | 12 ++++++------ include/boost/mysql/connection.hpp | 2 +- include/boost/mysql/escape_string.hpp | 3 +-- include/boost/mysql/execution_state.hpp | 4 ++-- include/boost/mysql/field_view.hpp | 2 +- include/boost/mysql/metadata.hpp | 2 +- include/boost/mysql/pool_params.hpp | 3 +-- include/boost/mysql/results.hpp | 4 ++-- include/boost/mysql/resultset.hpp | 4 ++-- include/boost/mysql/resultset_view.hpp | 4 ++-- include/boost/mysql/static_execution_state.hpp | 4 ++-- include/boost/mysql/static_results.hpp | 4 ++-- include/boost/mysql/with_params.hpp | 10 ++++++---- 13 files changed, 29 insertions(+), 29 deletions(-) diff --git a/include/boost/mysql/any_connection.hpp b/include/boost/mysql/any_connection.hpp index 5ad93ba20..082e1ee48 100644 --- a/include/boost/mysql/any_connection.hpp +++ b/include/boost/mysql/any_connection.hpp @@ -98,8 +98,8 @@ struct any_connection_params * allocate memory beyond this limit if the total number of rows is high. * \n * If you need to send or receive larger packets, you may need to adjust - * your server's `max_allowed_packet` + * your server's + * `max_allowed_packet` * system variable, too. */ std::size_t max_buffer_size{0x4000000}; @@ -138,7 +138,7 @@ struct any_connection_params * \par Thread safety * Distinct objects: safe. \n * Shared objects: unsafe. \n - * This class is not thread-safe: for a single object, if you + * This class is **not thread-safe**: for a single object, if you * call its member functions concurrently from separate threads, you will get a race condition. */ class any_connection @@ -252,8 +252,8 @@ class any_connection * \brief Returns whether backslashes are being treated as escape sequences. * \details * By default, the server treats backslashes in string values as escape characters. - * This behavior can be disabled by activating the `NO_BACKSLASH_ESCAPES` + * This behavior can be disabled by activating the + * `NO_BACKSLASH_ESCAPES` * SQL mode. * \n * Every time an operation involving server communication completes, the server reports whether @@ -546,7 +546,7 @@ class any_connection * \ref execution_state::meta populated. * Metadata will be populated according to `this->meta_mode()`. * \n - * If the operation generated any rows or more than one resultset, these must be read (by using + * If the operation generated any rows or more than one resultset, these **must** be read (by using * \ref read_some_rows and \ref read_resultset_head) before engaging in any further network operation. * Otherwise, the results are undefined. * \n diff --git a/include/boost/mysql/connection.hpp b/include/boost/mysql/connection.hpp index c59d9e7a2..2a274c5fb 100644 --- a/include/boost/mysql/connection.hpp +++ b/include/boost/mysql/connection.hpp @@ -58,7 +58,7 @@ class static_execution_state; * \par Thread safety * Distinct objects: safe. \n * Shared objects: unsafe. \n - * This class is not thread-safe: for a single object, if you + * This class is **not thread-safe**: for a single object, if you * call its member functions concurrently from separate threads, you will get a race condition. * * \par Legacy diff --git a/include/boost/mysql/escape_string.hpp b/include/boost/mysql/escape_string.hpp index 0d3094268..a07b5ee49 100644 --- a/include/boost/mysql/escape_string.hpp +++ b/include/boost/mysql/escape_string.hpp @@ -58,8 +58,7 @@ enum class quoting_context : char * By default, MySQL treats backslash characters as escapes in string values * (for instance, the string `"\n"` is treated as a newline). This behavior is * enabled by default, but can be disabled by enabling the - * `NO_BACKSLASH_ESCAPES` + * `NO_BACKSLASH_ESCAPES` * SQL mode. When enabled, backslashes no longer have a special meaning, which changes * the escaping rules. `opts.backslash_escapes` should be set to `true` if backslashes represent * escapes (i.e. `NO_BACKSLASH_ESCAPES` is not enabled), and `false` otherwise. diff --git a/include/boost/mysql/execution_state.hpp b/include/boost/mysql/execution_state.hpp index 6fa9afac5..cb40afcf5 100644 --- a/include/boost/mysql/execution_state.hpp +++ b/include/boost/mysql/execution_state.hpp @@ -182,8 +182,8 @@ class execution_state /** * \brief Returns additional text information about this resultset. * \details - * The format of this information is documented by MySQL here. + * The format of this information is documented by MySQL + * here. * \n * The returned string always uses ASCII encoding, regardless of the connection's character set. * diff --git a/include/boost/mysql/field_view.hpp b/include/boost/mysql/field_view.hpp index dd42257a2..f21b530c0 100644 --- a/include/boost/mysql/field_view.hpp +++ b/include/boost/mysql/field_view.hpp @@ -75,7 +75,7 @@ class field_view /** * \brief Constructs a `field_view` holding NULL. * \details - * Caution: `field_view(NULL)` will not match this overload. It will try to construct + * Caution: `field_view(NULL)` will **not** match this overload. It will try to construct * a `string_view` from a NULL C string, causing undefined behavior. * * \par Exception safety diff --git a/include/boost/mysql/metadata.hpp b/include/boost/mysql/metadata.hpp index f2741046c..4319eeda5 100644 --- a/include/boost/mysql/metadata.hpp +++ b/include/boost/mysql/metadata.hpp @@ -170,7 +170,7 @@ class metadata /** * \brief Returns the ID of the collation that fields belonging to this column use. - * \details This is not the collation used when defining the column + * \details This is **not** the collation used when defining the column * in a `CREATE TABLE` statement, but the collation that fields that belong to * this column and are sent to the client have. It usually matches the connection's collation. * diff --git a/include/boost/mysql/pool_params.hpp b/include/boost/mysql/pool_params.hpp index f4bee2c41..4f47cb001 100644 --- a/include/boost/mysql/pool_params.hpp +++ b/include/boost/mysql/pool_params.hpp @@ -140,8 +140,7 @@ struct pool_params * * This value must not be negative. It should be bigger than the server's * idle timeout (as determined by the - * wait_timeout + * wait_timeout * session variable). Otherwise, the server might close connections * without the pool detecting it. */ diff --git a/include/boost/mysql/results.hpp b/include/boost/mysql/results.hpp index d15f18de1..3e2f30363 100644 --- a/include/boost/mysql/results.hpp +++ b/include/boost/mysql/results.hpp @@ -258,8 +258,8 @@ class results /** * \brief Returns additional text information about the execution of the SQL statement. * \details - * The format of this information is documented by MySQL here. + * The format of this information is documented by MySQL + * here. * \n * The returned string always uses ASCII encoding, regardless of the connection's character set. * \n diff --git a/include/boost/mysql/resultset.hpp b/include/boost/mysql/resultset.hpp index da1f8658e..17d887c34 100644 --- a/include/boost/mysql/resultset.hpp +++ b/include/boost/mysql/resultset.hpp @@ -239,8 +239,8 @@ class resultset /** * \brief Returns additional information for this resultset. * \details - * The format of this information is documented by MySQL here. + * The format of this information is documented by MySQL + * here. * \n * The returned string always uses ASCII encoding, regardless of the connection's character set. * diff --git a/include/boost/mysql/resultset_view.hpp b/include/boost/mysql/resultset_view.hpp index 391a8a0b9..93229cef0 100644 --- a/include/boost/mysql/resultset_view.hpp +++ b/include/boost/mysql/resultset_view.hpp @@ -145,8 +145,8 @@ class resultset_view /** * \brief Returns additional information for this resultset. * \details - * The format of this information is documented by MySQL here. + * The format of this information is documented by MySQL + * here. * \n * The returned string always uses ASCII encoding, regardless of the connection's character set. * diff --git a/include/boost/mysql/static_execution_state.hpp b/include/boost/mysql/static_execution_state.hpp index 26541de00..4a09a50b6 100644 --- a/include/boost/mysql/static_execution_state.hpp +++ b/include/boost/mysql/static_execution_state.hpp @@ -194,8 +194,8 @@ class static_execution_state /** * \brief Returns additional text information about this resultset. * \details - * The format of this information is documented by MySQL here. + * The format of this information is documented by MySQL + * here. * \n * The returned string always uses ASCII encoding, regardless of the connection's character set. * diff --git a/include/boost/mysql/static_results.hpp b/include/boost/mysql/static_results.hpp index 69f8bc1af..5929c2454 100644 --- a/include/boost/mysql/static_results.hpp +++ b/include/boost/mysql/static_results.hpp @@ -254,8 +254,8 @@ class static_results /** * \brief Returns additional text information about the execution of the SQL statement. * \details - * The format of this information is documented by MySQL here. + * The format of this information is documented by MySQL + * here. * \n * The returned string always uses ASCII encoding, regardless of the connection's character set. * diff --git a/include/boost/mysql/with_params.hpp b/include/boost/mysql/with_params.hpp index d0606e6ac..e8731e5b1 100644 --- a/include/boost/mysql/with_params.hpp +++ b/include/boost/mysql/with_params.hpp @@ -26,7 +26,8 @@ namespace mysql { * - `make_tuple_element_t` yields `int` \n * - `make_tuple_element_t>` yields `int&` \n * \n - * Consult the `std::make_tuple` docs + * Consult the + * `std::make_tuple` docs * for more info. */ template @@ -45,14 +46,15 @@ using make_tuple_element_t = typename std::tuple_element<0, decltype(std::make_t * to expand the provided query with the supplied parameters. The resulting query is then sent to * the server for execution. Formally, given a `conn` variable of \ref any_connection type, * the query is generated as if the following was called: - * ``` + * + * \code * format_sql( * this->query, * conn.format_opts().value(), * std::get(this->args)... // for i in [0, sizeof...(Formattable)) * ); - * ``` - * \n + * \endcode + * * Objects of this type are usually created using \ref with_params, which * creates `args` by calling `std::make_tuple`. * From 20ffbc4ae9ec0e651bb451c4f4bf0e55304f89db Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 6 Dec 2024 13:48:46 +0100 Subject: [PATCH 03/50] Prevent clang-format from messing tags up --- .clang-format | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.clang-format b/.clang-format index 3814faf72..3d49f8567 100644 --- a/.clang-format +++ b/.clang-format @@ -85,7 +85,7 @@ BreakConstructorInitializersBeforeComma: false BreakConstructorInitializers: BeforeColon BreakAfterJavaFieldAnnotations: false BreakStringLiterals: true -CommentPragmas: '(^ IWYU pragma:)|(^\\copydoc )|(^ ?\\n)' +CommentPragmas: '(^ IWYU pragma:)|(^\\copydoc )|(^ ?\\n)|(^ Date: Fri, 6 Dec 2024 15:55:07 +0100 Subject: [PATCH 04/50] package.json and auxiliar --- .gitignore | 3 + doc/modules/ROOT/pages/reference.adoc | 24 + doc/package-lock.json | 1826 +++++++++++++++++++++++++ doc/package.json | 10 + 4 files changed, 1863 insertions(+) create mode 100644 doc/modules/ROOT/pages/reference.adoc create mode 100644 doc/package-lock.json create mode 100644 doc/package.json diff --git a/.gitignore b/.gitignore index 3e2e996ba..66e4becea 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ compile_commands.json .cache/ __build*__/ __pycache__/ +node_modules/ +/doc/build/ +/doc/reference-output/ \ No newline at end of file diff --git a/doc/modules/ROOT/pages/reference.adoc b/doc/modules/ROOT/pages/reference.adoc new file mode 100644 index 000000000..db5420a7b --- /dev/null +++ b/doc/modules/ROOT/pages/reference.adoc @@ -0,0 +1,24 @@ +// +// Copyright (c) 2023 Alan de Freitas (alandefreitas@gmail.com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) +// +// Official repository: https://github.com/boostorg/url +// + + +[#reference] += Reference + + + +[width=100%] +|=== +1+| *Types* + +xref:reference:boost/mysql/host_and_port.adoc[`host_and_port`] + + +|=== + diff --git a/doc/package-lock.json b/doc/package-lock.json new file mode 100644 index 000000000..b96e57f55 --- /dev/null +++ b/doc/package-lock.json @@ -0,0 +1,1826 @@ +{ + "name": "doc", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@asciidoctor/tabs": "^1.0.0-beta.6", + "@cppalliance/antora-cpp-reference-extension": "^0.0.5", + "@cppalliance/antora-cpp-tagfiles-extension": "^0.0.4", + "@cppalliance/antora-playbook-macros-extension": "^0.0.2", + "@cppalliance/asciidoctor-boost-links": "^0.0.2", + "antora": "^3.1.9" + } + }, + "node_modules/@antora/asciidoc-loader": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.1.9.tgz", + "integrity": "sha512-flE27T2yI8TX7rUNjbBHWN3iR6s+kBuRBbUPncUFcWjx6mXzll8JLiTkxnc8JXHGzgKlveT+t5AkPYGACLfasg==", + "license": "MPL-2.0", + "dependencies": { + "@antora/logger": "3.1.9", + "@antora/user-require-helper": "~2.0", + "@asciidoctor/core": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/cli": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.1.9.tgz", + "integrity": "sha512-kCUqWX3G/9Pvf8SWZ45ioHwWdOc9uamy2E5/FFwyGiTeu4ubNbadOauLVvMzSZHUxVDnGxXwCsmmQ2HwM919ew==", + "license": "MPL-2.0", + "dependencies": { + "@antora/logger": "3.1.9", + "@antora/playbook-builder": "3.1.9", + "@antora/user-require-helper": "~2.0", + "commander": "~11.1" + }, + "bin": { + "antora": "bin/antora" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/content-aggregator": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.1.9.tgz", + "integrity": "sha512-g+UzevPSm5c4R0j1U9uysJfdIUfp++QOHIEBmqjhfx/aIEnOL70zA+WF55Mm+syAfzU3877puI27sOp8qtPglw==", + "license": "MPL-2.0", + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "@antora/logger": "3.1.9", + "@antora/user-require-helper": "~2.0", + "braces": "~3.0", + "cache-directory": "~2.0", + "fast-glob": "~3.3", + "hpagent": "~1.2", + "isomorphic-git": "~1.25", + "js-yaml": "~4.1", + "multi-progress": "~4.0", + "picomatch": "~4.0", + "progress": "~2.0", + "should-proxy": "~1.0", + "simple-get": "~4.0", + "vinyl": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/content-classifier": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.1.9.tgz", + "integrity": "sha512-PVJqwp5uvZE1PlpeJtb0p6al75fN+fmXGIC6DHcKysRnr0xo+sgz8X2r4mnNWdTWRqum2yVigMmmuXYTg3cJlQ==", + "license": "MPL-2.0", + "dependencies": { + "@antora/asciidoc-loader": "3.1.9", + "@antora/logger": "3.1.9", + "mime-types": "~2.1", + "vinyl": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/document-converter": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.1.9.tgz", + "integrity": "sha512-pH7tQaIjcPsFdYkaBEAvA/5ki04IQwQGHoR+2jadKdMl6P+J5KA1VzNnMgyIL6gHn7auJIkoOKadfItRB9lHGQ==", + "license": "MPL-2.0", + "dependencies": { + "@antora/asciidoc-loader": "3.1.9" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/expand-path-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-2.0.0.tgz", + "integrity": "sha512-CSMBGC+tI21VS2kGW3PV7T2kQTM5eT3f2GTPVLttwaNYbNxDve08en/huzszHJfxo11CcEs26Ostr0F2c1QqeA==", + "license": "MPL-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@antora/file-publisher": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.1.9.tgz", + "integrity": "sha512-C0VwVjuFbE1CVpZDgwYR1gZCNr1tMw5vueyF9wHZH0KCqAsp9iwo7bwj8wKWMPogxcxdYhnAvtDJnYmYFCuDWQ==", + "license": "MPL-2.0", + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "@antora/user-require-helper": "~2.0", + "vinyl": "~3.0", + "yazl": "~2.5" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/logger": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.1.9.tgz", + "integrity": "sha512-MKuANodcX0lfRyiB+Rxl/Kv7UOxc2glzTYFoIoBB7uzxF0A+AhvUJDmpGQFRFN2ihxy99N3nLJmZpDebwXyE+A==", + "license": "MPL-2.0", + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "pino": "~9.2", + "pino-pretty": "~11.2", + "sonic-boom": "~4.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/navigation-builder": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.1.9.tgz", + "integrity": "sha512-zyl2yNjK31Dl6TRJgnoFb4Czwt9ar3wLTycAdMeZ+U/8YcAUHD8z7NCssPFFvZ0BbUr00NP+gbqDmCr6yz32NQ==", + "license": "MPL-2.0", + "dependencies": { + "@antora/asciidoc-loader": "3.1.9" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/page-composer": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.1.9.tgz", + "integrity": "sha512-X6Qj+J5dfFAGXoCAOaA+R6xRp8UoNMDHsRsB1dUTT2QNzk1Lrq6YkYyljdD2cxkWjLVqQ/pQSP+BJVNFGbqDAQ==", + "license": "MPL-2.0", + "dependencies": { + "@antora/logger": "3.1.9", + "handlebars": "~4.7", + "require-from-string": "~2.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/playbook-builder": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.1.9.tgz", + "integrity": "sha512-MJ/OWz4pReC98nygGTXC5bOL/TDDtCYpSkHFBz2ST4L6tuM8rv9c5+cp//JkwY/QlTOvcuJ0f2xq4a7a5nI7Qw==", + "license": "MPL-2.0", + "dependencies": { + "@iarna/toml": "~2.2", + "convict": "~6.2", + "js-yaml": "~4.1", + "json5": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/redirect-producer": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.1.9.tgz", + "integrity": "sha512-9OLwoMhqifsBxTebInh/5W16GdDsdj+YkKG3TiCASlAOYsDbuhbeRPFUlyKKSRkMrtKKnFgHR0Z3DNPXYlH2NQ==", + "license": "MPL-2.0", + "dependencies": { + "vinyl": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/site-generator": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.1.9.tgz", + "integrity": "sha512-YYESPG22tGX1CxRPSAr6acKILCO8JfGkM1OYc7Sw3D7ZvCy1YgZMAaTYK0T5yl9LXg+l/UZi1xq/Ej0qHnYQiw==", + "license": "MPL-2.0", + "dependencies": { + "@antora/asciidoc-loader": "3.1.9", + "@antora/content-aggregator": "3.1.9", + "@antora/content-classifier": "3.1.9", + "@antora/document-converter": "3.1.9", + "@antora/file-publisher": "3.1.9", + "@antora/logger": "3.1.9", + "@antora/navigation-builder": "3.1.9", + "@antora/page-composer": "3.1.9", + "@antora/playbook-builder": "3.1.9", + "@antora/redirect-producer": "3.1.9", + "@antora/site-mapper": "3.1.9", + "@antora/site-publisher": "3.1.9", + "@antora/ui-loader": "3.1.9", + "@antora/user-require-helper": "~2.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/site-mapper": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.1.9.tgz", + "integrity": "sha512-9FCObL+JIjBoby8z+beu2uuvAtCjm5EsEQt+16gCIMX1ktVP3W3gVsdRSvVcGcVEpizILFhMawkcQknZPUp5mg==", + "license": "MPL-2.0", + "dependencies": { + "@antora/content-classifier": "3.1.9", + "vinyl": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/site-publisher": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.1.9.tgz", + "integrity": "sha512-L5To8f4QswZliXu6yB6O7O8CuBbLctjNbxZqP3m0FP7VaOONp85ftzEq1BFEm4BXXSwH1n4ujZx1qGBHP9ooOQ==", + "license": "MPL-2.0", + "dependencies": { + "@antora/file-publisher": "3.1.9" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/ui-loader": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.1.9.tgz", + "integrity": "sha512-g0/9dRE5JVMYukIU3x+Rvr41bPdK3sUD2xQIAniRjE6usIZs1mEsTGshVKVEoOqqnSekXE85HVhybjNHsC+qbQ==", + "license": "MPL-2.0", + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "braces": "~3.0", + "cache-directory": "~2.0", + "fast-glob": "~3.3", + "hpagent": "~1.2", + "js-yaml": "~4.1", + "picomatch": "~4.0", + "should-proxy": "~1.0", + "simple-get": "~4.0", + "vinyl": "~3.0", + "yauzl": "~3.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/user-require-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-2.0.0.tgz", + "integrity": "sha512-5fMfBZfw4zLoFdDAPMQX6Frik90uvfD8rXOA4UpXPOUikkX4uT1Rk6m0/4oi8oS3fcjiIl0k/7Nc+eTxW5TcQQ==", + "license": "MPL-2.0", + "dependencies": { + "@antora/expand-path-helper": "~2.0" + }, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@asciidoctor/core": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.8.tgz", + "integrity": "sha512-oozXk7ZO1RAd/KLFLkKOhqTcG4GO3CV44WwOFg2gMcCsqCUTarvMT7xERIoWW2WurKbB0/ce+98r01p8xPOlBw==", + "license": "MIT", + "dependencies": { + "asciidoctor-opal-runtime": "0.3.3", + "unxhr": "1.0.1" + }, + "engines": { + "node": ">=8.11", + "npm": ">=5.0.0", + "yarn": ">=1.1.0" + } + }, + "node_modules/@asciidoctor/tabs": { + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@asciidoctor/tabs/-/tabs-1.0.0-beta.6.tgz", + "integrity": "sha512-gGZnW7UfRXnbiyKNd9PpGKtSuD8+DsqaaTSbQ1dHVkZ76NaolLhdQg8RW6/xqN3pX1vWZEcF4e81+Oe9rNRWxg==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@cppalliance/antora-cpp-reference-extension": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@cppalliance/antora-cpp-reference-extension/-/antora-cpp-reference-extension-0.0.5.tgz", + "integrity": "sha512-wSJgtb6FF/s3n9ex7HT7dFHimzaLLvkcNsy0CtL74chOGnAXbQlmuK5Jfw0BvgkdBtaazekgRC4lh/Gktw2aFw==", + "license": "BSL-1.0", + "dependencies": { + "@antora/expand-path-helper": "^2.0.0", + "axios": "^1.7.2", + "cache-directory": "^2.0.0", + "fast-glob": "^3.3.2", + "isomorphic-git": "^1.27.1", + "js-yaml": "^4.1.0" + } + }, + "node_modules/@cppalliance/antora-cpp-reference-extension/node_modules/isomorphic-git": { + "version": "1.27.2", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.27.2.tgz", + "integrity": "sha512-nCiz+ieOkWb5kDJSSckDTiMjTcgkxqH2xuiQmw1Y6O/spwx4d6TKYSfGCd4f71HGvUYcRSUGqJEI+3uN6UQlOw==", + "license": "MIT", + "dependencies": { + "async-lock": "^1.4.1", + "clean-git-ref": "^2.0.1", + "crc-32": "^1.2.0", + "diff3": "0.0.3", + "ignore": "^5.1.4", + "minimisted": "^2.0.0", + "pako": "^1.0.10", + "path-browserify": "^1.0.1", + "pify": "^4.0.1", + "readable-stream": "^3.4.0", + "sha.js": "^2.4.9", + "simple-get": "^4.0.1" + }, + "bin": { + "isogit": "cli.cjs" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cppalliance/antora-cpp-tagfiles-extension": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@cppalliance/antora-cpp-tagfiles-extension/-/antora-cpp-tagfiles-extension-0.0.4.tgz", + "integrity": "sha512-dzb/QDZ+a5yk7vaEb2jNQ5p02XjA6LfPmLRWcxqb/MvpA9DHZKsPunFDy+yqY3eGy9zqNppunljy9TZUbeoczg==", + "license": "BSL-1.0", + "dependencies": { + "@antora/expand-path-helper": "^2.0.0", + "cache-directory": "^2.0.0", + "fast-xml-parser": "^4.4.1", + "he": "^1.2.0", + "isomorphic-git": "^1.27.1" + } + }, + "node_modules/@cppalliance/antora-cpp-tagfiles-extension/node_modules/isomorphic-git": { + "version": "1.27.2", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.27.2.tgz", + "integrity": "sha512-nCiz+ieOkWb5kDJSSckDTiMjTcgkxqH2xuiQmw1Y6O/spwx4d6TKYSfGCd4f71HGvUYcRSUGqJEI+3uN6UQlOw==", + "license": "MIT", + "dependencies": { + "async-lock": "^1.4.1", + "clean-git-ref": "^2.0.1", + "crc-32": "^1.2.0", + "diff3": "0.0.3", + "ignore": "^5.1.4", + "minimisted": "^2.0.0", + "pako": "^1.0.10", + "path-browserify": "^1.0.1", + "pify": "^4.0.1", + "readable-stream": "^3.4.0", + "sha.js": "^2.4.9", + "simple-get": "^4.0.1" + }, + "bin": { + "isogit": "cli.cjs" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cppalliance/antora-playbook-macros-extension": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@cppalliance/antora-playbook-macros-extension/-/antora-playbook-macros-extension-0.0.2.tgz", + "integrity": "sha512-0R3DSbMfADQs4E74N2bOLXDiCFth5ze1jVs8HSgpZ7U5vCayudhc77Fj/7yzy2iWvup9VfiE9QvoE5hIVxJEVg==", + "license": "BSL-1.0", + "dependencies": { + "process": "^0.11.10" + } + }, + "node_modules/@cppalliance/asciidoctor-boost-links": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@cppalliance/asciidoctor-boost-links/-/asciidoctor-boost-links-0.0.2.tgz", + "integrity": "sha512-9Lg1s955QeBO/xosbJbd+P4qJo1CkC0MvkiAIDZoqf10g8KQpMNy88NBAWji5YcNwXcrr8KP83GEweKMNDBMsw==", + "license": "BSL-1.0" + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "license": "ISC" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/antora": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/antora/-/antora-3.1.9.tgz", + "integrity": "sha512-MSNXZQWeM8jKZ9v8Nby4DTMoaMzWo6YnDw3etphFip1E56/prSAgbuJU7hcUoQg1NfOJNhiiseGI6wZR5v4u6g==", + "license": "MPL-2.0", + "dependencies": { + "@antora/cli": "3.1.9", + "@antora/site-generator": "3.1.9" + }, + "bin": { + "antora": "bin/antora" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/asciidoctor-opal-runtime": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz", + "integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==", + "license": "MIT", + "dependencies": { + "glob": "7.1.3", + "unxhr": "1.0.1" + }, + "engines": { + "node": ">=8.11" + } + }, + "node_modules/async-lock": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/axios": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", + "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/cache-directory": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cache-directory/-/cache-directory-2.0.0.tgz", + "integrity": "sha512-7YKEapH+2Uikde8hySyfobXBqPKULDyHNl/lhKm7cKf/GJFdG/tU/WpLrOg2y9aUrQrWUilYqawFIiGJPS6gDA==", + "license": "LGPL-3.0+", + "dependencies": { + "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-git-ref": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/clean-git-ref/-/clean-git-ref-2.0.1.tgz", + "integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==", + "license": "Apache-2.0" + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/convict": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz", + "integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==", + "license": "Apache-2.0", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "yargs-parser": "^20.2.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff3": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz", + "integrity": "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==", + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", + "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" + }, + "node_modules/hpagent": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", + "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isomorphic-git": { + "version": "1.25.10", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.25.10.tgz", + "integrity": "sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==", + "license": "MIT", + "dependencies": { + "async-lock": "^1.4.1", + "clean-git-ref": "^2.0.1", + "crc-32": "^1.2.0", + "diff3": "0.0.3", + "ignore": "^5.1.4", + "minimisted": "^2.0.0", + "pako": "^1.0.10", + "pify": "^4.0.1", + "readable-stream": "^3.4.0", + "sha.js": "^2.4.9", + "simple-get": "^4.0.1" + }, + "bin": { + "isogit": "cli.cjs" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimisted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minimisted/-/minimisted-2.0.1.tgz", + "integrity": "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + } + }, + "node_modules/multi-progress": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multi-progress/-/multi-progress-4.0.0.tgz", + "integrity": "sha512-9zcjyOou3FFCKPXsmkbC3ethv51SFPoA4dJD6TscIp2pUmy26kBDZW6h9XofPELrzseSkuD7r0V+emGEeo39Pg==", + "license": "MIT", + "peerDependencies": { + "progress": "^2.0.0" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pino": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.2.0.tgz", + "integrity": "sha512-g3/hpwfujK5a4oVbaefoJxezLzsDgLcNJeITvC6yrfwYeT9la+edCK42j5QpEQSQCZgTKapXvnQIdgZwvRaZug==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "license": "MIT", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-pretty": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.2.2.tgz", + "integrity": "sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.2", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^4.0.1", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", + "license": "MIT" + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "license": "MIT" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "license": "ISC" + }, + "node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "license": "BSD-3-Clause" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/should-proxy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/should-proxy/-/should-proxy-1.0.4.tgz", + "integrity": "sha512-RPQhIndEIVUCjkfkQ6rs6sOR6pkxJWCNdxtfG5pP0RVgUYbK5911kLTF0TNcCC0G3YCGd492rMollFT2aTd9iQ==", + "license": "MIT" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/sonic-boom": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz", + "integrity": "sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/streamx": { + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.2.tgz", + "integrity": "sha512-aDGDLU+j9tJcUdPGOaHmVF1u/hhI+CsGkT02V3OKlHDV7IukOI+nTWAGkiZEKCO35rWN1wIr4tS7YFr1f4qSvA==", + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "license": "MIT" + }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/text-decoder": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", + "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==", + "license": "Apache-2.0" + }, + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unxhr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz", + "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==", + "license": "MIT", + "engines": { + "node": ">=8.11" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "license": "MIT", + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yauzl": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz", + "integrity": "sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3" + } + } + } +} diff --git a/doc/package.json b/doc/package.json new file mode 100644 index 000000000..51deee865 --- /dev/null +++ b/doc/package.json @@ -0,0 +1,10 @@ +{ + "dependencies": { + "@asciidoctor/tabs": "^1.0.0-beta.6", + "@cppalliance/antora-cpp-reference-extension": "^0.0.5", + "@cppalliance/antora-cpp-tagfiles-extension": "^0.0.4", + "@cppalliance/antora-playbook-macros-extension": "^0.0.2", + "@cppalliance/asciidoctor-boost-links": "^0.0.2", + "antora": "^3.1.9" + } +} From a3e016ca2b79416ddd2f4b9a351978dbb1ef0a24 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 15 Jan 2025 18:03:43 +0100 Subject: [PATCH 05/50] mrdocs 0.0.3 changes --- doc/modules/ROOT/nav.adoc | 2 +- doc/mrdocs.cpp | 71 +--- doc/mrdocs.yml | 26 +- doc/package-lock.json | 397 ++++++++++--------- doc/package.json | 6 +- include/boost/mysql/detail/output_string.hpp | 22 +- 6 files changed, 251 insertions(+), 273 deletions(-) diff --git a/doc/modules/ROOT/nav.adoc b/doc/modules/ROOT/nav.adoc index 2917581d5..1b7791f9f 100644 --- a/doc/modules/ROOT/nav.adoc +++ b/doc/modules/ROOT/nav.adoc @@ -1,4 +1,4 @@ * xref:index.adoc[Introduction] * xref:overview.adoc[] -* xref:reference:boost/mysql.adoc[Reference] +* xref:reference:index.adoc[Reference] diff --git a/doc/mrdocs.cpp b/doc/mrdocs.cpp index 542d9a99f..6df73944d 100644 --- a/doc/mrdocs.cpp +++ b/doc/mrdocs.cpp @@ -1,66 +1,9 @@ // +// Copyright (c) 2019-2024 Ruben Perez Hidalgo (rubenperez038 at gmail dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// -// #include - -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -#include - -// // #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// // #include -// // #include -// #include -// #include -// #include -// // #include -// // #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// // #include -// // #include -// #include -// #include -// #include -// // #include -// // #include -// #include -// #include +#define BOOST_MYSQL_SEPARATE_COMPILATION +#include diff --git a/doc/mrdocs.yml b/doc/mrdocs.yml index 94390ce8d..236dd9d87 100644 --- a/doc/mrdocs.yml +++ b/doc/mrdocs.yml @@ -1,21 +1,15 @@ -# $schema: https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json # yaml-language-server: $schema=https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json source-root: .. compilation-database: ./CMakeLists.txt -cmake: '-DCMAKE_CXX_STANDARD=23 -DBOOST_INCLUDE_LIBRARIES=mysql' multipage: true - -filters: - symbols: - exclude: - - 'boost::system::*' - - 'boost::asio::*' - - 'boost::mysql::detail' - - 'boost::mysql::mysql_collations' - include: - - 'boost::mysql' -referenced-declarations: never -inaccessible-members: never -inaccessible-bases: never -verbose: true \ No newline at end of file +include-symbols: + - 'boost::mysql::**' +exclude-symbols: + - 'boost::mysql::detail' + - 'boost::mysql::mysql_server_errc' + - 'boost::mysql::mariadb_server_errc' + - 'boost::mysql::mysql_collations' + - 'boost::mysql::mariadb_collations' +verbose: true +use-system-libc: true \ No newline at end of file diff --git a/doc/package-lock.json b/doc/package-lock.json index b96e57f55..041a7dc71 100644 --- a/doc/package-lock.json +++ b/doc/package-lock.json @@ -6,21 +6,21 @@ "": { "dependencies": { "@asciidoctor/tabs": "^1.0.0-beta.6", - "@cppalliance/antora-cpp-reference-extension": "^0.0.5", + "@cppalliance/antora-cpp-reference-extension": "^0.0.6", "@cppalliance/antora-cpp-tagfiles-extension": "^0.0.4", "@cppalliance/antora-playbook-macros-extension": "^0.0.2", "@cppalliance/asciidoctor-boost-links": "^0.0.2", - "antora": "^3.1.9" + "antora": "^3.1.10" } }, "node_modules/@antora/asciidoc-loader": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.1.9.tgz", - "integrity": "sha512-flE27T2yI8TX7rUNjbBHWN3iR6s+kBuRBbUPncUFcWjx6mXzll8JLiTkxnc8JXHGzgKlveT+t5AkPYGACLfasg==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.1.10.tgz", + "integrity": "sha512-np0JkOV37CK7V4eDZUZXf4fQuCKYW3Alxl8FlyzBevXi2Ujv29O82JLbHbv1cyTsvGkGNNB+gzJIx9XBsQ7+Nw==", "license": "MPL-2.0", "dependencies": { - "@antora/logger": "3.1.9", - "@antora/user-require-helper": "~2.0", + "@antora/logger": "3.1.10", + "@antora/user-require-helper": "~3.0", "@asciidoctor/core": "~2.2" }, "engines": { @@ -28,14 +28,14 @@ } }, "node_modules/@antora/cli": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.1.9.tgz", - "integrity": "sha512-kCUqWX3G/9Pvf8SWZ45ioHwWdOc9uamy2E5/FFwyGiTeu4ubNbadOauLVvMzSZHUxVDnGxXwCsmmQ2HwM919ew==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.1.10.tgz", + "integrity": "sha512-gp8u9aVM0w1DtWSsB5PwvEfFYKrooPENLhN58RAfdgTrcsTsWw+CDysFZPgEaHB0Y1ZbanR82ZH/f6JVKGcZfQ==", "license": "MPL-2.0", "dependencies": { - "@antora/logger": "3.1.9", - "@antora/playbook-builder": "3.1.9", - "@antora/user-require-helper": "~2.0", + "@antora/logger": "3.1.10", + "@antora/playbook-builder": "3.1.10", + "@antora/user-require-helper": "~3.0", "commander": "~11.1" }, "bin": { @@ -46,14 +46,14 @@ } }, "node_modules/@antora/content-aggregator": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.1.9.tgz", - "integrity": "sha512-g+UzevPSm5c4R0j1U9uysJfdIUfp++QOHIEBmqjhfx/aIEnOL70zA+WF55Mm+syAfzU3877puI27sOp8qtPglw==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.1.10.tgz", + "integrity": "sha512-OT6ZcCA7LrtNfrAZUr3hFh+Z/1isKpsfnqFjCDC66NEMqIyzJO99jq0CM66rYlYhyX7mb5BwEua8lHcwpOXNow==", "license": "MPL-2.0", "dependencies": { - "@antora/expand-path-helper": "~2.0", - "@antora/logger": "3.1.9", - "@antora/user-require-helper": "~2.0", + "@antora/expand-path-helper": "~3.0", + "@antora/logger": "3.1.10", + "@antora/user-require-helper": "~3.0", "braces": "~3.0", "cache-directory": "~2.0", "fast-glob": "~3.3", @@ -71,14 +71,48 @@ "node": ">=16.0.0" } }, + "node_modules/@antora/content-aggregator/node_modules/@antora/expand-path-helper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz", + "integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==", + "license": "MPL-2.0", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/content-aggregator/node_modules/isomorphic-git": { + "version": "1.25.10", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.25.10.tgz", + "integrity": "sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==", + "license": "MIT", + "dependencies": { + "async-lock": "^1.4.1", + "clean-git-ref": "^2.0.1", + "crc-32": "^1.2.0", + "diff3": "0.0.3", + "ignore": "^5.1.4", + "minimisted": "^2.0.0", + "pako": "^1.0.10", + "pify": "^4.0.1", + "readable-stream": "^3.4.0", + "sha.js": "^2.4.9", + "simple-get": "^4.0.1" + }, + "bin": { + "isogit": "cli.cjs" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@antora/content-classifier": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.1.9.tgz", - "integrity": "sha512-PVJqwp5uvZE1PlpeJtb0p6al75fN+fmXGIC6DHcKysRnr0xo+sgz8X2r4mnNWdTWRqum2yVigMmmuXYTg3cJlQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.1.10.tgz", + "integrity": "sha512-3JJl4IIiTX00v/MirK603NoqIcHjGYAaRWt3Q4U03tI1Fv2Aho/ypO3FE45069jFf0Dx2uDJfp5kapb9gaIjdQ==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.1.9", - "@antora/logger": "3.1.9", + "@antora/asciidoc-loader": "3.1.10", + "@antora/logger": "3.1.10", "mime-types": "~2.1", "vinyl": "~3.0" }, @@ -87,12 +121,12 @@ } }, "node_modules/@antora/document-converter": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.1.9.tgz", - "integrity": "sha512-pH7tQaIjcPsFdYkaBEAvA/5ki04IQwQGHoR+2jadKdMl6P+J5KA1VzNnMgyIL6gHn7auJIkoOKadfItRB9lHGQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.1.10.tgz", + "integrity": "sha512-qi9ctgcKal8tZtWflVo66w+4zCJoBmUKRV+eA9aRRR09KDdU9r514vu1adWNgniPppISr90zD13V5l2JUy/2CQ==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.1.9" + "@antora/asciidoc-loader": "3.1.10" }, "engines": { "node": ">=16.0.0" @@ -108,13 +142,13 @@ } }, "node_modules/@antora/file-publisher": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.1.9.tgz", - "integrity": "sha512-C0VwVjuFbE1CVpZDgwYR1gZCNr1tMw5vueyF9wHZH0KCqAsp9iwo7bwj8wKWMPogxcxdYhnAvtDJnYmYFCuDWQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.1.10.tgz", + "integrity": "sha512-DPR/0d1P+kr3qV4T0Gh81POEO/aCmNWIp/oLUYAhr0HHOcFzgpTUUoLStgcYynZPFRIB7EYKSab+oYSCK17DGA==", "license": "MPL-2.0", "dependencies": { - "@antora/expand-path-helper": "~2.0", - "@antora/user-require-helper": "~2.0", + "@antora/expand-path-helper": "~3.0", + "@antora/user-require-helper": "~3.0", "vinyl": "~3.0", "yazl": "~2.5" }, @@ -122,13 +156,22 @@ "node": ">=16.0.0" } }, + "node_modules/@antora/file-publisher/node_modules/@antora/expand-path-helper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz", + "integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==", + "license": "MPL-2.0", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@antora/logger": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.1.9.tgz", - "integrity": "sha512-MKuANodcX0lfRyiB+Rxl/Kv7UOxc2glzTYFoIoBB7uzxF0A+AhvUJDmpGQFRFN2ihxy99N3nLJmZpDebwXyE+A==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.1.10.tgz", + "integrity": "sha512-WSuIxEP2tVrhWtTj/sIrwBDjpi4ldB/1Kpiu4PXmY4/qeWP8thW6u8nXdwdDcWss5zqkZWjourvWKwVq7y8Wjg==", "license": "MPL-2.0", "dependencies": { - "@antora/expand-path-helper": "~2.0", + "@antora/expand-path-helper": "~3.0", "pino": "~9.2", "pino-pretty": "~11.2", "sonic-boom": "~4.0" @@ -137,25 +180,34 @@ "node": ">=16.0.0" } }, + "node_modules/@antora/logger/node_modules/@antora/expand-path-helper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz", + "integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==", + "license": "MPL-2.0", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@antora/navigation-builder": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.1.9.tgz", - "integrity": "sha512-zyl2yNjK31Dl6TRJgnoFb4Czwt9ar3wLTycAdMeZ+U/8YcAUHD8z7NCssPFFvZ0BbUr00NP+gbqDmCr6yz32NQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.1.10.tgz", + "integrity": "sha512-aLMK49nYsSB3mEZbLkmUXDAUYmscv2AFWu+5c3eqVGkQ6Wgyd79WQ6Bz3/TN9YqkzGL+PqGs0G39F0VQzD23Hw==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.1.9" + "@antora/asciidoc-loader": "3.1.10" }, "engines": { "node": ">=16.0.0" } }, "node_modules/@antora/page-composer": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.1.9.tgz", - "integrity": "sha512-X6Qj+J5dfFAGXoCAOaA+R6xRp8UoNMDHsRsB1dUTT2QNzk1Lrq6YkYyljdD2cxkWjLVqQ/pQSP+BJVNFGbqDAQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.1.10.tgz", + "integrity": "sha512-JoEg8J8HVsnPmAgUrYSGzf0C8rQefXyCi/18ucy0utyfUvlJNsZvUbGUPx62Het9p0JP0FkAz2MTLyDlNdArVg==", "license": "MPL-2.0", "dependencies": { - "@antora/logger": "3.1.9", + "@antora/logger": "3.1.10", "handlebars": "~4.7", "require-from-string": "~2.0" }, @@ -164,9 +216,9 @@ } }, "node_modules/@antora/playbook-builder": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.1.9.tgz", - "integrity": "sha512-MJ/OWz4pReC98nygGTXC5bOL/TDDtCYpSkHFBz2ST4L6tuM8rv9c5+cp//JkwY/QlTOvcuJ0f2xq4a7a5nI7Qw==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.1.10.tgz", + "integrity": "sha512-UB8UmRYfkKgActTUlotdVS4FKGjaZgTnSXE7Fns1xb3/3HRanWvI+Yze1OmCkGC33cTpoQFnSYp7ySEH8LaiBw==", "license": "MPL-2.0", "dependencies": { "@iarna/toml": "~2.2", @@ -179,9 +231,9 @@ } }, "node_modules/@antora/redirect-producer": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.1.9.tgz", - "integrity": "sha512-9OLwoMhqifsBxTebInh/5W16GdDsdj+YkKG3TiCASlAOYsDbuhbeRPFUlyKKSRkMrtKKnFgHR0Z3DNPXYlH2NQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.1.10.tgz", + "integrity": "sha512-IbWJGh6LmsxJQ821h0B9JfooofFZBgFLZxsbp/IoTLkBFGLFAY5tDRvB6rvubfNLRoSjM8VjEUXGqVLlwZOb+g==", "license": "MPL-2.0", "dependencies": { "vinyl": "~3.0" @@ -191,37 +243,37 @@ } }, "node_modules/@antora/site-generator": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.1.9.tgz", - "integrity": "sha512-YYESPG22tGX1CxRPSAr6acKILCO8JfGkM1OYc7Sw3D7ZvCy1YgZMAaTYK0T5yl9LXg+l/UZi1xq/Ej0qHnYQiw==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.1.10.tgz", + "integrity": "sha512-NCULYtwUjIyr5FGCymhfG/zDVUmZ6pfmCPorka8mAzo4/GDx1T7bgaRL9rEIyf2AMqcm7apQiAz03mpU4kucsw==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.1.9", - "@antora/content-aggregator": "3.1.9", - "@antora/content-classifier": "3.1.9", - "@antora/document-converter": "3.1.9", - "@antora/file-publisher": "3.1.9", - "@antora/logger": "3.1.9", - "@antora/navigation-builder": "3.1.9", - "@antora/page-composer": "3.1.9", - "@antora/playbook-builder": "3.1.9", - "@antora/redirect-producer": "3.1.9", - "@antora/site-mapper": "3.1.9", - "@antora/site-publisher": "3.1.9", - "@antora/ui-loader": "3.1.9", - "@antora/user-require-helper": "~2.0" + "@antora/asciidoc-loader": "3.1.10", + "@antora/content-aggregator": "3.1.10", + "@antora/content-classifier": "3.1.10", + "@antora/document-converter": "3.1.10", + "@antora/file-publisher": "3.1.10", + "@antora/logger": "3.1.10", + "@antora/navigation-builder": "3.1.10", + "@antora/page-composer": "3.1.10", + "@antora/playbook-builder": "3.1.10", + "@antora/redirect-producer": "3.1.10", + "@antora/site-mapper": "3.1.10", + "@antora/site-publisher": "3.1.10", + "@antora/ui-loader": "3.1.10", + "@antora/user-require-helper": "~3.0" }, "engines": { "node": ">=16.0.0" } }, "node_modules/@antora/site-mapper": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.1.9.tgz", - "integrity": "sha512-9FCObL+JIjBoby8z+beu2uuvAtCjm5EsEQt+16gCIMX1ktVP3W3gVsdRSvVcGcVEpizILFhMawkcQknZPUp5mg==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.1.10.tgz", + "integrity": "sha512-KY1j/y0uxC2Y7RAo4r4yKv9cgFm8aZoRylZXEODJnwj3tffbZ2ZdRzSWHp6fN0QX/Algrr9JNd9CWrjcj2f3Zw==", "license": "MPL-2.0", "dependencies": { - "@antora/content-classifier": "3.1.9", + "@antora/content-classifier": "3.1.10", "vinyl": "~3.0" }, "engines": { @@ -229,24 +281,24 @@ } }, "node_modules/@antora/site-publisher": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.1.9.tgz", - "integrity": "sha512-L5To8f4QswZliXu6yB6O7O8CuBbLctjNbxZqP3m0FP7VaOONp85ftzEq1BFEm4BXXSwH1n4ujZx1qGBHP9ooOQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.1.10.tgz", + "integrity": "sha512-G4xcUWvgth8oeEQwiu9U1cE0miQtYHwKHOobUbDBt2Y6LlC5H31zQQmAyvMwTsGRlvYRgLVtG6j9d6JBwQ6w9Q==", "license": "MPL-2.0", "dependencies": { - "@antora/file-publisher": "3.1.9" + "@antora/file-publisher": "3.1.10" }, "engines": { "node": ">=16.0.0" } }, "node_modules/@antora/ui-loader": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.1.9.tgz", - "integrity": "sha512-g0/9dRE5JVMYukIU3x+Rvr41bPdK3sUD2xQIAniRjE6usIZs1mEsTGshVKVEoOqqnSekXE85HVhybjNHsC+qbQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.1.10.tgz", + "integrity": "sha512-H1f5wI5a5HjLuE/Wexvc8NZy8w83Bhqjka7t1DbwOOqP+LyxFGLx/QbBVKdTtgFNDHVMtNBlplQq0ixeoTSh0A==", "license": "MPL-2.0", "dependencies": { - "@antora/expand-path-helper": "~2.0", + "@antora/expand-path-helper": "~3.0", "braces": "~3.0", "cache-directory": "~2.0", "fast-glob": "~3.3", @@ -262,16 +314,34 @@ "node": ">=16.0.0" } }, + "node_modules/@antora/ui-loader/node_modules/@antora/expand-path-helper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz", + "integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==", + "license": "MPL-2.0", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@antora/user-require-helper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-2.0.0.tgz", - "integrity": "sha512-5fMfBZfw4zLoFdDAPMQX6Frik90uvfD8rXOA4UpXPOUikkX4uT1Rk6m0/4oi8oS3fcjiIl0k/7Nc+eTxW5TcQQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-3.0.0.tgz", + "integrity": "sha512-KIXb8WYhnrnwH7Jj21l1w+et9k5GvcgcqvLOwxqWLEd0uVZOiMFdqFjqbVm3M+zcrs1JXWMeh2LLvxBbQs3q/Q==", "license": "MPL-2.0", "dependencies": { - "@antora/expand-path-helper": "~2.0" + "@antora/expand-path-helper": "~3.0" }, "engines": { - "node": ">=10.17.0" + "node": ">=16.0.0" + } + }, + "node_modules/@antora/user-require-helper/node_modules/@antora/expand-path-helper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz", + "integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==", + "license": "MPL-2.0", + "engines": { + "node": ">=16.0.0" } }, "node_modules/@asciidoctor/core": { @@ -299,9 +369,9 @@ } }, "node_modules/@cppalliance/antora-cpp-reference-extension": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@cppalliance/antora-cpp-reference-extension/-/antora-cpp-reference-extension-0.0.5.tgz", - "integrity": "sha512-wSJgtb6FF/s3n9ex7HT7dFHimzaLLvkcNsy0CtL74chOGnAXbQlmuK5Jfw0BvgkdBtaazekgRC4lh/Gktw2aFw==", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@cppalliance/antora-cpp-reference-extension/-/antora-cpp-reference-extension-0.0.6.tgz", + "integrity": "sha512-Weud5Cn9KAoU3+fSA4IZM7THAEA8VPhclH7EfU6SiKSp/Iy92vSItpZioTmVrn0DIVo9tIxxrJXBp5GpSFk6hg==", "license": "BSL-1.0", "dependencies": { "@antora/expand-path-helper": "^2.0.0", @@ -309,33 +379,8 @@ "cache-directory": "^2.0.0", "fast-glob": "^3.3.2", "isomorphic-git": "^1.27.1", - "js-yaml": "^4.1.0" - } - }, - "node_modules/@cppalliance/antora-cpp-reference-extension/node_modules/isomorphic-git": { - "version": "1.27.2", - "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.27.2.tgz", - "integrity": "sha512-nCiz+ieOkWb5kDJSSckDTiMjTcgkxqH2xuiQmw1Y6O/spwx4d6TKYSfGCd4f71HGvUYcRSUGqJEI+3uN6UQlOw==", - "license": "MIT", - "dependencies": { - "async-lock": "^1.4.1", - "clean-git-ref": "^2.0.1", - "crc-32": "^1.2.0", - "diff3": "0.0.3", - "ignore": "^5.1.4", - "minimisted": "^2.0.0", - "pako": "^1.0.10", - "path-browserify": "^1.0.1", - "pify": "^4.0.1", - "readable-stream": "^3.4.0", - "sha.js": "^2.4.9", - "simple-get": "^4.0.1" - }, - "bin": { - "isogit": "cli.cjs" - }, - "engines": { - "node": ">=12" + "js-yaml": "^4.1.0", + "semver": "^7.6.3" } }, "node_modules/@cppalliance/antora-cpp-tagfiles-extension": { @@ -351,32 +396,6 @@ "isomorphic-git": "^1.27.1" } }, - "node_modules/@cppalliance/antora-cpp-tagfiles-extension/node_modules/isomorphic-git": { - "version": "1.27.2", - "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.27.2.tgz", - "integrity": "sha512-nCiz+ieOkWb5kDJSSckDTiMjTcgkxqH2xuiQmw1Y6O/spwx4d6TKYSfGCd4f71HGvUYcRSUGqJEI+3uN6UQlOw==", - "license": "MIT", - "dependencies": { - "async-lock": "^1.4.1", - "clean-git-ref": "^2.0.1", - "crc-32": "^1.2.0", - "diff3": "0.0.3", - "ignore": "^5.1.4", - "minimisted": "^2.0.0", - "pako": "^1.0.10", - "path-browserify": "^1.0.1", - "pify": "^4.0.1", - "readable-stream": "^3.4.0", - "sha.js": "^2.4.9", - "simple-get": "^4.0.1" - }, - "bin": { - "isogit": "cli.cjs" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@cppalliance/antora-playbook-macros-extension": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/@cppalliance/antora-playbook-macros-extension/-/antora-playbook-macros-extension-0.0.2.tgz", @@ -446,13 +465,13 @@ } }, "node_modules/antora": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/antora/-/antora-3.1.9.tgz", - "integrity": "sha512-MSNXZQWeM8jKZ9v8Nby4DTMoaMzWo6YnDw3etphFip1E56/prSAgbuJU7hcUoQg1NfOJNhiiseGI6wZR5v4u6g==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/antora/-/antora-3.1.10.tgz", + "integrity": "sha512-FcXPfqxi5xrGF2fTrFiiau45q8w0bzRcnfk97nxvpvztPDHX/lUOrBF/GpaGl1JT5K085VkI3/dbxTlvWK1jjw==", "license": "MPL-2.0", "dependencies": { - "@antora/cli": "3.1.9", - "@antora/site-generator": "3.1.9" + "@antora/cli": "3.1.10", + "@antora/site-generator": "3.1.10" }, "bin": { "antora": "bin/antora" @@ -502,9 +521,9 @@ } }, "node_modules/axios": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", - "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -512,6 +531,12 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "license": "Apache-2.0" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -519,9 +544,9 @@ "license": "MIT" }, "node_modules/bare-events": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", - "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", "license": "Apache-2.0", "optional": true }, @@ -770,16 +795,16 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -801,9 +826,9 @@ "license": "MIT" }, "node_modules/fast-xml-parser": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", - "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.1.tgz", + "integrity": "sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w==", "funding": [ { "type": "github", @@ -823,9 +848,9 @@ } }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -1035,9 +1060,9 @@ } }, "node_modules/isomorphic-git": { - "version": "1.25.10", - "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.25.10.tgz", - "integrity": "sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.29.0.tgz", + "integrity": "sha512-zWGqk8901cicvVEhVpN76AwKrS/TzHak2NQCtNXIAavpMIy/yqh+d/JtC9A8AUKZAauUdOyEWKI29tuCLAL+Zg==", "license": "MIT", "dependencies": { "async-lock": "^1.4.1", @@ -1047,6 +1072,7 @@ "ignore": "^5.1.4", "minimisted": "^2.0.0", "pako": "^1.0.10", + "path-browserify": "^1.0.1", "pify": "^4.0.1", "readable-stream": "^3.4.0", "sha.js": "^2.4.9", @@ -1309,9 +1335,9 @@ } }, "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", @@ -1350,9 +1376,9 @@ } }, "node_modules/pino-pretty/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", @@ -1558,6 +1584,18 @@ "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", "license": "BSD-3-Clause" }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -1650,9 +1688,9 @@ } }, "node_modules/streamx": { - "version": "2.20.2", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.2.tgz", - "integrity": "sha512-aDGDLU+j9tJcUdPGOaHmVF1u/hhI+CsGkT02V3OKlHDV7IukOI+nTWAGkiZEKCO35rWN1wIr4tS7YFr1f4qSvA==", + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz", + "integrity": "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==", "license": "MIT", "dependencies": { "fast-fifo": "^1.3.2", @@ -1700,10 +1738,13 @@ } }, "node_modules/text-decoder": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", - "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==", - "license": "Apache-2.0" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } }, "node_modules/thread-stream": { "version": "3.1.0", diff --git a/doc/package.json b/doc/package.json index 51deee865..ca9923142 100644 --- a/doc/package.json +++ b/doc/package.json @@ -1,10 +1,10 @@ { "dependencies": { "@asciidoctor/tabs": "^1.0.0-beta.6", - "@cppalliance/antora-cpp-reference-extension": "^0.0.5", + "@cppalliance/antora-cpp-reference-extension": "^0.0.6", "@cppalliance/antora-cpp-tagfiles-extension": "^0.0.4", "@cppalliance/antora-playbook-macros-extension": "^0.0.2", "@cppalliance/asciidoctor-boost-links": "^0.0.2", - "antora": "^3.1.9" + "antora": "^3.1.10" } -} +} \ No newline at end of file diff --git a/include/boost/mysql/detail/output_string.hpp b/include/boost/mysql/detail/output_string.hpp index 4e4cf0931..1c08e4c1e 100644 --- a/include/boost/mysql/detail/output_string.hpp +++ b/include/boost/mysql/detail/output_string.hpp @@ -40,18 +40,8 @@ concept output_string = std::movable && requires(T& t, const char* data, std: class output_string_ref { - using append_fn_t = void (*)(void*, const char*, std::size_t); - - append_fn_t append_fn_; - void* container_; - - template - static void do_append(void* container, const char* data, std::size_t size) - { - static_cast(container)->append(data, size); - } - public: + using append_fn_t = void (*)(void*, const char*, std::size_t); output_string_ref(append_fn_t append_fn, void* container) noexcept : append_fn_(append_fn), container_(container) { @@ -68,6 +58,16 @@ class output_string_ref if (data.size() > 0u) append_fn_(container_, data.data(), data.size()); } + +private: + append_fn_t append_fn_; + void* container_; + + template + static void do_append(void* container, const char* data, std::size_t size) + { + static_cast(container)->append(data, size); + } }; } // namespace detail From 2e9a33490007e3fd0f991be7b22d8ad8b1bc578c Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 15 Jan 2025 18:28:06 +0100 Subject: [PATCH 06/50] Fix include patterns --- doc/mrdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/mrdocs.yml b/doc/mrdocs.yml index 236dd9d87..4ec7d2869 100644 --- a/doc/mrdocs.yml +++ b/doc/mrdocs.yml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json -source-root: .. +source-root: ../include compilation-database: ./CMakeLists.txt multipage: true include-symbols: From 83e89b08f7ffde88941324ac2e365839a5d91ca2 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 15 Jan 2025 18:33:14 +0100 Subject: [PATCH 07/50] Header file links --- doc/mrdocs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/mrdocs.yml b/doc/mrdocs.yml index 4ec7d2869..5767d7bbf 100644 --- a/doc/mrdocs.yml +++ b/doc/mrdocs.yml @@ -12,4 +12,5 @@ exclude-symbols: - 'boost::mysql::mysql_collations' - 'boost::mysql::mariadb_collations' verbose: true -use-system-libc: true \ No newline at end of file +use-system-libc: true +base-url: https://github.com/boostorg/mysql/blob/master/include/ From de6b7b6dbb59adb01f9db8b23f3f13a47d73ff2a Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 15 Jan 2025 19:43:24 +0100 Subject: [PATCH 08/50] Sanitize escape_string --- include/boost/mysql/escape_string.hpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/include/boost/mysql/escape_string.hpp b/include/boost/mysql/escape_string.hpp index a07b5ee49..496371699 100644 --- a/include/boost/mysql/escape_string.hpp +++ b/include/boost/mysql/escape_string.hpp @@ -44,39 +44,40 @@ enum class quoting_context : char * block for composing client-side queries with runtime string values without * incurring in SQL injection vulnerabilities. * If you can, prefer using higher-level functions like \ref format_sql. - * \n + * * Escaping rules are different depending on the context a string is * being used in. `quot_ctx` identifies where the string will appear in - * a query. Possible values are: \n + * a query. Possible values are: + * * \li \ref quoting_context::double_quote : the string is surrounded by * double quotes. * \li \ref quoting_context::single_quote : the string is surrounded by * single quotes. * \li \ref quoting_context::backtick : the string is surrounded by * backticks, as happens when escaping identifiers. - * \n + * * By default, MySQL treats backslash characters as escapes in string values - * (for instance, the string `"\n"` is treated as a newline). This behavior is + * (for instance, the string `"\\n"` is treated as a newline). This behavior is * enabled by default, but can be disabled by enabling the - * `NO_BACKSLASH_ESCAPES` + * NO_BACKSLASH_ESCAPES * SQL mode. When enabled, backslashes no longer have a special meaning, which changes * the escaping rules. `opts.backslash_escapes` should be set to `true` if backslashes represent * escapes (i.e. `NO_BACKSLASH_ESCAPES` is not enabled), and `false` otherwise. - * \n + * * MySQL can be configured to treat double-quoted strings as identifiers instead of values. * This is enabled by activating the - * `ANSI_QUOTES` or - * `ANSI` SQL modes. + * ANSI_QUOTES or + * ANSI SQL modes. * Servers don't report whether this mode is enabled to clients. * This SQL mode is not directly supported by this function. - * \n + * * `opts.charset` should identify the connection's character set (as given by the * `character_set_client` session variable). The character set is used to iterate * over the input string. It must be an ASCII-compatible character set (like \ref utf8mb4_charset). * All character sets allowed by `character_set_client` satisfy this requirement. - * \n + * * You can use \ref any_connection::format_opts to retrieve an `opts` value suitable for your connection. - * \n + * * \par Exception safety * Basic guarantee. Memory allocations may throw. * From 85d87bc083dd1786c278a57d374c53389a2cb33d Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 15 Jan 2025 20:07:08 +0100 Subject: [PATCH 09/50] Exclude format_context_base protected functions --- doc/mrdocs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/mrdocs.yml b/doc/mrdocs.yml index 5767d7bbf..12865ad58 100644 --- a/doc/mrdocs.yml +++ b/doc/mrdocs.yml @@ -6,6 +6,8 @@ multipage: true include-symbols: - 'boost::mysql::**' exclude-symbols: + - boost::mysql::format_context_base::format_context_base + - boost::mysql::format_context_base::assign - 'boost::mysql::detail' - 'boost::mysql::mysql_server_errc' - 'boost::mysql::mariadb_server_errc' From 1fd97ce4cdc827c5c4a9bd31a9cf45a7f1582719 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 15 Jan 2025 20:09:21 +0100 Subject: [PATCH 10/50] Remove \n from any_address --- include/boost/mysql/any_address.hpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/include/boost/mysql/any_address.hpp b/include/boost/mysql/any_address.hpp index 9ae0bcc31..e6439aae4 100644 --- a/include/boost/mysql/any_address.hpp +++ b/include/boost/mysql/any_address.hpp @@ -51,7 +51,7 @@ struct host_and_port * \brief Contains a UNIX-socket domain path. * \details * This type is defined in all systems, regardless of their UNIX socket support. - * \n + * * This is an owning type with value semantics. */ struct unix_path @@ -69,14 +69,13 @@ struct unix_path * A variant-like type that can represent the network address of a MySQL server, * regardless of the transport type being used. It can contain either a host * and port (to connect using TCP) or a UNIX path (to connect using UNIX domain sockets). - * \n + * * This class may be extended in the future to accomodate Windows named pipes. - * \n + * * This type has value semantics: it is owning and regular. */ class any_address { -#ifndef BOOST_MYSQL_DOXYGEN struct { address_type type; @@ -89,7 +88,6 @@ class any_address { } friend struct detail::access; -#endif public: /** @@ -231,12 +229,12 @@ class any_address * Destroys the current contained object and constructs a new * host and port from the passed components. This function can * change the underlying type of object held by `*this`. - * \n + * * The constructed object has `this->type() == address_type::host_and_port`, * `this->hostname() == hostname` and `this->port() == port`. - * \n + * * An empty hostname is equivalent to `localhost`. - * \n + * * \par Exception safety * Basic guarantee. Memory allocations may throw. * \par Object lifetimes @@ -255,10 +253,10 @@ class any_address * Destroys the current contained object and constructs a new * UNIX socket path from the passed value. This function can * change the underlying type of object held by `*this`. - * \n + * * The constructed object has `this->type() == address_type::unix_path` and * `this->unix_socket_path() == path`. - * \n + * * \par Exception safety * Basic guarantee. Memory allocations may throw. * \par Object lifetimes From dd67d7ee2ea42549c631239de68815ba1de11345 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Mon, 27 Jan 2025 17:08:33 +0100 Subject: [PATCH 11/50] Remove legacy \n and most of BOOST_MYSQL_DOXYGEN --- include/boost/mysql/any_connection.hpp | 172 +++++++++--------- include/boost/mysql/character_set.hpp | 15 +- include/boost/mysql/client_errc.hpp | 2 - include/boost/mysql/column_type.hpp | 2 +- include/boost/mysql/common_server_errc.hpp | 4 +- include/boost/mysql/connection.hpp | 84 ++++----- include/boost/mysql/connection_pool.hpp | 18 +- include/boost/mysql/constant_string_view.hpp | 8 +- include/boost/mysql/date.hpp | 14 +- include/boost/mysql/datetime.hpp | 14 +- include/boost/mysql/diagnostics.hpp | 2 - include/boost/mysql/execution_state.hpp | 7 +- include/boost/mysql/field.hpp | 4 +- include/boost/mysql/field_view.hpp | 8 +- include/boost/mysql/format_sql.hpp | 105 +++++------ include/boost/mysql/is_fatal_error.hpp | 2 +- include/boost/mysql/metadata.hpp | 10 +- include/boost/mysql/pfr.hpp | 12 +- include/boost/mysql/pipeline.hpp | 9 +- include/boost/mysql/pool_params.hpp | 16 +- include/boost/mysql/results.hpp | 23 +-- include/boost/mysql/resultset.hpp | 2 +- include/boost/mysql/resultset_view.hpp | 4 +- include/boost/mysql/row.hpp | 6 +- include/boost/mysql/row_view.hpp | 16 +- include/boost/mysql/rows.hpp | 10 +- include/boost/mysql/rows_view.hpp | 18 +- include/boost/mysql/sequence.hpp | 11 +- include/boost/mysql/statement.hpp | 37 ++-- .../boost/mysql/static_execution_state.hpp | 9 +- include/boost/mysql/static_results.hpp | 22 +-- include/boost/mysql/underlying_row.hpp | 12 +- include/boost/mysql/unix.hpp | 2 +- include/boost/mysql/unix_ssl.hpp | 2 +- include/boost/mysql/with_diagnostics.hpp | 2 - include/boost/mysql/with_params.hpp | 26 +-- 36 files changed, 310 insertions(+), 400 deletions(-) diff --git a/include/boost/mysql/any_connection.hpp b/include/boost/mysql/any_connection.hpp index 1fce2fd6b..01a9d0899 100644 --- a/include/boost/mysql/any_connection.hpp +++ b/include/boost/mysql/any_connection.hpp @@ -62,12 +62,12 @@ struct any_connection_params * \details * Relevant only for SSL connections (those that result on \ref * any_connection::uses_ssl returning `true`). - * \n + * * If the connection is configured to use TLS, an internal `asio::ssl::stream` * object will be created. If this member is set to a non-null value, * this internal object will be initialized using the passed context. * This is the only way to configure TLS options in `any_connection`. - * \n + * * If the connection is configured to use TLS and this member is `nullptr`, * an internal `asio::ssl::context` object with suitable default options * will be created. @@ -90,13 +90,14 @@ struct any_connection_params * \details * Attempting to read or write a protocol packet bigger than this size * will fail with a \ref client_errc::max_buffer_size_exceeded error. - * \n - * This effectively means: \n + * + * This effectively means: + * * - Each request sent to the server must be smaller than this value. * - Each individual row received from the server must be smaller than this value. * Note that when using `execute` or `async_execute`, results objects may * allocate memory beyond this limit if the total number of rows is high. - * \n + * * If you need to send or receive larger packets, you may need to adjust * your server's * `max_allowed_packet` @@ -136,8 +137,10 @@ struct any_connection_params * and have the expected exceptions thrown on error. * * \par Thread safety - * Distinct objects: safe. \n - * Shared objects: unsafe. \n + * Distinct objects: safe. + * + * Shared objects: unsafe. + * * This class is **not thread-safe**: for a single object, if you * call its member functions concurrently from separate threads, you will get a race condition. */ @@ -145,9 +148,7 @@ class any_connection { detail::connection_impl impl_; -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif BOOST_MYSQL_DECL static std::unique_ptr create_engine(asio::any_io_executor ex, asio::ssl::context* ctx); @@ -164,7 +165,7 @@ class any_connection * \details * The resulting connection has `this->get_executor() == ex`. Any internally required I/O objects * will be constructed using this executor. - * \n + * * You can configure extra parameters, like the SSL context and buffer sizes, by passing * an \ref any_connection_params object to this constructor. */ @@ -178,10 +179,10 @@ class any_connection * \details * The resulting connection has `this->get_executor() == ctx.get_executor()`. * Any internally required I/O objects will be constructed using this executor. - * \n + * * You can configure extra parameters, like the SSL context and buffer sizes, by passing * an \ref any_connection_params object to this constructor. - * \n + * * This function participates in overload resolution only if `ExecutionContext` * satisfies the `ExecutionContext` requirements imposed by Boost.Asio. */ @@ -238,7 +239,7 @@ class any_connection * \details * This function can be used to determine whether you are using a SSL * connection or not when using SSL negotiation. - * \n + * * This function always returns `false` * for connections that haven't been established yet. If the connection establishment fails, * the return value is undefined. @@ -255,17 +256,17 @@ class any_connection * This behavior can be disabled by activating the * `NO_BACKSLASH_ESCAPES` * SQL mode. - * \n + * * Every time an operation involving server communication completes, the server reports whether * this mode was activated or not as part of the response. Connections store this information * and make it available through this function. - * \n + * * \li If backslash are treated like escape characters, returns `true`. * \li If `NO_BACKSLASH_ESCAPES` has been activated, returns `false`. * \li If connection establishment hasn't happened yet, returns `true`. * \li Calling this function while an async operation that changes backslash behavior * is outstanding may return `true` or `false`. - * \n + * * This function does not involve server communication. * * \par Exception safety @@ -280,8 +281,9 @@ class any_connection * Deficiencies in the protocol can cause the character set to be unknown, though. * When the character set is known, this function returns * the character set currently in use. Otherwise, returns \ref client_errc::unknown_character_set. - * \n - * The following functions can modify the return value of this function: \n + * + * The following functions can modify the return value of this function: + * * \li Prior to connection, the character set is always unknown. * \li \ref connect and \ref async_connect may set the current character set * to a known value, depending on the requested collation. @@ -355,7 +357,7 @@ class any_connection * \brief Establishes a connection to a MySQL server. * \details * This function performs the following: - * \n + * * \li If a connection has already been established (by a previous call to \ref connect * or \ref async_connect), closes it at the transport layer (by closing any underlying socket) * and discards any protocol state associated to it. (If you require @@ -368,11 +370,11 @@ class any_connection * \li Performs the MySQL handshake to establish a session. If the * connection is configured to use TLS, the TLS handshake is performed as part of this step. * \li If any of the above steps fail, the TCP or UNIX socket connection is closed. - * \n + * * You can configure some options using the \ref connect_params struct. - * \n + * * The decision to use TLS or not is performed using the following: - * \n + * * \li If the transport is not TCP (`params.server_address.type() != address_type::host_and_port`), * the connection will never use TLS. * \li If the transport is TCP, and `params.ssl == ssl_mode::disable`, the connection will not use TLS. @@ -381,7 +383,7 @@ class any_connection * \li If the transport is TCP, and `params.ssl == ssl_mode::require`, the connection will always use TLS. * If the server doesn't support it, the operation will fail with \ref * client_errc::server_doesnt_support_ssl. - * \n + * * If `params.connection_collation` is within a set of well-known collations, this function * sets the current character set, such that \ref current_character_set returns a non-null value. * The default collation (`utf8mb4_general_ci`) is the only one guaranteed to be in the set of well-known @@ -450,9 +452,9 @@ class any_connection * If a string, it must be encoded using the connection's character set. * Any string parameters provided to \ref statement::bind should also be encoded * using the connection's character set. - * \n + * * After this operation completes successfully, `result.has_value() == true`. - * \n + * * Metadata in `result` will be populated according to `this->meta_mode()`. */ template @@ -476,7 +478,7 @@ class any_connection * \par Object lifetimes * If `CompletionToken` is a deferred completion token (e.g. `use_awaitable`), the caller is * responsible for managing `req`'s validity following these rules: - * \n + * * \li If `req` is `string_view`, the string pointed to by `req` * must be kept alive by the caller until the operation is initiated. * \li If `req` is a \ref bound_statement_tuple, and any of the parameters is a reference @@ -541,24 +543,24 @@ class any_connection * Writes the execution request and reads the initial server response and the column * metadata, but not the generated rows or subsequent resultsets, if any. * `st` may be either an \ref execution_state or \ref static_execution_state object. - * \n + * * After this operation completes, `st` will have * \ref execution_state::meta populated. * Metadata will be populated according to `this->meta_mode()`. - * \n + * * If the operation generated any rows or more than one resultset, these **must** be read (by using * \ref read_some_rows and \ref read_resultset_head) before engaging in any further network operation. * Otherwise, the results are undefined. - * \n + * * req may be either a type convertible to \ref string_view containing valid SQL * or a bound prepared statement, obtained by calling \ref statement::bind. * If a string, it must be encoded using the connection's character set. * Any string parameters provided to \ref statement::bind should also be encoded * using the connection's character set. - * \n + * * When using the static interface, this function will detect schema mismatches for the first * resultset. Further errors may be detected by \ref read_resultset_head and \ref read_some_rows. - * \n + * */ template < BOOST_MYSQL_EXECUTION_REQUEST ExecutionRequest, @@ -585,7 +587,7 @@ class any_connection * \par Object lifetimes * If `CompletionToken` is a deferred completion token (e.g. `use_awaitable`), the caller is * responsible for managing `req`'s validity following these rules: - * \n + * * \li If `req` is `string_view`, the string pointed to by `req` * must be kept alive by the caller until the operation is initiated. * \li If `req` is a \ref bound_statement_tuple, and any of the parameters is a reference @@ -655,7 +657,7 @@ class any_connection * \brief Prepares a statement server-side. * \details * `stmt` should be encoded using the connection's character set. - * \n + * * The returned statement has `valid() == true`. */ statement prepare_statement(string_view stmt, error_code& err, diagnostics& diag) @@ -721,7 +723,7 @@ class any_connection * \brief Closes a statement, deallocating it from the server. * \details * After this operation succeeds, `stmt` must not be used again for execution. - * \n + * * \par Preconditions * `stmt.valid() == true` */ @@ -784,12 +786,12 @@ class any_connection * The number of rows that will be read is unspecified. If the operation represented by `st` * has still rows to read, at least one will be read. If there are no more rows, or * `st.should_read_rows() == false`, returns an empty `rows_view`. - * \n + * * The number of rows that will be read depends on the connection's buffer size. The bigger the buffer, * the greater the batch size (up to a maximum). You can set the initial buffer size in the * constructor. The buffer may be * grown bigger by other read operations, if required. - * \n + * * The returned view points into memory owned by `*this`. It will be valid until * `*this` performs the next network operation or is destroyed. */ @@ -853,25 +855,25 @@ class any_connection * Reads a batch of rows of unspecified size into the storage given by `output`. * At most `output.size()` rows will be read. If the operation represented by `st` * has still rows to read, and `output.size() > 0`, at least one row will be read. - * \n + * * Returns the number of read rows. - * \n + * * If there are no more rows, or `st.should_read_rows() == false`, this function is a no-op and returns * zero. - * \n + * * The number of rows that will be read depends on the connection's buffer size. The bigger the buffer, * the greater the batch size (up to a maximum). You can set the initial buffer size in the * constructor. The buffer may be grown bigger by other read operations, if required. - * \n + * * Rows read by this function are owning objects, and don't hold any reference to * the connection's internal buffers (contrary what happens with the dynamic interface's counterpart). - * \n + * * The type `SpanElementType` must be the underlying row type for one of the types in the * `StaticRow` parameter pack (i.e., one of the types in `underlying_row_t...`). * The type must match the resultset that is currently being processed by `st`. For instance, * given `static_execution_state`, when reading rows for the second resultset, `SpanElementType` * must exactly be `underlying_row_t`. If this is not the case, a runtime error will be issued. - * \n + * * This function can report schema mismatches. */ template @@ -891,25 +893,25 @@ class any_connection * Reads a batch of rows of unspecified size into the storage given by `output`. * At most `output.size()` rows will be read. If the operation represented by `st` * has still rows to read, and `output.size() > 0`, at least one row will be read. - * \n + * * Returns the number of read rows. - * \n + * * If there are no more rows, or `st.should_read_rows() == false`, this function is a no-op and returns * zero. - * \n + * * The number of rows that will be read depends on the connection's buffer size. The bigger the buffer, * the greater the batch size (up to a maximum). You can set the initial buffer size in the * constructor. The buffer may be grown bigger by other read operations, if required. - * \n + * * Rows read by this function are owning objects, and don't hold any reference to * the connection's internal buffers (contrary what happens with the dynamic interface's counterpart). - * \n + * * The type `SpanElementType` must be the underlying row type for one of the types in the * `StaticRow` parameter pack (i.e., one of the types in `underlying_row_t...`). * The type must match the resultset that is currently being processed by `st`. For instance, * given `static_execution_state`, when reading rows for the second resultset, `SpanElementType` * must exactly be `underlying_row_t`. If this is not the case, a runtime error will be issued. - * \n + * * This function can report schema mismatches. */ template @@ -928,25 +930,25 @@ class any_connection * Reads a batch of rows of unspecified size into the storage given by `output`. * At most `output.size()` rows will be read. If the operation represented by `st` * has still rows to read, and `output.size() > 0`, at least one row will be read. - * \n + * * Returns the number of read rows. - * \n + * * If there are no more rows, or `st.should_read_rows() == false`, this function is a no-op and returns * zero. - * \n + * * The number of rows that will be read depends on the connection's buffer size. The bigger the buffer, * the greater the batch size (up to a maximum). You can set the initial buffer size in the * constructor. The buffer may be grown bigger by other read operations, if required. - * \n + * * Rows read by this function are owning objects, and don't hold any reference to * the connection's internal buffers (contrary what happens with the dynamic interface's counterpart). - * \n + * * The type `SpanElementType` must be the underlying row type for one of the types in the * `StaticRow` parameter pack (i.e., one of the types in `underlying_row_t...`). * The type must match the resultset that is currently being processed by `st`. For instance, * given `static_execution_state`, when reading rows for the second resultset, `SpanElementType` * must exactly be `underlying_row_t`. If this is not the case, a runtime error will be issued. - * \n + * * This function can report schema mismatches. * * \par Handler signature @@ -986,25 +988,25 @@ class any_connection * Reads a batch of rows of unspecified size into the storage given by `output`. * At most `output.size()` rows will be read. If the operation represented by `st` * has still rows to read, and `output.size() > 0`, at least one row will be read. - * \n + * * Returns the number of read rows. - * \n + * * If there are no more rows, or `st.should_read_rows() == false`, this function is a no-op and returns * zero. - * \n + * * The number of rows that will be read depends on the connection's buffer size. The bigger the buffer, * the greater the batch size (up to a maximum). You can set the initial buffer size in the * constructor. The buffer may be grown bigger by other read operations, if required. - * \n + * * Rows read by this function are owning objects, and don't hold any reference to * the connection's internal buffers (contrary what happens with the dynamic interface's counterpart). - * \n + * * The type `SpanElementType` must be the underlying row type for one of the types in the * `StaticRow` parameter pack (i.e., one of the types in `underlying_row_t...`). * The type must match the resultset that is currently being processed by `st`. For instance, * given `static_execution_state`, when reading rows for the second resultset, `SpanElementType` * must exactly be `underlying_row_t`. If this is not the case, a runtime error will be issued. - * \n + * * This function can report schema mismatches. * * \par Handler signature @@ -1051,18 +1053,18 @@ class any_connection * initial response message and metadata, if any. If the resultset indicates a failure * (e.g. the query associated to this resultset contained an error), this function will fail * with that error. - * \n + * * If `st.should_read_head() == false`, this function is a no-op. - * \n + * * `st` may be either an \ref execution_state or \ref static_execution_state object. - * \n + * * This function is only relevant when using multi-function operations with statements * that return more than one resultset. - * \n + * * When using the static interface, this function will detect schema mismatches for the resultset * currently being read. Further errors may be detected by subsequent invocations of this function * and by \ref read_some_rows. - * \n + * */ template void read_resultset_head(ExecutionStateType& st, error_code& err, diagnostics& diag) @@ -1124,15 +1126,15 @@ class any_connection * Sets the connection's character set by running a * `SET NAMES` * SQL statement, using the passed \ref character_set::name as the charset name to set. - * \n + * * This function will also update the value returned by \ref current_character_set, so * prefer using this function over raw SQL statements. - * \n + * * If the server was unable to set the character set to the requested value (e.g. because * the server does not support the requested charset), this function will fail, * as opposed to how \ref connect behaves when an unsupported collation is passed. * This is a limitation of MySQL servers. - * \n + * * You need to perform connection establishment for this function to succeed, since it * involves communicating with the server. * @@ -1156,7 +1158,7 @@ class any_connection /** * \copydoc set_character_set * \details - * \n + * * \par Handler signature * The handler signature for this operation is `void(boost::mysql::error_code)`. * @@ -1201,7 +1203,7 @@ class any_connection * \details * If the server is alive, this function will complete without error. * If it's not, it will fail with the relevant network or protocol error. - * \n + * * Note that ping requests are treated as any other type of request at the protocol * level, and won't be prioritized anyhow by the server. If the server is stuck * in a long-running query, the ping request won't be answered until the query is @@ -1221,7 +1223,7 @@ class any_connection /** * \copydoc ping * \details - * \n + * * \par Handler signature * The handler signature for this operation is `void(boost::mysql::error_code)`. * @@ -1258,21 +1260,21 @@ class any_connection * \brief Resets server-side session state, like variables and prepared statements. * \details * Resets all server-side state for the current session: - * \n + * * \li Rolls back any active transactions and resets autocommit mode. * \li Releases all table locks. * \li Drops all temporary tables. * \li Resets all session system variables to their default values (including the ones set by `SET * NAMES`) and clears all user-defined variables. * \li Closes all prepared statements. - * \n + * * A full reference on the affected session state can be found * here. - * \n - * \n + * + * * This function will not reset the current physical connection and won't cause re-authentication. * It is faster than closing and re-opening a connection. - * \n + * * The connection must be connected and authenticated before calling this function. * This function involves communication with the server, and thus may fail. * @@ -1283,7 +1285,7 @@ class any_connection * character set, \ref current_character_set will return `nullptr` after the operation succeeds. * We recommend always using \ref set_character_set or \ref async_set_character_set after calling this * function. - * \n + * * You can find the character set that your server will use after the reset by running: * \code * "SELECT @@global.character_set_client, @@global.character_set_results;" @@ -1306,7 +1308,7 @@ class any_connection /** * \copydoc reset_connection * \details - * \n + * * \par Handler signature * The handler signature for this operation is `void(boost::mysql::error_code)`. * @@ -1344,17 +1346,17 @@ class any_connection * \brief Cleanly closes the connection to the server. * \details * This function does the following: - * \n + * * \li Sends a quit request. This is required by the MySQL protocol, to inform * the server that we're closing the connection gracefully. * \li If the connection is using TLS (`this->uses_ssl() == true`), performs * the TLS shutdown. * \li Closes the transport-level connection (the TCP or UNIX socket). - * \n + * * Since this function involves writing a message to the server, it can fail. * Only use this function if you know that the connection is healthy and you want * to cleanly close it. - * \n + * * If you don't call this function, the destructor or successive connects will * perform a transport-layer close. This doesn't cause any resource leaks, but may * cause warnings to be written to the server logs. @@ -1415,17 +1417,17 @@ class any_connection * Runs the pipeline described by `req` and stores its response in `res`. * After the operation completes, `res` will have as many elements as stages * were in `req`, even if the operation fails. - * \n + * * Request stages are seen by the server as a series of unrelated requests. * As a consequence, all stages are always run, even if previous stages fail. - * \n + * * If all stages succeed, the operation completes successfully. Thus, there is no need to check * the per-stage error code in `res` if this operation completed successfully. - * \n + * * If any stage fails with a non-fatal error (as per \ref is_fatal_error), the result of the operation * is the first encountered error. You can check which stages succeeded and which ones didn't by * inspecting each stage in `res`. - * \n + * * If any stage fails with a fatal error, the result of the operation is the fatal error. * Successive stages will be marked as failed with the fatal error. The server may or may * not have processed such stages. diff --git a/include/boost/mysql/character_set.hpp b/include/boost/mysql/character_set.hpp index 25e60278b..2b54dc826 100644 --- a/include/boost/mysql/character_set.hpp +++ b/include/boost/mysql/character_set.hpp @@ -43,28 +43,21 @@ struct character_set * string encoded using this character set, and return the number of * bytes that the first character in the string spans, or 0 in case of error. * `r` is guaranteed to be non-empty (`r.size() > 0`). - * \n + * * In some character sets (like UTF-8), not all byte sequences represent * valid characters. If this function finds an invalid byte sequence while * trying to interpret the first character, it should return 0 to signal the error. - * \n + * * This function must not throw exceptions or have side effects. */ std::size_t (*next_char)(span); }; /// The utf8mb4 character set (the one you should use by default). -BOOST_INLINE_CONSTEXPR character_set utf8mb4_charset -#ifndef BOOST_MYSQL_DOXYGEN - {"utf8mb4", detail::next_char_utf8mb4} -#endif -; +BOOST_INLINE_CONSTEXPR character_set utf8mb4_charset{"utf8mb4", detail::next_char_utf8mb4}; /// The ascii character set. -BOOST_INLINE_CONSTEXPR character_set ascii_charset -#ifndef BOOST_MYSQL_DOXYGEN - {"ascii", detail::next_char_ascii}; -#endif +BOOST_INLINE_CONSTEXPR character_set ascii_charset{"ascii", detail::next_char_ascii}; ; /** diff --git a/include/boost/mysql/client_errc.hpp b/include/boost/mysql/client_errc.hpp index c9024f1b4..9212fca51 100644 --- a/include/boost/mysql/client_errc.hpp +++ b/include/boost/mysql/client_errc.hpp @@ -151,7 +151,6 @@ inline error_code make_error_code(client_errc error) } // namespace mysql -#ifndef BOOST_MYSQL_DOXYGEN namespace system { template <> @@ -160,7 +159,6 @@ struct is_error_code_enum<::boost::mysql::client_errc> static constexpr bool value = true; }; } // namespace system -#endif } // namespace boost diff --git a/include/boost/mysql/column_type.hpp b/include/boost/mysql/column_type.hpp index 62b645ee9..acfdf55c2 100644 --- a/include/boost/mysql/column_type.hpp +++ b/include/boost/mysql/column_type.hpp @@ -19,7 +19,7 @@ namespace mysql { * \brief Represents the database type of a MySQL column. * \details This represents a database type, as opposed to \ref field_kind, which represents a * C++ type. - *\n + * * Unless otherwise noted, the names in this enumeration * directly correspond to the names of the types you would use in * a `CREATE TABLE` statement to create a column of this type diff --git a/include/boost/mysql/common_server_errc.hpp b/include/boost/mysql/common_server_errc.hpp index 7a0dc5cc0..67a9b32a6 100644 --- a/include/boost/mysql/common_server_errc.hpp +++ b/include/boost/mysql/common_server_errc.hpp @@ -21,7 +21,7 @@ namespace mysql { * \brief Server-defined error codes, shared between MySQL and MariaDB. * \details The numeric value and semantics match the ones described in the MySQL documentation. * For more info, consult the error reference for - * MySQL 8.0, + * MySQL 8.0, * MySQL 5.7, * MariaDB. */ @@ -5111,7 +5111,6 @@ inline error_code make_error_code(common_server_errc error) } // namespace mysql -#ifndef BOOST_MYSQL_DOXYGEN namespace system { template <> @@ -5121,7 +5120,6 @@ struct is_error_code_enum<::boost::mysql::common_server_errc> }; } // namespace system -#endif } // namespace boost diff --git a/include/boost/mysql/connection.hpp b/include/boost/mysql/connection.hpp index 2a274c5fb..390d261c4 100644 --- a/include/boost/mysql/connection.hpp +++ b/include/boost/mysql/connection.hpp @@ -56,8 +56,10 @@ class static_execution_state; * executor used by this object is always the same as the underlying stream. * * \par Thread safety - * Distinct objects: safe. \n - * Shared objects: unsafe. \n + * Distinct objects: safe. + * + * Shared objects: unsafe. + * * This class is **not thread-safe**: for a single object, if you * call its member functions concurrently from separate threads, you will get a race condition. * @@ -123,10 +125,8 @@ class connection */ connection& operator=(connection&& rhs) = default; -#ifndef BOOST_MYSQL_DOXYGEN connection(const connection&) = delete; connection& operator=(const connection&) = delete; -#endif /// The executor type associated to this object. using executor_type = typename Stream::executor_type; @@ -160,7 +160,7 @@ class connection * \details * This function can be used to determine whether you are using a SSL * connection or not when using SSL negotiation. - * \n + * * This function always returns `false` if the underlying * stream does not support SSL. This function always returns `false` * for connections that haven't been @@ -185,13 +185,13 @@ class connection * \details * This function is only available if `Stream` satisfies the * `SocketStream` concept. - * \n + * * Connects the underlying stream and performs the handshake * with the server. The underlying stream is closed in case of error. Prefer * this function to \ref connection::handshake. - * \n + * * If using a SSL-capable stream, the SSL handshake will be performed by this function. - * \n + * * `endpoint` should be convertible to `Stream::lowest_layer_type::endpoint_type`. */ template @@ -292,7 +292,7 @@ class connection * Does not connect the underlying stream. * If the `Stream` template parameter fulfills the `SocketConnection` * requirements, use \ref connection::connect instead of this function. - * \n + * * If using a SSL-capable stream, the SSL handshake will be performed by this function. */ void handshake(const handshake_params& params, error_code& ec, diagnostics& diag) @@ -609,26 +609,26 @@ class connection * Reads a batch of rows of unspecified size into the storage given by `output`. * At most `output.size()` rows will be read. If the operation represented by `st` * has still rows to read, and `output.size() > 0`, at least one row will be read. - * \n + * * Returns the number of read rows. - * \n + * * If there are no more rows, or `st.should_read_rows() == false`, this function is a no-op and returns * zero. - * \n + * * The number of rows that will be read depends on the connection's buffer size. The bigger the buffer, * the greater the batch size (up to a maximum). You can set the initial buffer size in `connection`'s * constructor, using \ref buffer_params::initial_read_size. The buffer may be * grown bigger by other read operations, if required. - * \n + * * Rows read by this function are owning objects, and don't hold any reference to * the connection's internal buffers (contrary what happens with the dynamic interface's counterpart). - * \n + * * The type `SpanElementType` must be the underlying row type for one of the types in the * `StaticRow` parameter pack (i.e., one of the types in `underlying_row_t...`). * The type must match the resultset that is currently being processed by `st`. For instance, * given `static_execution_state`, when reading rows for the second resultset, `SpanElementType` * must exactly be `underlying_row_t`. If this is not the case, a runtime error will be issued. - * \n + * * This function can report schema mismatches. */ template @@ -648,26 +648,26 @@ class connection * Reads a batch of rows of unspecified size into the storage given by `output`. * At most `output.size()` rows will be read. If the operation represented by `st` * has still rows to read, and `output.size() > 0`, at least one row will be read. - * \n + * * Returns the number of read rows. - * \n + * * If there are no more rows, or `st.should_read_rows() == false`, this function is a no-op and returns * zero. - * \n + * * The number of rows that will be read depends on the connection's buffer size. The bigger the buffer, * the greater the batch size (up to a maximum). You can set the initial buffer size in `connection`'s * constructor, using \ref buffer_params::initial_read_size. The buffer may be * grown bigger by other read operations, if required. - * \n + * * Rows read by this function are owning objects, and don't hold any reference to * the connection's internal buffers (contrary what happens with the dynamic interface's counterpart). - * \n + * * The type `SpanElementType` must be the underlying row type for one of the types in the * `StaticRow` parameter pack (i.e., one of the types in `underlying_row_t...`). * The type must match the resultset that is currently being processed by `st`. For instance, * given `static_execution_state`, when reading rows for the second resultset, `SpanElementType` * must exactly be `underlying_row_t`. If this is not the case, a runtime error will be issued. - * \n + * * This function can report schema mismatches. */ template @@ -686,26 +686,26 @@ class connection * Reads a batch of rows of unspecified size into the storage given by `output`. * At most `output.size()` rows will be read. If the operation represented by `st` * has still rows to read, and `output.size() > 0`, at least one row will be read. - * \n + * * Returns the number of read rows. - * \n + * * If there are no more rows, or `st.should_read_rows() == false`, this function is a no-op and returns * zero. - * \n + * * The number of rows that will be read depends on the connection's buffer size. The bigger the buffer, * the greater the batch size (up to a maximum). You can set the initial buffer size in `connection`'s * constructor, using \ref buffer_params::initial_read_size. The buffer may be * grown bigger by other read operations, if required. - * \n + * * Rows read by this function are owning objects, and don't hold any reference to * the connection's internal buffers (contrary what happens with the dynamic interface's counterpart). - * \n + * * The type `SpanElementType` must be the underlying row type for one of the types in the * `StaticRow` parameter pack (i.e., one of the types in `underlying_row_t...`). * The type must match the resultset that is currently being processed by `st`. For instance, * given `static_execution_state`, when reading rows for the second resultset, `SpanElementType` * must exactly be `underlying_row_t`. If this is not the case, a runtime error will be issued. - * \n + * * This function can report schema mismatches. * * \par Handler signature @@ -746,26 +746,26 @@ class connection * Reads a batch of rows of unspecified size into the storage given by `output`. * At most `output.size()` rows will be read. If the operation represented by `st` * has still rows to read, and `output.size() > 0`, at least one row will be read. - * \n + * * Returns the number of read rows. - * \n + * * If there are no more rows, or `st.should_read_rows() == false`, this function is a no-op and returns * zero. - * \n + * * The number of rows that will be read depends on the connection's buffer size. The bigger the buffer, * the greater the batch size (up to a maximum). You can set the initial buffer size in `connection`'s * constructor, using \ref buffer_params::initial_read_size. The buffer may be * grown bigger by other read operations, if required. - * \n + * * Rows read by this function are owning objects, and don't hold any reference to * the connection's internal buffers (contrary what happens with the dynamic interface's counterpart). - * \n + * * The type `SpanElementType` must be the underlying row type for one of the types in the * `StaticRow` parameter pack (i.e., one of the types in `underlying_row_t...`). * The type must match the resultset that is currently being processed by `st`. For instance, * given `static_execution_state`, when reading rows for the second resultset, `SpanElementType` * must exactly be `underlying_row_t`. If this is not the case, a runtime error will be issued. - * \n + * * This function can report schema mismatches. * * \par Handler signature @@ -887,20 +887,20 @@ class connection * \brief Resets server-side session state, like variables and prepared statements. * \details * Resets all server-side state for the current session: - * \n + * * \li Rolls back any active transactions and resets autocommit mode. * \li Releases all table locks. * \li Drops all temporary tables. * \li Resets all session system variables to their default values (including the ones set by `SET * NAMES`) and clears all user-defined variables. * \li Closes all prepared statements. - * \n + * * A full reference on the affected session state can be found * here. - * \n + * * This function will not reset the current physical connection and won't cause re-authentication. * It is faster than closing and re-opening a connection. - * \n + * * The connection must be connected and authenticated before calling this function. * This function involves communication with the server, and thus may fail. * @@ -909,7 +909,7 @@ class connection * and not to the one specified during connection establishment. Some servers have `latin1` as their * default character set, which is not usually what you want. Use a `SET NAMES` statement after using * this function to be sure. - * \n + * * You can find the character set that your server will use after reset by running: * \code * "SELECT @@global.character_set_client, @@global.character_set_results;" @@ -932,7 +932,7 @@ class connection /** * \copydoc reset_connection * \details - * \n + * * \par Handler signature * The handler signature for this operation is `void(boost::mysql::error_code)`. * @@ -970,10 +970,10 @@ class connection * \brief Closes the connection to the server. * \details * This function is only available if `Stream` satisfies the `SocketStream` concept. - * \n + * * Sends a quit request, performs the TLS shutdown (if required) * and closes the underlying stream. Prefer this function to \ref connection::quit. - * \n + * */ void close(error_code& err, diagnostics& diag) { @@ -1046,7 +1046,7 @@ class connection * \details Sends a quit request to the MySQL server. If the connection is using SSL, * this function will also perform the SSL shutdown. You should * close the underlying physical connection after calling this function. - * \n + * * If the `Stream` template parameter fulfills the `SocketConnection` * requirements, use \ref connection::close instead of this function, * as it also takes care of closing the underlying stream. diff --git a/include/boost/mysql/connection_pool.hpp b/include/boost/mysql/connection_pool.hpp index ea8c98b95..329102526 100644 --- a/include/boost/mysql/connection_pool.hpp +++ b/include/boost/mysql/connection_pool.hpp @@ -62,10 +62,8 @@ namespace mysql { */ class pooled_connection { -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; friend class detail::basic_pool_impl; -#endif struct impl_t { @@ -131,10 +129,8 @@ class pooled_connection return *this; } -#ifndef BOOST_MYSQL_DOXYGEN pooled_connection(const pooled_connection&) = delete; pooled_connection& operator=(const pooled_connection&) = delete; -#endif /** * \brief Destructor. @@ -189,16 +185,16 @@ class pooled_connection * \details * Returns a connection to the pool and marks it as idle. This will * skip the \ref any_connection::async_reset_connection call to wipe session state. - * \n + * * This can provide a performance gain, but must be used with care. Failing to wipe * session state can lead to resource leaks (prepared statements not being released), * incorrect results and vulnerabilities (different logical operations interacting due * to leftover state). - * \n + * * Please read the documentation on \ref any_connection::async_reset_connection before * calling this function. If in doubt, don't use it, and leave the destructor return * the connection to the pool for you. - * \n + * * When this function returns, `*this` will own nothing (`this->valid() == false`). * * \par Preconditions @@ -280,7 +276,7 @@ class pooled_connection * * In summary: * - * - Distinct objects: safe. \n + * - Distinct objects: safe. * - Shared objects: unsafe. Setting \ref pool_params::thread_safe * to `true` makes some functions safe. * @@ -294,9 +290,7 @@ class connection_pool { std::shared_ptr impl_; -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif struct initiate_run : detail::initiation_base { @@ -413,10 +407,8 @@ class connection_pool { } -#ifndef BOOST_MYSQL_DOXYGEN connection_pool(const connection_pool&) = delete; connection_pool& operator=(const connection_pool&) = delete; -#endif /** * \brief Move-constructor. @@ -635,7 +627,7 @@ class connection_pool * to connect, this feature can help figuring out where the problem is. * * \par Preconditions - * `this->valid() == true` \n + * `this->valid() == true` * * \par Object lifetimes * While the operation is outstanding, the pool's internal data will be kept alive. diff --git a/include/boost/mysql/constant_string_view.hpp b/include/boost/mysql/constant_string_view.hpp index b15d98da2..f320bed9f 100644 --- a/include/boost/mysql/constant_string_view.hpp +++ b/include/boost/mysql/constant_string_view.hpp @@ -33,22 +33,20 @@ class constant_string_view { string_view impl_; -#ifndef BOOST_MYSQL_DOXYGEN constexpr constant_string_view(string_view value, int) noexcept : impl_(value) {} friend constexpr constant_string_view runtime(string_view) noexcept; -#endif public: /** * \brief Consteval constructor. * \details * Constructs a \ref string_view from the passed argument. - * \n + * * This function is `consteval`: it results in a compile-time error * if the passed value is not known at compile-time. You can bypass * this check using the \ref runtime function. This check works only * for C++20 and above. No check is performed for lower C++ standard versions. - * \n + * * This constructor is only considered if a \ref string_view can be constructed * from the passed value. * @@ -87,7 +85,7 @@ class constant_string_view * \details * You can use this function to bypass the `consteval` check performed by \ref constant_string_view * constructor. - * \n + * * Don't use this function unless you know what you are doing. `consteval` checks exist * for the sake of security. Make sure to only pass trusted values to the relevant API. * diff --git a/include/boost/mysql/date.hpp b/include/boost/mysql/date.hpp index 5974cb5f0..842c472da 100644 --- a/include/boost/mysql/date.hpp +++ b/include/boost/mysql/date.hpp @@ -29,11 +29,11 @@ namespace mysql { * \brief Type representing MySQL `DATE` data type. * \details * Represents a Gregorian date broken by its year, month and day components, without a time zone. - * \n + * * This type is close to the protocol and should not be used as a vocabulary type. * Instead, cast it to a `std::chrono::time_point` by calling \ref as_time_point, * \ref get_time_point, \ref as_local_time_point or \ref get_local_time_point. - * \n + * * Dates retrieved from MySQL don't include any time zone information. Determining the time zone * is left to the application. Thus, any time point obtained from this class should be * interpreted as a local time in an unspecified time zone, like `std::chrono::local_time`. @@ -41,10 +41,10 @@ namespace mysql { * `system_clock` time points. These should be interpreted as local times rather * than UTC. Prefer using \ref as_local_time_point or \ref get_local_time_point * if your compiler supports them, as they provide more accurate semantics. - * \n + * * As opposed to `time_point`, this type allows representing MySQL invalid and zero dates. * These values are allowed by MySQL but don't represent real dates. - * \n + * * Note: using `std::chrono` time zone functionality under MSVC may cause memory leaks to be reported. * See this issue for an explanation and * this other issue for a workaround. @@ -108,7 +108,7 @@ class date * \details * Equivalent to constructing a `date` from a `time_point` with the same * `time_since_epoch()` as `tp`. - * \n + * * Requires C++20 calendar types. * * \par Exception safety @@ -206,7 +206,7 @@ class date * The returned object has the same `time_since_epoch()` as `this->get_time_point()`, * but uses the `std::chrono::local_t` pseudo-clock to better represent * the absence of time zone information. - * \n + * * Requires C++20 calendar types. * * \par Preconditions @@ -227,7 +227,7 @@ class date * The returned object has the same `time_since_epoch()` as `this->as_time_point()`, * but uses the `std::chrono::local_t` pseudo-clock to better represent * the absence of time zone information. - * \n + * * Requires C++20 calendar types. * * \par Exception safety diff --git a/include/boost/mysql/datetime.hpp b/include/boost/mysql/datetime.hpp index cbccc4330..0a4515e7c 100644 --- a/include/boost/mysql/datetime.hpp +++ b/include/boost/mysql/datetime.hpp @@ -30,11 +30,11 @@ namespace mysql { * \brief Type representing MySQL `DATETIME` and `TIMESTAMP` data types. * \details Represents a Gregorian date and time broken by its year, month, day, hour, minute, second and * microsecond components, without a time zone. - * \n + * * This type is close to the protocol and should not be used as a vocabulary type. * Instead, cast it to a `std::chrono::time_point` by calling \ref as_time_point, * \ref get_time_point, \ref as_local_time_point or \ref get_local_time_point. - * \n + * * Datetimes retrieved from MySQL don't include any time zone information. Determining the time zone * is left to the application. Thus, any time point obtained from this class should be * interpreted as a local time in an unspecified time zone, like `std::chrono::local_time`. @@ -42,10 +42,10 @@ namespace mysql { * `system_clock` time points. These should be interpreted as local times rather * than UTC. Prefer using \ref as_local_time_point or \ref get_local_time_point * if your compiler supports them, as they provide more accurate semantics. - * \n + * * As opposed to `time_point`, this type allows representing MySQL invalid and zero datetimes. * These values are allowed by MySQL but don't represent real time points. - * \n + * * Note: using `std::chrono` time zone functionality under MSVC may cause memory leaks to be reported. * See this issue for an explanation and * this other issue for a workaround. @@ -123,7 +123,7 @@ class datetime * \details * Equivalent to constructing a `date` from a `time_point` with the same * `time_since_epoch()` as `tp`. - * \n + * * Requires C++20 calendar types. * * \par Exception safety @@ -258,7 +258,7 @@ class datetime * The returned object has the same `time_since_epoch()` as `this->get_time_point()`, * but uses the `std::chrono::local_t` pseudo-clock to better represent * the absence of time zone information. - * \n + * * Requires C++20 calendar types. * * \par Preconditions @@ -279,7 +279,7 @@ class datetime * The returned object has the same `time_since_epoch()` as `this->as_time_point()`, * but uses the `std::chrono::local_t` pseudo-clock to better represent * the absence of time zone information. - * \n + * * Requires C++20 calendar types. * * \par Exception safety diff --git a/include/boost/mysql/diagnostics.hpp b/include/boost/mysql/diagnostics.hpp index abeaba655..f89ed062a 100644 --- a/include/boost/mysql/diagnostics.hpp +++ b/include/boost/mysql/diagnostics.hpp @@ -83,7 +83,6 @@ class diagnostics } private: -#ifndef BOOST_MYSQL_DOXYGEN struct { bool is_server{}; @@ -105,7 +104,6 @@ class diagnostics friend bool operator==(const diagnostics& lhs, const diagnostics& rhs) noexcept; friend struct detail::access; -#endif }; /** diff --git a/include/boost/mysql/execution_state.hpp b/include/boost/mysql/execution_state.hpp index cb40afcf5..f8a759bcf 100644 --- a/include/boost/mysql/execution_state.hpp +++ b/include/boost/mysql/execution_state.hpp @@ -29,7 +29,8 @@ namespace mysql { * More states may be added in the future as more protocol features are implemented. * * \par Thread safety - * Distinct objects: safe. \n + * Distinct objects: safe. + * * Shared objects: unsafe. */ class execution_state @@ -184,7 +185,7 @@ class execution_state * \details * The format of this information is documented by MySQL * here. - * \n + * * The returned string always uses ASCII encoding, regardless of the connection's character set. * * \par Exception safety @@ -213,9 +214,7 @@ class execution_state private: detail::execution_state_impl impl_; -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif }; } // namespace mysql diff --git a/include/boost/mysql/field.hpp b/include/boost/mysql/field.hpp index f95173fcd..7192568b3 100644 --- a/include/boost/mysql/field.hpp +++ b/include/boost/mysql/field.hpp @@ -35,7 +35,7 @@ namespace mysql { * has value semantics (as opposed to \ref field_view). Instances of this class are not created * by the library. They should be created by the user, when the reference semantics of * \ref field_view are not appropriate. - * \n + * * Like a variant, at any point, a `field` always contains a value of * certain type. You can query the type using \ref kind and the `is_xxx` functions * like \ref is_int64. Use `as_xxx` and `get_xxx` for checked and unchecked value @@ -532,7 +532,7 @@ class field * \par Object lifetimes * Invalidates references to `*this` obtained by as_xxx and get_xxx functions, but not * the ones obtained by \ref field::operator field_view(). - *\n + * * `*this` is guaranteed to be valid even after `v` becomes invalid. */ field& operator=(const field_view& v) diff --git a/include/boost/mysql/field_view.hpp b/include/boost/mysql/field_view.hpp index f21b530c0..6be19824c 100644 --- a/include/boost/mysql/field_view.hpp +++ b/include/boost/mysql/field_view.hpp @@ -35,7 +35,7 @@ namespace mysql { * This is a variant-like class, similar to \ref field, but semi-owning and read-only. Values * of this type are usually created by the library, not directly by the user. It's cheap to * construct and copy, and it's the main library interface when reading values from MySQL. - * \n + * * Like a variant, at any point, a `field_view` always points to a value of * certain type. You can query the type using \ref field_view::kind and the `is_xxx` functions * like \ref field_view::is_int64. Use `as_xxx` and `get_xxx` for checked and unchecked value @@ -44,7 +44,7 @@ namespace mysql { * * \par Object lifetimes * Depending on how it was constructed, `field_view` can have value or reference semantics: - * \n + * * \li If it was created by the library, the `field_view` will have an associated \ref row, * \ref rows or \ref results object holding memory to which the `field_view` points. It will be valid as * long as the memory allocated by that object is valid. @@ -55,7 +55,7 @@ namespace mysql { * `field_view` has value semnatics and will always be valid. * \li If it was created from a string or blob type, the `field_view` acts as a `string_view` or `blob_view`, * and will be valid as long as the original string/blob is. - * \n + * * Calling any member function on a `field_view` that has been invalidated results in undefined * behavior. */ @@ -606,12 +606,10 @@ class field_view } BOOST_CXX14_CONSTEXPR inline void check_kind(internal_kind expected) const; -#ifndef BOOST_MYSQL_DOXYGEN friend class field; friend struct detail::access; BOOST_MYSQL_DECL friend std::ostream& operator<<(std::ostream& os, const field_view& v); -#endif }; /** diff --git a/include/boost/mysql/format_sql.hpp b/include/boost/mysql/format_sql.hpp index ee4f5f892..2136a9d1b 100644 --- a/include/boost/mysql/format_sql.hpp +++ b/include/boost/mysql/format_sql.hpp @@ -36,7 +36,7 @@ namespace mysql { * This type can be specialized for custom types to make them formattable. * This makes them satisfy the `Formattable` concept, and thus usable in * \ref format_sql and similar functions. - * \n + * * A `formatter` specialization for a type `T` should have the following form: * ``` * template <> @@ -46,9 +46,10 @@ namespace mysql { * void format(const T& value, format_context_base& ctx) const; // perform the actual formatting * }; * ``` - * \n + * * When a value with a custom formatter is formatted (using \ref format_sql or a similar - * function), the library performs the following actions: \n + * function), the library performs the following actions: + * * - An instance of `formatter` is default-constructed, where `T` is the type of the * value being formatted after removing const and references. * - The `parse` function is invoked on the constructed instance, @@ -69,7 +70,7 @@ namespace mysql { * This function should perform the actual formatting, usually calling * \ref format_sql_to on the passed context. * - * \n + * * Don't specialize `formatter` for built-in types, like `int`, `std::string` or * optionals (formally, any type satisfying `WritableField`), as the specializations will be ignored. */ @@ -96,16 +97,15 @@ struct formatter class formattable_ref { detail::formattable_ref_impl impl_; -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif + public: /** * \brief Constructor. * \details * Constructs a type-erased formattable reference from a concrete * `Formattable` type. - * \n + * * This constructor participates in overload resolution only if * the passed value meets the `Formattable` concept and * is not a `formattable_ref` or a reference to one. @@ -118,14 +118,10 @@ class formattable_ref * types may be stored as values. */ template < - BOOST_MYSQL_FORMATTABLE Formattable -#ifndef BOOST_MYSQL_DOXYGEN - , + BOOST_MYSQL_CONCEPT(formattable) Formattable, class = typename std::enable_if< detail::is_formattable_type() && - !detail::is_formattable_ref::value>::type -#endif - > + !detail::is_formattable_ref::value>::type> formattable_ref(Formattable&& value) noexcept : impl_(detail::make_formattable_ref(std::forward(value))) { @@ -144,7 +140,6 @@ class formattable_ref */ class format_arg { -#ifndef BOOST_MYSQL_DOXYGEN struct { string_view name; @@ -152,7 +147,6 @@ class format_arg } impl_; friend struct detail::access; -#endif public: /** @@ -175,24 +169,24 @@ class format_arg /** * \brief Base class for concrete format contexts. * \details - * Conceptually, a format context contains: \n + * Conceptually, a format context contains: + * * \li The result string. Output operations append characters to this output string. * `format_context_base` is agnostic to the output string type. * \li \ref format_options required to format values. * \li An error state (\ref error_state) that is set by output operations when they fail. * The error state is propagated to \ref basic_format_context::get. - * \n + * * References to this class are useful when you need to manipulate * a format context without knowing the type of the actual context that will be used, * like when specializing \ref formatter. - * \n + * * This class can't be * instantiated directly - use \ref basic_format_context, instead. * Do not subclass it, either. */ class format_context_base { -#ifndef BOOST_MYSQL_DOXYGEN struct { detail::output_string_ref output; @@ -202,7 +196,6 @@ class format_context_base friend struct detail::access; friend class detail::format_state; -#endif BOOST_MYSQL_DECL void format_arg(detail::formattable_ref_impl arg, string_view format_spec); @@ -229,10 +222,10 @@ class format_context_base * \brief Adds raw SQL to the output string (low level). * \details * Adds raw, unescaped SQL to the output string. Doesn't alter the error state. - * \n + * * By default, the passed SQL should be available at compile-time. * Use \ref runtime if you need to use runtime values. - * \n + * * This is a low level function. In general, prefer \ref format_sql_to, instead. * * \par Exception safety @@ -253,14 +246,15 @@ class format_context_base * value is formatted according to its type, applying the passed format specifiers. * If formatting generates an error (for instance, a string with invalid encoding is passed), * the error state may be set. - * \n + * * This is a low level function. In general, prefer \ref format_sql_to, instead. * * \par Exception safety * Basic guarantee. Memory allocations may throw. * * \par Errors - * The error state may be updated with the following errors: \n + * The error state may be updated with the following errors: + * * \li \ref client_errc::invalid_encoding if a string with byte sequences that can't be decoded * with the current character set is passed. * \li \ref client_errc::unformattable_value if a NaN or infinity `float` or `double` is passed. @@ -283,11 +277,11 @@ class format_context_base * This function can be used by custom formatters to report that they * received a value that can't be formatted. For instance, it's used by * the built-in string formatter when a string with an invalid encoding is supplied. - * \n + * * If the error state is not set before calling this function, the error * state is updated to `ec`. Otherwise, the error is ignored. * This implies that once the error state is set, it can't be reset. - * \n + * * \par Exception safety * No-throw guarantee. */ @@ -320,7 +314,7 @@ class format_context_base * The primary interface for incremental SQL formatting. Contrary to \ref format_context_base, * this type is aware of the output string's actual type. `basic_format_context` owns * an instance of `OutputString`. Format operations will append characters to such string. - * \n + * * Objects of this type are single-use: once the result has been retrieved using \ref get, * they cannot be re-used. This is a move-only type. */ @@ -342,10 +336,8 @@ class basic_format_context : public format_context_base * \par Exception safety * Strong guarantee: exceptions thrown by default-constructing `OutputString` are propagated. */ - explicit basic_format_context(format_options opts) -#ifndef BOOST_MYSQL_DOXYGEN // TODO: remove when https://github.com/boostorg/docca/issues/169 gets done - noexcept(std::is_nothrow_default_constructible::value) -#endif + explicit basic_format_context(format_options opts + ) noexcept(std::is_nothrow_default_constructible::value) : format_context_base(ref(), opts) { } @@ -357,24 +349,21 @@ class basic_format_context : public format_context_base * the output string is cleared. Uses an empty * error code as error state. This constructor allows re-using existing * memory for the output string. - * \n + * * * \par Exception safety * Basic guarantee: exceptions thrown by move-constructing `OutputString` are propagated. */ - basic_format_context(format_options opts, OutputString&& storage) -#ifndef BOOST_MYSQL_DOXYGEN // TODO: remove when https://github.com/boostorg/docca/issues/169 gets done - noexcept(std::is_nothrow_move_constructible::value) -#endif + basic_format_context(format_options opts, OutputString&& storage) noexcept( + std::is_nothrow_move_constructible::value + ) : format_context_base(ref(), opts), output_(std::move(storage)) { output_.clear(); } -#ifndef BOOST_MYSQL_DOXYGEN basic_format_context(const basic_format_context&) = delete; basic_format_context& operator=(const basic_format_context&) = delete; -#endif /** * \brief Move constructor. @@ -386,10 +375,8 @@ class basic_format_context : public format_context_base * \par Exception safety * Basic guarantee: exceptions thrown by move-constructing `OutputString` are propagated. */ - basic_format_context(basic_format_context&& rhs) -#ifndef BOOST_MYSQL_DOXYGEN // TODO: remove when https://github.com/boostorg/docca/issues/169 gets done - noexcept(std::is_nothrow_move_constructible::value) -#endif + basic_format_context(basic_format_context&& rhs + ) noexcept(std::is_nothrow_move_constructible::value) : format_context_base(ref(), rhs), output_(std::move(rhs.output_)) { } @@ -404,10 +391,8 @@ class basic_format_context : public format_context_base * \par Exception safety * Basic guarantee: exceptions thrown by move-constructing `OutputString` are propagated. */ - basic_format_context& operator=(basic_format_context&& rhs) -#ifndef BOOST_MYSQL_DOXYGEN // TODO: remove when https://github.com/boostorg/docca/issues/169 gets done - noexcept(std::is_nothrow_move_assignable::value) -#endif + basic_format_context& operator=(basic_format_context&& rhs + ) noexcept(std::is_nothrow_move_assignable::value) { output_ = std::move(rhs.output_); assign(rhs); @@ -420,19 +405,16 @@ class basic_format_context : public format_context_base * After running the relevant formatting operations (using \ref append_raw, * \ref append_value or \ref format_sql_to), call this function to retrieve the * overall result of the operation. - * \n + * * If \ref error_state is a non-empty error code, returns it as an error. * Otherwise, returns the output string, move-constructing it into the `system::result` object. - * \n + * * This function is move-only: once called, `*this` is left in a valid but unspecified state. * * \par Exception safety * Basic guarantee: exceptions thrown by move-constructing `OutputString` are propagated. */ - system::result get() && -#ifndef BOOST_MYSQL_DOXYGEN // TODO: remove when https://github.com/boostorg/docca/issues/169 gets done - noexcept(std::is_nothrow_move_constructible::value) -#endif + system::result get() && noexcept(std::is_nothrow_move_constructible::value) { auto ec = error_state(); if (ec) @@ -453,12 +435,13 @@ using format_context = basic_format_context; * \details * Parses `format_str` as a format string, substituting replacement fields (like `{}`, `{1}` or `{name}`) * by formatted arguments, extracted from `args`. - * \n + * * Formatting is performed as if \ref format_context_base::append_raw and * \ref format_context_base::append_value were called on `ctx`, effectively appending * characters to its output string. - * \n - * Compared to \ref format_sql, this function is more flexible, allowing the following use cases: \n + * + * Compared to \ref format_sql, this function is more flexible, allowing the following use cases: + * * \li Appending characters to an existing context. Can be used to concatenate the output of successive * format operations efficiently. * \li Using string types different to `std::string` (works with any \ref basic_format_context). @@ -485,7 +468,7 @@ using format_context = basic_format_context; * \li \ref client_errc::format_arg_not_found if an argument referenced by `format_str` isn't present * in `args` (there aren't enough arguments or a named argument is not found). */ -template +template void format_sql_to(format_context_base& ctx, constant_string_view format_str, Formattable&&... args) { std::initializer_list args_il{ @@ -498,7 +481,7 @@ void format_sql_to(format_context_base& ctx, constant_string_view format_str, Fo /** * \copydoc format_sql_to * \details - * \n + * * This overload allows using named arguments. */ inline void format_sql_to( @@ -516,10 +499,10 @@ inline void format_sql_to( * Parses `format_str` as a format string, substituting replacement fields (like `{}`, `{1}` or `{name}`) * by formatted arguments, extracted from `args`. `opts` is using to parse the string and format string * arguments. - * \n + * * Formatting is performed as if \ref format_context::append_raw and \ref format_context::append_value * were called on a context created by this function. - * \n + * * * \par Exception safety * Strong guarantee. Memory allocations may throw. `boost::system::system_error` is thrown if an error @@ -542,13 +525,13 @@ inline void format_sql_to( * \li \ref client_errc::format_arg_not_found if an argument referenced by `format_str` isn't present * in `args` (there aren't enough arguments or a named argument is not found). */ -template +template std::string format_sql(format_options opts, constant_string_view format_str, Formattable&&... args); /** * \copydoc format_sql * \details - * \n + * * This overload allows using named arguments. */ BOOST_MYSQL_DECL diff --git a/include/boost/mysql/is_fatal_error.hpp b/include/boost/mysql/is_fatal_error.hpp index dc5a79dae..66510f902 100644 --- a/include/boost/mysql/is_fatal_error.hpp +++ b/include/boost/mysql/is_fatal_error.hpp @@ -22,7 +22,7 @@ namespace mysql { * the connection may be usable for further operations (if the error was non-fatal) * or not (if the error was fatal). This function determines whether an error * code returned by a connection operation is fatal or not. - * \n + * * To recover from a fatal error code, close and re-establish the connection. * * \par Exception safety diff --git a/include/boost/mysql/metadata.hpp b/include/boost/mysql/metadata.hpp index 4319eeda5..7b13e7e48 100644 --- a/include/boost/mysql/metadata.hpp +++ b/include/boost/mysql/metadata.hpp @@ -103,7 +103,7 @@ class metadata * \brief Returns the name of the virtual table the column belongs to. * \details If the table was aliased, this will be the name of the alias * (e.g. in `"SELECT * FROM employees emp"`, `table()` will be `"emp"`). - *\n + * * This is optional information - it won't be populated unless * the connection executing the query has `meta_mode() == metadata_mode::full`. * @@ -120,7 +120,7 @@ class metadata * \brief Returns the name of the physical table the column belongs to. * \details E.g. in `"SELECT * FROM employees emp"`, * `original_table()` will be `"employees"`. - * \n + * * This is optional information - it won't be populated unless * the connection executing the query has `meta_mode() == metadata_mode::full`. * @@ -138,7 +138,7 @@ class metadata * \details If the column was aliased, this will be the name of the alias * (e.g. in `"SELECT id AS employee_id FROM employees"`, * `column_name()` will be `"employee_id"`). - *\n + * * This is optional information - it won't be populated unless * the connection executing the query has `meta_mode() == metadata_mode::full`. * @@ -155,7 +155,7 @@ class metadata * \brief Returns the original (physical) name of the column. * \details E.g. in `"SELECT id AS employee_id FROM employees"`, * `original_column_name()` will be `"id"`. - * \n + * * This is optional information - it won't be populated unless * the connection executing the query has `meta_mode() == metadata_mode::full`. * @@ -293,9 +293,7 @@ class metadata bool flag_set(std::uint16_t flag) const noexcept { return flags_ & flag; } -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif }; } // namespace mysql diff --git a/include/boost/mysql/pfr.hpp b/include/boost/mysql/pfr.hpp index f625594d7..bba3362d4 100644 --- a/include/boost/mysql/pfr.hpp +++ b/include/boost/mysql/pfr.hpp @@ -24,12 +24,12 @@ namespace mysql { * When used within the static interface, modifies its behavior * for the marked type so that Boost.PFR is used for reflection, instead of Boost.Describe. * Field matching is performed by position, with the same algorithm used for `std::tuple`. - * \n + * * The underlying row type for this marker is `T`, i.e. * \ref underlying_row_t "underlying_row_t>" is an alias for `T`. - * \n + * * The type `T` must be a PFR-reflectable non-const object type. - * \n + * * This type is only defined if the macro `BOOST_PFR_ENABLED` is defined and set to `1`. */ template @@ -44,12 +44,12 @@ struct pfr_by_position; * When used within the static interface, modifies its behavior * for the marked type so that Boost.PFR is used for reflection, instead of Boost.Describe. * Field matching is performed by name, with the same algorithm used for Boost.Describe structs. - * \n + * * The underlying row type for this marker is `T`, i.e. * \ref underlying_row_t "underlying_row_t>" is an alias for `T`. - * \n + * * The type `T` must be a PFR-reflectable non-const object type. - * \n + * * This type is only defined if the macro `BOOST_PFR_CORE_NAME_ENABLED` is defined and set to `1` * (requires C++20). */ diff --git a/include/boost/mysql/pipeline.hpp b/include/boost/mysql/pipeline.hpp index 0c092dc77..f829bd620 100644 --- a/include/boost/mysql/pipeline.hpp +++ b/include/boost/mysql/pipeline.hpp @@ -38,7 +38,8 @@ namespace mysql { * \brief (EXPERIMENTAL) A variant-like type holding the response of a single pipeline stage. * \details * This is a variant-like type, similar to `boost::system::result`. At any point in time, - * it can contain: \n + * it can contain: + * * \li A \ref statement. Will happen if the stage was a prepare statement that succeeded. * \li A \ref results. Will happen if the stage was a query or statement execution that succeeded. * \li An \ref error_code, \ref diagnostics pair. Will happen if the stage failed, or if it succeeded but @@ -50,7 +51,6 @@ namespace mysql { */ class stage_response { -#ifndef BOOST_MYSQL_DOXYGEN struct errcode_with_diagnostics { error_code ec; @@ -75,7 +75,6 @@ class stage_response } impl_; friend struct detail::access; -#endif bool has_error() const { return impl_.value.index() == 0u; } @@ -257,7 +256,6 @@ class stage_response */ class pipeline_request { -#ifndef BOOST_MYSQL_DOXYGEN struct impl_t { std::vector buffer_; @@ -265,7 +263,6 @@ class pipeline_request } impl_; friend struct detail::access; -#endif public: /** @@ -331,7 +328,7 @@ class pipeline_request * `stmt` bound to any parameters passed in `params`, like \ref any_connection::execute * and \ref statement::bind. For example, `add_execute_range(stmt, params)` has * effects equivalent to `conn.execute(stmt.bind(params.begin(), params.end()))`. - * \n + * * This function can be used instead of \ref add_execute when the number of actual parameters * of a statement is not known at compile time. * diff --git a/include/boost/mysql/pool_params.hpp b/include/boost/mysql/pool_params.hpp index e80c87e38..b564e16d6 100644 --- a/include/boost/mysql/pool_params.hpp +++ b/include/boost/mysql/pool_params.hpp @@ -82,11 +82,11 @@ struct pool_params * \details * When a connection is requested, but all connections are in use, new connections * will be created and connected up to this size. - * \n + * * Defaults to the maximum number of concurrent connections that MySQL * servers allow by default. If you increase this value, increase the server's * max number of connections, too (by setting the `max_connections` global variable). - * \n + * * This value must be `> 0` and `>= initial_size`. */ std::size_t max_size{151}; @@ -97,7 +97,7 @@ struct pool_params * If a non-empty value is provided, all connections created by the pool * will use the passed context when using TLS. This allows setting TLS options * to pool-created connections. - * \n + * * If an empty value is passed (the default) and the connections require TLS, * an internal SSL context with suitable options will be created by the pool. */ @@ -110,9 +110,9 @@ struct pool_params * (using \ref any_connection::async_connect). * If the operation takes longer than this timeout, * the operation will be interrupted, considered as failed and retried later. - * \n + * * Set this timeout to zero to disable it. - * \n + * * This value must not be negative. */ std::chrono::steady_clock::duration connect_timeout{std::chrono::seconds(20)}; @@ -123,7 +123,7 @@ struct pool_params * When session establishment fails, the operation will be retried until * success. This value determines the interval between consecutive connection * attempts. - * \n + * * This value must be greater than zero. */ std::chrono::steady_clock::duration retry_interval{std::chrono::seconds(30)}; @@ -152,9 +152,9 @@ struct pool_params * If pings (as per \ref any_connection::async_ping) or session resets * (as per \ref any_connection::async_reset_connection) take longer than this * timeout, they will be cancelled, and the operation will be considered failed. - * \n + * * Set this timeout to zero to disable it. - * \n + * * This value must not be negative. */ std::chrono::steady_clock::duration ping_timeout{std::chrono::seconds(10)}; diff --git a/include/boost/mysql/results.hpp b/include/boost/mysql/results.hpp index 3e2f30363..28e691f0a 100644 --- a/include/boost/mysql/results.hpp +++ b/include/boost/mysql/results.hpp @@ -32,23 +32,20 @@ namespace mysql { * This object can store the results of single and multi resultset queries. * For the former, you use \ref meta, \ref rows, \ref affected_rows and so on. * For the latter, this class is a random-access collection of \ref resultset objects. - * \n + * * \par Thread safety - * Distinct objects: safe. \n - * Shared objects: unsafe. \n + * Distinct objects: safe. + * + * Shared objects: unsafe. */ class results { public: -#ifdef BOOST_MYSQL_DOXYGEN /** - * \brief A random access iterator to an element. + * \brief A random access iterator to an element (TODO: hide this). * \details The exact type of the iterator is unspecified. */ - using iterator = __see_below__; -#else using iterator = detail::results_iterator; -#endif /// \copydoc iterator using const_iterator = iterator; @@ -165,7 +162,7 @@ class results * \details * The returned collection will have as many \ref metadata objects as columns retrieved by * the SQL query, and in the same order. - * \n + * * For operations returning more than one resultset, returns metadata * for the first resultset. * @@ -260,9 +257,9 @@ class results * \details * The format of this information is documented by MySQL * here. - * \n + * * The returned string always uses ASCII encoding, regardless of the connection's character set. - * \n + * * For operations returning more than one resultset, returns the * first resultset's info. * @@ -452,7 +449,7 @@ class results * Relevant for `CALL` operations performed using prepared statements that * bind placeholders to `OUT` or `INOUT` parameters. Returns a row containing a field per * bound output parameter. - * \n + * * If this operation had no output parameters (e.g. it wasn't a `CALL`), returns an empty row. * * \par Preconditions @@ -476,9 +473,7 @@ class results private: detail::results_impl impl_; -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif }; } // namespace mysql diff --git a/include/boost/mysql/resultset.hpp b/include/boost/mysql/resultset.hpp index 17d887c34..a450c0e36 100644 --- a/include/boost/mysql/resultset.hpp +++ b/include/boost/mysql/resultset.hpp @@ -241,7 +241,7 @@ class resultset * \details * The format of this information is documented by MySQL * here. - * \n + * * The returned string always uses ASCII encoding, regardless of the connection's character set. * * \par Preconditions diff --git a/include/boost/mysql/resultset_view.hpp b/include/boost/mysql/resultset_view.hpp index 93229cef0..235466f5a 100644 --- a/include/boost/mysql/resultset_view.hpp +++ b/include/boost/mysql/resultset_view.hpp @@ -147,7 +147,7 @@ class resultset_view * \details * The format of this information is documented by MySQL * here. - * \n + * * The returned string always uses ASCII encoding, regardless of the connection's character set. * * \par Preconditions @@ -198,9 +198,7 @@ class resultset_view { } -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif }; } // namespace mysql diff --git a/include/boost/mysql/row.hpp b/include/boost/mysql/row.hpp index 32a9c6a7a..4d24e6838 100644 --- a/include/boost/mysql/row.hpp +++ b/include/boost/mysql/row.hpp @@ -38,15 +38,11 @@ class row detail::row_impl impl_; public: -#ifdef BOOST_MYSQL_DOXYGEN /** - * \brief A random access iterator to an element. + * \brief A random access iterator to an element (TODO: hide this). * \details The exact type of the iterator is unspecified. */ - using iterator = __see_below__; -#else using iterator = const field_view*; -#endif /// \copydoc iterator using const_iterator = iterator; diff --git a/include/boost/mysql/row_view.hpp b/include/boost/mysql/row_view.hpp index 62a49c94a..6f1b13e16 100644 --- a/include/boost/mysql/row_view.hpp +++ b/include/boost/mysql/row_view.hpp @@ -27,21 +27,21 @@ namespace mysql { * \details * A `row_view` points to memory owned by an external entity (like `string_view` does). The validity * of a `row_view` depends on how it was obtained: - * \n + * * \li If it was constructed from a \ref row object (by calling \ref row::operator row_view()), the * view acts as a reference to the row's allocated memory, and is valid as long as references * to that row elements are valid. * \li If it was obtained by indexing a \ref rows object, the same applies. * \li If it was obtained by indexing a \ref rows_view object, it's valid as long as the * `rows_view` is valid. - * \n + * * Calling any member function on an invalid view results in undefined behavior. - * \n + * * When indexed (by using iterators, \ref row_view::at or \ref row_view::operator[]), it returns * \ref field_view elements that are valid as long as the underlying storage that `*this` points * to is valid. Destroying a `row_view` doesn't invalidate `field_view`s obtained from * it. - * \n Instances of this class are usually created by the library, not by the user. + * Instances of this class are usually created by the library, not by the user. */ class row_view { @@ -53,15 +53,11 @@ class row_view */ row_view() = default; -#ifdef BOOST_MYSQL_DOXYGEN /** - * \brief A random access iterator to an element. + * \brief A random access iterator to an element (TODO: hide this). * \details The exact type of the iterator is unspecified. */ - using iterator = __see_below__; -#else using iterator = const field_view*; -#endif /// \copydoc iterator using const_iterator = iterator; @@ -206,10 +202,8 @@ class row_view const field_view* fields_{}; std::size_t size_{}; -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; friend class row; -#endif }; /** diff --git a/include/boost/mysql/rows.hpp b/include/boost/mysql/rows.hpp index 0a2cc42a7..aee820086 100644 --- a/include/boost/mysql/rows.hpp +++ b/include/boost/mysql/rows.hpp @@ -29,27 +29,23 @@ namespace mysql { * Models an owning, matrix-like container. Indexing a `rows` object (by using iterators, * \ref rows::at or \ref rows::operator[]) returns a \ref row_view object, representing a * single row. All rows in the collection are the same size (as given by \ref num_columns). - * \n + * * A `rows` object owns a chunk of memory in which it stores its elements. The \ref rows_view * objects obtained on element access point into the `rows`' internal storage. These views (and any * \ref row_view and \ref field_view obtained from the former) behave * like references, and are valid as long as pointers, iterators and references into the `rows` * object remain valid. - * \n + * * Although owning, `rows` is read-only. It's optimized for memory re-use. */ class rows { public: -#ifdef BOOST_MYSQL_DOXYGEN /** - * \brief A random access iterator to an element. + * \brief A random access iterator to an element (TODO: hide this). * \details The exact type of the iterator is unspecified. */ - using iterator = __see_below__; -#else using iterator = detail::rows_iterator; -#endif /// \copydoc iterator using const_iterator = iterator; diff --git a/include/boost/mysql/rows_view.hpp b/include/boost/mysql/rows_view.hpp index e702a96c8..03a0cbb50 100644 --- a/include/boost/mysql/rows_view.hpp +++ b/include/boost/mysql/rows_view.hpp @@ -30,36 +30,32 @@ namespace mysql { * Models a non-owning matrix-like container. Indexing a `rows_view` object (by using iterators, * \ref rows_view::at or \ref rows_view::operator[]) returns a \ref row_view object, representing a * single row. All rows in the collection are the same size (as given by \ref num_columns). - * \n + * * A `rows_view` object points to memory owned by an external entity (like `string_view` does). The * validity of a `rows_view` object depends on how it was obtained: - * \n + * * \li If it was constructed from a \ref rows object (by calling \ref rows::operator rows_view()), * the view acts as a reference to the `rows`' allocated memory, and is valid as long as * references to that `rows` elements are valid. * \li If it was obtained by calling \ref connection::read_some_rows it's valid until the * `connection` performs the next network call or is destroyed. - * \n + * * \ref row_view's and \ref field_view's obtained by using a `rows_view` object are valid as long as * the underlying storage that `*this` points to is valid. Destroying `*this` doesn't invalidate * such references. - * \n + * * Calling any member function on an invalid view results in undefined behavior. - * \n + * * Instances of this class are usually created by the library, not by the user. */ class rows_view { public: -#ifdef BOOST_MYSQL_DOXYGEN /** - * \brief A random access iterator to an element. + * \brief A random access iterator to an element (TODO: hide this). * \details The exact type of the iterator is unspecified. */ - using iterator = __see_below__; -#else using iterator = detail::rows_iterator; -#endif /// \copydoc iterator using const_iterator = iterator; @@ -245,10 +241,8 @@ class rows_view BOOST_ASSERT(num_columns == 0 || (num_fields % num_columns == 0)); } -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; friend class rows; -#endif }; } // namespace mysql diff --git a/include/boost/mysql/sequence.hpp b/include/boost/mysql/sequence.hpp index 486b58129..b0e756bd4 100644 --- a/include/boost/mysql/sequence.hpp +++ b/include/boost/mysql/sequence.hpp @@ -54,7 +54,7 @@ struct format_sequence }; /** - * \brief The type of range produced by \ref sequence. + * \brief The type of range produced by \ref sequence (TODO: hide this). * \details * This type trait can be used to obtain the range type produced * by calling \ref sequence. This type is used as the `Range` template @@ -78,15 +78,10 @@ struct format_sequence * - `sequence_range_t>>` is `std::vector&`. * - `sequence_range_t>>` is `const std::vector&`. * - `sequence_range_t` is `std::array`. + * (TODO: hide this) */ template -using sequence_range_t = -#ifdef BOOST_MYSQL_DOXYGEN - __see_below__ -#else - typename detail::sequence_range_type::type; -#endif - ; +using sequence_range_t = typename detail::sequence_range_type::type; /** * \brief Creates an object that, when formatted, applies a per-element function to a range. diff --git a/include/boost/mysql/statement.hpp b/include/boost/mysql/statement.hpp index 3c2b85b88..683156513 100644 --- a/include/boost/mysql/statement.hpp +++ b/include/boost/mysql/statement.hpp @@ -42,13 +42,14 @@ class bound_statement_iterator_range; * \brief Represents a server-side prepared statement. * \details * This is a lightweight class, holding a handle to a server-side prepared statement. - * \n + * * Note that statement's destructor doesn't deallocate the statement from the * server, as this implies a network transfer that may fail. * * \par Thread safety - * Distinct objects: safe. \n - * Shared objects: unsafe. \n + * Distinct objects: safe. + * + * Shared objects: unsafe. */ class statement { @@ -66,7 +67,7 @@ class statement * \brief Returns `true` if the object represents an actual server statement. * \details Calling any function other than assignment on a statement for which * this function returns `false` results in undefined behavior. - * \n + * * Returns `false` for default-constructed statements. * * \par Exception safety @@ -105,31 +106,27 @@ class statement } /** - * \brief Binds parameters to a statement. + * \brief Binds parameters to a statement TODO: see this. * \details * Creates an object that packages `*this` and the statement actual parameters `params`. * This object can be passed to \ref connection::execute, \ref connection::start_execution * and their async counterparts. - * \n + * * The parameters are copied into a `std::tuple` by using `std::make_tuple`. This function * only participates in overload resolution if `std::make_tuple(FWD(args)...)` yields a * `WritableFieldTuple`. Equivalent to `this->bind(std::make_tuple(std::forward(params)...))`. - * \n + * * This function doesn't involve communication with the server. * * \par Preconditions * `this->valid() == true` - * \n + * * \par Exception safety * Strong guarantee. Only throws if constructing any of the internal tuple elements throws. + * (TODO: review this, as it was listed as "see below") */ template -#ifdef BOOST_MYSQL_DOXYGEN - bound_statement_tuple> -#else - auto -#endif - bind(T&&... params) const->typename std::enable_if< + auto bind(T&&... params) const -> typename std::enable_if< detail::is_writable_field_tuple(params)...))>::value, bound_statement_tuple(params)...))>>::type { @@ -142,14 +139,14 @@ class statement * Creates an object that packages `*this` and the statement actual parameters `params`. * This object can be passed to \ref connection::execute, \ref connection::start_execution * or their async counterparts. - * \n + * * The `params` tuple is decay-copied into the returned object. - * \n + * * This function doesn't involve communication with the server. * * \par Preconditions * `this->valid() == true` - * \n + * * \par Exception safety * Strong guarantee. Only throws if the decay-copy of the tuple throws. */ @@ -167,12 +164,12 @@ class statement * as the iterator range `[params_first, params_last)`. * This object can be passed to \ref connection::execute, \ref connection::start_execution * or their async counterparts. - * \n + * * This function doesn't involve communication with the server. * * \par Preconditions * `this->valid() == true` - * \n + * * \par Exception safety * Strong guarantee. Only throws if copy-constructing iterators throws. */ @@ -195,9 +192,7 @@ class statement { } -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif }; } // namespace mysql diff --git a/include/boost/mysql/static_execution_state.hpp b/include/boost/mysql/static_execution_state.hpp index 4a09a50b6..51a1fa60a 100644 --- a/include/boost/mysql/static_execution_state.hpp +++ b/include/boost/mysql/static_execution_state.hpp @@ -29,7 +29,7 @@ namespace mysql { * \ref should_start_op, \ref should_read_rows, \ref should_read_head * and \ref complete. They are mutually exclusive. * More states may be added in the future as more protocol features are implemented. - * \n + * * Note that this class doesn't store rows anyhow. Row template parameters are * used to validate their compatibility with the data that will be returned by the server. * @@ -38,7 +38,8 @@ namespace mysql { * All the passed types must fulfill the `StaticRow` concept. * * \par Thread safety - * Distinct objects: safe. \n + * Distinct objects: safe. + * * Shared objects: unsafe. */ template @@ -196,7 +197,7 @@ class static_execution_state * \details * The format of this information is documented by MySQL * here. - * \n + * * The returned string always uses ASCII encoding, regardless of the connection's character set. * * \par Exception safety @@ -227,9 +228,7 @@ class static_execution_state static_assert(sizeof...(StaticRow) > 0, "static_execution_state requires one row type, at least"); -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif }; } // namespace mysql diff --git a/include/boost/mysql/static_results.hpp b/include/boost/mysql/static_results.hpp index 5929c2454..3b811085f 100644 --- a/include/boost/mysql/static_results.hpp +++ b/include/boost/mysql/static_results.hpp @@ -35,8 +35,9 @@ namespace mysql { * All the passed types must fulfill the `StaticRow` concept. * * \par Thread safety - * Distinct objects: safe. \n - * Shared objects: unsafe. \n + * Distinct objects: safe. + * + * Shared objects: unsafe. */ template class static_results @@ -107,7 +108,7 @@ class static_results bool has_value() const noexcept { return impl_.get_interface().is_complete(); } /** - * \brief Returns the rows retrieved by the SQL query. + * \brief Returns the rows retrieved by the SQL query (TODO: see this). * \details * * \tparam I Resultset index. For operations returning more than one resultset, you can explicitly @@ -131,12 +132,13 @@ class static_results * Constant. */ template -#ifdef BOOST_MYSQL_DOXYGEN - boost::span -#else + // #ifdef BOOST_MYSQL_DOXYGEN + // boost::span + // #else detail::rows_span_t -#endif - rows() const noexcept { + // #endif + rows() const noexcept + { static_assert(I < sizeof...(StaticRow), "Index I out of range"); BOOST_ASSERT(has_value()); return impl_.template get_rows(); @@ -256,7 +258,7 @@ class static_results * \details * The format of this information is documented by MySQL * here. - * \n + * * The returned string always uses ASCII encoding, regardless of the connection's character set. * * \tparam I Resultset index. For operations returning more than one resultset, you can explicitly @@ -287,9 +289,7 @@ class static_results private: detail::static_results_impl impl_; -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif }; } // namespace mysql diff --git a/include/boost/mysql/underlying_row.hpp b/include/boost/mysql/underlying_row.hpp index f2d376bf0..f6653d70c 100644 --- a/include/boost/mysql/underlying_row.hpp +++ b/include/boost/mysql/underlying_row.hpp @@ -16,11 +16,11 @@ namespace boost { namespace mysql { /** - * \brief Type trait to retrieve the underlying row type. + * \brief Type trait to retrieve the underlying row type (TODO: see this). * \details * Given an input type `T` satisfying the `StaticRow` concept, * this trait is an alias for its underlying row type. It is defined as follows: - * \n + * * \li If `T` is a marker type, like \ref pfr_by_name "pfr_by_name< U >", `underlying_row_t` * is an alias for the marker's inner type `U`. * \li If `T` is not a marker type (e.g. it's a Boost.Describe struct or a `std::tuple`), @@ -29,13 +29,7 @@ namespace mysql { * For instance, \ref static_results::rows uses this trait to determine its return type. */ template -using underlying_row_t = -#ifdef BOOST_MYSQL_DOXYGEN - __see_below__ -#else - detail::underlying_row_t -#endif - ; +using underlying_row_t = detail::underlying_row_t; } // namespace mysql } // namespace boost diff --git a/include/boost/mysql/unix.hpp b/include/boost/mysql/unix.hpp index e6d36aa05..66592d6f5 100644 --- a/include/boost/mysql/unix.hpp +++ b/include/boost/mysql/unix.hpp @@ -15,7 +15,7 @@ namespace boost { namespace mysql { -#if defined(BOOST_ASIO_HAS_LOCAL_SOCKETS) || defined(BOOST_MYSQL_DOXYGEN) +#ifdef BOOST_ASIO_HAS_LOCAL_SOCKETS /** * \brief (Legacy) A connection to MySQL over a UNIX domain socket. diff --git a/include/boost/mysql/unix_ssl.hpp b/include/boost/mysql/unix_ssl.hpp index 33f5335a8..117f2fe95 100644 --- a/include/boost/mysql/unix_ssl.hpp +++ b/include/boost/mysql/unix_ssl.hpp @@ -16,7 +16,7 @@ namespace boost { namespace mysql { -#if defined(BOOST_ASIO_HAS_LOCAL_SOCKETS) || defined(BOOST_MYSQL_DOXYGEN) +#ifdef BOOST_ASIO_HAS_LOCAL_SOCKETS /** * \brief (Legacy) A connection to MySQL over a UNIX domain socket over TLS. diff --git a/include/boost/mysql/with_diagnostics.hpp b/include/boost/mysql/with_diagnostics.hpp index e7ef778a4..30f599e27 100644 --- a/include/boost/mysql/with_diagnostics.hpp +++ b/include/boost/mysql/with_diagnostics.hpp @@ -50,9 +50,7 @@ class with_diagnostics_t { CompletionToken impl_; -#ifndef BOOST_MYSQL_DOXYGEN friend struct detail::access; -#endif public: /** diff --git a/include/boost/mysql/with_params.hpp b/include/boost/mysql/with_params.hpp index e8731e5b1..65ae56a9e 100644 --- a/include/boost/mysql/with_params.hpp +++ b/include/boost/mysql/with_params.hpp @@ -21,11 +21,12 @@ namespace mysql { /** * \brief Type trait that applies the transformation performed by `std::make_tuple` to a single element. * \details - * For example: \n - * - `make_tuple_element_t` yields `int` \n - * - `make_tuple_element_t` yields `int` \n - * - `make_tuple_element_t>` yields `int&` \n - * \n + * For example: + * + * - `make_tuple_element_t` yields `int` + * - `make_tuple_element_t` yields `int` + * - `make_tuple_element_t>` yields `int&` + * * Consult the * `std::make_tuple` docs * for more info. @@ -41,7 +42,7 @@ using make_tuple_element_t = typename std::tuple_element<0, decltype(std::make_t * expand such placeholders. Satisfies `ExecutionRequest` and can thus be passed * to \ref any_connection::execute, \ref any_connection::start_execution and its * async counterparts. - * \n + * * When executed, client-side SQL formatting is invoked * to expand the provided query with the supplied parameters. The resulting query is then sent to * the server for execution. Formally, given a `conn` variable of \ref any_connection type, @@ -68,7 +69,8 @@ using make_tuple_element_t = typename std::tuple_element<0, decltype(std::make_t * \par Errors * When passed to \ref any_connection::execute, \ref any_connection::start_execution or * its async counterparts, in addition to the usual network and server-generated errors, - * `with_params_t` may generate the following errors: \n + * `with_params_t` may generate the following errors: + * * - Any errors generated by \ref format_sql. This includes errors due to invalid format * strings and unformattable arguments (e.g. invalid UTF-8). * - \ref client_errc::unknown_character_set if the connection does not know the @@ -93,19 +95,19 @@ struct with_params_t * As per `std::make_tuple`, parameters will be decay-copied into the resulting object. * This behavior can be disabled by passing `std::reference_wrapper` objects, which are * transformed into references. - * \n + * * This function does not inspect the supplied query string and arguments. * Errors like missing format arguments are detected when the resulting object is executed. * This function does not involve communication with the server. - * \n + * * The passed `args` must either satisfy `Formattable`, or be `std::reference_wrapper` * with `T` satisfying `Formattable`. - * \n + * * See \ref with_params_t for details on how the execution request works. - * \n + * * \par Exception safety * Strong guarantee. Any exception thrown when copying `args` will be propagated. - * \n + * */ template auto with_params(constant_string_view query, FormattableOrRefWrapper&&... args) From a7ee0aa013123bdfb3d8ae8652dd375c380e6a93 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Mon, 27 Jan 2025 17:09:05 +0100 Subject: [PATCH 12/50] File headers --- doc/antora.yml | 7 +++++++ doc/local-playbook.yml | 6 ++++++ doc/mrdocs.yml | 7 ++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/doc/antora.yml b/doc/antora.yml index 06f04c29f..c4885ac02 100644 --- a/doc/antora.yml +++ b/doc/antora.yml @@ -1,3 +1,10 @@ +# +# Copyright (c) 2019-2024 Ruben Perez Hidalgo (rubenperez038 at gmail dot com) +# +# Distributed under the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +# + name: mysql title: Boost.MySQL version: ~ diff --git a/doc/local-playbook.yml b/doc/local-playbook.yml index d8b85218f..0dd2623e6 100644 --- a/doc/local-playbook.yml +++ b/doc/local-playbook.yml @@ -1,3 +1,9 @@ +# +# Copyright (c) 2019-2024 Ruben Perez Hidalgo (rubenperez038 at gmail dot com) +# +# Distributed under the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +# site: url: https://test.com/ # TODO: change this diff --git a/doc/mrdocs.yml b/doc/mrdocs.yml index 12865ad58..11d8ae166 100644 --- a/doc/mrdocs.yml +++ b/doc/mrdocs.yml @@ -1,4 +1,9 @@ -# yaml-language-server: $schema=https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json +# +# Copyright (c) 2019-2024 Ruben Perez Hidalgo (rubenperez038 at gmail dot com) +# +# Distributed under the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +# source-root: ../include compilation-database: ./CMakeLists.txt From f656cb4e1d5dc0999db76df300a9687586a02fa2 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Mon, 27 Jan 2025 17:36:35 +0100 Subject: [PATCH 13/50] Revert BOOST_MYSQL_CONCEPT(X) --- include/boost/mysql/format_sql.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/mysql/format_sql.hpp b/include/boost/mysql/format_sql.hpp index 2136a9d1b..2259da53d 100644 --- a/include/boost/mysql/format_sql.hpp +++ b/include/boost/mysql/format_sql.hpp @@ -118,7 +118,7 @@ class formattable_ref * types may be stored as values. */ template < - BOOST_MYSQL_CONCEPT(formattable) Formattable, + BOOST_MYSQL_FORMATTABLE Formattable, class = typename std::enable_if< detail::is_formattable_type() && !detail::is_formattable_ref::value>::type> @@ -468,7 +468,7 @@ using format_context = basic_format_context; * \li \ref client_errc::format_arg_not_found if an argument referenced by `format_str` isn't present * in `args` (there aren't enough arguments or a named argument is not found). */ -template +template void format_sql_to(format_context_base& ctx, constant_string_view format_str, Formattable&&... args) { std::initializer_list args_il{ @@ -525,7 +525,7 @@ inline void format_sql_to( * \li \ref client_errc::format_arg_not_found if an argument referenced by `format_str` isn't present * in `args` (there aren't enough arguments or a named argument is not found). */ -template +template std::string format_sql(format_options opts, constant_string_view format_str, Formattable&&... args); /** From e1c7210648ccc1dbbdeb6fa9763c9d6176e446d4 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 29 Jan 2025 18:51:44 +0100 Subject: [PATCH 14/50] implementation-defined --- doc/mrdocs.yml | 14 ++++++++------ include/boost/mysql/detail/rows_iterator.hpp | 5 +++++ include/boost/mysql/rows.hpp | 6 +++--- include/boost/mysql/rows_view.hpp | 4 ++-- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/doc/mrdocs.yml b/doc/mrdocs.yml index 11d8ae166..87afba3ea 100644 --- a/doc/mrdocs.yml +++ b/doc/mrdocs.yml @@ -9,15 +9,17 @@ source-root: ../include compilation-database: ./CMakeLists.txt multipage: true include-symbols: - - 'boost::mysql::**' + - "boost::mysql::**" exclude-symbols: - boost::mysql::format_context_base::format_context_base - boost::mysql::format_context_base::assign - - 'boost::mysql::detail' - - 'boost::mysql::mysql_server_errc' - - 'boost::mysql::mariadb_server_errc' - - 'boost::mysql::mysql_collations' - - 'boost::mysql::mariadb_collations' + - "boost::mysql::detail::**" + - "boost::mysql::mysql_server_errc" + - "boost::mysql::mariadb_server_errc" + - "boost::mysql::mysql_collations" + - "boost::mysql::mariadb_collations" +implementation-defined: + - "boost::mysql::impl_defined::**" # Matching symbols need to not be excluded. Including all detail is slow and causes trouble verbose: true use-system-libc: true base-url: https://github.com/boostorg/mysql/blob/master/include/ diff --git a/include/boost/mysql/detail/rows_iterator.hpp b/include/boost/mysql/detail/rows_iterator.hpp index 248e02e78..9514d262e 100644 --- a/include/boost/mysql/detail/rows_iterator.hpp +++ b/include/boost/mysql/detail/rows_iterator.hpp @@ -106,6 +106,11 @@ class rows_iterator inline rows_iterator operator+(std::ptrdiff_t n, rows_iterator it) noexcept { return it + n; } } // namespace detail + +namespace impl_defined { +using rows_iterator = detail::rows_iterator; +} + } // namespace mysql } // namespace boost diff --git a/include/boost/mysql/rows.hpp b/include/boost/mysql/rows.hpp index aee820086..f5b80dcfc 100644 --- a/include/boost/mysql/rows.hpp +++ b/include/boost/mysql/rows.hpp @@ -42,17 +42,17 @@ class rows { public: /** - * \brief A random access iterator to an element (TODO: hide this). + * \brief A random access iterator to an element. * \details The exact type of the iterator is unspecified. */ - using iterator = detail::rows_iterator; + using iterator = impl_defined::rows_iterator; /// \copydoc iterator using const_iterator = iterator; /** * \brief A type that can hold elements in this collection with value semantics. - * \details Note that element accesors (like \ref rows_view::operator[]) return \ref reference + * \details Note that element accessors (like \ref rows_view::operator[]) return \ref reference * objects instead of `value_type` objects. You can use this type if you need an owning class. */ using value_type = row; diff --git a/include/boost/mysql/rows_view.hpp b/include/boost/mysql/rows_view.hpp index 03a0cbb50..73b42a3aa 100644 --- a/include/boost/mysql/rows_view.hpp +++ b/include/boost/mysql/rows_view.hpp @@ -52,10 +52,10 @@ class rows_view { public: /** - * \brief A random access iterator to an element (TODO: hide this). + * \brief A random access iterator to an element. * \details The exact type of the iterator is unspecified. */ - using iterator = detail::rows_iterator; + using iterator = impl_defined::rows_iterator; /// \copydoc iterator using const_iterator = iterator; From 829f0f327a750b3ef0e368259f1268b7227dca25 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 29 Jan 2025 18:57:38 +0100 Subject: [PATCH 15/50] Impl-defined for row, row_view --- include/boost/mysql/row.hpp | 7 +++++-- include/boost/mysql/row_view.hpp | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/boost/mysql/row.hpp b/include/boost/mysql/row.hpp index 4d24e6838..c630ade95 100644 --- a/include/boost/mysql/row.hpp +++ b/include/boost/mysql/row.hpp @@ -19,6 +19,9 @@ namespace boost { namespace mysql { +namespace impl_defined { +using row_iterator = const field_view*; +} /** * \brief An owning, read-only sequence of fields. @@ -39,10 +42,10 @@ class row public: /** - * \brief A random access iterator to an element (TODO: hide this). + * \brief A random access iterator to an element. * \details The exact type of the iterator is unspecified. */ - using iterator = const field_view*; + using iterator = impl_defined::row_iterator; /// \copydoc iterator using const_iterator = iterator; diff --git a/include/boost/mysql/row_view.hpp b/include/boost/mysql/row_view.hpp index 6f1b13e16..fe12a584a 100644 --- a/include/boost/mysql/row_view.hpp +++ b/include/boost/mysql/row_view.hpp @@ -21,6 +21,9 @@ namespace boost { namespace mysql { +namespace implementation_defined { +using row_view_iterator = const field_view*; +} /** * \brief A non-owning read-only reference to a sequence of fields. @@ -54,10 +57,10 @@ class row_view row_view() = default; /** - * \brief A random access iterator to an element (TODO: hide this). + * \brief A random access iterator to an element. * \details The exact type of the iterator is unspecified. */ - using iterator = const field_view*; + using iterator = implementation_defined::row_view_iterator; /// \copydoc iterator using const_iterator = iterator; From 32a048065e96416977a4fc03c311a581cedb2f9d Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 29 Jan 2025 19:02:42 +0100 Subject: [PATCH 16/50] Hide results::iterator --- include/boost/mysql/detail/results_iterator.hpp | 5 +++++ include/boost/mysql/detail/rows_iterator.hpp | 2 +- include/boost/mysql/results.hpp | 4 ++-- include/boost/mysql/row.hpp | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/boost/mysql/detail/results_iterator.hpp b/include/boost/mysql/detail/results_iterator.hpp index 8ec624133..d901f8b1d 100644 --- a/include/boost/mysql/detail/results_iterator.hpp +++ b/include/boost/mysql/detail/results_iterator.hpp @@ -93,6 +93,11 @@ class results_iterator inline results_iterator operator+(std::ptrdiff_t n, results_iterator it) noexcept { return it + n; } } // namespace detail + +namespace impl_defined { +using results_iterator = detail::results_iterator; // Required by the doc toolchain +} + } // namespace mysql } // namespace boost diff --git a/include/boost/mysql/detail/rows_iterator.hpp b/include/boost/mysql/detail/rows_iterator.hpp index 9514d262e..6f14668ea 100644 --- a/include/boost/mysql/detail/rows_iterator.hpp +++ b/include/boost/mysql/detail/rows_iterator.hpp @@ -108,7 +108,7 @@ inline rows_iterator operator+(std::ptrdiff_t n, rows_iterator it) noexcept { re } // namespace detail namespace impl_defined { -using rows_iterator = detail::rows_iterator; +using rows_iterator = detail::rows_iterator; // Required by the doc toolchain } } // namespace mysql diff --git a/include/boost/mysql/results.hpp b/include/boost/mysql/results.hpp index 28e691f0a..7327a6bec 100644 --- a/include/boost/mysql/results.hpp +++ b/include/boost/mysql/results.hpp @@ -42,10 +42,10 @@ class results { public: /** - * \brief A random access iterator to an element (TODO: hide this). + * \brief A random access iterator to an element. * \details The exact type of the iterator is unspecified. */ - using iterator = detail::results_iterator; + using iterator = impl_defined::results_iterator; /// \copydoc iterator using const_iterator = iterator; diff --git a/include/boost/mysql/row.hpp b/include/boost/mysql/row.hpp index c630ade95..e54028a82 100644 --- a/include/boost/mysql/row.hpp +++ b/include/boost/mysql/row.hpp @@ -20,7 +20,7 @@ namespace boost { namespace mysql { namespace impl_defined { -using row_iterator = const field_view*; +using row_iterator = const field_view*; // Required by the doc toolchain } /** From 66b47449eb3e572a3cb1d9363b46b95dbd71ec3f Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 29 Jan 2025 19:12:33 +0100 Subject: [PATCH 17/50] Make sequence_range_t impl-defined --- include/boost/mysql/detail/sequence.hpp | 11 ++++++++++- include/boost/mysql/sequence.hpp | 5 ++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/include/boost/mysql/detail/sequence.hpp b/include/boost/mysql/detail/sequence.hpp index f2405a0bb..2076449ce 100644 --- a/include/boost/mysql/detail/sequence.hpp +++ b/include/boost/mysql/detail/sequence.hpp @@ -46,7 +46,7 @@ struct sequence_range_impl }; template -using sequence_range_type = sequence_range_impl>; +using sequence_range_t = typename sequence_range_impl>::type; template Range&& cast_range(Range&& range) @@ -90,6 +90,15 @@ concept format_fn_for_range = requires(const FormatFn& format_fn, Range&& range, #endif } // namespace detail + +namespace impl_defined { + +// Required by the doc toolchain +template +using sequence_range_t = detail::sequence_range_t; + +} // namespace impl_defined + } // namespace mysql } // namespace boost diff --git a/include/boost/mysql/sequence.hpp b/include/boost/mysql/sequence.hpp index b0e756bd4..5e9ad8444 100644 --- a/include/boost/mysql/sequence.hpp +++ b/include/boost/mysql/sequence.hpp @@ -54,7 +54,7 @@ struct format_sequence }; /** - * \brief The type of range produced by \ref sequence (TODO: hide this). + * \brief The type of range produced by \ref sequence. * \details * This type trait can be used to obtain the range type produced * by calling \ref sequence. This type is used as the `Range` template @@ -78,10 +78,9 @@ struct format_sequence * - `sequence_range_t>>` is `std::vector&`. * - `sequence_range_t>>` is `const std::vector&`. * - `sequence_range_t` is `std::array`. - * (TODO: hide this) */ template -using sequence_range_t = typename detail::sequence_range_type::type; +using sequence_range_t = impl_defined::sequence_range_t; /** * \brief Creates an object that, when formatted, applies a per-element function to a range. From 5ac69ffbd38200968971df1fca852eb462da03a0 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 29 Jan 2025 19:17:26 +0100 Subject: [PATCH 18/50] Make sequence use \li --- include/boost/mysql/sequence.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/boost/mysql/sequence.hpp b/include/boost/mysql/sequence.hpp index 5e9ad8444..aaca1870e 100644 --- a/include/boost/mysql/sequence.hpp +++ b/include/boost/mysql/sequence.hpp @@ -66,18 +66,18 @@ struct format_sequence * * Formally, given the input range type `T` (which can be a reference with cv-qualifiers): * - * - If `T` is a C array or a reference to one (as per `std::is_array`), - * and the array elements' type is `U`, yields `std::array, N>`. - * - If `T` is a `std::reference_wrapper` object, or a reference to one, - * yields `U&`. - * - Otherwise, yields `std::remove_cvref_t`. + * \li If `T` is a C array or a reference to one (as per `std::is_array`), + * and the array elements' type is `U`, yields `std::array, N>`. + * \li If `T` is a `std::reference_wrapper` object, or a reference to one, + * yields `U&`. + * \li Otherwise, yields `std::remove_cvref_t`. * * Examples: * - * - `sequence_range_t&>` is `std::vector`. - * - `sequence_range_t>>` is `std::vector&`. - * - `sequence_range_t>>` is `const std::vector&`. - * - `sequence_range_t` is `std::array`. + * \li `sequence_range_t&>` is `std::vector`. + * \li `sequence_range_t>>` is `std::vector&`. + * \li `sequence_range_t>>` is `const std::vector&`. + * \li `sequence_range_t` is `std::array`. */ template using sequence_range_t = impl_defined::sequence_range_t; From 1c3f2017a98287eaf84e0f7cf9657a695a325888 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 29 Jan 2025 19:19:48 +0100 Subject: [PATCH 19/50] Fix impl_defined namespace name in row_view --- include/boost/mysql/row_view.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/mysql/row_view.hpp b/include/boost/mysql/row_view.hpp index fe12a584a..411420828 100644 --- a/include/boost/mysql/row_view.hpp +++ b/include/boost/mysql/row_view.hpp @@ -21,7 +21,7 @@ namespace boost { namespace mysql { -namespace implementation_defined { +namespace impl_defined { using row_view_iterator = const field_view*; } @@ -60,7 +60,7 @@ class row_view * \brief A random access iterator to an element. * \details The exact type of the iterator is unspecified. */ - using iterator = implementation_defined::row_view_iterator; + using iterator = impl_defined::row_view_iterator; /// \copydoc iterator using const_iterator = iterator; From 97f6c9a30ed5d960675be7ffd5b0a7869d442ce7 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 29 Jan 2025 19:24:32 +0100 Subject: [PATCH 20/50] Avoid fully-qualified boost::asio names --- include/boost/mysql/any_connection.hpp | 2 +- include/boost/mysql/tcp.hpp | 2 +- include/boost/mysql/tcp_ssl.hpp | 2 +- include/boost/mysql/unix.hpp | 2 +- include/boost/mysql/unix_ssl.hpp | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/boost/mysql/any_connection.hpp b/include/boost/mysql/any_connection.hpp index 01a9d0899..334ad7b31 100644 --- a/include/boost/mysql/any_connection.hpp +++ b/include/boost/mysql/any_connection.hpp @@ -169,7 +169,7 @@ class any_connection * You can configure extra parameters, like the SSL context and buffer sizes, by passing * an \ref any_connection_params object to this constructor. */ - any_connection(boost::asio::any_io_executor ex, any_connection_params params = {}) + any_connection(asio::any_io_executor ex, any_connection_params params = {}) : any_connection(create_engine(std::move(ex), params.ssl_context), params) { } diff --git a/include/boost/mysql/tcp.hpp b/include/boost/mysql/tcp.hpp index 008a75b5e..ee04962ed 100644 --- a/include/boost/mysql/tcp.hpp +++ b/include/boost/mysql/tcp.hpp @@ -23,7 +23,7 @@ namespace mysql { * \ref connection and its helper typedefs, as it's simpler to use * and provides the same level of performance. */ -using tcp_connection = connection; +using tcp_connection = connection; } // namespace mysql } // namespace boost diff --git a/include/boost/mysql/tcp_ssl.hpp b/include/boost/mysql/tcp_ssl.hpp index 5c3bfed21..9d179990a 100644 --- a/include/boost/mysql/tcp_ssl.hpp +++ b/include/boost/mysql/tcp_ssl.hpp @@ -24,7 +24,7 @@ namespace mysql { * \ref connection and its helper typedefs, as it's simpler to use * and provides the same level of performance. */ -using tcp_ssl_connection = connection>; +using tcp_ssl_connection = connection>; } // namespace mysql } // namespace boost diff --git a/include/boost/mysql/unix.hpp b/include/boost/mysql/unix.hpp index 66592d6f5..ab545ef4f 100644 --- a/include/boost/mysql/unix.hpp +++ b/include/boost/mysql/unix.hpp @@ -25,7 +25,7 @@ namespace mysql { * \ref connection and its helper typedefs, as it's simpler to use * and provides the same level of performance. */ -using unix_connection = connection; +using unix_connection = connection; #endif diff --git a/include/boost/mysql/unix_ssl.hpp b/include/boost/mysql/unix_ssl.hpp index 117f2fe95..6b083a8cf 100644 --- a/include/boost/mysql/unix_ssl.hpp +++ b/include/boost/mysql/unix_ssl.hpp @@ -25,7 +25,7 @@ namespace mysql { * New code should not use this class. When using UNIX sockets, we recommend * using plaintext connections. */ -using unix_ssl_connection = connection>; +using unix_ssl_connection = connection>; #endif From 74e92afafd859328902b7e4777d9b3c6471a150d Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Wed, 29 Jan 2025 19:43:36 +0100 Subject: [PATCH 21/50] Avoid fully-qualified names in concepts --- include/boost/mysql/any_connection.hpp | 40 +++++++++---------- include/boost/mysql/connection.hpp | 52 ++++++++++++------------- include/boost/mysql/connection_pool.hpp | 6 +-- 3 files changed, 49 insertions(+), 49 deletions(-) diff --git a/include/boost/mysql/any_connection.hpp b/include/boost/mysql/any_connection.hpp index 334ad7b31..f5b14877e 100644 --- a/include/boost/mysql/any_connection.hpp +++ b/include/boost/mysql/any_connection.hpp @@ -503,7 +503,7 @@ class any_connection template < BOOST_MYSQL_EXECUTION_REQUEST ExecutionRequest, BOOST_MYSQL_RESULTS_TYPE ResultsType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_execute(ExecutionRequest&& req, ResultsType& result, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_execute_t) @@ -520,7 +520,7 @@ class any_connection template < BOOST_MYSQL_EXECUTION_REQUEST ExecutionRequest, BOOST_MYSQL_RESULTS_TYPE ResultsType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_execute( ExecutionRequest&& req, @@ -612,7 +612,7 @@ class any_connection template < BOOST_MYSQL_EXECUTION_REQUEST ExecutionRequest, BOOST_MYSQL_EXECUTION_STATE_TYPE ExecutionStateType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_start_execution(ExecutionRequest&& req, ExecutionStateType& st, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_start_execution_t< @@ -632,7 +632,7 @@ class any_connection template < BOOST_MYSQL_EXECUTION_REQUEST ExecutionRequest, BOOST_MYSQL_EXECUTION_STATE_TYPE ExecutionStateType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_start_execution( ExecutionRequest&& req, @@ -697,7 +697,7 @@ class any_connection * and is never be called inline from within this function. */ template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code, ::boost::mysql::statement)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, statement)) CompletionToken = with_diagnostics_t> auto async_prepare_statement(string_view stmt, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_prepare_statement_t) @@ -707,7 +707,7 @@ class any_connection /// \copydoc async_prepare_statement template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code, ::boost::mysql::statement)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, statement)) CompletionToken = with_diagnostics_t> auto async_prepare_statement(string_view stmt, diagnostics& diag, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_prepare_statement_t) @@ -761,7 +761,7 @@ class any_connection * and is never be called inline from within this function. */ template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_close_statement(const statement& stmt, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_close_statement_t) @@ -771,7 +771,7 @@ class any_connection /// \copydoc async_close_statement template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_close_statement(const statement& stmt, diagnostics& diag, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_close_statement_t) @@ -828,7 +828,7 @@ class any_connection * and is never be called inline from within this function. */ template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code, ::boost::mysql::rows_view)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, rows_view)) CompletionToken = with_diagnostics_t> auto async_read_some_rows(execution_state& st, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_read_some_rows_dynamic_t) @@ -838,7 +838,7 @@ class any_connection /// \copydoc async_read_some_rows(execution_state&,CompletionToken&&) template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code, ::boost::mysql::rows_view)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, rows_view)) CompletionToken = with_diagnostics_t> auto async_read_some_rows(execution_state& st, diagnostics& diag, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_read_some_rows_dynamic_t) @@ -971,7 +971,7 @@ class any_connection template < class SpanElementType, class... StaticRow, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code, std::size_t)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, std::size_t)) CompletionToken = with_diagnostics_t> auto async_read_some_rows( static_execution_state& st, @@ -1029,7 +1029,7 @@ class any_connection template < class SpanElementType, class... StaticRow, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code, std::size_t)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, std::size_t)) CompletionToken = with_diagnostics_t> auto async_read_some_rows( static_execution_state& st, @@ -1100,7 +1100,7 @@ class any_connection */ template < BOOST_MYSQL_EXECUTION_STATE_TYPE ExecutionStateType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_read_resultset_head(ExecutionStateType& st, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_read_resultset_head_t) @@ -1111,7 +1111,7 @@ class any_connection /// \copydoc async_read_resultset_head template < BOOST_MYSQL_EXECUTION_STATE_TYPE ExecutionStateType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_read_resultset_head(ExecutionStateType& st, diagnostics& diag, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_read_resultset_head_t) @@ -1173,7 +1173,7 @@ class any_connection * and is never be called inline from within this function. */ template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_set_character_set(const character_set& charset, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_set_character_set_t) @@ -1183,7 +1183,7 @@ class any_connection /// \copydoc async_set_character_set template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_set_character_set( const character_set& charset, @@ -1238,7 +1238,7 @@ class any_connection * and is never be called inline from within this function. */ template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_ping(CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_ping_t) @@ -1248,7 +1248,7 @@ class any_connection /// \copydoc async_ping template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_ping(diagnostics& diag, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_ping_t) @@ -1323,7 +1323,7 @@ class any_connection * and is never be called inline from within this function. */ template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_reset_connection(CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_reset_connection_t) @@ -1333,7 +1333,7 @@ class any_connection /// \copydoc async_reset_connection template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_reset_connection(diagnostics& diag, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(detail::async_reset_connection_t) diff --git a/include/boost/mysql/connection.hpp b/include/boost/mysql/connection.hpp index 390d261c4..b4de8f3ad 100644 --- a/include/boost/mysql/connection.hpp +++ b/include/boost/mysql/connection.hpp @@ -245,7 +245,7 @@ class connection */ template < typename EndpointType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void(error_code)) async_connect( @@ -264,7 +264,7 @@ class connection /// \copydoc async_connect template < typename EndpointType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void(error_code)) async_connect( @@ -328,7 +328,7 @@ class connection * Otherwise, the final handler is called as if it was submitted using `asio::post`, * and is never be called inline from within this function. */ - template auto async_handshake( const handshake_params& params, @@ -339,7 +339,7 @@ class connection } /// \copydoc async_handshake - template auto async_handshake( const handshake_params& params, @@ -372,7 +372,7 @@ class connection template < BOOST_MYSQL_EXECUTION_REQUEST ExecutionRequest, BOOST_MYSQL_RESULTS_TYPE ResultsType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> auto async_execute( ExecutionRequest&& req, @@ -392,7 +392,7 @@ class connection template < BOOST_MYSQL_EXECUTION_REQUEST ExecutionRequest, BOOST_MYSQL_RESULTS_TYPE ResultsType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> auto async_execute( ExecutionRequest&& req, @@ -434,7 +434,7 @@ class connection template < BOOST_MYSQL_EXECUTION_REQUEST ExecutionRequest, BOOST_MYSQL_EXECUTION_STATE_TYPE ExecutionStateType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> auto async_start_execution( ExecutionRequest&& req, @@ -458,7 +458,7 @@ class connection template < BOOST_MYSQL_EXECUTION_REQUEST ExecutionRequest, BOOST_MYSQL_EXECUTION_STATE_TYPE ExecutionStateType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> auto async_start_execution( ExecutionRequest&& req, @@ -496,7 +496,7 @@ class connection } /// \copydoc any_connection::async_prepare_statement - template auto async_prepare_statement( string_view stmt, @@ -507,7 +507,7 @@ class connection } /// \copydoc async_prepare_statement - template auto async_prepare_statement( string_view stmt, @@ -538,7 +538,7 @@ class connection } /// \copydoc any_connection::async_close_statement - template auto async_close_statement( const statement& stmt, @@ -549,7 +549,7 @@ class connection } /// \copydoc async_close_statement - template auto async_close_statement( const statement& stmt, @@ -578,7 +578,7 @@ class connection } /// \copydoc any_connection::async_read_some_rows(execution_state&,CompletionToken&&) - template auto async_read_some_rows( execution_state& st, @@ -589,7 +589,7 @@ class connection } /// \copydoc async_read_some_rows(execution_state&,CompletionToken&&) - template auto async_read_some_rows( execution_state& st, @@ -728,7 +728,7 @@ class connection template < class SpanElementType, class... StaticRow, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code, std::size_t)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, std::size_t)) CompletionToken BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void(error_code, std::size_t)) async_read_some_rows( @@ -788,7 +788,7 @@ class connection template < class SpanElementType, class... StaticRow, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code, std::size_t)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, std::size_t)) CompletionToken BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void(error_code, std::size_t)) async_read_some_rows( @@ -826,7 +826,7 @@ class connection /// \copydoc any_connection::async_read_resultset_head template < BOOST_MYSQL_EXECUTION_STATE_TYPE ExecutionStateType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> auto async_read_resultset_head( ExecutionStateType& st, @@ -839,7 +839,7 @@ class connection /// \copydoc async_read_resultset_head template < BOOST_MYSQL_EXECUTION_STATE_TYPE ExecutionStateType, - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)> auto async_read_resultset_head( ExecutionStateType& st, @@ -864,7 +864,7 @@ class connection } /// \copydoc any_connection::async_ping - template auto async_ping(CompletionToken&& token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) BOOST_MYSQL_RETURN_TYPE(detail::async_ping_t) @@ -873,7 +873,7 @@ class connection } /// \copydoc async_ping - template auto async_ping( diagnostics& diag, @@ -946,7 +946,7 @@ class connection * Otherwise, the final handler is called as if it was submitted using `asio::post`, * and is never be called inline from within this function. */ - template auto async_reset_connection(CompletionToken&& token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) BOOST_MYSQL_RETURN_TYPE(detail::async_reset_connection_t) @@ -955,7 +955,7 @@ class connection } /// \copydoc async_reset_connection - template auto async_reset_connection( diagnostics& diag, @@ -1013,7 +1013,7 @@ class connection * Otherwise, the final handler is called as if it was submitted using `asio::post`, * and is never be called inline from within this function. */ - template auto async_close(CompletionToken&& token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) BOOST_MYSQL_RETURN_TYPE(detail::async_close_connection_t) @@ -1026,7 +1026,7 @@ class connection } /// \copydoc async_close - template auto async_close( diagnostics& diag, @@ -1081,7 +1081,7 @@ class connection * Otherwise, the final handler is called as if it was submitted using `asio::post`, * and is never be called inline from within this function. */ - template auto async_quit(CompletionToken&& token BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)) BOOST_MYSQL_RETURN_TYPE(detail::async_quit_connection_t) @@ -1090,7 +1090,7 @@ class connection } /// \copydoc async_quit - template auto async_quit( diagnostics& diag, diff --git a/include/boost/mysql/connection_pool.hpp b/include/boost/mysql/connection_pool.hpp index 329102526..7bb1a12c0 100644 --- a/include/boost/mysql/connection_pool.hpp +++ b/include/boost/mysql/connection_pool.hpp @@ -585,7 +585,7 @@ class connection_pool * concurrently with other functions that don't modify the state handle. */ template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code)) CompletionToken = with_diagnostics_t> auto async_run(CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE(decltype(asio::async_initiate( @@ -678,7 +678,7 @@ class connection_pool * concurrently with other functions that don't modify the state handle. */ template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code, ::boost::mysql::pooled_connection)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, pooled_connection)) CompletionToken = with_diagnostics_t> auto async_get_connection(CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE( decltype(async_get_connection_impl(nullptr, std::forward(token))) @@ -689,7 +689,7 @@ class connection_pool /// \copydoc async_get_connection template < - BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::mysql::error_code, ::boost::mysql::pooled_connection)) + BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, pooled_connection)) CompletionToken = with_diagnostics_t> auto async_get_connection(diagnostics& diag, CompletionToken&& token = {}) BOOST_MYSQL_RETURN_TYPE( decltype(async_get_connection_impl(nullptr, std::forward(token))) From 4e24f7f48b337bc1a89d815adf9842f71f8402cd Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Thu, 30 Jan 2025 17:42:53 +0100 Subject: [PATCH 22/50] Filter our formatter specialization --- doc/mrdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/mrdocs.yml b/doc/mrdocs.yml index 87afba3ea..60d2a58e1 100644 --- a/doc/mrdocs.yml +++ b/doc/mrdocs.yml @@ -18,6 +18,7 @@ exclude-symbols: - "boost::mysql::mariadb_server_errc" - "boost::mysql::mysql_collations" - "boost::mysql::mariadb_collations" + - "boost::mysql::formatter<*>" implementation-defined: - "boost::mysql::impl_defined::**" # Matching symbols need to not be excluded. Including all detail is slow and causes trouble verbose: true From 324958934225e844f83b8cdcc060d27697ea88df Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Thu, 30 Jan 2025 17:43:20 +0100 Subject: [PATCH 23/50] Ifdef concepts out on mrdocs --- include/boost/mysql/detail/config.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/mysql/detail/config.hpp b/include/boost/mysql/detail/config.hpp index d19fb4534..6d2f564c1 100644 --- a/include/boost/mysql/detail/config.hpp +++ b/include/boost/mysql/detail/config.hpp @@ -13,7 +13,7 @@ // clang-format off // Concepts -#if defined(__cpp_concepts) && defined(__cpp_lib_concepts) +#if defined(__cpp_concepts) && defined(__cpp_lib_concepts) && !defined(BOOST_MYSQL_DOXYGEN) #define BOOST_MYSQL_HAS_CONCEPTS #endif From efb9aa0c1fcb232d41c78a7741f4624f739276ed Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Thu, 30 Jan 2025 18:44:43 +0100 Subject: [PATCH 24/50] any_connection glitches --- include/boost/mysql/any_connection.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/boost/mysql/any_connection.hpp b/include/boost/mysql/any_connection.hpp index f5b14877e..5dfe77da8 100644 --- a/include/boost/mysql/any_connection.hpp +++ b/include/boost/mysql/any_connection.hpp @@ -123,11 +123,11 @@ struct any_connection_params * * Compared to \ref connection, this class: * - * - Is type-erased. The type of the connection doesn't depend on the transport being used. - * - Is easier to connect, as \ref connect and \ref async_connect handle hostname resolution. - * - Can always be re-connected after being used or encountering an error. - * - Always uses `asio::any_io_executor`. - * - Has the same level of performance. + * \li Is type-erased. The type of the connection doesn't depend on the transport being used. + * \li Is easier to connect, as \ref connect and \ref async_connect handle hostname resolution. + * \li Can always be re-connected after being used or encountering an error. + * \li Always uses `asio::any_io_executor`. + * \li Has the same level of performance. * * This is a move-only type. * @@ -141,7 +141,7 @@ struct any_connection_params * * Shared objects: unsafe. * - * This class is **not thread-safe**: for a single object, if you + * This class is *not thread-safe*: for a single object, if you * call its member functions concurrently from separate threads, you will get a race condition. */ class any_connection @@ -254,7 +254,7 @@ class any_connection * \details * By default, the server treats backslashes in string values as escape characters. * This behavior can be disabled by activating the - * `NO_BACKSLASH_ESCAPES` + * NO_BACKSLASH_ESCAPES * SQL mode. * * Every time an operation involving server communication completes, the server reports whether @@ -548,7 +548,7 @@ class any_connection * \ref execution_state::meta populated. * Metadata will be populated according to `this->meta_mode()`. * - * If the operation generated any rows or more than one resultset, these **must** be read (by using + * If the operation generated any rows or more than one resultset, these *must* be read (by using * \ref read_some_rows and \ref read_resultset_head) before engaging in any further network operation. * Otherwise, the results are undefined. * @@ -1279,7 +1279,7 @@ class any_connection * This function involves communication with the server, and thus may fail. * * \par Warning on character sets - * This function will restore the connection's character set and collation **to the server's default**, + * This function will restore the connection's character set and collation *to the server's default*, * and not to the one specified during connection establishment. Some servers have `latin1` as their * default character set, which is not usually what you want. Since there is no way to know this * character set, \ref current_character_set will return `nullptr` after the operation succeeds. From 9e318671d060b6f0dbfa56ba96ddc009ca1a2c6d Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Thu, 30 Jan 2025 19:04:06 +0100 Subject: [PATCH 25/50] any_connection_params glitches --- include/boost/mysql/any_connection.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/boost/mysql/any_connection.hpp b/include/boost/mysql/any_connection.hpp index 5dfe77da8..fa2eee126 100644 --- a/include/boost/mysql/any_connection.hpp +++ b/include/boost/mysql/any_connection.hpp @@ -93,14 +93,14 @@ struct any_connection_params * * This effectively means: * - * - Each request sent to the server must be smaller than this value. - * - Each individual row received from the server must be smaller than this value. - * Note that when using `execute` or `async_execute`, results objects may - * allocate memory beyond this limit if the total number of rows is high. + * \li Each request sent to the server must be smaller than this value. + * \li Each individual row received from the server must be smaller than this value. + * Note that when using `execute` or `async_execute`, results objects may + * allocate memory beyond this limit if the total number of rows is high. * * If you need to send or receive larger packets, you may need to adjust * your server's - * `max_allowed_packet` + * max_allowed_packet * system variable, too. */ std::size_t max_buffer_size{0x4000000}; From 2df19b1af368c791a67b273835a0d7cd9e068ac3 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 13:07:15 +0100 Subject: [PATCH 26/50] Move bound_statement_xxx definitions --- include/boost/mysql/impl/statement.hpp | 41 ---------------- include/boost/mysql/statement.hpp | 65 +++++++++++++++++++++----- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/include/boost/mysql/impl/statement.hpp b/include/boost/mysql/impl/statement.hpp index dec6c5939..9483fb4b6 100644 --- a/include/boost/mysql/impl/statement.hpp +++ b/include/boost/mysql/impl/statement.hpp @@ -23,47 +23,6 @@ #include #include -template -class boost::mysql::bound_statement_tuple -{ - friend class statement; - friend struct detail::access; - - struct impl - { - statement stmt; - WritableFieldTuple params; - } impl_; - - template - bound_statement_tuple(const statement& stmt, TupleType&& t) : impl_{stmt, std::forward(t)} - { - } -}; - -template -class boost::mysql::bound_statement_iterator_range -{ - friend class statement; - friend struct detail::access; - - struct impl - { - statement stmt; - FieldViewFwdIterator first; - FieldViewFwdIterator last; - } impl_; - - bound_statement_iterator_range( - const statement& stmt, - FieldViewFwdIterator first, - FieldViewFwdIterator last - ) - : impl_{stmt, first, last} - { - } -}; - template boost::mysql::bound_statement_tuple::type> boost::mysql::statement:: bind(WritableFieldTuple&& args) const diff --git a/include/boost/mysql/statement.hpp b/include/boost/mysql/statement.hpp index 683156513..32c413ff8 100644 --- a/include/boost/mysql/statement.hpp +++ b/include/boost/mysql/statement.hpp @@ -20,21 +20,9 @@ namespace boost { namespace mysql { -/** - * \brief A statement with bound parameters, represented as a `std::tuple`. - * \details - * This class satisfies `ExecutionRequest`. You can pass instances of this class to \ref connection::execute, - * \ref connection::start_execution or their async counterparts. - */ template class bound_statement_tuple; -/** - * \brief A statement with bound parameters, represented as an iterator range. - * \details - * This class satisfies `ExecutionRequest`. You can pass instances of this class to \ref connection::execute, - * \ref connection::start_execution or their async counterparts. - */ template class bound_statement_iterator_range; @@ -195,6 +183,59 @@ class statement friend struct detail::access; }; +/** + * \brief A statement with bound parameters, represented as a `std::tuple`. + * \details + * This class satisfies `ExecutionRequest`. You can pass instances of this class to \ref connection::execute, + * \ref connection::start_execution or their async counterparts. + */ +template +class bound_statement_tuple +{ + friend class statement; + friend struct detail::access; + + struct impl + { + statement stmt; + WritableFieldTuple params; + } impl_; + + template + bound_statement_tuple(const statement& stmt, TupleType&& t) : impl_{stmt, std::forward(t)} + { + } +}; + +/** + * \brief A statement with bound parameters, represented as an iterator range. + * \details + * This class satisfies `ExecutionRequest`. You can pass instances of this class to \ref connection::execute, + * \ref connection::start_execution or their async counterparts. + */ +template +class bound_statement_iterator_range +{ + friend class statement; + friend struct detail::access; + + struct impl + { + statement stmt; + FieldViewFwdIterator first; + FieldViewFwdIterator last; + } impl_; + + bound_statement_iterator_range( + const statement& stmt, + FieldViewFwdIterator first, + FieldViewFwdIterator last + ) + : impl_{stmt, first, last} + { + } +}; + } // namespace mysql } // namespace boost From f0fca0619ebfba4275b8f5ae52963e3876a1a8f9 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 13:16:39 +0100 Subject: [PATCH 27/50] Make rebind_executor implementation-defined --- include/boost/mysql/connection.hpp | 2 +- include/boost/mysql/detail/rebind_executor.hpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/boost/mysql/connection.hpp b/include/boost/mysql/connection.hpp index b4de8f3ad..ec5e18bc8 100644 --- a/include/boost/mysql/connection.hpp +++ b/include/boost/mysql/connection.hpp @@ -1112,7 +1112,7 @@ class connection struct rebind_executor { /// The connection type when rebound to the specified executor. - using other = connection::type>; + using other = connection>; }; }; diff --git a/include/boost/mysql/detail/rebind_executor.hpp b/include/boost/mysql/detail/rebind_executor.hpp index 021854480..d798db757 100644 --- a/include/boost/mysql/detail/rebind_executor.hpp +++ b/include/boost/mysql/detail/rebind_executor.hpp @@ -28,6 +28,14 @@ struct rebind_executor, Executor> }; } // namespace detail + +namespace impl_defined { + +template +using rebind_executor = typename detail::rebind_executor::type; + +} + } // namespace mysql } // namespace boost From 1b8f94362827e97f895de669cb513957278ea933 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 13:49:54 +0100 Subject: [PATCH 28/50] Move basic_format_context constructors to avoid [deleted] spec --- include/boost/mysql/format_sql.hpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/boost/mysql/format_sql.hpp b/include/boost/mysql/format_sql.hpp index 2259da53d..1abb1aee2 100644 --- a/include/boost/mysql/format_sql.hpp +++ b/include/boost/mysql/format_sql.hpp @@ -362,9 +362,6 @@ class basic_format_context : public format_context_base output_.clear(); } - basic_format_context(const basic_format_context&) = delete; - basic_format_context& operator=(const basic_format_context&) = delete; - /** * \brief Move constructor. * \details @@ -381,6 +378,8 @@ class basic_format_context : public format_context_base { } + basic_format_context(const basic_format_context&) = delete; + /** * \brief Move assignment. * \details @@ -399,6 +398,8 @@ class basic_format_context : public format_context_base return *this; } + basic_format_context& operator=(const basic_format_context&) = delete; + /** * \brief Retrieves the result of the formatting operation. * \details From d87087903a23f3f4e5b701798b3375869a18dbf3 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 13:55:31 +0100 Subject: [PATCH 29/50] Glitch in connection::reset_connection --- include/boost/mysql/connection.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/mysql/connection.hpp b/include/boost/mysql/connection.hpp index ec5e18bc8..6bc0fcc5c 100644 --- a/include/boost/mysql/connection.hpp +++ b/include/boost/mysql/connection.hpp @@ -905,14 +905,14 @@ class connection * This function involves communication with the server, and thus may fail. * * \par Warning on character sets - * This function will restore the connection's character set and collation **to the server's default**, + * This function will restore the connection's character set and collation *to the server's default*, * and not to the one specified during connection establishment. Some servers have `latin1` as their * default character set, which is not usually what you want. Use a `SET NAMES` statement after using * this function to be sure. * * You can find the character set that your server will use after reset by running: * \code - * "SELECT @@global.character_set_client, @@global.character_set_results;" + * SELECT @@global.character_set_client, @@global.character_set_results; * \endcode */ void reset_connection(error_code& err, diagnostics& diag) From 736c1d009ad9d3eea587712f2d4de6900f5769ee Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 13:57:42 +0100 Subject: [PATCH 30/50] connection glitch --- include/boost/mysql/connection.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/mysql/connection.hpp b/include/boost/mysql/connection.hpp index 6bc0fcc5c..5dd6fbede 100644 --- a/include/boost/mysql/connection.hpp +++ b/include/boost/mysql/connection.hpp @@ -60,7 +60,7 @@ class static_execution_state; * * Shared objects: unsafe. * - * This class is **not thread-safe**: for a single object, if you + * This class is *not thread-safe*: for a single object, if you * call its member functions concurrently from separate threads, you will get a race condition. * * \par Legacy From 67e12918ae62facac748fba92c9c44ee031dcafe Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 14:48:30 +0100 Subject: [PATCH 31/50] connection_pool glitches --- include/boost/mysql/connection_pool.hpp | 108 ++++++++++++------------ 1 file changed, 53 insertions(+), 55 deletions(-) diff --git a/include/boost/mysql/connection_pool.hpp b/include/boost/mysql/connection_pool.hpp index 7bb1a12c0..f9002b79c 100644 --- a/include/boost/mysql/connection_pool.hpp +++ b/include/boost/mysql/connection_pool.hpp @@ -44,7 +44,7 @@ namespace mysql { * automatically. It's safe to destroy the `connection_pool` object before `*this`. * * \par Thread safety - * This object and the \ref any_connection object it may point to are **not thread safe**, + * This object and the \ref any_connection object it may point to are *not thread safe*, * even if the connection pool used to obtain them was constructed with * \ref pool_params::thread_safe set to true. * @@ -56,9 +56,9 @@ namespace mysql { * In other words, individual connections can't be shared between threads. Pools can * be shared only if they're constructed with \ref pool_params::thread_safe set to true. * - * - Distinct objects: safe if the \ref connection_pool that was used to obtain the objects - * was created with \ref pool_params::thread_safe set to true. Otherwise, unsafe. - * - Shared objects: always unsafe. + * \li Distinct objects: safe if the \ref connection_pool that was used to obtain the objects + * was created with \ref pool_params::thread_safe set to true. Otherwise, unsafe. + * \li Shared objects: always unsafe. */ class pooled_connection { @@ -79,7 +79,7 @@ class pooled_connection public: /** - * \brief Constructs an invalid pooled connection. + * \brief Default constructor. * \details * The resulting object is invalid (`this->valid() == false`). * @@ -101,6 +101,8 @@ class pooled_connection */ pooled_connection(pooled_connection&& other) noexcept : impl_(std::move(other.impl_)) {} + pooled_connection(const pooled_connection&) = delete; + /** * \brief Move assignment. * \details @@ -129,7 +131,6 @@ class pooled_connection return *this; } - pooled_connection(const pooled_connection&) = delete; pooled_connection& operator=(const pooled_connection&) = delete; /** @@ -249,7 +250,7 @@ class pooled_connection * Pools are composed of an internal state object, plus a handle to such state. * Each component has different thread-safety rules. * - * Regarding **internal state**, connection pools are **not thread-safe by default**, + * Regarding *internal state*, connection pools are *not thread-safe by default*, * but can be made safe by constructing them with * \ref pool_params::thread_safe set to `true`. * Internal state is also mutated by some functions outside `connection_pool`, like @@ -258,16 +259,16 @@ class pooled_connection * The following actions imply a pool state mutation, and are protected by a strand * when thread-safety is enabled: * - * - Calling \ref connection_pool::async_run. - * - Calling \ref connection_pool::async_get_connection. - * - Cancelling \ref async_get_connection by emitting a cancellation signal. - * - Returning a connection by destroying a \ref pooled_connection or - * calling \ref pooled_connection::return_without_reset. - * - Cancelling the pool by calling \ref connection_pool::cancel, - * emitting a cancellation signal for \ref async_run, or destroying the - * `connection_pool` object. + * \li Calling \ref connection_pool::async_run. + * \li Calling \ref connection_pool::async_get_connection. + * \li Cancelling \ref async_get_connection by emitting a cancellation signal. + * \li Returning a connection by destroying a \ref pooled_connection or + * calling \ref pooled_connection::return_without_reset. + * \li Cancelling the pool by calling \ref connection_pool::cancel, + * emitting a cancellation signal for \ref async_run, or destroying the + * `connection_pool` object. * - * The **handle to the pool state** is **never thread-safe**, even for + * The *handle to the pool state* is *never thread-safe*, even for * pools with thread-safety enabled. Functions like assignments * modify the handle, and cause race conditions if called * concurrently with other functions. Other objects, @@ -276,9 +277,9 @@ class pooled_connection * * In summary: * - * - Distinct objects: safe. - * - Shared objects: unsafe. Setting \ref pool_params::thread_safe - * to `true` makes some functions safe. + * \li Distinct objects: safe. + * \li Shared objects: unsafe. Setting \ref pool_params::thread_safe + * to `true` makes some functions safe. * * \par Object lifetimes * Connection pool objects create an internal state object that is referenced @@ -363,12 +364,12 @@ class connection_pool * The passed executor becomes the pool executor, available through \ref get_executor. * `ex` is used as follows: * - * - If `params.thread_safe == true`, `ex` is used to build a strand. The strand is used - * to build internal I/O objects, like timers. - * - If `params.thread_safe == false`, `ex` is used directly to build internal I/O objects. - * - If `params.connection_executor` is empty, `ex` is used to build individual connections, - * regardless of the chosen thread-safety mode. Otherwise, `params.connection_executor` - * is used. + * \li If `params.thread_safe == true`, `ex` is used to build a strand. The strand is used + * to build internal I/O objects, like timers. + * \li If `params.thread_safe == false`, `ex` is used directly to build internal I/O objects. + * \li If `params.connection_executor` is empty, `ex` is used to build individual connections, + * regardless of the chosen thread-safety mode. Otherwise, `params.connection_executor` + * is used. * * \par Exception safety * Strong guarantee. Exceptions may be thrown by memory allocations. @@ -394,22 +395,15 @@ class connection_pool * pool_params. */ template < - class ExecutionContext -#ifndef BOOST_MYSQL_DOXYGEN - , + class ExecutionContext, class = typename std::enable_if().get_executor()), - asio::any_io_executor>::value>::type -#endif - > + asio::any_io_executor>::value>::type> connection_pool(ExecutionContext& ctx, pool_params params) : connection_pool(ctx.get_executor(), std::move(params), 0) { } - connection_pool(const connection_pool&) = delete; - connection_pool& operator=(const connection_pool&) = delete; - /** * \brief Move-constructor. * \details @@ -426,9 +420,9 @@ class connection_pool * * \par Thread-safety * Mutates `other`'s internal state handle. Does not access the pool state. - * This function **can never be called concurrently with other functions - * that read the internal state handle**, even for pools created - * with \ref pool_params::thread_safe set to true. + * This function + * *can never be called concurrently with other functions that read the internal state handle*, + * even for pools created with \ref pool_params::thread_safe set to true. * * The internal pool state is not accessed, so this function can be called * concurrently with functions that only access the pool's internal state, @@ -436,6 +430,8 @@ class connection_pool */ connection_pool(connection_pool&& other) = default; + connection_pool(const connection_pool&) = delete; + /** * \brief Move assignment. * \details @@ -452,9 +448,9 @@ class connection_pool * * \par Thread-safety * Mutates `*this` and `other`'s internal state handle. Does not access the pool state. - * This function **can never be called concurrently with other functions - * that read the internal state handle**, even for pools created - * with \ref pool_params::thread_safe set to true. + * This function + * *can never be called concurrently with other functions that read the internal state handle*, + * even for pools created with \ref pool_params::thread_safe set to true. * * The internal pool state is not accessed, so this function can be called * concurrently with functions that only access the pool's internal state, @@ -462,6 +458,8 @@ class connection_pool */ connection_pool& operator=(connection_pool&& other) = default; + connection_pool& operator=(const connection_pool&) = delete; + /** * \brief Destructor. * \details @@ -469,9 +467,9 @@ class connection_pool * * \par Thread-safety * Mutates the internal state handle. Mutates the pool state. - * This function **can never be called concurrently with other functions - * that read the internal state handle**, even for pools created - * with \ref pool_params::thread_safe set to true. + * This function + * *can never be called concurrently with other functions that read the internal state handle*, + * even for pools created with \ref pool_params::thread_safe set to true. * * The internal pool state is modified as per \ref cancel. * If thread-safety is enabled, it's safe to call the destructor concurrently @@ -569,8 +567,8 @@ class connection_pool * is equivalent to calling \ref connection_pool::cancel. * The following `asio::cancellation_type_t` values are supported: * - * - `asio::cancellation_type_t::terminal` - * - `asio::cancellation_type_t::partial` + * \li `asio::cancellation_type_t::terminal` + * \li `asio::cancellation_type_t::partial` * * Note that `asio::cancellation_type_t::total` is not supported because invoking * `async_run` always has observable side effects. @@ -659,18 +657,18 @@ class connection_pool * Cancelling `async_get_connection` has no observable side effects. * The following `asio::cancellation_type_t` values are supported: * - * - `asio::cancellation_type_t::terminal` - * - `asio::cancellation_type_t::partial` - * - `asio::cancellation_type_t::total` + * \li `asio::cancellation_type_t::terminal` + * \li `asio::cancellation_type_t::partial` + * \li `asio::cancellation_type_t::total` * * \par Errors - * - \ref client_errc::no_connection_available, if the `async_get_connection` - * operation is cancelled before a connection becomes available. - * - \ref client_errc::pool_not_running, if the `async_get_connection` - * operation is cancelled before async_run is called. - * - \ref client_errc::pool_cancelled, if the pool is cancelled before - * the operation completes, or `async_get_connection` is called - * on a pool that has been cancelled. + * \li \ref client_errc::no_connection_available, if the `async_get_connection` + * operation is cancelled before a connection becomes available. + * \li \ref client_errc::pool_not_running, if the `async_get_connection` + * operation is cancelled before async_run is called. + * \li \ref client_errc::pool_cancelled, if the pool is cancelled before + * the operation completes, or `async_get_connection` is called + * on a pool that has been cancelled. * * \par Thread-safety * Reads the internal state handle. Mutates the pool state. From 594a04123a97b7b025f2148c6e2fc71331d6c796 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 16:45:17 +0100 Subject: [PATCH 32/50] Enable calendar types in docs even if not all C++20 chrono is supported --- include/boost/mysql/detail/config.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/boost/mysql/detail/config.hpp b/include/boost/mysql/detail/config.hpp index 6d2f564c1..09be575b1 100644 --- a/include/boost/mysql/detail/config.hpp +++ b/include/boost/mysql/detail/config.hpp @@ -44,8 +44,10 @@ #define BOOST_MYSQL_RETURN_TYPE(...) #endif -// Chrono calendar types and functions -#if __cpp_lib_chrono >= 201907L +// Chrono calendar types and functions. +// When generating docs, the standard library may not have support for everything +// in C++20 chrono, but enough for render docs. +#if (__cpp_lib_chrono >= 201907L) || (defined(BOOST_MYSQL_DOXYGEN) && __cplusplus >= 201907L) #define BOOST_MYSQL_HAS_LOCAL_TIME #endif From 3bf9fb4eecb5ce1c58d8cf5ef9086f370d094918 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 17:25:26 +0100 Subject: [PATCH 33/50] field glitches --- include/boost/mysql/field.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/mysql/field.hpp b/include/boost/mysql/field.hpp index 7192568b3..ede3ca958 100644 --- a/include/boost/mysql/field.hpp +++ b/include/boost/mysql/field.hpp @@ -100,7 +100,7 @@ class field /** * \brief Constructs a `field` holding NULL. * \details - * Caution: `field(NULL)` will __NOT__ match this overload. It will try to construct + * Caution: `field(NULL)` will *NOT* match this overload. It will try to construct * a `string_view` from a NULL C string, causing undefined behavior. * * \par Exception safety From f0b24b1a9ad8bf703d2a554df605843bb59113ee Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 17:25:40 +0100 Subject: [PATCH 34/50] execution_state glitches --- include/boost/mysql/execution_state.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/boost/mysql/execution_state.hpp b/include/boost/mysql/execution_state.hpp index f8a759bcf..cba6efc7e 100644 --- a/include/boost/mysql/execution_state.hpp +++ b/include/boost/mysql/execution_state.hpp @@ -149,6 +149,7 @@ class execution_state /** * \brief Returns the number of rows affected by the SQL statement associated to this resultset. + * \details * Note that this is NOT the number of matched rows. If a row * is matched but not affected, it won't be accounted for here. * From d57b189889638f0949312e9e1672e8509a079102 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 17:48:23 +0100 Subject: [PATCH 35/50] field_view glitches 1 --- include/boost/mysql/field_view.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/mysql/field_view.hpp b/include/boost/mysql/field_view.hpp index 6be19824c..c54a3e678 100644 --- a/include/boost/mysql/field_view.hpp +++ b/include/boost/mysql/field_view.hpp @@ -49,8 +49,8 @@ namespace mysql { * \ref rows or \ref results object holding memory to which the `field_view` points. It will be valid as * long as the memory allocated by that object is valid. * \li If it was created from a \ref field (by calling `operator field_view`), the - * `field_view` acts as a reference to that `field` object, and will be valid as long as the - * `field` is. + * `field_view` acts as a reference to that `field` object, and will be valid + * as long as the `field` is. * \li If it was created from a scalar (null, integral, floating point, date, datetime or time), the * `field_view` has value semnatics and will always be valid. * \li If it was created from a string or blob type, the `field_view` acts as a `string_view` or `blob_view`, From b3c138927ee09a5c0f18abc610398e9f0556edac Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 17:58:33 +0100 Subject: [PATCH 36/50] field_view glitches 2 --- include/boost/mysql/field_view.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/mysql/field_view.hpp b/include/boost/mysql/field_view.hpp index c54a3e678..c8f302a96 100644 --- a/include/boost/mysql/field_view.hpp +++ b/include/boost/mysql/field_view.hpp @@ -75,7 +75,7 @@ class field_view /** * \brief Constructs a `field_view` holding NULL. * \details - * Caution: `field_view(NULL)` will **not** match this overload. It will try to construct + * Caution: `field_view(NULL)` will *not* match this overload. It will try to construct * a `string_view` from a NULL C string, causing undefined behavior. * * \par Exception safety From a87d089638ba78a202aec5cd6f5c48fb4dcaf2c8 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 18:01:04 +0100 Subject: [PATCH 37/50] format_sequence glitches --- include/boost/mysql/sequence.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/boost/mysql/sequence.hpp b/include/boost/mysql/sequence.hpp index aaca1870e..84235af88 100644 --- a/include/boost/mysql/sequence.hpp +++ b/include/boost/mysql/sequence.hpp @@ -32,10 +32,10 @@ namespace mysql { * * \par Type requirements * - * - Expressions `std::begin(range)` and `std::end(range)` should return an input iterator/sentinel - * pair that can be compared for (in)equality. - * - The expression `static_cast(fn)(* std::begin(range), ctx)` - * should be well formed, with `ctx` begin a `format_context_base&`. + * \li Expressions `std::begin(range)` and `std::end(range)` should return an input iterator/sentinel + * pair that can be compared for (in)equality. + * \li The expression `static_cast(fn)( *std::begin(range), ctx )` + * should be well formed, with `ctx` begin a `format_context_base&`. */ template #if defined(BOOST_MYSQL_HAS_CONCEPTS) From d8718207111dc3226987cfeba1b813104a557c6d Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 18:03:18 +0100 Subject: [PATCH 38/50] Hide details in formattable_ref --- include/boost/mysql/format_sql.hpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/boost/mysql/format_sql.hpp b/include/boost/mysql/format_sql.hpp index 1abb1aee2..1603d25df 100644 --- a/include/boost/mysql/format_sql.hpp +++ b/include/boost/mysql/format_sql.hpp @@ -118,10 +118,14 @@ class formattable_ref * types may be stored as values. */ template < - BOOST_MYSQL_FORMATTABLE Formattable, + BOOST_MYSQL_FORMATTABLE Formattable +#ifndef BOOST_MYSQL_DOXYGEN + , class = typename std::enable_if< detail::is_formattable_type() && - !detail::is_formattable_ref::value>::type> + !detail::is_formattable_ref::value>::type +#endif + > formattable_ref(Formattable&& value) noexcept : impl_(detail::make_formattable_ref(std::forward(value))) { From b3148f66f33715a8aaa6c3d1080ac5d6aab26ccd Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 23:11:09 +0100 Subject: [PATCH 39/50] formatter glitches --- include/boost/mysql/format_sql.hpp | 42 +++++++++++++++--------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/include/boost/mysql/format_sql.hpp b/include/boost/mysql/format_sql.hpp index 1603d25df..cad7e0e0c 100644 --- a/include/boost/mysql/format_sql.hpp +++ b/include/boost/mysql/format_sql.hpp @@ -38,37 +38,37 @@ namespace mysql { * \ref format_sql and similar functions. * * A `formatter` specialization for a type `T` should have the following form: - * ``` + * \code * template <> * struct formatter * { * const char* parse(const char* begin, const char* end); // parse format specs * void format(const T& value, format_context_base& ctx) const; // perform the actual formatting * }; - * ``` + * \endcode * * When a value with a custom formatter is formatted (using \ref format_sql or a similar * function), the library performs the following actions: * - * - An instance of `formatter` is default-constructed, where `T` is the type of the - * value being formatted after removing const and references. - * - The `parse` function is invoked on the constructed instance, - * with `[begin, end)` pointing to the format specifier - * that the current replacement field has. If `parse` finds specifiers it understands, it should - * remember them, usually setting some flag in the `formatter` instance. - * `parse` must return an iterator to the first - * unparsed character in the range (or the `end` iterator, if everything was parsed). - * Some examples of what would get passed to `parse`: - * - In `"SELECT {}"`, the range would be empty. - * - In `"SELECT {:abc}"`, the range would be `"abc"`. - * - In `"SELECT {0:i}"`, the range would be `"i"`. - * - If `parse` didn't manage to parse all the passed specifiers (i.e. if it returned an iterator - * different to the passed's end), a \ref client_errc::format_string_invalid_specifier - * is emitted and the format operation finishes. - * - Otherwise, `format` is invoked on the formatter instance, passing the value to be formatted - * and the \ref format_context_base where format operation is running. - * This function should perform the actual formatting, usually calling - * \ref format_sql_to on the passed context. + * \li An instance of `formatter` is default-constructed, where `T` is the type of the + * value being formatted after removing const and references. + * \li The `parse` function is invoked on the constructed instance, + * with `[begin, end)` pointing to the format specifier + * that the current replacement field has. If `parse` finds specifiers it understands, it should + * remember them, usually setting some flag in the `formatter` + * instance. `parse` must return an iterator to the first + * unparsed character in the range (or the `end` iterator, if everything was parsed). + * Some examples of what would get passed to `parse`: + * \li In `"SELECT {}"`, the range would be empty. + * \li In `"SELECT {:abc}"`, the range would be `"abc"`. + * \li In `"SELECT {0:i}"`, the range would be `"i"`. + * \li If `parse` didn't manage to parse all the passed specifiers (i.e. if it returned an iterator + * different to the passed's end), a \ref client_errc::format_string_invalid_specifier + * is emitted and the format operation finishes. + * \li Otherwise, `format` is invoked on the formatter instance, passing the value to be formatted + * and the \ref format_context_base where format operation is running. + * This function should perform the actual formatting, + * usually calling \ref format_sql_to on the passed context. * * * Don't specialize `formatter` for built-in types, like `int`, `std::string` or From 0dc0e3b6aab3868337e5e598f86cc3f8698133da Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 23:15:22 +0100 Subject: [PATCH 40/50] make_tuple_element_t glitches --- include/boost/mysql/with_params.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/boost/mysql/with_params.hpp b/include/boost/mysql/with_params.hpp index 65ae56a9e..19df5cc01 100644 --- a/include/boost/mysql/with_params.hpp +++ b/include/boost/mysql/with_params.hpp @@ -23,12 +23,12 @@ namespace mysql { * \details * For example: * - * - `make_tuple_element_t` yields `int` - * - `make_tuple_element_t` yields `int` - * - `make_tuple_element_t>` yields `int&` + * \li `make_tuple_element_t` yields `int` + * \li `make_tuple_element_t` yields `int` + * \li `make_tuple_element_t>` yields `int&` * * Consult the - * `std::make_tuple` docs + * std::make_tuple docs * for more info. */ template @@ -71,11 +71,11 @@ using make_tuple_element_t = typename std::tuple_element<0, decltype(std::make_t * its async counterparts, in addition to the usual network and server-generated errors, * `with_params_t` may generate the following errors: * - * - Any errors generated by \ref format_sql. This includes errors due to invalid format - * strings and unformattable arguments (e.g. invalid UTF-8). - * - \ref client_errc::unknown_character_set if the connection does not know the - * character set it's using when the query is executed (i.e. \ref any_connection::current_character_set - * would return an error. + * \li Any errors generated by \ref format_sql. This includes errors due to invalid format + * strings and unformattable arguments (e.g. invalid UTF-8). + * \li \ref client_errc::unknown_character_set if the connection does not know the + * character set it's using when the query is executed (i.e. \ref any_connection::current_character_set + * would return an error. */ template struct with_params_t From ffc03cc04772ff827453ff23c34777d99f71853f Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 23:31:06 +0100 Subject: [PATCH 41/50] metadata glitche --- include/boost/mysql/metadata.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/boost/mysql/metadata.hpp b/include/boost/mysql/metadata.hpp index 7b13e7e48..0fa6dd312 100644 --- a/include/boost/mysql/metadata.hpp +++ b/include/boost/mysql/metadata.hpp @@ -45,7 +45,7 @@ class metadata * No-throw guarantee. * * \par Object lifetimes - * `string_view`s obtained by calling accessor functions on `other` are invalidated. + * `string_view` values obtained by calling accessor functions on `other` are invalidated. */ metadata(metadata&& other) = default; @@ -64,7 +64,7 @@ class metadata * No-throw guarantee. * * \par Object lifetimes - * `string_view`s obtained by calling accessor functions on both `*this` and `other` + * `string_view` values obtained by calling accessor functions on both `*this` and `other` * are invalidated. */ metadata& operator=(metadata&& other) = default; @@ -76,7 +76,7 @@ class metadata * Basic guarantee. Internal allocations may throw. * * \par Object lifetimes - * `string_view`s obtained by calling accessor functions on `*this` + * `string_view` values obtained by calling accessor functions on `*this` * are invalidated. */ metadata& operator=(const metadata& other) = default; @@ -102,7 +102,7 @@ class metadata /** * \brief Returns the name of the virtual table the column belongs to. * \details If the table was aliased, this will be the name of the alias - * (e.g. in `"SELECT * FROM employees emp"`, `table()` will be `"emp"`). + * (e.g. in `"SELECT id FROM employees emp"`, `table()` will be `"emp"`). * * This is optional information - it won't be populated unless * the connection executing the query has `meta_mode() == metadata_mode::full`. @@ -118,7 +118,7 @@ class metadata /** * \brief Returns the name of the physical table the column belongs to. - * \details E.g. in `"SELECT * FROM employees emp"`, + * \details E.g. in `"SELECT id FROM employees emp"`, * `original_table()` will be `"employees"`. * * This is optional information - it won't be populated unless @@ -170,7 +170,7 @@ class metadata /** * \brief Returns the ID of the collation that fields belonging to this column use. - * \details This is **not** the collation used when defining the column + * \details This is *not* the collation used when defining the column * in a `CREATE TABLE` statement, but the collation that fields that belong to * this column and are sent to the client have. It usually matches the connection's collation. * From 30302e85742d50e2c353cfdeedca114349424e53 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Fri, 31 Jan 2025 23:33:50 +0100 Subject: [PATCH 42/50] pipeline_request enhancements --- include/boost/mysql/pipeline.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/mysql/pipeline.hpp b/include/boost/mysql/pipeline.hpp index f829bd620..739ee5d28 100644 --- a/include/boost/mysql/pipeline.hpp +++ b/include/boost/mysql/pipeline.hpp @@ -284,7 +284,7 @@ class pipeline_request * Strong guarantee. Memory allocations may throw. * * \par Object lifetimes - * query is copied into the request and need not be kept alive after this function returns. + * `query` is copied into the request and need not be kept alive after this function returns. */ BOOST_MYSQL_DECL pipeline_request& add_execute(string_view query); @@ -357,7 +357,7 @@ class pipeline_request * Strong guarantee. Memory allocations may throw. * * \par Object lifetimes - * stmt_sql is copied into the request and need not be kept alive after this function returns. + * `stmt_sql` is copied into the request and need not be kept alive after this function returns. */ BOOST_MYSQL_DECL pipeline_request& add_prepare_statement(string_view stmt_sql); From 66a819c6161cef103282669a17903207569f7249 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Sat, 1 Feb 2025 00:08:02 +0100 Subject: [PATCH 43/50] statement --- include/boost/mysql/impl/statement.hpp | 16 ++++++++++++++-- include/boost/mysql/statement.hpp | 21 ++++++++++++++------- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/include/boost/mysql/impl/statement.hpp b/include/boost/mysql/impl/statement.hpp index 9483fb4b6..cfdf601e2 100644 --- a/include/boost/mysql/impl/statement.hpp +++ b/include/boost/mysql/impl/statement.hpp @@ -23,7 +23,13 @@ #include #include -template +template < + BOOST_MYSQL_WRITABLE_FIELD_TUPLE WritableFieldTuple +#ifndef BOOST_MYSQL_DOXYGEN + , + typename EnableIf +#endif + > boost::mysql::bound_statement_tuple::type> boost::mysql::statement:: bind(WritableFieldTuple&& args) const @@ -35,7 +41,13 @@ boost::mysql::bound_statement_tuple::typ ); } -template +template < + BOOST_MYSQL_FIELD_VIEW_FORWARD_ITERATOR FieldViewFwdIterator +#ifndef BOOST_MYSQL_DOXYGEN + , + typename EnableIf +#endif + > boost::mysql::bound_statement_iterator_range boost::mysql::statement::bind( FieldViewFwdIterator first, FieldViewFwdIterator last diff --git a/include/boost/mysql/statement.hpp b/include/boost/mysql/statement.hpp index 32c413ff8..4544791a7 100644 --- a/include/boost/mysql/statement.hpp +++ b/include/boost/mysql/statement.hpp @@ -94,7 +94,7 @@ class statement } /** - * \brief Binds parameters to a statement TODO: see this. + * \brief Binds parameters to a statement. * \details * Creates an object that packages `*this` and the statement actual parameters `params`. * This object can be passed to \ref connection::execute, \ref connection::start_execution @@ -111,7 +111,6 @@ class statement * * \par Exception safety * Strong guarantee. Only throws if constructing any of the internal tuple elements throws. - * (TODO: review this, as it was listed as "see below") */ template auto bind(T&&... params) const -> typename std::enable_if< @@ -139,9 +138,13 @@ class statement * Strong guarantee. Only throws if the decay-copy of the tuple throws. */ template < - BOOST_MYSQL_WRITABLE_FIELD_TUPLE WritableFieldTuple, + BOOST_MYSQL_WRITABLE_FIELD_TUPLE WritableFieldTuple +#ifndef BOOST_MYSQL_DOXYGEN + , typename EnableIf = - typename std::enable_if::value>::type> + typename std::enable_if::value>::type +#endif + > bound_statement_tuple::type> bind(WritableFieldTuple&& params ) const; @@ -162,9 +165,13 @@ class statement * Strong guarantee. Only throws if copy-constructing iterators throws. */ template < - BOOST_MYSQL_FIELD_VIEW_FORWARD_ITERATOR FieldViewFwdIterator, - typename EnableIf = typename std::enable_if< - detail::is_field_view_forward_iterator::value>::type> + BOOST_MYSQL_FIELD_VIEW_FORWARD_ITERATOR FieldViewFwdIterator +#ifndef BOOST_MYSQL_DOXYGEN + , + typename EnableIf = + typename std::enable_if::value>::type +#endif + > bound_statement_iterator_range bind( FieldViewFwdIterator params_first, FieldViewFwdIterator params_last From fb13a086f00be815058b5cebf24afb482ef45edc Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Sat, 1 Feb 2025 00:14:55 +0100 Subject: [PATCH 44/50] static_results, static_execution_state --- .../detail/execution_processor/static_results_impl.hpp | 6 +----- include/boost/mysql/static_execution_state.hpp | 1 + include/boost/mysql/static_results.hpp | 9 ++------- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/include/boost/mysql/detail/execution_processor/static_results_impl.hpp b/include/boost/mysql/detail/execution_processor/static_results_impl.hpp index 4a95cf50d..f885e15c6 100644 --- a/include/boost/mysql/detail/execution_processor/static_results_impl.hpp +++ b/include/boost/mysql/detail/execution_processor/static_results_impl.hpp @@ -263,10 +263,6 @@ BOOST_INLINE_CONSTEXPR std::array() ); -template -using rows_span_t = boost::span< - const typename std::tuple_element...>>::type>; - template class static_results_impl { @@ -331,7 +327,7 @@ class static_results_impl // User facing template - rows_span_t get_rows() const noexcept + span...>>> get_rows() const noexcept { return std::get(data_.rows); } diff --git a/include/boost/mysql/static_execution_state.hpp b/include/boost/mysql/static_execution_state.hpp index 51a1fa60a..10329e8c3 100644 --- a/include/boost/mysql/static_execution_state.hpp +++ b/include/boost/mysql/static_execution_state.hpp @@ -161,6 +161,7 @@ class static_execution_state /** * \brief Returns the number of rows affected by the SQL statement associated to this resultset. + * \details * Note that this is NOT the number of matched rows. If a row * is matched but not affected, it won't be accounted for here. * diff --git a/include/boost/mysql/static_results.hpp b/include/boost/mysql/static_results.hpp index 3b811085f..165ca8125 100644 --- a/include/boost/mysql/static_results.hpp +++ b/include/boost/mysql/static_results.hpp @@ -108,7 +108,7 @@ class static_results bool has_value() const noexcept { return impl_.get_interface().is_complete(); } /** - * \brief Returns the rows retrieved by the SQL query (TODO: see this). + * \brief Returns the rows retrieved by the SQL query. * \details * * \tparam I Resultset index. For operations returning more than one resultset, you can explicitly @@ -132,12 +132,7 @@ class static_results * Constant. */ template - // #ifdef BOOST_MYSQL_DOXYGEN - // boost::span - // #else - detail::rows_span_t - // #endif - rows() const noexcept + span...>>> rows() const noexcept { static_assert(I < sizeof...(StaticRow), "Index I out of range"); BOOST_ASSERT(has_value()); From 590853b3918828006acd68394eb228993402318b Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Sat, 1 Feb 2025 00:18:12 +0100 Subject: [PATCH 45/50] undrlying_row_t --- include/boost/mysql/underlying_row.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/mysql/underlying_row.hpp b/include/boost/mysql/underlying_row.hpp index f6653d70c..cde03d55f 100644 --- a/include/boost/mysql/underlying_row.hpp +++ b/include/boost/mysql/underlying_row.hpp @@ -21,7 +21,7 @@ namespace mysql { * Given an input type `T` satisfying the `StaticRow` concept, * this trait is an alias for its underlying row type. It is defined as follows: * - * \li If `T` is a marker type, like \ref pfr_by_name "pfr_by_name< U >", `underlying_row_t` + * \li If `T` is a marker type, like \ref pfr_by_name, `underlying_row_t` * is an alias for the marker's inner type `U`. * \li If `T` is not a marker type (e.g. it's a Boost.Describe struct or a `std::tuple`), * `underlying_row_t` is an alias for `T`. From f684aa4679876186732e353c61756976617c2374 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Sat, 1 Feb 2025 00:18:37 +0100 Subject: [PATCH 46/50] with_diagnostics_t --- include/boost/mysql/with_diagnostics.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/boost/mysql/with_diagnostics.hpp b/include/boost/mysql/with_diagnostics.hpp index 30f599e27..93f895d4d 100644 --- a/include/boost/mysql/with_diagnostics.hpp +++ b/include/boost/mysql/with_diagnostics.hpp @@ -40,10 +40,10 @@ namespace mysql { * it does not modify the signature, and calls the underlying token's initiation directly. * This has the following implications: * - * - `asio::as_tuple(with_diagnostics(X))` is equivalent to `asio::as_tuple(X)`. - * - `asio::redirect_error(with_diagnostics(X))` is equivalent to `asio::redirect_error(X)`. - * - Tokens like `asio::as_tuple` and `asio::redirect_error` can be used as partial tokens - * when `with_diagnostics` is the default completion token, as is the case for \ref any_connection. + * \li `asio::as_tuple(with_diagnostics(X))` is equivalent to `asio::as_tuple(X)`. + * \li `asio::redirect_error(with_diagnostics(X))` is equivalent to `asio::redirect_error(X)`. + * \li Tokens like `asio::as_tuple` and `asio::redirect_error` can be used as partial tokens + * when `with_diagnostics` is the default completion token, as is the case for \ref any_connection. */ template class with_diagnostics_t From 32636fcab36c26ea48e32f69c148cd3d36c15aeb Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Sat, 1 Feb 2025 00:37:18 +0100 Subject: [PATCH 47/50] Trim common_server_errc descriptions --- include/boost/mysql/common_server_errc.hpp | 1692 ++++++++++---------- tools/scripts/server_errors.py | 4 +- 2 files changed, 847 insertions(+), 849 deletions(-) diff --git a/include/boost/mysql/common_server_errc.hpp b/include/boost/mysql/common_server_errc.hpp index 67a9b32a6..9b8db73c3 100644 --- a/include/boost/mysql/common_server_errc.hpp +++ b/include/boost/mysql/common_server_errc.hpp @@ -21,7 +21,7 @@ namespace mysql { * \brief Server-defined error codes, shared between MySQL and MariaDB. * \details The numeric value and semantics match the ones described in the MySQL documentation. * For more info, consult the error reference for - * MySQL 8.0, + * MySQL 8.0, * MySQL 5.7, * MariaDB. */ @@ -29,5071 +29,5071 @@ enum class common_server_errc : int { /** - * \brief Common server error. Error number: 1000, symbol: + * \brief Error number: 1000, symbol: * ER_HASHCHK. */ er_hashchk = 1000, /** - * \brief Common server error. Error number: 1001, symbol: + * \brief Error number: 1001, symbol: * ER_NISAMCHK. */ er_nisamchk = 1001, /** - * \brief Common server error. Error number: 1002, symbol: + * \brief Error number: 1002, symbol: * ER_NO. */ er_no = 1002, /** - * \brief Common server error. Error number: 1003, symbol: + * \brief Error number: 1003, symbol: * ER_YES. */ er_yes = 1003, /** - * \brief Common server error. Error number: 1004, symbol: + * \brief Error number: 1004, symbol: * ER_CANT_CREATE_FILE. */ er_cant_create_file = 1004, /** - * \brief Common server error. Error number: 1005, symbol: + * \brief Error number: 1005, symbol: * ER_CANT_CREATE_TABLE. */ er_cant_create_table = 1005, /** - * \brief Common server error. Error number: 1006, symbol: + * \brief Error number: 1006, symbol: * ER_CANT_CREATE_DB. */ er_cant_create_db = 1006, /** - * \brief Common server error. Error number: 1007, symbol: + * \brief Error number: 1007, symbol: * ER_DB_CREATE_EXISTS. */ er_db_create_exists = 1007, /** - * \brief Common server error. Error number: 1008, symbol: + * \brief Error number: 1008, symbol: * ER_DB_DROP_EXISTS. */ er_db_drop_exists = 1008, /** - * \brief Common server error. Error number: 1009, symbol: + * \brief Error number: 1009, symbol: * ER_DB_DROP_DELETE. */ er_db_drop_delete = 1009, /** - * \brief Common server error. Error number: 1010, symbol: + * \brief Error number: 1010, symbol: * ER_DB_DROP_RMDIR. */ er_db_drop_rmdir = 1010, /** - * \brief Common server error. Error number: 1011, symbol: + * \brief Error number: 1011, symbol: * ER_CANT_DELETE_FILE. */ er_cant_delete_file = 1011, /** - * \brief Common server error. Error number: 1012, symbol: + * \brief Error number: 1012, symbol: * ER_CANT_FIND_SYSTEM_REC. */ er_cant_find_system_rec = 1012, /** - * \brief Common server error. Error number: 1013, symbol: + * \brief Error number: 1013, symbol: * ER_CANT_GET_STAT. */ er_cant_get_stat = 1013, /** - * \brief Common server error. Error number: 1014, symbol: + * \brief Error number: 1014, symbol: * ER_CANT_GET_WD. */ er_cant_get_wd = 1014, /** - * \brief Common server error. Error number: 1015, symbol: + * \brief Error number: 1015, symbol: * ER_CANT_LOCK. */ er_cant_lock = 1015, /** - * \brief Common server error. Error number: 1016, symbol: + * \brief Error number: 1016, symbol: * ER_CANT_OPEN_FILE. */ er_cant_open_file = 1016, /** - * \brief Common server error. Error number: 1017, symbol: + * \brief Error number: 1017, symbol: * ER_FILE_NOT_FOUND. */ er_file_not_found = 1017, /** - * \brief Common server error. Error number: 1018, symbol: + * \brief Error number: 1018, symbol: * ER_CANT_READ_DIR. */ er_cant_read_dir = 1018, /** - * \brief Common server error. Error number: 1019, symbol: + * \brief Error number: 1019, symbol: * ER_CANT_SET_WD. */ er_cant_set_wd = 1019, /** - * \brief Common server error. Error number: 1020, symbol: + * \brief Error number: 1020, symbol: * ER_CHECKREAD. */ er_checkread = 1020, /** - * \brief Common server error. Error number: 1021, symbol: + * \brief Error number: 1021, symbol: * ER_DISK_FULL. */ er_disk_full = 1021, /** - * \brief Common server error. Error number: 1022, symbol: + * \brief Error number: 1022, symbol: * ER_DUP_KEY. */ er_dup_key = 1022, /** - * \brief Common server error. Error number: 1023, symbol: + * \brief Error number: 1023, symbol: * ER_ERROR_ON_CLOSE. */ er_error_on_close = 1023, /** - * \brief Common server error. Error number: 1024, symbol: + * \brief Error number: 1024, symbol: * ER_ERROR_ON_READ. */ er_error_on_read = 1024, /** - * \brief Common server error. Error number: 1025, symbol: + * \brief Error number: 1025, symbol: * ER_ERROR_ON_RENAME. */ er_error_on_rename = 1025, /** - * \brief Common server error. Error number: 1026, symbol: + * \brief Error number: 1026, symbol: * ER_ERROR_ON_WRITE. */ er_error_on_write = 1026, /** - * \brief Common server error. Error number: 1027, symbol: + * \brief Error number: 1027, symbol: * ER_FILE_USED. */ er_file_used = 1027, /** - * \brief Common server error. Error number: 1028, symbol: + * \brief Error number: 1028, symbol: * ER_FILSORT_ABORT. */ er_filsort_abort = 1028, /** - * \brief Common server error. Error number: 1029, symbol: + * \brief Error number: 1029, symbol: * ER_FORM_NOT_FOUND. */ er_form_not_found = 1029, /** - * \brief Common server error. Error number: 1030, symbol: + * \brief Error number: 1030, symbol: * ER_GET_ERRNO. */ er_get_errno = 1030, /** - * \brief Common server error. Error number: 1031, symbol: + * \brief Error number: 1031, symbol: * ER_ILLEGAL_HA. */ er_illegal_ha = 1031, /** - * \brief Common server error. Error number: 1032, symbol: + * \brief Error number: 1032, symbol: * ER_KEY_NOT_FOUND. */ er_key_not_found = 1032, /** - * \brief Common server error. Error number: 1033, symbol: + * \brief Error number: 1033, symbol: * ER_NOT_FORM_FILE. */ er_not_form_file = 1033, /** - * \brief Common server error. Error number: 1034, symbol: + * \brief Error number: 1034, symbol: * ER_NOT_KEYFILE. */ er_not_keyfile = 1034, /** - * \brief Common server error. Error number: 1035, symbol: + * \brief Error number: 1035, symbol: * ER_OLD_KEYFILE. */ er_old_keyfile = 1035, /** - * \brief Common server error. Error number: 1036, symbol: + * \brief Error number: 1036, symbol: * ER_OPEN_AS_READONLY. */ er_open_as_readonly = 1036, /** - * \brief Common server error. Error number: 1037, symbol: + * \brief Error number: 1037, symbol: * ER_OUTOFMEMORY. */ er_outofmemory = 1037, /** - * \brief Common server error. Error number: 1038, symbol: + * \brief Error number: 1038, symbol: * ER_OUT_OF_SORTMEMORY. */ er_out_of_sortmemory = 1038, /** - * \brief Common server error. Error number: 1039, symbol: + * \brief Error number: 1039, symbol: * ER_UNEXPECTED_EOF. */ er_unexpected_eof = 1039, /** - * \brief Common server error. Error number: 1040, symbol: + * \brief Error number: 1040, symbol: * ER_CON_COUNT_ERROR. */ er_con_count_error = 1040, /** - * \brief Common server error. Error number: 1041, symbol: + * \brief Error number: 1041, symbol: * ER_OUT_OF_RESOURCES. */ er_out_of_resources = 1041, /** - * \brief Common server error. Error number: 1042, symbol: + * \brief Error number: 1042, symbol: * ER_BAD_HOST_ERROR. */ er_bad_host_error = 1042, /** - * \brief Common server error. Error number: 1043, symbol: + * \brief Error number: 1043, symbol: * ER_HANDSHAKE_ERROR. */ er_handshake_error = 1043, /** - * \brief Common server error. Error number: 1044, symbol: + * \brief Error number: 1044, symbol: * ER_DBACCESS_DENIED_ERROR. */ er_dbaccess_denied_error = 1044, /** - * \brief Common server error. Error number: 1045, symbol: + * \brief Error number: 1045, symbol: * ER_ACCESS_DENIED_ERROR. */ er_access_denied_error = 1045, /** - * \brief Common server error. Error number: 1046, symbol: + * \brief Error number: 1046, symbol: * ER_NO_DB_ERROR. */ er_no_db_error = 1046, /** - * \brief Common server error. Error number: 1047, symbol: + * \brief Error number: 1047, symbol: * ER_UNKNOWN_COM_ERROR. */ er_unknown_com_error = 1047, /** - * \brief Common server error. Error number: 1048, symbol: + * \brief Error number: 1048, symbol: * ER_BAD_NULL_ERROR. */ er_bad_null_error = 1048, /** - * \brief Common server error. Error number: 1049, symbol: + * \brief Error number: 1049, symbol: * ER_BAD_DB_ERROR. */ er_bad_db_error = 1049, /** - * \brief Common server error. Error number: 1050, symbol: + * \brief Error number: 1050, symbol: * ER_TABLE_EXISTS_ERROR. */ er_table_exists_error = 1050, /** - * \brief Common server error. Error number: 1051, symbol: + * \brief Error number: 1051, symbol: * ER_BAD_TABLE_ERROR. */ er_bad_table_error = 1051, /** - * \brief Common server error. Error number: 1052, symbol: + * \brief Error number: 1052, symbol: * ER_NON_UNIQ_ERROR. */ er_non_uniq_error = 1052, /** - * \brief Common server error. Error number: 1053, symbol: + * \brief Error number: 1053, symbol: * ER_SERVER_SHUTDOWN. */ er_server_shutdown = 1053, /** - * \brief Common server error. Error number: 1054, symbol: + * \brief Error number: 1054, symbol: * ER_BAD_FIELD_ERROR. */ er_bad_field_error = 1054, /** - * \brief Common server error. Error number: 1055, symbol: + * \brief Error number: 1055, symbol: * ER_WRONG_FIELD_WITH_GROUP. */ er_wrong_field_with_group = 1055, /** - * \brief Common server error. Error number: 1056, symbol: + * \brief Error number: 1056, symbol: * ER_WRONG_GROUP_FIELD. */ er_wrong_group_field = 1056, /** - * \brief Common server error. Error number: 1057, symbol: + * \brief Error number: 1057, symbol: * ER_WRONG_SUM_SELECT. */ er_wrong_sum_select = 1057, /** - * \brief Common server error. Error number: 1058, symbol: + * \brief Error number: 1058, symbol: * ER_WRONG_VALUE_COUNT. */ er_wrong_value_count = 1058, /** - * \brief Common server error. Error number: 1059, symbol: + * \brief Error number: 1059, symbol: * ER_TOO_LONG_IDENT. */ er_too_long_ident = 1059, /** - * \brief Common server error. Error number: 1060, symbol: + * \brief Error number: 1060, symbol: * ER_DUP_FIELDNAME. */ er_dup_fieldname = 1060, /** - * \brief Common server error. Error number: 1061, symbol: + * \brief Error number: 1061, symbol: * ER_DUP_KEYNAME. */ er_dup_keyname = 1061, /** - * \brief Common server error. Error number: 1062, symbol: + * \brief Error number: 1062, symbol: * ER_DUP_ENTRY. */ er_dup_entry = 1062, /** - * \brief Common server error. Error number: 1063, symbol: + * \brief Error number: 1063, symbol: * ER_WRONG_FIELD_SPEC. */ er_wrong_field_spec = 1063, /** - * \brief Common server error. Error number: 1064, symbol: + * \brief Error number: 1064, symbol: * ER_PARSE_ERROR. */ er_parse_error = 1064, /** - * \brief Common server error. Error number: 1065, symbol: + * \brief Error number: 1065, symbol: * ER_EMPTY_QUERY. */ er_empty_query = 1065, /** - * \brief Common server error. Error number: 1066, symbol: + * \brief Error number: 1066, symbol: * ER_NONUNIQ_TABLE. */ er_nonuniq_table = 1066, /** - * \brief Common server error. Error number: 1067, symbol: + * \brief Error number: 1067, symbol: * ER_INVALID_DEFAULT. */ er_invalid_default = 1067, /** - * \brief Common server error. Error number: 1068, symbol: + * \brief Error number: 1068, symbol: * ER_MULTIPLE_PRI_KEY. */ er_multiple_pri_key = 1068, /** - * \brief Common server error. Error number: 1069, symbol: + * \brief Error number: 1069, symbol: * ER_TOO_MANY_KEYS. */ er_too_many_keys = 1069, /** - * \brief Common server error. Error number: 1070, symbol: + * \brief Error number: 1070, symbol: * ER_TOO_MANY_KEY_PARTS. */ er_too_many_key_parts = 1070, /** - * \brief Common server error. Error number: 1071, symbol: + * \brief Error number: 1071, symbol: * ER_TOO_LONG_KEY. */ er_too_long_key = 1071, /** - * \brief Common server error. Error number: 1072, symbol: + * \brief Error number: 1072, symbol: * ER_KEY_COLUMN_DOES_NOT_EXITS. */ er_key_column_does_not_exits = 1072, /** - * \brief Common server error. Error number: 1073, symbol: + * \brief Error number: 1073, symbol: * ER_BLOB_USED_AS_KEY. */ er_blob_used_as_key = 1073, /** - * \brief Common server error. Error number: 1074, symbol: + * \brief Error number: 1074, symbol: * ER_TOO_BIG_FIELDLENGTH. */ er_too_big_fieldlength = 1074, /** - * \brief Common server error. Error number: 1075, symbol: + * \brief Error number: 1075, symbol: * ER_WRONG_AUTO_KEY. */ er_wrong_auto_key = 1075, /** - * \brief Common server error. Error number: 1077, symbol: + * \brief Error number: 1077, symbol: * ER_NORMAL_SHUTDOWN. */ er_normal_shutdown = 1077, /** - * \brief Common server error. Error number: 1078, symbol: + * \brief Error number: 1078, symbol: * ER_GOT_SIGNAL. */ er_got_signal = 1078, /** - * \brief Common server error. Error number: 1079, symbol: + * \brief Error number: 1079, symbol: * ER_SHUTDOWN_COMPLETE. */ er_shutdown_complete = 1079, /** - * \brief Common server error. Error number: 1080, symbol: + * \brief Error number: 1080, symbol: * ER_FORCING_CLOSE. */ er_forcing_close = 1080, /** - * \brief Common server error. Error number: 1081, symbol: + * \brief Error number: 1081, symbol: * ER_IPSOCK_ERROR. */ er_ipsock_error = 1081, /** - * \brief Common server error. Error number: 1082, symbol: + * \brief Error number: 1082, symbol: * ER_NO_SUCH_INDEX. */ er_no_such_index = 1082, /** - * \brief Common server error. Error number: 1083, symbol: + * \brief Error number: 1083, symbol: * ER_WRONG_FIELD_TERMINATORS. */ er_wrong_field_terminators = 1083, /** - * \brief Common server error. Error number: 1084, symbol: + * \brief Error number: 1084, symbol: * ER_BLOBS_AND_NO_TERMINATED. */ er_blobs_and_no_terminated = 1084, /** - * \brief Common server error. Error number: 1085, symbol: + * \brief Error number: 1085, symbol: * ER_TEXTFILE_NOT_READABLE. */ er_textfile_not_readable = 1085, /** - * \brief Common server error. Error number: 1086, symbol: + * \brief Error number: 1086, symbol: * ER_FILE_EXISTS_ERROR. */ er_file_exists_error = 1086, /** - * \brief Common server error. Error number: 1087, symbol: + * \brief Error number: 1087, symbol: * ER_LOAD_INFO. */ er_load_info = 1087, /** - * \brief Common server error. Error number: 1088, symbol: + * \brief Error number: 1088, symbol: * ER_ALTER_INFO. */ er_alter_info = 1088, /** - * \brief Common server error. Error number: 1089, symbol: + * \brief Error number: 1089, symbol: * ER_WRONG_SUB_KEY. */ er_wrong_sub_key = 1089, /** - * \brief Common server error. Error number: 1090, symbol: + * \brief Error number: 1090, symbol: * ER_CANT_REMOVE_ALL_FIELDS. */ er_cant_remove_all_fields = 1090, /** - * \brief Common server error. Error number: 1091, symbol: + * \brief Error number: 1091, symbol: * ER_CANT_DROP_FIELD_OR_KEY. */ er_cant_drop_field_or_key = 1091, /** - * \brief Common server error. Error number: 1092, symbol: + * \brief Error number: 1092, symbol: * ER_INSERT_INFO. */ er_insert_info = 1092, /** - * \brief Common server error. Error number: 1093, symbol: + * \brief Error number: 1093, symbol: * ER_UPDATE_TABLE_USED. */ er_update_table_used = 1093, /** - * \brief Common server error. Error number: 1094, symbol: + * \brief Error number: 1094, symbol: * ER_NO_SUCH_THREAD. */ er_no_such_thread = 1094, /** - * \brief Common server error. Error number: 1095, symbol: + * \brief Error number: 1095, symbol: * ER_KILL_DENIED_ERROR. */ er_kill_denied_error = 1095, /** - * \brief Common server error. Error number: 1096, symbol: + * \brief Error number: 1096, symbol: * ER_NO_TABLES_USED. */ er_no_tables_used = 1096, /** - * \brief Common server error. Error number: 1097, symbol: + * \brief Error number: 1097, symbol: * ER_TOO_BIG_SET. */ er_too_big_set = 1097, /** - * \brief Common server error. Error number: 1098, symbol: + * \brief Error number: 1098, symbol: * ER_NO_UNIQUE_LOGFILE. */ er_no_unique_logfile = 1098, /** - * \brief Common server error. Error number: 1099, symbol: + * \brief Error number: 1099, symbol: * ER_TABLE_NOT_LOCKED_FOR_WRITE. */ er_table_not_locked_for_write = 1099, /** - * \brief Common server error. Error number: 1100, symbol: + * \brief Error number: 1100, symbol: * ER_TABLE_NOT_LOCKED. */ er_table_not_locked = 1100, /** - * \brief Common server error. Error number: 1102, symbol: + * \brief Error number: 1102, symbol: * ER_WRONG_DB_NAME. */ er_wrong_db_name = 1102, /** - * \brief Common server error. Error number: 1103, symbol: + * \brief Error number: 1103, symbol: * ER_WRONG_TABLE_NAME. */ er_wrong_table_name = 1103, /** - * \brief Common server error. Error number: 1104, symbol: + * \brief Error number: 1104, symbol: * ER_TOO_BIG_SELECT. */ er_too_big_select = 1104, /** - * \brief Common server error. Error number: 1105, symbol: + * \brief Error number: 1105, symbol: * ER_UNKNOWN_ERROR. */ er_unknown_error = 1105, /** - * \brief Common server error. Error number: 1106, symbol: + * \brief Error number: 1106, symbol: * ER_UNKNOWN_PROCEDURE. */ er_unknown_procedure = 1106, /** - * \brief Common server error. Error number: 1107, symbol: + * \brief Error number: 1107, symbol: * ER_WRONG_PARAMCOUNT_TO_PROCEDURE. */ er_wrong_paramcount_to_procedure = 1107, /** - * \brief Common server error. Error number: 1108, symbol: + * \brief Error number: 1108, symbol: * ER_WRONG_PARAMETERS_TO_PROCEDURE. */ er_wrong_parameters_to_procedure = 1108, /** - * \brief Common server error. Error number: 1109, symbol: + * \brief Error number: 1109, symbol: * ER_UNKNOWN_TABLE. */ er_unknown_table = 1109, /** - * \brief Common server error. Error number: 1110, symbol: + * \brief Error number: 1110, symbol: * ER_FIELD_SPECIFIED_TWICE. */ er_field_specified_twice = 1110, /** - * \brief Common server error. Error number: 1111, symbol: + * \brief Error number: 1111, symbol: * ER_INVALID_GROUP_FUNC_USE. */ er_invalid_group_func_use = 1111, /** - * \brief Common server error. Error number: 1112, symbol: + * \brief Error number: 1112, symbol: * ER_UNSUPPORTED_EXTENSION. */ er_unsupported_extension = 1112, /** - * \brief Common server error. Error number: 1113, symbol: + * \brief Error number: 1113, symbol: * ER_TABLE_MUST_HAVE_COLUMNS. */ er_table_must_have_columns = 1113, /** - * \brief Common server error. Error number: 1114, symbol: + * \brief Error number: 1114, symbol: * ER_RECORD_FILE_FULL. */ er_record_file_full = 1114, /** - * \brief Common server error. Error number: 1115, symbol: + * \brief Error number: 1115, symbol: * ER_UNKNOWN_CHARACTER_SET. */ er_unknown_character_set = 1115, /** - * \brief Common server error. Error number: 1116, symbol: + * \brief Error number: 1116, symbol: * ER_TOO_MANY_TABLES. */ er_too_many_tables = 1116, /** - * \brief Common server error. Error number: 1117, symbol: + * \brief Error number: 1117, symbol: * ER_TOO_MANY_FIELDS. */ er_too_many_fields = 1117, /** - * \brief Common server error. Error number: 1118, symbol: + * \brief Error number: 1118, symbol: * ER_TOO_BIG_ROWSIZE. */ er_too_big_rowsize = 1118, /** - * \brief Common server error. Error number: 1119, symbol: + * \brief Error number: 1119, symbol: * ER_STACK_OVERRUN. */ er_stack_overrun = 1119, /** - * \brief Common server error. Error number: 1121, symbol: + * \brief Error number: 1121, symbol: * ER_NULL_COLUMN_IN_INDEX. */ er_null_column_in_index = 1121, /** - * \brief Common server error. Error number: 1122, symbol: + * \brief Error number: 1122, symbol: * ER_CANT_FIND_UDF. */ er_cant_find_udf = 1122, /** - * \brief Common server error. Error number: 1123, symbol: + * \brief Error number: 1123, symbol: * ER_CANT_INITIALIZE_UDF. */ er_cant_initialize_udf = 1123, /** - * \brief Common server error. Error number: 1124, symbol: + * \brief Error number: 1124, symbol: * ER_UDF_NO_PATHS. */ er_udf_no_paths = 1124, /** - * \brief Common server error. Error number: 1125, symbol: + * \brief Error number: 1125, symbol: * ER_UDF_EXISTS. */ er_udf_exists = 1125, /** - * \brief Common server error. Error number: 1126, symbol: + * \brief Error number: 1126, symbol: * ER_CANT_OPEN_LIBRARY. */ er_cant_open_library = 1126, /** - * \brief Common server error. Error number: 1127, symbol: + * \brief Error number: 1127, symbol: * ER_CANT_FIND_DL_ENTRY. */ er_cant_find_dl_entry = 1127, /** - * \brief Common server error. Error number: 1128, symbol: + * \brief Error number: 1128, symbol: * ER_FUNCTION_NOT_DEFINED. */ er_function_not_defined = 1128, /** - * \brief Common server error. Error number: 1129, symbol: + * \brief Error number: 1129, symbol: * ER_HOST_IS_BLOCKED. */ er_host_is_blocked = 1129, /** - * \brief Common server error. Error number: 1130, symbol: + * \brief Error number: 1130, symbol: * ER_HOST_NOT_PRIVILEGED. */ er_host_not_privileged = 1130, /** - * \brief Common server error. Error number: 1131, symbol: + * \brief Error number: 1131, symbol: * ER_PASSWORD_ANONYMOUS_USER. */ er_password_anonymous_user = 1131, /** - * \brief Common server error. Error number: 1132, symbol: + * \brief Error number: 1132, symbol: * ER_PASSWORD_NOT_ALLOWED. */ er_password_not_allowed = 1132, /** - * \brief Common server error. Error number: 1133, symbol: + * \brief Error number: 1133, symbol: * ER_PASSWORD_NO_MATCH. */ er_password_no_match = 1133, /** - * \brief Common server error. Error number: 1134, symbol: + * \brief Error number: 1134, symbol: * ER_UPDATE_INFO. */ er_update_info = 1134, /** - * \brief Common server error. Error number: 1135, symbol: + * \brief Error number: 1135, symbol: * ER_CANT_CREATE_THREAD. */ er_cant_create_thread = 1135, /** - * \brief Common server error. Error number: 1136, symbol: + * \brief Error number: 1136, symbol: * ER_WRONG_VALUE_COUNT_ON_ROW. */ er_wrong_value_count_on_row = 1136, /** - * \brief Common server error. Error number: 1137, symbol: + * \brief Error number: 1137, symbol: * ER_CANT_REOPEN_TABLE. */ er_cant_reopen_table = 1137, /** - * \brief Common server error. Error number: 1138, symbol: + * \brief Error number: 1138, symbol: * ER_INVALID_USE_OF_NULL. */ er_invalid_use_of_null = 1138, /** - * \brief Common server error. Error number: 1139, symbol: + * \brief Error number: 1139, symbol: * ER_REGEXP_ERROR. */ er_regexp_error = 1139, /** - * \brief Common server error. Error number: 1140, symbol: + * \brief Error number: 1140, symbol: * ER_MIX_OF_GROUP_FUNC_AND_FIELDS. */ er_mix_of_group_func_and_fields = 1140, /** - * \brief Common server error. Error number: 1141, symbol: + * \brief Error number: 1141, symbol: * ER_NONEXISTING_GRANT. */ er_nonexisting_grant = 1141, /** - * \brief Common server error. Error number: 1142, symbol: + * \brief Error number: 1142, symbol: * ER_TABLEACCESS_DENIED_ERROR. */ er_tableaccess_denied_error = 1142, /** - * \brief Common server error. Error number: 1143, symbol: + * \brief Error number: 1143, symbol: * ER_COLUMNACCESS_DENIED_ERROR. */ er_columnaccess_denied_error = 1143, /** - * \brief Common server error. Error number: 1144, symbol: + * \brief Error number: 1144, symbol: * ER_ILLEGAL_GRANT_FOR_TABLE. */ er_illegal_grant_for_table = 1144, /** - * \brief Common server error. Error number: 1145, symbol: + * \brief Error number: 1145, symbol: * ER_GRANT_WRONG_HOST_OR_USER. */ er_grant_wrong_host_or_user = 1145, /** - * \brief Common server error. Error number: 1146, symbol: + * \brief Error number: 1146, symbol: * ER_NO_SUCH_TABLE. */ er_no_such_table = 1146, /** - * \brief Common server error. Error number: 1147, symbol: + * \brief Error number: 1147, symbol: * ER_NONEXISTING_TABLE_GRANT. */ er_nonexisting_table_grant = 1147, /** - * \brief Common server error. Error number: 1148, symbol: + * \brief Error number: 1148, symbol: * ER_NOT_ALLOWED_COMMAND. */ er_not_allowed_command = 1148, /** - * \brief Common server error. Error number: 1149, symbol: + * \brief Error number: 1149, symbol: * ER_SYNTAX_ERROR. */ er_syntax_error = 1149, /** - * \brief Common server error. Error number: 1152, symbol: + * \brief Error number: 1152, symbol: * ER_ABORTING_CONNECTION. */ er_aborting_connection = 1152, /** - * \brief Common server error. Error number: 1153, symbol: + * \brief Error number: 1153, symbol: * ER_NET_PACKET_TOO_LARGE. */ er_net_packet_too_large = 1153, /** - * \brief Common server error. Error number: 1154, symbol: + * \brief Error number: 1154, symbol: * ER_NET_READ_ERROR_FROM_PIPE. */ er_net_read_error_from_pipe = 1154, /** - * \brief Common server error. Error number: 1155, symbol: + * \brief Error number: 1155, symbol: * ER_NET_FCNTL_ERROR. */ er_net_fcntl_error = 1155, /** - * \brief Common server error. Error number: 1156, symbol: + * \brief Error number: 1156, symbol: * ER_NET_PACKETS_OUT_OF_ORDER. */ er_net_packets_out_of_order = 1156, /** - * \brief Common server error. Error number: 1157, symbol: + * \brief Error number: 1157, symbol: * ER_NET_UNCOMPRESS_ERROR. */ er_net_uncompress_error = 1157, /** - * \brief Common server error. Error number: 1158, symbol: + * \brief Error number: 1158, symbol: * ER_NET_READ_ERROR. */ er_net_read_error = 1158, /** - * \brief Common server error. Error number: 1159, symbol: + * \brief Error number: 1159, symbol: * ER_NET_READ_INTERRUPTED. */ er_net_read_interrupted = 1159, /** - * \brief Common server error. Error number: 1160, symbol: + * \brief Error number: 1160, symbol: * ER_NET_ERROR_ON_WRITE. */ er_net_error_on_write = 1160, /** - * \brief Common server error. Error number: 1161, symbol: + * \brief Error number: 1161, symbol: * ER_NET_WRITE_INTERRUPTED. */ er_net_write_interrupted = 1161, /** - * \brief Common server error. Error number: 1162, symbol: + * \brief Error number: 1162, symbol: * ER_TOO_LONG_STRING. */ er_too_long_string = 1162, /** - * \brief Common server error. Error number: 1163, symbol: + * \brief Error number: 1163, symbol: * ER_TABLE_CANT_HANDLE_BLOB. */ er_table_cant_handle_blob = 1163, /** - * \brief Common server error. Error number: 1164, symbol: + * \brief Error number: 1164, symbol: * ER_TABLE_CANT_HANDLE_AUTO_INCREMENT. */ er_table_cant_handle_auto_increment = 1164, /** - * \brief Common server error. Error number: 1166, symbol: + * \brief Error number: 1166, symbol: * ER_WRONG_COLUMN_NAME. */ er_wrong_column_name = 1166, /** - * \brief Common server error. Error number: 1167, symbol: + * \brief Error number: 1167, symbol: * ER_WRONG_KEY_COLUMN. */ er_wrong_key_column = 1167, /** - * \brief Common server error. Error number: 1168, symbol: + * \brief Error number: 1168, symbol: * ER_WRONG_MRG_TABLE. */ er_wrong_mrg_table = 1168, /** - * \brief Common server error. Error number: 1169, symbol: + * \brief Error number: 1169, symbol: * ER_DUP_UNIQUE. */ er_dup_unique = 1169, /** - * \brief Common server error. Error number: 1170, symbol: + * \brief Error number: 1170, symbol: * ER_BLOB_KEY_WITHOUT_LENGTH. */ er_blob_key_without_length = 1170, /** - * \brief Common server error. Error number: 1171, symbol: + * \brief Error number: 1171, symbol: * ER_PRIMARY_CANT_HAVE_NULL. */ er_primary_cant_have_null = 1171, /** - * \brief Common server error. Error number: 1172, symbol: + * \brief Error number: 1172, symbol: * ER_TOO_MANY_ROWS. */ er_too_many_rows = 1172, /** - * \brief Common server error. Error number: 1173, symbol: + * \brief Error number: 1173, symbol: * ER_REQUIRES_PRIMARY_KEY. */ er_requires_primary_key = 1173, /** - * \brief Common server error. Error number: 1174, symbol: + * \brief Error number: 1174, symbol: * ER_NO_RAID_COMPILED. */ er_no_raid_compiled = 1174, /** - * \brief Common server error. Error number: 1175, symbol: + * \brief Error number: 1175, symbol: * ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE. */ er_update_without_key_in_safe_mode = 1175, /** - * \brief Common server error. Error number: 1177, symbol: + * \brief Error number: 1177, symbol: * ER_CHECK_NO_SUCH_TABLE. */ er_check_no_such_table = 1177, /** - * \brief Common server error. Error number: 1178, symbol: + * \brief Error number: 1178, symbol: * ER_CHECK_NOT_IMPLEMENTED. */ er_check_not_implemented = 1178, /** - * \brief Common server error. Error number: 1179, symbol: + * \brief Error number: 1179, symbol: * ER_CANT_DO_THIS_DURING_AN_TRANSACTION. */ er_cant_do_this_during_an_transaction = 1179, /** - * \brief Common server error. Error number: 1180, symbol: + * \brief Error number: 1180, symbol: * ER_ERROR_DURING_COMMIT. */ er_error_during_commit = 1180, /** - * \brief Common server error. Error number: 1181, symbol: + * \brief Error number: 1181, symbol: * ER_ERROR_DURING_ROLLBACK. */ er_error_during_rollback = 1181, /** - * \brief Common server error. Error number: 1182, symbol: + * \brief Error number: 1182, symbol: * ER_ERROR_DURING_FLUSH_LOGS. */ er_error_during_flush_logs = 1182, /** - * \brief Common server error. Error number: 1183, symbol: + * \brief Error number: 1183, symbol: * ER_ERROR_DURING_CHECKPOINT. */ er_error_during_checkpoint = 1183, /** - * \brief Common server error. Error number: 1184, symbol: + * \brief Error number: 1184, symbol: * ER_NEW_ABORTING_CONNECTION. */ er_new_aborting_connection = 1184, /** - * \brief Common server error. Error number: 1186, symbol: + * \brief Error number: 1186, symbol: * ER_FLUSH_MASTER_BINLOG_CLOSED. */ er_flush_master_binlog_closed = 1186, /** - * \brief Common server error. Error number: 1187, symbol: + * \brief Error number: 1187, symbol: * ER_INDEX_REBUILD. */ er_index_rebuild = 1187, /** - * \brief Common server error. Error number: 1188, symbol: + * \brief Error number: 1188, symbol: * ER_MASTER. */ er_master = 1188, /** - * \brief Common server error. Error number: 1189, symbol: + * \brief Error number: 1189, symbol: * ER_MASTER_NET_READ. */ er_master_net_read = 1189, /** - * \brief Common server error. Error number: 1190, symbol: + * \brief Error number: 1190, symbol: * ER_MASTER_NET_WRITE. */ er_master_net_write = 1190, /** - * \brief Common server error. Error number: 1191, symbol: + * \brief Error number: 1191, symbol: * ER_FT_MATCHING_KEY_NOT_FOUND. */ er_ft_matching_key_not_found = 1191, /** - * \brief Common server error. Error number: 1192, symbol: + * \brief Error number: 1192, symbol: * ER_LOCK_OR_ACTIVE_TRANSACTION. */ er_lock_or_active_transaction = 1192, /** - * \brief Common server error. Error number: 1193, symbol: + * \brief Error number: 1193, symbol: * ER_UNKNOWN_SYSTEM_VARIABLE. */ er_unknown_system_variable = 1193, /** - * \brief Common server error. Error number: 1194, symbol: + * \brief Error number: 1194, symbol: * ER_CRASHED_ON_USAGE. */ er_crashed_on_usage = 1194, /** - * \brief Common server error. Error number: 1195, symbol: + * \brief Error number: 1195, symbol: * ER_CRASHED_ON_REPAIR. */ er_crashed_on_repair = 1195, /** - * \brief Common server error. Error number: 1196, symbol: + * \brief Error number: 1196, symbol: * ER_WARNING_NOT_COMPLETE_ROLLBACK. */ er_warning_not_complete_rollback = 1196, /** - * \brief Common server error. Error number: 1197, symbol: + * \brief Error number: 1197, symbol: * ER_TRANS_CACHE_FULL. */ er_trans_cache_full = 1197, /** - * \brief Common server error. Error number: 1198, symbol: + * \brief Error number: 1198, symbol: * ER_SLAVE_MUST_STOP. */ er_slave_must_stop = 1198, /** - * \brief Common server error. Error number: 1199, symbol: + * \brief Error number: 1199, symbol: * ER_SLAVE_NOT_RUNNING. */ er_slave_not_running = 1199, /** - * \brief Common server error. Error number: 1200, symbol: + * \brief Error number: 1200, symbol: * ER_BAD_SLAVE. */ er_bad_slave = 1200, /** - * \brief Common server error. Error number: 1201, symbol: + * \brief Error number: 1201, symbol: * ER_MASTER_INFO. */ er_master_info = 1201, /** - * \brief Common server error. Error number: 1202, symbol: + * \brief Error number: 1202, symbol: * ER_SLAVE_THREAD. */ er_slave_thread = 1202, /** - * \brief Common server error. Error number: 1203, symbol: + * \brief Error number: 1203, symbol: * ER_TOO_MANY_USER_CONNECTIONS. */ er_too_many_user_connections = 1203, /** - * \brief Common server error. Error number: 1204, symbol: + * \brief Error number: 1204, symbol: * ER_SET_CONSTANTS_ONLY. */ er_set_constants_only = 1204, /** - * \brief Common server error. Error number: 1205, symbol: + * \brief Error number: 1205, symbol: * ER_LOCK_WAIT_TIMEOUT. */ er_lock_wait_timeout = 1205, /** - * \brief Common server error. Error number: 1206, symbol: + * \brief Error number: 1206, symbol: * ER_LOCK_TABLE_FULL. */ er_lock_table_full = 1206, /** - * \brief Common server error. Error number: 1207, symbol: + * \brief Error number: 1207, symbol: * ER_READ_ONLY_TRANSACTION. */ er_read_only_transaction = 1207, /** - * \brief Common server error. Error number: 1208, symbol: + * \brief Error number: 1208, symbol: * ER_DROP_DB_WITH_READ_LOCK. */ er_drop_db_with_read_lock = 1208, /** - * \brief Common server error. Error number: 1209, symbol: + * \brief Error number: 1209, symbol: * ER_CREATE_DB_WITH_READ_LOCK. */ er_create_db_with_read_lock = 1209, /** - * \brief Common server error. Error number: 1210, symbol: + * \brief Error number: 1210, symbol: * ER_WRONG_ARGUMENTS. */ er_wrong_arguments = 1210, /** - * \brief Common server error. Error number: 1211, symbol: + * \brief Error number: 1211, symbol: * ER_NO_PERMISSION_TO_CREATE_USER. */ er_no_permission_to_create_user = 1211, /** - * \brief Common server error. Error number: 1212, symbol: + * \brief Error number: 1212, symbol: * ER_UNION_TABLES_IN_DIFFERENT_DIR. */ er_union_tables_in_different_dir = 1212, /** - * \brief Common server error. Error number: 1213, symbol: + * \brief Error number: 1213, symbol: * ER_LOCK_DEADLOCK. */ er_lock_deadlock = 1213, /** - * \brief Common server error. Error number: 1214, symbol: + * \brief Error number: 1214, symbol: * ER_TABLE_CANT_HANDLE_FT. */ er_table_cant_handle_ft = 1214, /** - * \brief Common server error. Error number: 1215, symbol: + * \brief Error number: 1215, symbol: * ER_CANNOT_ADD_FOREIGN. */ er_cannot_add_foreign = 1215, /** - * \brief Common server error. Error number: 1216, symbol: + * \brief Error number: 1216, symbol: * ER_NO_REFERENCED_ROW. */ er_no_referenced_row = 1216, /** - * \brief Common server error. Error number: 1217, symbol: + * \brief Error number: 1217, symbol: * ER_ROW_IS_REFERENCED. */ er_row_is_referenced = 1217, /** - * \brief Common server error. Error number: 1218, symbol: + * \brief Error number: 1218, symbol: * ER_CONNECT_TO_MASTER. */ er_connect_to_master = 1218, /** - * \brief Common server error. Error number: 1219, symbol: + * \brief Error number: 1219, symbol: * ER_QUERY_ON_MASTER. */ er_query_on_master = 1219, /** - * \brief Common server error. Error number: 1220, symbol: + * \brief Error number: 1220, symbol: * ER_ERROR_WHEN_EXECUTING_COMMAND. */ er_error_when_executing_command = 1220, /** - * \brief Common server error. Error number: 1221, symbol: + * \brief Error number: 1221, symbol: * ER_WRONG_USAGE. */ er_wrong_usage = 1221, /** - * \brief Common server error. Error number: 1222, symbol: + * \brief Error number: 1222, symbol: * ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT. */ er_wrong_number_of_columns_in_select = 1222, /** - * \brief Common server error. Error number: 1223, symbol: + * \brief Error number: 1223, symbol: * ER_CANT_UPDATE_WITH_READLOCK. */ er_cant_update_with_readlock = 1223, /** - * \brief Common server error. Error number: 1224, symbol: + * \brief Error number: 1224, symbol: * ER_MIXING_NOT_ALLOWED. */ er_mixing_not_allowed = 1224, /** - * \brief Common server error. Error number: 1225, symbol: + * \brief Error number: 1225, symbol: * ER_DUP_ARGUMENT. */ er_dup_argument = 1225, /** - * \brief Common server error. Error number: 1226, symbol: + * \brief Error number: 1226, symbol: * ER_USER_LIMIT_REACHED. */ er_user_limit_reached = 1226, /** - * \brief Common server error. Error number: 1227, symbol: + * \brief Error number: 1227, symbol: * ER_SPECIFIC_ACCESS_DENIED_ERROR. */ er_specific_access_denied_error = 1227, /** - * \brief Common server error. Error number: 1228, symbol: + * \brief Error number: 1228, symbol: * ER_LOCAL_VARIABLE. */ er_local_variable = 1228, /** - * \brief Common server error. Error number: 1229, symbol: + * \brief Error number: 1229, symbol: * ER_GLOBAL_VARIABLE. */ er_global_variable = 1229, /** - * \brief Common server error. Error number: 1230, symbol: + * \brief Error number: 1230, symbol: * ER_NO_DEFAULT. */ er_no_default = 1230, /** - * \brief Common server error. Error number: 1231, symbol: + * \brief Error number: 1231, symbol: * ER_WRONG_VALUE_FOR_VAR. */ er_wrong_value_for_var = 1231, /** - * \brief Common server error. Error number: 1232, symbol: + * \brief Error number: 1232, symbol: * ER_WRONG_TYPE_FOR_VAR. */ er_wrong_type_for_var = 1232, /** - * \brief Common server error. Error number: 1233, symbol: + * \brief Error number: 1233, symbol: * ER_VAR_CANT_BE_READ. */ er_var_cant_be_read = 1233, /** - * \brief Common server error. Error number: 1234, symbol: + * \brief Error number: 1234, symbol: * ER_CANT_USE_OPTION_HERE. */ er_cant_use_option_here = 1234, /** - * \brief Common server error. Error number: 1235, symbol: + * \brief Error number: 1235, symbol: * ER_NOT_SUPPORTED_YET. */ er_not_supported_yet = 1235, /** - * \brief Common server error. Error number: 1236, symbol: + * \brief Error number: 1236, symbol: * ER_MASTER_FATAL_ERROR_READING_BINLOG. */ er_master_fatal_error_reading_binlog = 1236, /** - * \brief Common server error. Error number: 1237, symbol: + * \brief Error number: 1237, symbol: * ER_SLAVE_IGNORED_TABLE. */ er_slave_ignored_table = 1237, /** - * \brief Common server error. Error number: 1238, symbol: + * \brief Error number: 1238, symbol: * ER_INCORRECT_GLOBAL_LOCAL_VAR. */ er_incorrect_global_local_var = 1238, /** - * \brief Common server error. Error number: 1239, symbol: + * \brief Error number: 1239, symbol: * ER_WRONG_FK_DEF. */ er_wrong_fk_def = 1239, /** - * \brief Common server error. Error number: 1240, symbol: + * \brief Error number: 1240, symbol: * ER_KEY_REF_DO_NOT_MATCH_TABLE_REF. */ er_key_ref_do_not_match_table_ref = 1240, /** - * \brief Common server error. Error number: 1241, symbol: + * \brief Error number: 1241, symbol: * ER_OPERAND_COLUMNS. */ er_operand_columns = 1241, /** - * \brief Common server error. Error number: 1242, symbol: + * \brief Error number: 1242, symbol: * ER_SUBQUERY_NO_1_ROW. */ er_subquery_no_1_row = 1242, /** - * \brief Common server error. Error number: 1243, symbol: + * \brief Error number: 1243, symbol: * ER_UNKNOWN_STMT_HANDLER. */ er_unknown_stmt_handler = 1243, /** - * \brief Common server error. Error number: 1244, symbol: + * \brief Error number: 1244, symbol: * ER_CORRUPT_HELP_DB. */ er_corrupt_help_db = 1244, /** - * \brief Common server error. Error number: 1245, symbol: + * \brief Error number: 1245, symbol: * ER_CYCLIC_REFERENCE. */ er_cyclic_reference = 1245, /** - * \brief Common server error. Error number: 1246, symbol: + * \brief Error number: 1246, symbol: * ER_AUTO_CONVERT. */ er_auto_convert = 1246, /** - * \brief Common server error. Error number: 1247, symbol: + * \brief Error number: 1247, symbol: * ER_ILLEGAL_REFERENCE. */ er_illegal_reference = 1247, /** - * \brief Common server error. Error number: 1248, symbol: + * \brief Error number: 1248, symbol: * ER_DERIVED_MUST_HAVE_ALIAS. */ er_derived_must_have_alias = 1248, /** - * \brief Common server error. Error number: 1249, symbol: + * \brief Error number: 1249, symbol: * ER_SELECT_REDUCED. */ er_select_reduced = 1249, /** - * \brief Common server error. Error number: 1250, symbol: + * \brief Error number: 1250, symbol: * ER_TABLENAME_NOT_ALLOWED_HERE. */ er_tablename_not_allowed_here = 1250, /** - * \brief Common server error. Error number: 1251, symbol: + * \brief Error number: 1251, symbol: * ER_NOT_SUPPORTED_AUTH_MODE. */ er_not_supported_auth_mode = 1251, /** - * \brief Common server error. Error number: 1252, symbol: + * \brief Error number: 1252, symbol: * ER_SPATIAL_CANT_HAVE_NULL. */ er_spatial_cant_have_null = 1252, /** - * \brief Common server error. Error number: 1253, symbol: + * \brief Error number: 1253, symbol: * ER_COLLATION_CHARSET_MISMATCH. */ er_collation_charset_mismatch = 1253, /** - * \brief Common server error. Error number: 1254, symbol: + * \brief Error number: 1254, symbol: * ER_SLAVE_WAS_RUNNING. */ er_slave_was_running = 1254, /** - * \brief Common server error. Error number: 1255, symbol: + * \brief Error number: 1255, symbol: * ER_SLAVE_WAS_NOT_RUNNING. */ er_slave_was_not_running = 1255, /** - * \brief Common server error. Error number: 1256, symbol: + * \brief Error number: 1256, symbol: * ER_TOO_BIG_FOR_UNCOMPRESS. */ er_too_big_for_uncompress = 1256, /** - * \brief Common server error. Error number: 1257, symbol: + * \brief Error number: 1257, symbol: * ER_ZLIB_Z_MEM_ERROR. */ er_zlib_z_mem_error = 1257, /** - * \brief Common server error. Error number: 1258, symbol: + * \brief Error number: 1258, symbol: * ER_ZLIB_Z_BUF_ERROR. */ er_zlib_z_buf_error = 1258, /** - * \brief Common server error. Error number: 1259, symbol: + * \brief Error number: 1259, symbol: * ER_ZLIB_Z_DATA_ERROR. */ er_zlib_z_data_error = 1259, /** - * \brief Common server error. Error number: 1260, symbol: + * \brief Error number: 1260, symbol: * ER_CUT_VALUE_GROUP_CONCAT. */ er_cut_value_group_concat = 1260, /** - * \brief Common server error. Error number: 1261, symbol: + * \brief Error number: 1261, symbol: * ER_WARN_TOO_FEW_RECORDS. */ er_warn_too_few_records = 1261, /** - * \brief Common server error. Error number: 1262, symbol: + * \brief Error number: 1262, symbol: * ER_WARN_TOO_MANY_RECORDS. */ er_warn_too_many_records = 1262, /** - * \brief Common server error. Error number: 1263, symbol: + * \brief Error number: 1263, symbol: * ER_WARN_NULL_TO_NOTNULL. */ er_warn_null_to_notnull = 1263, /** - * \brief Common server error. Error number: 1264, symbol: + * \brief Error number: 1264, symbol: * ER_WARN_DATA_OUT_OF_RANGE. */ er_warn_data_out_of_range = 1264, /** - * \brief Common server error. Error number: 1265, symbol: + * \brief Error number: 1265, symbol: * WARN_DATA_TRUNCATED. */ warn_data_truncated = 1265, /** - * \brief Common server error. Error number: 1266, symbol: + * \brief Error number: 1266, symbol: * ER_WARN_USING_OTHER_HANDLER. */ er_warn_using_other_handler = 1266, /** - * \brief Common server error. Error number: 1267, symbol: + * \brief Error number: 1267, symbol: * ER_CANT_AGGREGATE_2COLLATIONS. */ er_cant_aggregate_2collations = 1267, /** - * \brief Common server error. Error number: 1268, symbol: + * \brief Error number: 1268, symbol: * ER_DROP_USER. */ er_drop_user = 1268, /** - * \brief Common server error. Error number: 1269, symbol: + * \brief Error number: 1269, symbol: * ER_REVOKE_GRANTS. */ er_revoke_grants = 1269, /** - * \brief Common server error. Error number: 1270, symbol: + * \brief Error number: 1270, symbol: * ER_CANT_AGGREGATE_3COLLATIONS. */ er_cant_aggregate_3collations = 1270, /** - * \brief Common server error. Error number: 1271, symbol: + * \brief Error number: 1271, symbol: * ER_CANT_AGGREGATE_NCOLLATIONS. */ er_cant_aggregate_ncollations = 1271, /** - * \brief Common server error. Error number: 1272, symbol: + * \brief Error number: 1272, symbol: * ER_VARIABLE_IS_NOT_STRUCT. */ er_variable_is_not_struct = 1272, /** - * \brief Common server error. Error number: 1273, symbol: + * \brief Error number: 1273, symbol: * ER_UNKNOWN_COLLATION. */ er_unknown_collation = 1273, /** - * \brief Common server error. Error number: 1274, symbol: + * \brief Error number: 1274, symbol: * ER_SLAVE_IGNORED_SSL_PARAMS. */ er_slave_ignored_ssl_params = 1274, /** - * \brief Common server error. Error number: 1275, symbol: + * \brief Error number: 1275, symbol: * ER_SERVER_IS_IN_SECURE_AUTH_MODE. */ er_server_is_in_secure_auth_mode = 1275, /** - * \brief Common server error. Error number: 1276, symbol: + * \brief Error number: 1276, symbol: * ER_WARN_FIELD_RESOLVED. */ er_warn_field_resolved = 1276, /** - * \brief Common server error. Error number: 1277, symbol: + * \brief Error number: 1277, symbol: * ER_BAD_SLAVE_UNTIL_COND. */ er_bad_slave_until_cond = 1277, /** - * \brief Common server error. Error number: 1278, symbol: + * \brief Error number: 1278, symbol: * ER_MISSING_SKIP_SLAVE. */ er_missing_skip_slave = 1278, /** - * \brief Common server error. Error number: 1279, symbol: + * \brief Error number: 1279, symbol: * ER_UNTIL_COND_IGNORED. */ er_until_cond_ignored = 1279, /** - * \brief Common server error. Error number: 1280, symbol: + * \brief Error number: 1280, symbol: * ER_WRONG_NAME_FOR_INDEX. */ er_wrong_name_for_index = 1280, /** - * \brief Common server error. Error number: 1281, symbol: + * \brief Error number: 1281, symbol: * ER_WRONG_NAME_FOR_CATALOG. */ er_wrong_name_for_catalog = 1281, /** - * \brief Common server error. Error number: 1282, symbol: + * \brief Error number: 1282, symbol: * ER_WARN_QC_RESIZE. */ er_warn_qc_resize = 1282, /** - * \brief Common server error. Error number: 1283, symbol: + * \brief Error number: 1283, symbol: * ER_BAD_FT_COLUMN. */ er_bad_ft_column = 1283, /** - * \brief Common server error. Error number: 1284, symbol: + * \brief Error number: 1284, symbol: * ER_UNKNOWN_KEY_CACHE. */ er_unknown_key_cache = 1284, /** - * \brief Common server error. Error number: 1285, symbol: + * \brief Error number: 1285, symbol: * ER_WARN_HOSTNAME_WONT_WORK. */ er_warn_hostname_wont_work = 1285, /** - * \brief Common server error. Error number: 1286, symbol: + * \brief Error number: 1286, symbol: * ER_UNKNOWN_STORAGE_ENGINE. */ er_unknown_storage_engine = 1286, /** - * \brief Common server error. Error number: 1287, symbol: + * \brief Error number: 1287, symbol: * ER_WARN_DEPRECATED_SYNTAX. */ er_warn_deprecated_syntax = 1287, /** - * \brief Common server error. Error number: 1288, symbol: + * \brief Error number: 1288, symbol: * ER_NON_UPDATABLE_TABLE. */ er_non_updatable_table = 1288, /** - * \brief Common server error. Error number: 1289, symbol: + * \brief Error number: 1289, symbol: * ER_FEATURE_DISABLED. */ er_feature_disabled = 1289, /** - * \brief Common server error. Error number: 1290, symbol: + * \brief Error number: 1290, symbol: * ER_OPTION_PREVENTS_STATEMENT. */ er_option_prevents_statement = 1290, /** - * \brief Common server error. Error number: 1291, symbol: + * \brief Error number: 1291, symbol: * ER_DUPLICATED_VALUE_IN_TYPE. */ er_duplicated_value_in_type = 1291, /** - * \brief Common server error. Error number: 1292, symbol: + * \brief Error number: 1292, symbol: * ER_TRUNCATED_WRONG_VALUE. */ er_truncated_wrong_value = 1292, /** - * \brief Common server error. Error number: 1293, symbol: + * \brief Error number: 1293, symbol: * ER_TOO_MUCH_AUTO_TIMESTAMP_COLS. */ er_too_much_auto_timestamp_cols = 1293, /** - * \brief Common server error. Error number: 1294, symbol: + * \brief Error number: 1294, symbol: * ER_INVALID_ON_UPDATE. */ er_invalid_on_update = 1294, /** - * \brief Common server error. Error number: 1295, symbol: + * \brief Error number: 1295, symbol: * ER_UNSUPPORTED_PS. */ er_unsupported_ps = 1295, /** - * \brief Common server error. Error number: 1296, symbol: + * \brief Error number: 1296, symbol: * ER_GET_ERRMSG. */ er_get_errmsg = 1296, /** - * \brief Common server error. Error number: 1297, symbol: + * \brief Error number: 1297, symbol: * ER_GET_TEMPORARY_ERRMSG. */ er_get_temporary_errmsg = 1297, /** - * \brief Common server error. Error number: 1298, symbol: + * \brief Error number: 1298, symbol: * ER_UNKNOWN_TIME_ZONE. */ er_unknown_time_zone = 1298, /** - * \brief Common server error. Error number: 1299, symbol: + * \brief Error number: 1299, symbol: * ER_WARN_INVALID_TIMESTAMP. */ er_warn_invalid_timestamp = 1299, /** - * \brief Common server error. Error number: 1300, symbol: + * \brief Error number: 1300, symbol: * ER_INVALID_CHARACTER_STRING. */ er_invalid_character_string = 1300, /** - * \brief Common server error. Error number: 1301, symbol: + * \brief Error number: 1301, symbol: * ER_WARN_ALLOWED_PACKET_OVERFLOWED. */ er_warn_allowed_packet_overflowed = 1301, /** - * \brief Common server error. Error number: 1302, symbol: + * \brief Error number: 1302, symbol: * ER_CONFLICTING_DECLARATIONS. */ er_conflicting_declarations = 1302, /** - * \brief Common server error. Error number: 1303, symbol: + * \brief Error number: 1303, symbol: * ER_SP_NO_RECURSIVE_CREATE. */ er_sp_no_recursive_create = 1303, /** - * \brief Common server error. Error number: 1304, symbol: + * \brief Error number: 1304, symbol: * ER_SP_ALREADY_EXISTS. */ er_sp_already_exists = 1304, /** - * \brief Common server error. Error number: 1305, symbol: + * \brief Error number: 1305, symbol: * ER_SP_DOES_NOT_EXIST. */ er_sp_does_not_exist = 1305, /** - * \brief Common server error. Error number: 1306, symbol: + * \brief Error number: 1306, symbol: * ER_SP_DROP_FAILED. */ er_sp_drop_failed = 1306, /** - * \brief Common server error. Error number: 1307, symbol: + * \brief Error number: 1307, symbol: * ER_SP_STORE_FAILED. */ er_sp_store_failed = 1307, /** - * \brief Common server error. Error number: 1308, symbol: + * \brief Error number: 1308, symbol: * ER_SP_LILABEL_MISMATCH. */ er_sp_lilabel_mismatch = 1308, /** - * \brief Common server error. Error number: 1309, symbol: + * \brief Error number: 1309, symbol: * ER_SP_LABEL_REDEFINE. */ er_sp_label_redefine = 1309, /** - * \brief Common server error. Error number: 1310, symbol: + * \brief Error number: 1310, symbol: * ER_SP_LABEL_MISMATCH. */ er_sp_label_mismatch = 1310, /** - * \brief Common server error. Error number: 1311, symbol: + * \brief Error number: 1311, symbol: * ER_SP_UNINIT_VAR. */ er_sp_uninit_var = 1311, /** - * \brief Common server error. Error number: 1312, symbol: + * \brief Error number: 1312, symbol: * ER_SP_BADSELECT. */ er_sp_badselect = 1312, /** - * \brief Common server error. Error number: 1313, symbol: + * \brief Error number: 1313, symbol: * ER_SP_BADRETURN. */ er_sp_badreturn = 1313, /** - * \brief Common server error. Error number: 1314, symbol: + * \brief Error number: 1314, symbol: * ER_SP_BADSTATEMENT. */ er_sp_badstatement = 1314, /** - * \brief Common server error. Error number: 1315, symbol: + * \brief Error number: 1315, symbol: * ER_UPDATE_LOG_DEPRECATED_IGNORED. */ er_update_log_deprecated_ignored = 1315, /** - * \brief Common server error. Error number: 1316, symbol: + * \brief Error number: 1316, symbol: * ER_UPDATE_LOG_DEPRECATED_TRANSLATED. */ er_update_log_deprecated_translated = 1316, /** - * \brief Common server error. Error number: 1317, symbol: + * \brief Error number: 1317, symbol: * ER_QUERY_INTERRUPTED. */ er_query_interrupted = 1317, /** - * \brief Common server error. Error number: 1318, symbol: + * \brief Error number: 1318, symbol: * ER_SP_WRONG_NO_OF_ARGS. */ er_sp_wrong_no_of_args = 1318, /** - * \brief Common server error. Error number: 1319, symbol: + * \brief Error number: 1319, symbol: * ER_SP_COND_MISMATCH. */ er_sp_cond_mismatch = 1319, /** - * \brief Common server error. Error number: 1320, symbol: + * \brief Error number: 1320, symbol: * ER_SP_NORETURN. */ er_sp_noreturn = 1320, /** - * \brief Common server error. Error number: 1321, symbol: + * \brief Error number: 1321, symbol: * ER_SP_NORETURNEND. */ er_sp_noreturnend = 1321, /** - * \brief Common server error. Error number: 1322, symbol: + * \brief Error number: 1322, symbol: * ER_SP_BAD_CURSOR_QUERY. */ er_sp_bad_cursor_query = 1322, /** - * \brief Common server error. Error number: 1323, symbol: + * \brief Error number: 1323, symbol: * ER_SP_BAD_CURSOR_SELECT. */ er_sp_bad_cursor_select = 1323, /** - * \brief Common server error. Error number: 1324, symbol: + * \brief Error number: 1324, symbol: * ER_SP_CURSOR_MISMATCH. */ er_sp_cursor_mismatch = 1324, /** - * \brief Common server error. Error number: 1325, symbol: + * \brief Error number: 1325, symbol: * ER_SP_CURSOR_ALREADY_OPEN. */ er_sp_cursor_already_open = 1325, /** - * \brief Common server error. Error number: 1326, symbol: + * \brief Error number: 1326, symbol: * ER_SP_CURSOR_NOT_OPEN. */ er_sp_cursor_not_open = 1326, /** - * \brief Common server error. Error number: 1327, symbol: + * \brief Error number: 1327, symbol: * ER_SP_UNDECLARED_VAR. */ er_sp_undeclared_var = 1327, /** - * \brief Common server error. Error number: 1328, symbol: + * \brief Error number: 1328, symbol: * ER_SP_WRONG_NO_OF_FETCH_ARGS. */ er_sp_wrong_no_of_fetch_args = 1328, /** - * \brief Common server error. Error number: 1329, symbol: + * \brief Error number: 1329, symbol: * ER_SP_FETCH_NO_DATA. */ er_sp_fetch_no_data = 1329, /** - * \brief Common server error. Error number: 1330, symbol: + * \brief Error number: 1330, symbol: * ER_SP_DUP_PARAM. */ er_sp_dup_param = 1330, /** - * \brief Common server error. Error number: 1331, symbol: + * \brief Error number: 1331, symbol: * ER_SP_DUP_VAR. */ er_sp_dup_var = 1331, /** - * \brief Common server error. Error number: 1332, symbol: + * \brief Error number: 1332, symbol: * ER_SP_DUP_COND. */ er_sp_dup_cond = 1332, /** - * \brief Common server error. Error number: 1333, symbol: + * \brief Error number: 1333, symbol: * ER_SP_DUP_CURS. */ er_sp_dup_curs = 1333, /** - * \brief Common server error. Error number: 1334, symbol: + * \brief Error number: 1334, symbol: * ER_SP_CANT_ALTER. */ er_sp_cant_alter = 1334, /** - * \brief Common server error. Error number: 1335, symbol: + * \brief Error number: 1335, symbol: * ER_SP_SUBSELECT_NYI. */ er_sp_subselect_nyi = 1335, /** - * \brief Common server error. Error number: 1336, symbol: + * \brief Error number: 1336, symbol: * ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG. */ er_stmt_not_allowed_in_sf_or_trg = 1336, /** - * \brief Common server error. Error number: 1337, symbol: + * \brief Error number: 1337, symbol: * ER_SP_VARCOND_AFTER_CURSHNDLR. */ er_sp_varcond_after_curshndlr = 1337, /** - * \brief Common server error. Error number: 1338, symbol: + * \brief Error number: 1338, symbol: * ER_SP_CURSOR_AFTER_HANDLER. */ er_sp_cursor_after_handler = 1338, /** - * \brief Common server error. Error number: 1339, symbol: + * \brief Error number: 1339, symbol: * ER_SP_CASE_NOT_FOUND. */ er_sp_case_not_found = 1339, /** - * \brief Common server error. Error number: 1340, symbol: + * \brief Error number: 1340, symbol: * ER_FPARSER_TOO_BIG_FILE. */ er_fparser_too_big_file = 1340, /** - * \brief Common server error. Error number: 1341, symbol: + * \brief Error number: 1341, symbol: * ER_FPARSER_BAD_HEADER. */ er_fparser_bad_header = 1341, /** - * \brief Common server error. Error number: 1342, symbol: + * \brief Error number: 1342, symbol: * ER_FPARSER_EOF_IN_COMMENT. */ er_fparser_eof_in_comment = 1342, /** - * \brief Common server error. Error number: 1343, symbol: + * \brief Error number: 1343, symbol: * ER_FPARSER_ERROR_IN_PARAMETER. */ er_fparser_error_in_parameter = 1343, /** - * \brief Common server error. Error number: 1344, symbol: + * \brief Error number: 1344, symbol: * ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER. */ er_fparser_eof_in_unknown_parameter = 1344, /** - * \brief Common server error. Error number: 1345, symbol: + * \brief Error number: 1345, symbol: * ER_VIEW_NO_EXPLAIN. */ er_view_no_explain = 1345, /** - * \brief Common server error. Error number: 1346, symbol: + * \brief Error number: 1346, symbol: * ER_FRM_UNKNOWN_TYPE. */ er_frm_unknown_type = 1346, /** - * \brief Common server error. Error number: 1347, symbol: + * \brief Error number: 1347, symbol: * ER_WRONG_OBJECT. */ er_wrong_object = 1347, /** - * \brief Common server error. Error number: 1348, symbol: + * \brief Error number: 1348, symbol: * ER_NONUPDATEABLE_COLUMN. */ er_nonupdateable_column = 1348, /** - * \brief Common server error. Error number: 1350, symbol: + * \brief Error number: 1350, symbol: * ER_VIEW_SELECT_CLAUSE. */ er_view_select_clause = 1350, /** - * \brief Common server error. Error number: 1351, symbol: + * \brief Error number: 1351, symbol: * ER_VIEW_SELECT_VARIABLE. */ er_view_select_variable = 1351, /** - * \brief Common server error. Error number: 1352, symbol: + * \brief Error number: 1352, symbol: * ER_VIEW_SELECT_TMPTABLE. */ er_view_select_tmptable = 1352, /** - * \brief Common server error. Error number: 1353, symbol: + * \brief Error number: 1353, symbol: * ER_VIEW_WRONG_LIST. */ er_view_wrong_list = 1353, /** - * \brief Common server error. Error number: 1354, symbol: + * \brief Error number: 1354, symbol: * ER_WARN_VIEW_MERGE. */ er_warn_view_merge = 1354, /** - * \brief Common server error. Error number: 1355, symbol: + * \brief Error number: 1355, symbol: * ER_WARN_VIEW_WITHOUT_KEY. */ er_warn_view_without_key = 1355, /** - * \brief Common server error. Error number: 1356, symbol: + * \brief Error number: 1356, symbol: * ER_VIEW_INVALID. */ er_view_invalid = 1356, /** - * \brief Common server error. Error number: 1357, symbol: + * \brief Error number: 1357, symbol: * ER_SP_NO_DROP_SP. */ er_sp_no_drop_sp = 1357, /** - * \brief Common server error. Error number: 1358, symbol: + * \brief Error number: 1358, symbol: * ER_SP_GOTO_IN_HNDLR. */ er_sp_goto_in_hndlr = 1358, /** - * \brief Common server error. Error number: 1359, symbol: + * \brief Error number: 1359, symbol: * ER_TRG_ALREADY_EXISTS. */ er_trg_already_exists = 1359, /** - * \brief Common server error. Error number: 1360, symbol: + * \brief Error number: 1360, symbol: * ER_TRG_DOES_NOT_EXIST. */ er_trg_does_not_exist = 1360, /** - * \brief Common server error. Error number: 1361, symbol: + * \brief Error number: 1361, symbol: * ER_TRG_ON_VIEW_OR_TEMP_TABLE. */ er_trg_on_view_or_temp_table = 1361, /** - * \brief Common server error. Error number: 1362, symbol: + * \brief Error number: 1362, symbol: * ER_TRG_CANT_CHANGE_ROW. */ er_trg_cant_change_row = 1362, /** - * \brief Common server error. Error number: 1363, symbol: + * \brief Error number: 1363, symbol: * ER_TRG_NO_SUCH_ROW_IN_TRG. */ er_trg_no_such_row_in_trg = 1363, /** - * \brief Common server error. Error number: 1364, symbol: + * \brief Error number: 1364, symbol: * ER_NO_DEFAULT_FOR_FIELD. */ er_no_default_for_field = 1364, /** - * \brief Common server error. Error number: 1365, symbol: + * \brief Error number: 1365, symbol: * ER_DIVISION_BY_ZERO. */ er_division_by_zero = 1365, /** - * \brief Common server error. Error number: 1366, symbol: + * \brief Error number: 1366, symbol: * ER_TRUNCATED_WRONG_VALUE_FOR_FIELD. */ er_truncated_wrong_value_for_field = 1366, /** - * \brief Common server error. Error number: 1367, symbol: + * \brief Error number: 1367, symbol: * ER_ILLEGAL_VALUE_FOR_TYPE. */ er_illegal_value_for_type = 1367, /** - * \brief Common server error. Error number: 1368, symbol: + * \brief Error number: 1368, symbol: * ER_VIEW_NONUPD_CHECK. */ er_view_nonupd_check = 1368, /** - * \brief Common server error. Error number: 1369, symbol: + * \brief Error number: 1369, symbol: * ER_VIEW_CHECK_FAILED. */ er_view_check_failed = 1369, /** - * \brief Common server error. Error number: 1370, symbol: + * \brief Error number: 1370, symbol: * ER_PROCACCESS_DENIED_ERROR. */ er_procaccess_denied_error = 1370, /** - * \brief Common server error. Error number: 1371, symbol: + * \brief Error number: 1371, symbol: * ER_RELAY_LOG_FAIL. */ er_relay_log_fail = 1371, /** - * \brief Common server error. Error number: 1372, symbol: + * \brief Error number: 1372, symbol: * ER_PASSWD_LENGTH. */ er_passwd_length = 1372, /** - * \brief Common server error. Error number: 1373, symbol: + * \brief Error number: 1373, symbol: * ER_UNKNOWN_TARGET_BINLOG. */ er_unknown_target_binlog = 1373, /** - * \brief Common server error. Error number: 1374, symbol: + * \brief Error number: 1374, symbol: * ER_IO_ERR_LOG_INDEX_READ. */ er_io_err_log_index_read = 1374, /** - * \brief Common server error. Error number: 1375, symbol: + * \brief Error number: 1375, symbol: * ER_BINLOG_PURGE_PROHIBITED. */ er_binlog_purge_prohibited = 1375, /** - * \brief Common server error. Error number: 1376, symbol: + * \brief Error number: 1376, symbol: * ER_FSEEK_FAIL. */ er_fseek_fail = 1376, /** - * \brief Common server error. Error number: 1377, symbol: + * \brief Error number: 1377, symbol: * ER_BINLOG_PURGE_FATAL_ERR. */ er_binlog_purge_fatal_err = 1377, /** - * \brief Common server error. Error number: 1378, symbol: + * \brief Error number: 1378, symbol: * ER_LOG_IN_USE. */ er_log_in_use = 1378, /** - * \brief Common server error. Error number: 1379, symbol: + * \brief Error number: 1379, symbol: * ER_LOG_PURGE_UNKNOWN_ERR. */ er_log_purge_unknown_err = 1379, /** - * \brief Common server error. Error number: 1380, symbol: + * \brief Error number: 1380, symbol: * ER_RELAY_LOG_INIT. */ er_relay_log_init = 1380, /** - * \brief Common server error. Error number: 1381, symbol: + * \brief Error number: 1381, symbol: * ER_NO_BINARY_LOGGING. */ er_no_binary_logging = 1381, /** - * \brief Common server error. Error number: 1382, symbol: + * \brief Error number: 1382, symbol: * ER_RESERVED_SYNTAX. */ er_reserved_syntax = 1382, /** - * \brief Common server error. Error number: 1383, symbol: + * \brief Error number: 1383, symbol: * ER_WSAS_FAILED. */ er_wsas_failed = 1383, /** - * \brief Common server error. Error number: 1384, symbol: + * \brief Error number: 1384, symbol: * ER_DIFF_GROUPS_PROC. */ er_diff_groups_proc = 1384, /** - * \brief Common server error. Error number: 1385, symbol: + * \brief Error number: 1385, symbol: * ER_NO_GROUP_FOR_PROC. */ er_no_group_for_proc = 1385, /** - * \brief Common server error. Error number: 1386, symbol: + * \brief Error number: 1386, symbol: * ER_ORDER_WITH_PROC. */ er_order_with_proc = 1386, /** - * \brief Common server error. Error number: 1387, symbol: + * \brief Error number: 1387, symbol: * ER_LOGGING_PROHIBIT_CHANGING_OF. */ er_logging_prohibit_changing_of = 1387, /** - * \brief Common server error. Error number: 1388, symbol: + * \brief Error number: 1388, symbol: * ER_NO_FILE_MAPPING. */ er_no_file_mapping = 1388, /** - * \brief Common server error. Error number: 1389, symbol: + * \brief Error number: 1389, symbol: * ER_WRONG_MAGIC. */ er_wrong_magic = 1389, /** - * \brief Common server error. Error number: 1390, symbol: + * \brief Error number: 1390, symbol: * ER_PS_MANY_PARAM. */ er_ps_many_param = 1390, /** - * \brief Common server error. Error number: 1391, symbol: + * \brief Error number: 1391, symbol: * ER_KEY_PART_0. */ er_key_part_0 = 1391, /** - * \brief Common server error. Error number: 1392, symbol: + * \brief Error number: 1392, symbol: * ER_VIEW_CHECKSUM. */ er_view_checksum = 1392, /** - * \brief Common server error. Error number: 1393, symbol: + * \brief Error number: 1393, symbol: * ER_VIEW_MULTIUPDATE. */ er_view_multiupdate = 1393, /** - * \brief Common server error. Error number: 1394, symbol: + * \brief Error number: 1394, symbol: * ER_VIEW_NO_INSERT_FIELD_LIST. */ er_view_no_insert_field_list = 1394, /** - * \brief Common server error. Error number: 1395, symbol: + * \brief Error number: 1395, symbol: * ER_VIEW_DELETE_MERGE_VIEW. */ er_view_delete_merge_view = 1395, /** - * \brief Common server error. Error number: 1396, symbol: + * \brief Error number: 1396, symbol: * ER_CANNOT_USER. */ er_cannot_user = 1396, /** - * \brief Common server error. Error number: 1397, symbol: + * \brief Error number: 1397, symbol: * ER_XAER_NOTA. */ er_xaer_nota = 1397, /** - * \brief Common server error. Error number: 1398, symbol: + * \brief Error number: 1398, symbol: * ER_XAER_INVAL. */ er_xaer_inval = 1398, /** - * \brief Common server error. Error number: 1399, symbol: + * \brief Error number: 1399, symbol: * ER_XAER_RMFAIL. */ er_xaer_rmfail = 1399, /** - * \brief Common server error. Error number: 1400, symbol: + * \brief Error number: 1400, symbol: * ER_XAER_OUTSIDE. */ er_xaer_outside = 1400, /** - * \brief Common server error. Error number: 1401, symbol: + * \brief Error number: 1401, symbol: * ER_XAER_RMERR. */ er_xaer_rmerr = 1401, /** - * \brief Common server error. Error number: 1402, symbol: + * \brief Error number: 1402, symbol: * ER_XA_RBROLLBACK. */ er_xa_rbrollback = 1402, /** - * \brief Common server error. Error number: 1403, symbol: + * \brief Error number: 1403, symbol: * ER_NONEXISTING_PROC_GRANT. */ er_nonexisting_proc_grant = 1403, /** - * \brief Common server error. Error number: 1404, symbol: + * \brief Error number: 1404, symbol: * ER_PROC_AUTO_GRANT_FAIL. */ er_proc_auto_grant_fail = 1404, /** - * \brief Common server error. Error number: 1405, symbol: + * \brief Error number: 1405, symbol: * ER_PROC_AUTO_REVOKE_FAIL. */ er_proc_auto_revoke_fail = 1405, /** - * \brief Common server error. Error number: 1406, symbol: + * \brief Error number: 1406, symbol: * ER_DATA_TOO_LONG. */ er_data_too_long = 1406, /** - * \brief Common server error. Error number: 1407, symbol: + * \brief Error number: 1407, symbol: * ER_SP_BAD_SQLSTATE. */ er_sp_bad_sqlstate = 1407, /** - * \brief Common server error. Error number: 1408, symbol: + * \brief Error number: 1408, symbol: * ER_STARTUP. */ er_startup = 1408, /** - * \brief Common server error. Error number: 1409, symbol: + * \brief Error number: 1409, symbol: * ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR. */ er_load_from_fixed_size_rows_to_var = 1409, /** - * \brief Common server error. Error number: 1410, symbol: + * \brief Error number: 1410, symbol: * ER_CANT_CREATE_USER_WITH_GRANT. */ er_cant_create_user_with_grant = 1410, /** - * \brief Common server error. Error number: 1411, symbol: + * \brief Error number: 1411, symbol: * ER_WRONG_VALUE_FOR_TYPE. */ er_wrong_value_for_type = 1411, /** - * \brief Common server error. Error number: 1412, symbol: + * \brief Error number: 1412, symbol: * ER_TABLE_DEF_CHANGED. */ er_table_def_changed = 1412, /** - * \brief Common server error. Error number: 1413, symbol: + * \brief Error number: 1413, symbol: * ER_SP_DUP_HANDLER. */ er_sp_dup_handler = 1413, /** - * \brief Common server error. Error number: 1414, symbol: + * \brief Error number: 1414, symbol: * ER_SP_NOT_VAR_ARG. */ er_sp_not_var_arg = 1414, /** - * \brief Common server error. Error number: 1415, symbol: + * \brief Error number: 1415, symbol: * ER_SP_NO_RETSET. */ er_sp_no_retset = 1415, /** - * \brief Common server error. Error number: 1416, symbol: + * \brief Error number: 1416, symbol: * ER_CANT_CREATE_GEOMETRY_OBJECT. */ er_cant_create_geometry_object = 1416, /** - * \brief Common server error. Error number: 1417, symbol: + * \brief Error number: 1417, symbol: * ER_FAILED_ROUTINE_BREAK_BINLOG. */ er_failed_routine_break_binlog = 1417, /** - * \brief Common server error. Error number: 1418, symbol: + * \brief Error number: 1418, symbol: * ER_BINLOG_UNSAFE_ROUTINE. */ er_binlog_unsafe_routine = 1418, /** - * \brief Common server error. Error number: 1419, symbol: + * \brief Error number: 1419, symbol: * ER_BINLOG_CREATE_ROUTINE_NEED_SUPER. */ er_binlog_create_routine_need_super = 1419, /** - * \brief Common server error. Error number: 1420, symbol: + * \brief Error number: 1420, symbol: * ER_EXEC_STMT_WITH_OPEN_CURSOR. */ er_exec_stmt_with_open_cursor = 1420, /** - * \brief Common server error. Error number: 1421, symbol: + * \brief Error number: 1421, symbol: * ER_STMT_HAS_NO_OPEN_CURSOR. */ er_stmt_has_no_open_cursor = 1421, /** - * \brief Common server error. Error number: 1422, symbol: + * \brief Error number: 1422, symbol: * ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG. */ er_commit_not_allowed_in_sf_or_trg = 1422, /** - * \brief Common server error. Error number: 1423, symbol: + * \brief Error number: 1423, symbol: * ER_NO_DEFAULT_FOR_VIEW_FIELD. */ er_no_default_for_view_field = 1423, /** - * \brief Common server error. Error number: 1424, symbol: + * \brief Error number: 1424, symbol: * ER_SP_NO_RECURSION. */ er_sp_no_recursion = 1424, /** - * \brief Common server error. Error number: 1425, symbol: + * \brief Error number: 1425, symbol: * ER_TOO_BIG_SCALE. */ er_too_big_scale = 1425, /** - * \brief Common server error. Error number: 1426, symbol: + * \brief Error number: 1426, symbol: * ER_TOO_BIG_PRECISION. */ er_too_big_precision = 1426, /** - * \brief Common server error. Error number: 1427, symbol: + * \brief Error number: 1427, symbol: * ER_M_BIGGER_THAN_D. */ er_m_bigger_than_d = 1427, /** - * \brief Common server error. Error number: 1428, symbol: + * \brief Error number: 1428, symbol: * ER_WRONG_LOCK_OF_SYSTEM_TABLE. */ er_wrong_lock_of_system_table = 1428, /** - * \brief Common server error. Error number: 1429, symbol: + * \brief Error number: 1429, symbol: * ER_CONNECT_TO_FOREIGN_DATA_SOURCE. */ er_connect_to_foreign_data_source = 1429, /** - * \brief Common server error. Error number: 1430, symbol: + * \brief Error number: 1430, symbol: * ER_QUERY_ON_FOREIGN_DATA_SOURCE. */ er_query_on_foreign_data_source = 1430, /** - * \brief Common server error. Error number: 1431, symbol: + * \brief Error number: 1431, symbol: * ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST. */ er_foreign_data_source_doesnt_exist = 1431, /** - * \brief Common server error. Error number: 1432, symbol: + * \brief Error number: 1432, symbol: * ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE. */ er_foreign_data_string_invalid_cant_create = 1432, /** - * \brief Common server error. Error number: 1433, symbol: + * \brief Error number: 1433, symbol: * ER_FOREIGN_DATA_STRING_INVALID. */ er_foreign_data_string_invalid = 1433, /** - * \brief Common server error. Error number: 1434, symbol: + * \brief Error number: 1434, symbol: * ER_CANT_CREATE_FEDERATED_TABLE. */ er_cant_create_federated_table = 1434, /** - * \brief Common server error. Error number: 1435, symbol: + * \brief Error number: 1435, symbol: * ER_TRG_IN_WRONG_SCHEMA. */ er_trg_in_wrong_schema = 1435, /** - * \brief Common server error. Error number: 1436, symbol: + * \brief Error number: 1436, symbol: * ER_STACK_OVERRUN_NEED_MORE. */ er_stack_overrun_need_more = 1436, /** - * \brief Common server error. Error number: 1437, symbol: + * \brief Error number: 1437, symbol: * ER_TOO_LONG_BODY. */ er_too_long_body = 1437, /** - * \brief Common server error. Error number: 1438, symbol: + * \brief Error number: 1438, symbol: * ER_WARN_CANT_DROP_DEFAULT_KEYCACHE. */ er_warn_cant_drop_default_keycache = 1438, /** - * \brief Common server error. Error number: 1439, symbol: + * \brief Error number: 1439, symbol: * ER_TOO_BIG_DISPLAYWIDTH. */ er_too_big_displaywidth = 1439, /** - * \brief Common server error. Error number: 1440, symbol: + * \brief Error number: 1440, symbol: * ER_XAER_DUPID. */ er_xaer_dupid = 1440, /** - * \brief Common server error. Error number: 1441, symbol: + * \brief Error number: 1441, symbol: * ER_DATETIME_FUNCTION_OVERFLOW. */ er_datetime_function_overflow = 1441, /** - * \brief Common server error. Error number: 1442, symbol: + * \brief Error number: 1442, symbol: * ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG. */ er_cant_update_used_table_in_sf_or_trg = 1442, /** - * \brief Common server error. Error number: 1443, symbol: + * \brief Error number: 1443, symbol: * ER_VIEW_PREVENT_UPDATE. */ er_view_prevent_update = 1443, /** - * \brief Common server error. Error number: 1444, symbol: + * \brief Error number: 1444, symbol: * ER_PS_NO_RECURSION. */ er_ps_no_recursion = 1444, /** - * \brief Common server error. Error number: 1445, symbol: + * \brief Error number: 1445, symbol: * ER_SP_CANT_SET_AUTOCOMMIT. */ er_sp_cant_set_autocommit = 1445, /** - * \brief Common server error. Error number: 1446, symbol: + * \brief Error number: 1446, symbol: * ER_MALFORMED_DEFINER. */ er_malformed_definer = 1446, /** - * \brief Common server error. Error number: 1447, symbol: + * \brief Error number: 1447, symbol: * ER_VIEW_FRM_NO_USER. */ er_view_frm_no_user = 1447, /** - * \brief Common server error. Error number: 1448, symbol: + * \brief Error number: 1448, symbol: * ER_VIEW_OTHER_USER. */ er_view_other_user = 1448, /** - * \brief Common server error. Error number: 1449, symbol: + * \brief Error number: 1449, symbol: * ER_NO_SUCH_USER. */ er_no_such_user = 1449, /** - * \brief Common server error. Error number: 1450, symbol: + * \brief Error number: 1450, symbol: * ER_FORBID_SCHEMA_CHANGE. */ er_forbid_schema_change = 1450, /** - * \brief Common server error. Error number: 1451, symbol: + * \brief Error number: 1451, symbol: * ER_ROW_IS_REFERENCED_2. */ er_row_is_referenced_2 = 1451, /** - * \brief Common server error. Error number: 1452, symbol: + * \brief Error number: 1452, symbol: * ER_NO_REFERENCED_ROW_2. */ er_no_referenced_row_2 = 1452, /** - * \brief Common server error. Error number: 1453, symbol: + * \brief Error number: 1453, symbol: * ER_SP_BAD_VAR_SHADOW. */ er_sp_bad_var_shadow = 1453, /** - * \brief Common server error. Error number: 1454, symbol: + * \brief Error number: 1454, symbol: * ER_TRG_NO_DEFINER. */ er_trg_no_definer = 1454, /** - * \brief Common server error. Error number: 1455, symbol: + * \brief Error number: 1455, symbol: * ER_OLD_FILE_FORMAT. */ er_old_file_format = 1455, /** - * \brief Common server error. Error number: 1456, symbol: + * \brief Error number: 1456, symbol: * ER_SP_RECURSION_LIMIT. */ er_sp_recursion_limit = 1456, /** - * \brief Common server error. Error number: 1457, symbol: + * \brief Error number: 1457, symbol: * ER_SP_PROC_TABLE_CORRUPT. */ er_sp_proc_table_corrupt = 1457, /** - * \brief Common server error. Error number: 1458, symbol: + * \brief Error number: 1458, symbol: * ER_SP_WRONG_NAME. */ er_sp_wrong_name = 1458, /** - * \brief Common server error. Error number: 1459, symbol: + * \brief Error number: 1459, symbol: * ER_TABLE_NEEDS_UPGRADE. */ er_table_needs_upgrade = 1459, /** - * \brief Common server error. Error number: 1460, symbol: + * \brief Error number: 1460, symbol: * ER_SP_NO_AGGREGATE. */ er_sp_no_aggregate = 1460, /** - * \brief Common server error. Error number: 1461, symbol: + * \brief Error number: 1461, symbol: * ER_MAX_PREPARED_STMT_COUNT_REACHED. */ er_max_prepared_stmt_count_reached = 1461, /** - * \brief Common server error. Error number: 1462, symbol: + * \brief Error number: 1462, symbol: * ER_VIEW_RECURSIVE. */ er_view_recursive = 1462, /** - * \brief Common server error. Error number: 1463, symbol: + * \brief Error number: 1463, symbol: * ER_NON_GROUPING_FIELD_USED. */ er_non_grouping_field_used = 1463, /** - * \brief Common server error. Error number: 1464, symbol: + * \brief Error number: 1464, symbol: * ER_TABLE_CANT_HANDLE_SPKEYS. */ er_table_cant_handle_spkeys = 1464, /** - * \brief Common server error. Error number: 1465, symbol: + * \brief Error number: 1465, symbol: * ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA. */ er_no_triggers_on_system_schema = 1465, /** - * \brief Common server error. Error number: 1466, symbol: + * \brief Error number: 1466, symbol: * ER_REMOVED_SPACES. */ er_removed_spaces = 1466, /** - * \brief Common server error. Error number: 1467, symbol: + * \brief Error number: 1467, symbol: * ER_AUTOINC_READ_FAILED. */ er_autoinc_read_failed = 1467, /** - * \brief Common server error. Error number: 1468, symbol: + * \brief Error number: 1468, symbol: * ER_USERNAME. */ er_username = 1468, /** - * \brief Common server error. Error number: 1469, symbol: + * \brief Error number: 1469, symbol: * ER_HOSTNAME. */ er_hostname = 1469, /** - * \brief Common server error. Error number: 1470, symbol: + * \brief Error number: 1470, symbol: * ER_WRONG_STRING_LENGTH. */ er_wrong_string_length = 1470, /** - * \brief Common server error. Error number: 1471, symbol: + * \brief Error number: 1471, symbol: * ER_NON_INSERTABLE_TABLE. */ er_non_insertable_table = 1471, /** - * \brief Common server error. Error number: 1472, symbol: + * \brief Error number: 1472, symbol: * ER_ADMIN_WRONG_MRG_TABLE. */ er_admin_wrong_mrg_table = 1472, /** - * \brief Common server error. Error number: 1473, symbol: + * \brief Error number: 1473, symbol: * ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT. */ er_too_high_level_of_nesting_for_select = 1473, /** - * \brief Common server error. Error number: 1474, symbol: + * \brief Error number: 1474, symbol: * ER_NAME_BECOMES_EMPTY. */ er_name_becomes_empty = 1474, /** - * \brief Common server error. Error number: 1475, symbol: + * \brief Error number: 1475, symbol: * ER_AMBIGUOUS_FIELD_TERM. */ er_ambiguous_field_term = 1475, /** - * \brief Common server error. Error number: 1476, symbol: + * \brief Error number: 1476, symbol: * ER_FOREIGN_SERVER_EXISTS. */ er_foreign_server_exists = 1476, /** - * \brief Common server error. Error number: 1477, symbol: + * \brief Error number: 1477, symbol: * ER_FOREIGN_SERVER_DOESNT_EXIST. */ er_foreign_server_doesnt_exist = 1477, /** - * \brief Common server error. Error number: 1478, symbol: + * \brief Error number: 1478, symbol: * ER_ILLEGAL_HA_CREATE_OPTION. */ er_illegal_ha_create_option = 1478, /** - * \brief Common server error. Error number: 1479, symbol: + * \brief Error number: 1479, symbol: * ER_PARTITION_REQUIRES_VALUES_ERROR. */ er_partition_requires_values_error = 1479, /** - * \brief Common server error. Error number: 1480, symbol: + * \brief Error number: 1480, symbol: * ER_PARTITION_WRONG_VALUES_ERROR. */ er_partition_wrong_values_error = 1480, /** - * \brief Common server error. Error number: 1481, symbol: + * \brief Error number: 1481, symbol: * ER_PARTITION_MAXVALUE_ERROR. */ er_partition_maxvalue_error = 1481, /** - * \brief Common server error. Error number: 1482, symbol: + * \brief Error number: 1482, symbol: * ER_PARTITION_SUBPARTITION_ERROR. */ er_partition_subpartition_error = 1482, /** - * \brief Common server error. Error number: 1483, symbol: + * \brief Error number: 1483, symbol: * ER_PARTITION_SUBPART_MIX_ERROR. */ er_partition_subpart_mix_error = 1483, /** - * \brief Common server error. Error number: 1484, symbol: + * \brief Error number: 1484, symbol: * ER_PARTITION_WRONG_NO_PART_ERROR. */ er_partition_wrong_no_part_error = 1484, /** - * \brief Common server error. Error number: 1485, symbol: + * \brief Error number: 1485, symbol: * ER_PARTITION_WRONG_NO_SUBPART_ERROR. */ er_partition_wrong_no_subpart_error = 1485, /** - * \brief Common server error. Error number: 1486, symbol: + * \brief Error number: 1486, symbol: * ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR. */ er_wrong_expr_in_partition_func_error = 1486, /** - * \brief Common server error. Error number: 1488, symbol: + * \brief Error number: 1488, symbol: * ER_FIELD_NOT_FOUND_PART_ERROR. */ er_field_not_found_part_error = 1488, /** - * \brief Common server error. Error number: 1489, symbol: + * \brief Error number: 1489, symbol: * ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR. */ er_list_of_fields_only_in_hash_error = 1489, /** - * \brief Common server error. Error number: 1490, symbol: + * \brief Error number: 1490, symbol: * ER_INCONSISTENT_PARTITION_INFO_ERROR. */ er_inconsistent_partition_info_error = 1490, /** - * \brief Common server error. Error number: 1491, symbol: + * \brief Error number: 1491, symbol: * ER_PARTITION_FUNC_NOT_ALLOWED_ERROR. */ er_partition_func_not_allowed_error = 1491, /** - * \brief Common server error. Error number: 1492, symbol: + * \brief Error number: 1492, symbol: * ER_PARTITIONS_MUST_BE_DEFINED_ERROR. */ er_partitions_must_be_defined_error = 1492, /** - * \brief Common server error. Error number: 1493, symbol: + * \brief Error number: 1493, symbol: * ER_RANGE_NOT_INCREASING_ERROR. */ er_range_not_increasing_error = 1493, /** - * \brief Common server error. Error number: 1494, symbol: + * \brief Error number: 1494, symbol: * ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR. */ er_inconsistent_type_of_functions_error = 1494, /** - * \brief Common server error. Error number: 1495, symbol: + * \brief Error number: 1495, symbol: * ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR. */ er_multiple_def_const_in_list_part_error = 1495, /** - * \brief Common server error. Error number: 1496, symbol: + * \brief Error number: 1496, symbol: * ER_PARTITION_ENTRY_ERROR. */ er_partition_entry_error = 1496, /** - * \brief Common server error. Error number: 1497, symbol: + * \brief Error number: 1497, symbol: * ER_MIX_HANDLER_ERROR. */ er_mix_handler_error = 1497, /** - * \brief Common server error. Error number: 1498, symbol: + * \brief Error number: 1498, symbol: * ER_PARTITION_NOT_DEFINED_ERROR. */ er_partition_not_defined_error = 1498, /** - * \brief Common server error. Error number: 1499, symbol: + * \brief Error number: 1499, symbol: * ER_TOO_MANY_PARTITIONS_ERROR. */ er_too_many_partitions_error = 1499, /** - * \brief Common server error. Error number: 1500, symbol: + * \brief Error number: 1500, symbol: * ER_SUBPARTITION_ERROR. */ er_subpartition_error = 1500, /** - * \brief Common server error. Error number: 1501, symbol: + * \brief Error number: 1501, symbol: * ER_CANT_CREATE_HANDLER_FILE. */ er_cant_create_handler_file = 1501, /** - * \brief Common server error. Error number: 1502, symbol: + * \brief Error number: 1502, symbol: * ER_BLOB_FIELD_IN_PART_FUNC_ERROR. */ er_blob_field_in_part_func_error = 1502, /** - * \brief Common server error. Error number: 1503, symbol: + * \brief Error number: 1503, symbol: * ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF. */ er_unique_key_need_all_fields_in_pf = 1503, /** - * \brief Common server error. Error number: 1504, symbol: + * \brief Error number: 1504, symbol: * ER_NO_PARTS_ERROR. */ er_no_parts_error = 1504, /** - * \brief Common server error. Error number: 1505, symbol: + * \brief Error number: 1505, symbol: * ER_PARTITION_MGMT_ON_NONPARTITIONED. */ er_partition_mgmt_on_nonpartitioned = 1505, /** - * \brief Common server error. Error number: 1507, symbol: + * \brief Error number: 1507, symbol: * ER_DROP_PARTITION_NON_EXISTENT. */ er_drop_partition_non_existent = 1507, /** - * \brief Common server error. Error number: 1508, symbol: + * \brief Error number: 1508, symbol: * ER_DROP_LAST_PARTITION. */ er_drop_last_partition = 1508, /** - * \brief Common server error. Error number: 1509, symbol: + * \brief Error number: 1509, symbol: * ER_COALESCE_ONLY_ON_HASH_PARTITION. */ er_coalesce_only_on_hash_partition = 1509, /** - * \brief Common server error. Error number: 1510, symbol: + * \brief Error number: 1510, symbol: * ER_REORG_HASH_ONLY_ON_SAME_NO. */ er_reorg_hash_only_on_same_no = 1510, /** - * \brief Common server error. Error number: 1511, symbol: + * \brief Error number: 1511, symbol: * ER_REORG_NO_PARAM_ERROR. */ er_reorg_no_param_error = 1511, /** - * \brief Common server error. Error number: 1512, symbol: + * \brief Error number: 1512, symbol: * ER_ONLY_ON_RANGE_LIST_PARTITION. */ er_only_on_range_list_partition = 1512, /** - * \brief Common server error. Error number: 1513, symbol: + * \brief Error number: 1513, symbol: * ER_ADD_PARTITION_SUBPART_ERROR. */ er_add_partition_subpart_error = 1513, /** - * \brief Common server error. Error number: 1514, symbol: + * \brief Error number: 1514, symbol: * ER_ADD_PARTITION_NO_NEW_PARTITION. */ er_add_partition_no_new_partition = 1514, /** - * \brief Common server error. Error number: 1515, symbol: + * \brief Error number: 1515, symbol: * ER_COALESCE_PARTITION_NO_PARTITION. */ er_coalesce_partition_no_partition = 1515, /** - * \brief Common server error. Error number: 1516, symbol: + * \brief Error number: 1516, symbol: * ER_REORG_PARTITION_NOT_EXIST. */ er_reorg_partition_not_exist = 1516, /** - * \brief Common server error. Error number: 1517, symbol: + * \brief Error number: 1517, symbol: * ER_SAME_NAME_PARTITION. */ er_same_name_partition = 1517, /** - * \brief Common server error. Error number: 1518, symbol: + * \brief Error number: 1518, symbol: * ER_NO_BINLOG_ERROR. */ er_no_binlog_error = 1518, /** - * \brief Common server error. Error number: 1519, symbol: + * \brief Error number: 1519, symbol: * ER_CONSECUTIVE_REORG_PARTITIONS. */ er_consecutive_reorg_partitions = 1519, /** - * \brief Common server error. Error number: 1520, symbol: + * \brief Error number: 1520, symbol: * ER_REORG_OUTSIDE_RANGE. */ er_reorg_outside_range = 1520, /** - * \brief Common server error. Error number: 1521, symbol: + * \brief Error number: 1521, symbol: * ER_PARTITION_FUNCTION_FAILURE. */ er_partition_function_failure = 1521, /** - * \brief Common server error. Error number: 1522, symbol: + * \brief Error number: 1522, symbol: * ER_PART_STATE_ERROR. */ er_part_state_error = 1522, /** - * \brief Common server error. Error number: 1523, symbol: + * \brief Error number: 1523, symbol: * ER_LIMITED_PART_RANGE. */ er_limited_part_range = 1523, /** - * \brief Common server error. Error number: 1524, symbol: + * \brief Error number: 1524, symbol: * ER_PLUGIN_IS_NOT_LOADED. */ er_plugin_is_not_loaded = 1524, /** - * \brief Common server error. Error number: 1525, symbol: + * \brief Error number: 1525, symbol: * ER_WRONG_VALUE. */ er_wrong_value = 1525, /** - * \brief Common server error. Error number: 1526, symbol: + * \brief Error number: 1526, symbol: * ER_NO_PARTITION_FOR_GIVEN_VALUE. */ er_no_partition_for_given_value = 1526, /** - * \brief Common server error. Error number: 1527, symbol: + * \brief Error number: 1527, symbol: * ER_FILEGROUP_OPTION_ONLY_ONCE. */ er_filegroup_option_only_once = 1527, /** - * \brief Common server error. Error number: 1528, symbol: + * \brief Error number: 1528, symbol: * ER_CREATE_FILEGROUP_FAILED. */ er_create_filegroup_failed = 1528, /** - * \brief Common server error. Error number: 1529, symbol: + * \brief Error number: 1529, symbol: * ER_DROP_FILEGROUP_FAILED. */ er_drop_filegroup_failed = 1529, /** - * \brief Common server error. Error number: 1530, symbol: + * \brief Error number: 1530, symbol: * ER_TABLESPACE_AUTO_EXTEND_ERROR. */ er_tablespace_auto_extend_error = 1530, /** - * \brief Common server error. Error number: 1531, symbol: + * \brief Error number: 1531, symbol: * ER_WRONG_SIZE_NUMBER. */ er_wrong_size_number = 1531, /** - * \brief Common server error. Error number: 1532, symbol: + * \brief Error number: 1532, symbol: * ER_SIZE_OVERFLOW_ERROR. */ er_size_overflow_error = 1532, /** - * \brief Common server error. Error number: 1533, symbol: + * \brief Error number: 1533, symbol: * ER_ALTER_FILEGROUP_FAILED. */ er_alter_filegroup_failed = 1533, /** - * \brief Common server error. Error number: 1534, symbol: + * \brief Error number: 1534, symbol: * ER_BINLOG_ROW_LOGGING_FAILED. */ er_binlog_row_logging_failed = 1534, /** - * \brief Common server error. Error number: 1535, symbol: + * \brief Error number: 1535, symbol: * ER_BINLOG_ROW_WRONG_TABLE_DEF. */ er_binlog_row_wrong_table_def = 1535, /** - * \brief Common server error. Error number: 1536, symbol: + * \brief Error number: 1536, symbol: * ER_BINLOG_ROW_RBR_TO_SBR. */ er_binlog_row_rbr_to_sbr = 1536, /** - * \brief Common server error. Error number: 1537, symbol: + * \brief Error number: 1537, symbol: * ER_EVENT_ALREADY_EXISTS. */ er_event_already_exists = 1537, /** - * \brief Common server error. Error number: 1538, symbol: + * \brief Error number: 1538, symbol: * ER_EVENT_STORE_FAILED. */ er_event_store_failed = 1538, /** - * \brief Common server error. Error number: 1539, symbol: + * \brief Error number: 1539, symbol: * ER_EVENT_DOES_NOT_EXIST. */ er_event_does_not_exist = 1539, /** - * \brief Common server error. Error number: 1540, symbol: + * \brief Error number: 1540, symbol: * ER_EVENT_CANT_ALTER. */ er_event_cant_alter = 1540, /** - * \brief Common server error. Error number: 1541, symbol: + * \brief Error number: 1541, symbol: * ER_EVENT_DROP_FAILED. */ er_event_drop_failed = 1541, /** - * \brief Common server error. Error number: 1542, symbol: + * \brief Error number: 1542, symbol: * ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG. */ er_event_interval_not_positive_or_too_big = 1542, /** - * \brief Common server error. Error number: 1543, symbol: + * \brief Error number: 1543, symbol: * ER_EVENT_ENDS_BEFORE_STARTS. */ er_event_ends_before_starts = 1543, /** - * \brief Common server error. Error number: 1544, symbol: + * \brief Error number: 1544, symbol: * ER_EVENT_EXEC_TIME_IN_THE_PAST. */ er_event_exec_time_in_the_past = 1544, /** - * \brief Common server error. Error number: 1545, symbol: + * \brief Error number: 1545, symbol: * ER_EVENT_OPEN_TABLE_FAILED. */ er_event_open_table_failed = 1545, /** - * \brief Common server error. Error number: 1546, symbol: + * \brief Error number: 1546, symbol: * ER_EVENT_NEITHER_M_EXPR_NOR_M_AT. */ er_event_neither_m_expr_nor_m_at = 1546, /** - * \brief Common server error. Error number: 1549, symbol: + * \brief Error number: 1549, symbol: * ER_EVENT_CANNOT_DELETE. */ er_event_cannot_delete = 1549, /** - * \brief Common server error. Error number: 1550, symbol: + * \brief Error number: 1550, symbol: * ER_EVENT_COMPILE_ERROR. */ er_event_compile_error = 1550, /** - * \brief Common server error. Error number: 1551, symbol: + * \brief Error number: 1551, symbol: * ER_EVENT_SAME_NAME. */ er_event_same_name = 1551, /** - * \brief Common server error. Error number: 1552, symbol: + * \brief Error number: 1552, symbol: * ER_EVENT_DATA_TOO_LONG. */ er_event_data_too_long = 1552, /** - * \brief Common server error. Error number: 1553, symbol: + * \brief Error number: 1553, symbol: * ER_DROP_INDEX_FK. */ er_drop_index_fk = 1553, /** - * \brief Common server error. Error number: 1554, symbol: + * \brief Error number: 1554, symbol: * ER_WARN_DEPRECATED_SYNTAX_WITH_VER. */ er_warn_deprecated_syntax_with_ver = 1554, /** - * \brief Common server error. Error number: 1555, symbol: + * \brief Error number: 1555, symbol: * ER_CANT_WRITE_LOCK_LOG_TABLE. */ er_cant_write_lock_log_table = 1555, /** - * \brief Common server error. Error number: 1556, symbol: + * \brief Error number: 1556, symbol: * ER_CANT_LOCK_LOG_TABLE. */ er_cant_lock_log_table = 1556, /** - * \brief Common server error. Error number: 1558, symbol: + * \brief Error number: 1558, symbol: * ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE. */ er_col_count_doesnt_match_please_update = 1558, /** - * \brief Common server error. Error number: 1559, symbol: + * \brief Error number: 1559, symbol: * ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR. */ er_temp_table_prevents_switch_out_of_rbr = 1559, /** - * \brief Common server error. Error number: 1560, symbol: + * \brief Error number: 1560, symbol: * ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT. */ er_stored_function_prevents_switch_binlog_format = 1560, /** - * \brief Common server error. Error number: 1562, symbol: + * \brief Error number: 1562, symbol: * ER_PARTITION_NO_TEMPORARY. */ er_partition_no_temporary = 1562, /** - * \brief Common server error. Error number: 1563, symbol: + * \brief Error number: 1563, symbol: * ER_PARTITION_CONST_DOMAIN_ERROR. */ er_partition_const_domain_error = 1563, /** - * \brief Common server error. Error number: 1564, symbol: + * \brief Error number: 1564, symbol: * ER_PARTITION_FUNCTION_IS_NOT_ALLOWED. */ er_partition_function_is_not_allowed = 1564, /** - * \brief Common server error. Error number: 1565, symbol: + * \brief Error number: 1565, symbol: * ER_DDL_LOG_ERROR. */ er_ddl_log_error = 1565, /** - * \brief Common server error. Error number: 1566, symbol: + * \brief Error number: 1566, symbol: * ER_NULL_IN_VALUES_LESS_THAN. */ er_null_in_values_less_than = 1566, /** - * \brief Common server error. Error number: 1567, symbol: + * \brief Error number: 1567, symbol: * ER_WRONG_PARTITION_NAME. */ er_wrong_partition_name = 1567, /** - * \brief Common server error. Error number: 1568, symbol: + * \brief Error number: 1568, symbol: * ER_CANT_CHANGE_TX_CHARACTERISTICS. */ er_cant_change_tx_characteristics = 1568, /** - * \brief Common server error. Error number: 1569, symbol: + * \brief Error number: 1569, symbol: * ER_DUP_ENTRY_AUTOINCREMENT_CASE. */ er_dup_entry_autoincrement_case = 1569, /** - * \brief Common server error. Error number: 1570, symbol: + * \brief Error number: 1570, symbol: * ER_EVENT_MODIFY_QUEUE_ERROR. */ er_event_modify_queue_error = 1570, /** - * \brief Common server error. Error number: 1571, symbol: + * \brief Error number: 1571, symbol: * ER_EVENT_SET_VAR_ERROR. */ er_event_set_var_error = 1571, /** - * \brief Common server error. Error number: 1572, symbol: + * \brief Error number: 1572, symbol: * ER_PARTITION_MERGE_ERROR. */ er_partition_merge_error = 1572, /** - * \brief Common server error. Error number: 1573, symbol: + * \brief Error number: 1573, symbol: * ER_CANT_ACTIVATE_LOG. */ er_cant_activate_log = 1573, /** - * \brief Common server error. Error number: 1574, symbol: + * \brief Error number: 1574, symbol: * ER_RBR_NOT_AVAILABLE. */ er_rbr_not_available = 1574, /** - * \brief Common server error. Error number: 1575, symbol: + * \brief Error number: 1575, symbol: * ER_BASE64_DECODE_ERROR. */ er_base64_decode_error = 1575, /** - * \brief Common server error. Error number: 1576, symbol: + * \brief Error number: 1576, symbol: * ER_EVENT_RECURSION_FORBIDDEN. */ er_event_recursion_forbidden = 1576, /** - * \brief Common server error. Error number: 1577, symbol: + * \brief Error number: 1577, symbol: * ER_EVENTS_DB_ERROR. */ er_events_db_error = 1577, /** - * \brief Common server error. Error number: 1578, symbol: + * \brief Error number: 1578, symbol: * ER_ONLY_INTEGERS_ALLOWED. */ er_only_integers_allowed = 1578, /** - * \brief Common server error. Error number: 1579, symbol: + * \brief Error number: 1579, symbol: * ER_UNSUPORTED_LOG_ENGINE. */ er_unsuported_log_engine = 1579, /** - * \brief Common server error. Error number: 1580, symbol: + * \brief Error number: 1580, symbol: * ER_BAD_LOG_STATEMENT. */ er_bad_log_statement = 1580, /** - * \brief Common server error. Error number: 1581, symbol: + * \brief Error number: 1581, symbol: * ER_CANT_RENAME_LOG_TABLE. */ er_cant_rename_log_table = 1581, /** - * \brief Common server error. Error number: 1582, symbol: + * \brief Error number: 1582, symbol: * ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT. */ er_wrong_paramcount_to_native_fct = 1582, /** - * \brief Common server error. Error number: 1583, symbol: + * \brief Error number: 1583, symbol: * ER_WRONG_PARAMETERS_TO_NATIVE_FCT. */ er_wrong_parameters_to_native_fct = 1583, /** - * \brief Common server error. Error number: 1584, symbol: + * \brief Error number: 1584, symbol: * ER_WRONG_PARAMETERS_TO_STORED_FCT. */ er_wrong_parameters_to_stored_fct = 1584, /** - * \brief Common server error. Error number: 1585, symbol: + * \brief Error number: 1585, symbol: * ER_NATIVE_FCT_NAME_COLLISION. */ er_native_fct_name_collision = 1585, /** - * \brief Common server error. Error number: 1586, symbol: + * \brief Error number: 1586, symbol: * ER_DUP_ENTRY_WITH_KEY_NAME. */ er_dup_entry_with_key_name = 1586, /** - * \brief Common server error. Error number: 1587, symbol: + * \brief Error number: 1587, symbol: * ER_BINLOG_PURGE_EMFILE. */ er_binlog_purge_emfile = 1587, /** - * \brief Common server error. Error number: 1588, symbol: + * \brief Error number: 1588, symbol: * ER_EVENT_CANNOT_CREATE_IN_THE_PAST. */ er_event_cannot_create_in_the_past = 1588, /** - * \brief Common server error. Error number: 1589, symbol: + * \brief Error number: 1589, symbol: * ER_EVENT_CANNOT_ALTER_IN_THE_PAST. */ er_event_cannot_alter_in_the_past = 1589, /** - * \brief Common server error. Error number: 1590, symbol: + * \brief Error number: 1590, symbol: * ER_SLAVE_INCIDENT. */ er_slave_incident = 1590, /** - * \brief Common server error. Error number: 1591, symbol: + * \brief Error number: 1591, symbol: * ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT. */ er_no_partition_for_given_value_silent = 1591, /** - * \brief Common server error. Error number: 1592, symbol: + * \brief Error number: 1592, symbol: * ER_BINLOG_UNSAFE_STATEMENT. */ er_binlog_unsafe_statement = 1592, /** - * \brief Common server error. Error number: 1594, symbol: + * \brief Error number: 1594, symbol: * ER_SLAVE_RELAY_LOG_READ_FAILURE. */ er_slave_relay_log_read_failure = 1594, /** - * \brief Common server error. Error number: 1595, symbol: + * \brief Error number: 1595, symbol: * ER_SLAVE_RELAY_LOG_WRITE_FAILURE. */ er_slave_relay_log_write_failure = 1595, /** - * \brief Common server error. Error number: 1596, symbol: + * \brief Error number: 1596, symbol: * ER_SLAVE_CREATE_EVENT_FAILURE. */ er_slave_create_event_failure = 1596, /** - * \brief Common server error. Error number: 1597, symbol: + * \brief Error number: 1597, symbol: * ER_SLAVE_MASTER_COM_FAILURE. */ er_slave_master_com_failure = 1597, /** - * \brief Common server error. Error number: 1598, symbol: + * \brief Error number: 1598, symbol: * ER_BINLOG_LOGGING_IMPOSSIBLE. */ er_binlog_logging_impossible = 1598, /** - * \brief Common server error. Error number: 1599, symbol: + * \brief Error number: 1599, symbol: * ER_VIEW_NO_CREATION_CTX. */ er_view_no_creation_ctx = 1599, /** - * \brief Common server error. Error number: 1600, symbol: + * \brief Error number: 1600, symbol: * ER_VIEW_INVALID_CREATION_CTX. */ er_view_invalid_creation_ctx = 1600, /** - * \brief Common server error. Error number: 1601, symbol: + * \brief Error number: 1601, symbol: * ER_SR_INVALID_CREATION_CTX. */ er_sr_invalid_creation_ctx = 1601, /** - * \brief Common server error. Error number: 1602, symbol: + * \brief Error number: 1602, symbol: * ER_TRG_CORRUPTED_FILE. */ er_trg_corrupted_file = 1602, /** - * \brief Common server error. Error number: 1603, symbol: + * \brief Error number: 1603, symbol: * ER_TRG_NO_CREATION_CTX. */ er_trg_no_creation_ctx = 1603, /** - * \brief Common server error. Error number: 1604, symbol: + * \brief Error number: 1604, symbol: * ER_TRG_INVALID_CREATION_CTX. */ er_trg_invalid_creation_ctx = 1604, /** - * \brief Common server error. Error number: 1605, symbol: + * \brief Error number: 1605, symbol: * ER_EVENT_INVALID_CREATION_CTX. */ er_event_invalid_creation_ctx = 1605, /** - * \brief Common server error. Error number: 1606, symbol: + * \brief Error number: 1606, symbol: * ER_TRG_CANT_OPEN_TABLE. */ er_trg_cant_open_table = 1606, /** - * \brief Common server error. Error number: 1607, symbol: + * \brief Error number: 1607, symbol: * ER_CANT_CREATE_SROUTINE. */ er_cant_create_sroutine = 1607, /** - * \brief Common server error. Error number: 1609, symbol: + * \brief Error number: 1609, symbol: * ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT. */ er_no_format_description_event_before_binlog_statement = 1609, /** - * \brief Common server error. Error number: 1610, symbol: + * \brief Error number: 1610, symbol: * ER_SLAVE_CORRUPT_EVENT. */ er_slave_corrupt_event = 1610, /** - * \brief Common server error. Error number: 1612, symbol: + * \brief Error number: 1612, symbol: * ER_LOG_PURGE_NO_FILE. */ er_log_purge_no_file = 1612, /** - * \brief Common server error. Error number: 1613, symbol: + * \brief Error number: 1613, symbol: * ER_XA_RBTIMEOUT. */ er_xa_rbtimeout = 1613, /** - * \brief Common server error. Error number: 1614, symbol: + * \brief Error number: 1614, symbol: * ER_XA_RBDEADLOCK. */ er_xa_rbdeadlock = 1614, /** - * \brief Common server error. Error number: 1615, symbol: + * \brief Error number: 1615, symbol: * ER_NEED_REPREPARE. */ er_need_reprepare = 1615, /** - * \brief Common server error. Error number: 1616, symbol: + * \brief Error number: 1616, symbol: * ER_DELAYED_NOT_SUPPORTED. */ er_delayed_not_supported = 1616, /** - * \brief Common server error. Error number: 1617, symbol: + * \brief Error number: 1617, symbol: * WARN_NO_MASTER_INFO. */ warn_no_master_info = 1617, /** - * \brief Common server error. Error number: 1618, symbol: + * \brief Error number: 1618, symbol: * WARN_OPTION_IGNORED. */ warn_option_ignored = 1618, /** - * \brief Common server error. Error number: 1619, symbol: + * \brief Error number: 1619, symbol: * ER_PLUGIN_DELETE_BUILTIN. */ er_plugin_delete_builtin = 1619, /** - * \brief Common server error. Error number: 1620, symbol: + * \brief Error number: 1620, symbol: * WARN_PLUGIN_BUSY. */ warn_plugin_busy = 1620, /** - * \brief Common server error. Error number: 1621, symbol: + * \brief Error number: 1621, symbol: * ER_VARIABLE_IS_READONLY. */ er_variable_is_readonly = 1621, /** - * \brief Common server error. Error number: 1622, symbol: + * \brief Error number: 1622, symbol: * ER_WARN_ENGINE_TRANSACTION_ROLLBACK. */ er_warn_engine_transaction_rollback = 1622, /** - * \brief Common server error. Error number: 1623, symbol: + * \brief Error number: 1623, symbol: * ER_SLAVE_HEARTBEAT_FAILURE. */ er_slave_heartbeat_failure = 1623, /** - * \brief Common server error. Error number: 1624, symbol: + * \brief Error number: 1624, symbol: * ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE. */ er_slave_heartbeat_value_out_of_range = 1624, /** - * \brief Common server error. Error number: 1626, symbol: + * \brief Error number: 1626, symbol: * ER_CONFLICT_FN_PARSE_ERROR. */ er_conflict_fn_parse_error = 1626, /** - * \brief Common server error. Error number: 1627, symbol: + * \brief Error number: 1627, symbol: * ER_EXCEPTIONS_WRITE_ERROR. */ er_exceptions_write_error = 1627, /** - * \brief Common server error. Error number: 1628, symbol: + * \brief Error number: 1628, symbol: * ER_TOO_LONG_TABLE_COMMENT. */ er_too_long_table_comment = 1628, /** - * \brief Common server error. Error number: 1629, symbol: + * \brief Error number: 1629, symbol: * ER_TOO_LONG_FIELD_COMMENT. */ er_too_long_field_comment = 1629, /** - * \brief Common server error. Error number: 1630, symbol: + * \brief Error number: 1630, symbol: * ER_FUNC_INEXISTENT_NAME_COLLISION. */ er_func_inexistent_name_collision = 1630, /** - * \brief Common server error. Error number: 1631, symbol: + * \brief Error number: 1631, symbol: * ER_DATABASE_NAME. */ er_database_name = 1631, /** - * \brief Common server error. Error number: 1632, symbol: + * \brief Error number: 1632, symbol: * ER_TABLE_NAME. */ er_table_name = 1632, /** - * \brief Common server error. Error number: 1633, symbol: + * \brief Error number: 1633, symbol: * ER_PARTITION_NAME. */ er_partition_name = 1633, /** - * \brief Common server error. Error number: 1634, symbol: + * \brief Error number: 1634, symbol: * ER_SUBPARTITION_NAME. */ er_subpartition_name = 1634, /** - * \brief Common server error. Error number: 1635, symbol: + * \brief Error number: 1635, symbol: * ER_TEMPORARY_NAME. */ er_temporary_name = 1635, /** - * \brief Common server error. Error number: 1636, symbol: + * \brief Error number: 1636, symbol: * ER_RENAMED_NAME. */ er_renamed_name = 1636, /** - * \brief Common server error. Error number: 1637, symbol: + * \brief Error number: 1637, symbol: * ER_TOO_MANY_CONCURRENT_TRXS. */ er_too_many_concurrent_trxs = 1637, /** - * \brief Common server error. Error number: 1638, symbol: + * \brief Error number: 1638, symbol: * WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED. */ warn_non_ascii_separator_not_implemented = 1638, /** - * \brief Common server error. Error number: 1639, symbol: + * \brief Error number: 1639, symbol: * ER_DEBUG_SYNC_TIMEOUT. */ er_debug_sync_timeout = 1639, /** - * \brief Common server error. Error number: 1640, symbol: + * \brief Error number: 1640, symbol: * ER_DEBUG_SYNC_HIT_LIMIT. */ er_debug_sync_hit_limit = 1640, /** - * \brief Common server error. Error number: 1641, symbol: + * \brief Error number: 1641, symbol: * ER_DUP_SIGNAL_SET. */ er_dup_signal_set = 1641, /** - * \brief Common server error. Error number: 1642, symbol: + * \brief Error number: 1642, symbol: * ER_SIGNAL_WARN. */ er_signal_warn = 1642, /** - * \brief Common server error. Error number: 1643, symbol: + * \brief Error number: 1643, symbol: * ER_SIGNAL_NOT_FOUND. */ er_signal_not_found = 1643, /** - * \brief Common server error. Error number: 1644, symbol: + * \brief Error number: 1644, symbol: * ER_SIGNAL_EXCEPTION. */ er_signal_exception = 1644, /** - * \brief Common server error. Error number: 1645, symbol: + * \brief Error number: 1645, symbol: * ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER. */ er_resignal_without_active_handler = 1645, /** - * \brief Common server error. Error number: 1646, symbol: + * \brief Error number: 1646, symbol: * ER_SIGNAL_BAD_CONDITION_TYPE. */ er_signal_bad_condition_type = 1646, /** - * \brief Common server error. Error number: 1647, symbol: + * \brief Error number: 1647, symbol: * WARN_COND_ITEM_TRUNCATED. */ warn_cond_item_truncated = 1647, /** - * \brief Common server error. Error number: 1648, symbol: + * \brief Error number: 1648, symbol: * ER_COND_ITEM_TOO_LONG. */ er_cond_item_too_long = 1648, /** - * \brief Common server error. Error number: 1649, symbol: + * \brief Error number: 1649, symbol: * ER_UNKNOWN_LOCALE. */ er_unknown_locale = 1649, /** - * \brief Common server error. Error number: 1650, symbol: + * \brief Error number: 1650, symbol: * ER_SLAVE_IGNORE_SERVER_IDS. */ er_slave_ignore_server_ids = 1650, /** - * \brief Common server error. Error number: 1651, symbol: + * \brief Error number: 1651, symbol: * ER_QUERY_CACHE_DISABLED. */ er_query_cache_disabled = 1651, /** - * \brief Common server error. Error number: 1652, symbol: + * \brief Error number: 1652, symbol: * ER_SAME_NAME_PARTITION_FIELD. */ er_same_name_partition_field = 1652, /** - * \brief Common server error. Error number: 1653, symbol: + * \brief Error number: 1653, symbol: * ER_PARTITION_COLUMN_LIST_ERROR. */ er_partition_column_list_error = 1653, /** - * \brief Common server error. Error number: 1654, symbol: + * \brief Error number: 1654, symbol: * ER_WRONG_TYPE_COLUMN_VALUE_ERROR. */ er_wrong_type_column_value_error = 1654, /** - * \brief Common server error. Error number: 1655, symbol: + * \brief Error number: 1655, symbol: * ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR. */ er_too_many_partition_func_fields_error = 1655, /** - * \brief Common server error. Error number: 1656, symbol: + * \brief Error number: 1656, symbol: * ER_MAXVALUE_IN_VALUES_IN. */ er_maxvalue_in_values_in = 1656, /** - * \brief Common server error. Error number: 1657, symbol: + * \brief Error number: 1657, symbol: * ER_TOO_MANY_VALUES_ERROR. */ er_too_many_values_error = 1657, /** - * \brief Common server error. Error number: 1658, symbol: + * \brief Error number: 1658, symbol: * ER_ROW_SINGLE_PARTITION_FIELD_ERROR. */ er_row_single_partition_field_error = 1658, /** - * \brief Common server error. Error number: 1659, symbol: + * \brief Error number: 1659, symbol: * ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD. */ er_field_type_not_allowed_as_partition_field = 1659, /** - * \brief Common server error. Error number: 1660, symbol: + * \brief Error number: 1660, symbol: * ER_PARTITION_FIELDS_TOO_LONG. */ er_partition_fields_too_long = 1660, /** - * \brief Common server error. Error number: 1661, symbol: + * \brief Error number: 1661, symbol: * ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE. */ er_binlog_row_engine_and_stmt_engine = 1661, /** - * \brief Common server error. Error number: 1662, symbol: + * \brief Error number: 1662, symbol: * ER_BINLOG_ROW_MODE_AND_STMT_ENGINE. */ er_binlog_row_mode_and_stmt_engine = 1662, /** - * \brief Common server error. Error number: 1663, symbol: + * \brief Error number: 1663, symbol: * ER_BINLOG_UNSAFE_AND_STMT_ENGINE. */ er_binlog_unsafe_and_stmt_engine = 1663, /** - * \brief Common server error. Error number: 1664, symbol: + * \brief Error number: 1664, symbol: * ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE. */ er_binlog_row_injection_and_stmt_engine = 1664, /** - * \brief Common server error. Error number: 1665, symbol: + * \brief Error number: 1665, symbol: * ER_BINLOG_STMT_MODE_AND_ROW_ENGINE. */ er_binlog_stmt_mode_and_row_engine = 1665, /** - * \brief Common server error. Error number: 1666, symbol: + * \brief Error number: 1666, symbol: * ER_BINLOG_ROW_INJECTION_AND_STMT_MODE. */ er_binlog_row_injection_and_stmt_mode = 1666, /** - * \brief Common server error. Error number: 1667, symbol: + * \brief Error number: 1667, symbol: * ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE. */ er_binlog_multiple_engines_and_self_logging_engine = 1667, /** - * \brief Common server error. Error number: 1668, symbol: + * \brief Error number: 1668, symbol: * ER_BINLOG_UNSAFE_LIMIT. */ er_binlog_unsafe_limit = 1668, /** - * \brief Common server error. Error number: 1670, symbol: + * \brief Error number: 1670, symbol: * ER_BINLOG_UNSAFE_SYSTEM_TABLE. */ er_binlog_unsafe_system_table = 1670, /** - * \brief Common server error. Error number: 1671, symbol: + * \brief Error number: 1671, symbol: * ER_BINLOG_UNSAFE_AUTOINC_COLUMNS. */ er_binlog_unsafe_autoinc_columns = 1671, /** - * \brief Common server error. Error number: 1672, symbol: + * \brief Error number: 1672, symbol: * ER_BINLOG_UNSAFE_UDF. */ er_binlog_unsafe_udf = 1672, /** - * \brief Common server error. Error number: 1673, symbol: + * \brief Error number: 1673, symbol: * ER_BINLOG_UNSAFE_SYSTEM_VARIABLE. */ er_binlog_unsafe_system_variable = 1673, /** - * \brief Common server error. Error number: 1674, symbol: + * \brief Error number: 1674, symbol: * ER_BINLOG_UNSAFE_SYSTEM_FUNCTION. */ er_binlog_unsafe_system_function = 1674, /** - * \brief Common server error. Error number: 1675, symbol: + * \brief Error number: 1675, symbol: * ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS. */ er_binlog_unsafe_nontrans_after_trans = 1675, /** - * \brief Common server error. Error number: 1676, symbol: + * \brief Error number: 1676, symbol: * ER_MESSAGE_AND_STATEMENT. */ er_message_and_statement = 1676, /** - * \brief Common server error. Error number: 1677, symbol: + * \brief Error number: 1677, symbol: * ER_SLAVE_CONVERSION_FAILED. */ er_slave_conversion_failed = 1677, /** - * \brief Common server error. Error number: 1678, symbol: + * \brief Error number: 1678, symbol: * ER_SLAVE_CANT_CREATE_CONVERSION. */ er_slave_cant_create_conversion = 1678, /** - * \brief Common server error. Error number: 1679, symbol: + * \brief Error number: 1679, symbol: * ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT. */ er_inside_transaction_prevents_switch_binlog_format = 1679, /** - * \brief Common server error. Error number: 1680, symbol: + * \brief Error number: 1680, symbol: * ER_PATH_LENGTH. */ er_path_length = 1680, /** - * \brief Common server error. Error number: 1681, symbol: + * \brief Error number: 1681, symbol: * ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT. */ er_warn_deprecated_syntax_no_replacement = 1681, /** - * \brief Common server error. Error number: 1682, symbol: + * \brief Error number: 1682, symbol: * ER_WRONG_NATIVE_TABLE_STRUCTURE. */ er_wrong_native_table_structure = 1682, /** - * \brief Common server error. Error number: 1683, symbol: + * \brief Error number: 1683, symbol: * ER_WRONG_PERFSCHEMA_USAGE. */ er_wrong_perfschema_usage = 1683, /** - * \brief Common server error. Error number: 1684, symbol: + * \brief Error number: 1684, symbol: * ER_WARN_I_S_SKIPPED_TABLE. */ er_warn_i_s_skipped_table = 1684, /** - * \brief Common server error. Error number: 1685, symbol: + * \brief Error number: 1685, symbol: * ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT. */ er_inside_transaction_prevents_switch_binlog_direct = 1685, /** - * \brief Common server error. Error number: 1686, symbol: + * \brief Error number: 1686, symbol: * ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT. */ er_stored_function_prevents_switch_binlog_direct = 1686, /** - * \brief Common server error. Error number: 1687, symbol: + * \brief Error number: 1687, symbol: * ER_SPATIAL_MUST_HAVE_GEOM_COL. */ er_spatial_must_have_geom_col = 1687, /** - * \brief Common server error. Error number: 1688, symbol: + * \brief Error number: 1688, symbol: * ER_TOO_LONG_INDEX_COMMENT. */ er_too_long_index_comment = 1688, /** - * \brief Common server error. Error number: 1689, symbol: + * \brief Error number: 1689, symbol: * ER_LOCK_ABORTED. */ er_lock_aborted = 1689, /** - * \brief Common server error. Error number: 1690, symbol: + * \brief Error number: 1690, symbol: * ER_DATA_OUT_OF_RANGE. */ er_data_out_of_range = 1690, /** - * \brief Common server error. Error number: 1691, symbol: + * \brief Error number: 1691, symbol: * ER_WRONG_SPVAR_TYPE_IN_LIMIT. */ er_wrong_spvar_type_in_limit = 1691, /** - * \brief Common server error. Error number: 1692, symbol: + * \brief Error number: 1692, symbol: * ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE. */ er_binlog_unsafe_multiple_engines_and_self_logging_engine = 1692, /** - * \brief Common server error. Error number: 1693, symbol: + * \brief Error number: 1693, symbol: * ER_BINLOG_UNSAFE_MIXED_STATEMENT. */ er_binlog_unsafe_mixed_statement = 1693, /** - * \brief Common server error. Error number: 1694, symbol: + * \brief Error number: 1694, symbol: * ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN. */ er_inside_transaction_prevents_switch_sql_log_bin = 1694, /** - * \brief Common server error. Error number: 1695, symbol: + * \brief Error number: 1695, symbol: * ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN. */ er_stored_function_prevents_switch_sql_log_bin = 1695, /** - * \brief Common server error. Error number: 1696, symbol: + * \brief Error number: 1696, symbol: * ER_FAILED_READ_FROM_PAR_FILE. */ er_failed_read_from_par_file = 1696, /** - * \brief Common server error. Error number: 1697, symbol: + * \brief Error number: 1697, symbol: * ER_VALUES_IS_NOT_INT_TYPE_ERROR. */ er_values_is_not_int_type_error = 1697, /** - * \brief Common server error. Error number: 1698, symbol: + * \brief Error number: 1698, symbol: * ER_ACCESS_DENIED_NO_PASSWORD_ERROR. */ er_access_denied_no_password_error = 1698, /** - * \brief Common server error. Error number: 1699, symbol: + * \brief Error number: 1699, symbol: * ER_SET_PASSWORD_AUTH_PLUGIN. */ er_set_password_auth_plugin = 1699, /** - * \brief Common server error. Error number: 1700, symbol: + * \brief Error number: 1700, symbol: * ER_GRANT_PLUGIN_USER_EXISTS. */ er_grant_plugin_user_exists = 1700, /** - * \brief Common server error. Error number: 1701, symbol: + * \brief Error number: 1701, symbol: * ER_TRUNCATE_ILLEGAL_FK. */ er_truncate_illegal_fk = 1701, /** - * \brief Common server error. Error number: 1702, symbol: + * \brief Error number: 1702, symbol: * ER_PLUGIN_IS_PERMANENT. */ er_plugin_is_permanent = 1702, /** - * \brief Common server error. Error number: 1703, symbol: + * \brief Error number: 1703, symbol: * ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN. */ er_slave_heartbeat_value_out_of_range_min = 1703, /** - * \brief Common server error. Error number: 1704, symbol: + * \brief Error number: 1704, symbol: * ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX. */ er_slave_heartbeat_value_out_of_range_max = 1704, /** - * \brief Common server error. Error number: 1705, symbol: + * \brief Error number: 1705, symbol: * ER_STMT_CACHE_FULL. */ er_stmt_cache_full = 1705, /** - * \brief Common server error. Error number: 1706, symbol: + * \brief Error number: 1706, symbol: * ER_MULTI_UPDATE_KEY_CONFLICT. */ er_multi_update_key_conflict = 1706, /** - * \brief Common server error. Error number: 1707, symbol: + * \brief Error number: 1707, symbol: * ER_TABLE_NEEDS_REBUILD. */ er_table_needs_rebuild = 1707, /** - * \brief Common server error. Error number: 1708, symbol: + * \brief Error number: 1708, symbol: * WARN_OPTION_BELOW_LIMIT. */ warn_option_below_limit = 1708, /** - * \brief Common server error. Error number: 1709, symbol: + * \brief Error number: 1709, symbol: * ER_INDEX_COLUMN_TOO_LONG. */ er_index_column_too_long = 1709, /** - * \brief Common server error. Error number: 1710, symbol: + * \brief Error number: 1710, symbol: * ER_ERROR_IN_TRIGGER_BODY. */ er_error_in_trigger_body = 1710, /** - * \brief Common server error. Error number: 1711, symbol: + * \brief Error number: 1711, symbol: * ER_ERROR_IN_UNKNOWN_TRIGGER_BODY. */ er_error_in_unknown_trigger_body = 1711, /** - * \brief Common server error. Error number: 1712, symbol: + * \brief Error number: 1712, symbol: * ER_INDEX_CORRUPT. */ er_index_corrupt = 1712, /** - * \brief Common server error. Error number: 1713, symbol: + * \brief Error number: 1713, symbol: * ER_UNDO_RECORD_TOO_BIG. */ er_undo_record_too_big = 1713, /** - * \brief Common server error. Error number: 1714, symbol: + * \brief Error number: 1714, symbol: * ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT. */ er_binlog_unsafe_insert_ignore_select = 1714, /** - * \brief Common server error. Error number: 1715, symbol: + * \brief Error number: 1715, symbol: * ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE. */ er_binlog_unsafe_insert_select_update = 1715, /** - * \brief Common server error. Error number: 1716, symbol: + * \brief Error number: 1716, symbol: * ER_BINLOG_UNSAFE_REPLACE_SELECT. */ er_binlog_unsafe_replace_select = 1716, /** - * \brief Common server error. Error number: 1717, symbol: + * \brief Error number: 1717, symbol: * ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT. */ er_binlog_unsafe_create_ignore_select = 1717, /** - * \brief Common server error. Error number: 1718, symbol: + * \brief Error number: 1718, symbol: * ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT. */ er_binlog_unsafe_create_replace_select = 1718, /** - * \brief Common server error. Error number: 1719, symbol: + * \brief Error number: 1719, symbol: * ER_BINLOG_UNSAFE_UPDATE_IGNORE. */ er_binlog_unsafe_update_ignore = 1719, /** - * \brief Common server error. Error number: 1722, symbol: + * \brief Error number: 1722, symbol: * ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT. */ er_binlog_unsafe_write_autoinc_select = 1722, /** - * \brief Common server error. Error number: 1723, symbol: + * \brief Error number: 1723, symbol: * ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC. */ er_binlog_unsafe_create_select_autoinc = 1723, /** - * \brief Common server error. Error number: 1724, symbol: + * \brief Error number: 1724, symbol: * ER_BINLOG_UNSAFE_INSERT_TWO_KEYS. */ er_binlog_unsafe_insert_two_keys = 1724, /** - * \brief Common server error. Error number: 1727, symbol: + * \brief Error number: 1727, symbol: * ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST. */ er_binlog_unsafe_autoinc_not_first = 1727, /** - * \brief Common server error. Error number: 1728, symbol: + * \brief Error number: 1728, symbol: * ER_CANNOT_LOAD_FROM_TABLE_V2. */ er_cannot_load_from_table_v2 = 1728, /** - * \brief Common server error. Error number: 1729, symbol: + * \brief Error number: 1729, symbol: * ER_MASTER_DELAY_VALUE_OUT_OF_RANGE. */ er_master_delay_value_out_of_range = 1729, /** - * \brief Common server error. Error number: 1730, symbol: + * \brief Error number: 1730, symbol: * ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT. */ er_only_fd_and_rbr_events_allowed_in_binlog_statement = 1730, /** - * \brief Common server error. Error number: 1731, symbol: + * \brief Error number: 1731, symbol: * ER_PARTITION_EXCHANGE_DIFFERENT_OPTION. */ er_partition_exchange_different_option = 1731, /** - * \brief Common server error. Error number: 1732, symbol: + * \brief Error number: 1732, symbol: * ER_PARTITION_EXCHANGE_PART_TABLE. */ er_partition_exchange_part_table = 1732, /** - * \brief Common server error. Error number: 1733, symbol: + * \brief Error number: 1733, symbol: * ER_PARTITION_EXCHANGE_TEMP_TABLE. */ er_partition_exchange_temp_table = 1733, /** - * \brief Common server error. Error number: 1734, symbol: + * \brief Error number: 1734, symbol: * ER_PARTITION_INSTEAD_OF_SUBPARTITION. */ er_partition_instead_of_subpartition = 1734, /** - * \brief Common server error. Error number: 1735, symbol: + * \brief Error number: 1735, symbol: * ER_UNKNOWN_PARTITION. */ er_unknown_partition = 1735, /** - * \brief Common server error. Error number: 1736, symbol: + * \brief Error number: 1736, symbol: * ER_TABLES_DIFFERENT_METADATA. */ er_tables_different_metadata = 1736, /** - * \brief Common server error. Error number: 1737, symbol: + * \brief Error number: 1737, symbol: * ER_ROW_DOES_NOT_MATCH_PARTITION. */ er_row_does_not_match_partition = 1737, /** - * \brief Common server error. Error number: 1738, symbol: + * \brief Error number: 1738, symbol: * ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX. */ er_binlog_cache_size_greater_than_max = 1738, /** - * \brief Common server error. Error number: 1739, symbol: + * \brief Error number: 1739, symbol: * ER_WARN_INDEX_NOT_APPLICABLE. */ er_warn_index_not_applicable = 1739, /** - * \brief Common server error. Error number: 1740, symbol: + * \brief Error number: 1740, symbol: * ER_PARTITION_EXCHANGE_FOREIGN_KEY. */ er_partition_exchange_foreign_key = 1740, /** - * \brief Common server error. Error number: 1741, symbol: + * \brief Error number: 1741, symbol: * ER_NO_SUCH_KEY_VALUE. */ er_no_such_key_value = 1741, /** - * \brief Common server error. Error number: 1743, symbol: + * \brief Error number: 1743, symbol: * ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE. */ er_network_read_event_checksum_failure = 1743, /** - * \brief Common server error. Error number: 1744, symbol: + * \brief Error number: 1744, symbol: * ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE. */ er_binlog_read_event_checksum_failure = 1744, /** - * \brief Common server error. Error number: 1745, symbol: + * \brief Error number: 1745, symbol: * ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX. */ er_binlog_stmt_cache_size_greater_than_max = 1745, /** - * \brief Common server error. Error number: 1746, symbol: + * \brief Error number: 1746, symbol: * ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT. */ er_cant_update_table_in_create_table_select = 1746, /** - * \brief Common server error. Error number: 1747, symbol: + * \brief Error number: 1747, symbol: * ER_PARTITION_CLAUSE_ON_NONPARTITIONED. */ er_partition_clause_on_nonpartitioned = 1747, /** - * \brief Common server error. Error number: 1748, symbol: + * \brief Error number: 1748, symbol: * ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET. */ er_row_does_not_match_given_partition_set = 1748, /** - * \brief Common server error. Error number: 1750, symbol: + * \brief Error number: 1750, symbol: * ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE. */ er_change_rpl_info_repository_failure = 1750, /** - * \brief Common server error. Error number: 1751, symbol: + * \brief Error number: 1751, symbol: * ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE. */ er_warning_not_complete_rollback_with_created_temp_table = 1751, /** - * \brief Common server error. Error number: 1752, symbol: + * \brief Error number: 1752, symbol: * ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE. */ er_warning_not_complete_rollback_with_dropped_temp_table = 1752, /** - * \brief Common server error. Error number: 1753, symbol: + * \brief Error number: 1753, symbol: * ER_MTS_FEATURE_IS_NOT_SUPPORTED. */ er_mts_feature_is_not_supported = 1753, /** - * \brief Common server error. Error number: 1754, symbol: + * \brief Error number: 1754, symbol: * ER_MTS_UPDATED_DBS_GREATER_MAX. */ er_mts_updated_dbs_greater_max = 1754, /** - * \brief Common server error. Error number: 1755, symbol: + * \brief Error number: 1755, symbol: * ER_MTS_CANT_PARALLEL. */ er_mts_cant_parallel = 1755, /** - * \brief Common server error. Error number: 1756, symbol: + * \brief Error number: 1756, symbol: * ER_MTS_INCONSISTENT_DATA. */ er_mts_inconsistent_data = 1756, /** - * \brief Common server error. Error number: 1757, symbol: + * \brief Error number: 1757, symbol: * ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING. */ er_fulltext_not_supported_with_partitioning = 1757, /** - * \brief Common server error. Error number: 1758, symbol: + * \brief Error number: 1758, symbol: * ER_DA_INVALID_CONDITION_NUMBER. */ er_da_invalid_condition_number = 1758, /** - * \brief Common server error. Error number: 1759, symbol: + * \brief Error number: 1759, symbol: * ER_INSECURE_PLAIN_TEXT. */ er_insecure_plain_text = 1759, /** - * \brief Common server error. Error number: 1760, symbol: + * \brief Error number: 1760, symbol: * ER_INSECURE_CHANGE_MASTER. */ er_insecure_change_master = 1760, /** - * \brief Common server error. Error number: 1761, symbol: + * \brief Error number: 1761, symbol: * ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO. */ er_foreign_duplicate_key_with_child_info = 1761, /** - * \brief Common server error. Error number: 1762, symbol: + * \brief Error number: 1762, symbol: * ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO. */ er_foreign_duplicate_key_without_child_info = 1762, /** - * \brief Common server error. Error number: 1763, symbol: + * \brief Error number: 1763, symbol: * ER_SQLTHREAD_WITH_SECURE_SLAVE. */ er_sqlthread_with_secure_slave = 1763, /** - * \brief Common server error. Error number: 1764, symbol: + * \brief Error number: 1764, symbol: * ER_TABLE_HAS_NO_FT. */ er_table_has_no_ft = 1764, /** - * \brief Common server error. Error number: 1765, symbol: + * \brief Error number: 1765, symbol: * ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER. */ er_variable_not_settable_in_sf_or_trigger = 1765, /** - * \brief Common server error. Error number: 1766, symbol: + * \brief Error number: 1766, symbol: * ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION. */ er_variable_not_settable_in_transaction = 1766, /** - * \brief Common server error. Error number: 1767, symbol: + * \brief Error number: 1767, symbol: * ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST. */ er_gtid_next_is_not_in_gtid_next_list = 1767, /** - * \brief Common server error. Error number: 1769, symbol: + * \brief Error number: 1769, symbol: * ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION. */ er_set_statement_cannot_invoke_function = 1769, /** - * \brief Common server error. Error number: 1770, symbol: + * \brief Error number: 1770, symbol: * ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL. */ er_gtid_next_cant_be_automatic_if_gtid_next_list_is_non_null = 1770, /** - * \brief Common server error. Error number: 1771, symbol: + * \brief Error number: 1771, symbol: * ER_SKIPPING_LOGGED_TRANSACTION. */ er_skipping_logged_transaction = 1771, /** - * \brief Common server error. Error number: 1772, symbol: + * \brief Error number: 1772, symbol: * ER_MALFORMED_GTID_SET_SPECIFICATION. */ er_malformed_gtid_set_specification = 1772, /** - * \brief Common server error. Error number: 1773, symbol: + * \brief Error number: 1773, symbol: * ER_MALFORMED_GTID_SET_ENCODING. */ er_malformed_gtid_set_encoding = 1773, /** - * \brief Common server error. Error number: 1774, symbol: + * \brief Error number: 1774, symbol: * ER_MALFORMED_GTID_SPECIFICATION. */ er_malformed_gtid_specification = 1774, /** - * \brief Common server error. Error number: 1775, symbol: + * \brief Error number: 1775, symbol: * ER_GNO_EXHAUSTED. */ er_gno_exhausted = 1775, /** - * \brief Common server error. Error number: 1776, symbol: + * \brief Error number: 1776, symbol: * ER_BAD_SLAVE_AUTO_POSITION. */ er_bad_slave_auto_position = 1776, /** - * \brief Common server error. Error number: 1778, symbol: + * \brief Error number: 1778, symbol: * ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET. */ er_cant_do_implicit_commit_in_trx_when_gtid_next_is_set = 1778, /** - * \brief Common server error. Error number: 1780, symbol: + * \brief Error number: 1780, symbol: * ER_GTID_MODE_REQUIRES_BINLOG. */ er_gtid_mode_requires_binlog = 1780, /** - * \brief Common server error. Error number: 1781, symbol: + * \brief Error number: 1781, symbol: * ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF. */ er_cant_set_gtid_next_to_gtid_when_gtid_mode_is_off = 1781, /** - * \brief Common server error. Error number: 1782, symbol: + * \brief Error number: 1782, symbol: * ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON. */ er_cant_set_gtid_next_to_anonymous_when_gtid_mode_is_on = 1782, /** - * \brief Common server error. Error number: 1783, symbol: + * \brief Error number: 1783, symbol: * ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF. */ er_cant_set_gtid_next_list_to_non_null_when_gtid_mode_is_off = 1783, /** - * \brief Common server error. Error number: 1785, symbol: + * \brief Error number: 1785, symbol: * ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE. */ er_gtid_unsafe_non_transactional_table = 1785, /** - * \brief Common server error. Error number: 1786, symbol: + * \brief Error number: 1786, symbol: * ER_GTID_UNSAFE_CREATE_SELECT. */ er_gtid_unsafe_create_select = 1786, /** - * \brief Common server error. Error number: 1787, symbol: + * \brief Error number: 1787, symbol: * ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION. */ er_gtid_unsafe_create_drop_temporary_table_in_transaction = 1787, /** - * \brief Common server error. Error number: 1788, symbol: + * \brief Error number: 1788, symbol: * ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME. */ er_gtid_mode_can_only_change_one_step_at_a_time = 1788, /** - * \brief Common server error. Error number: 1789, symbol: + * \brief Error number: 1789, symbol: * ER_MASTER_HAS_PURGED_REQUIRED_GTIDS. */ er_master_has_purged_required_gtids = 1789, /** - * \brief Common server error. Error number: 1790, symbol: + * \brief Error number: 1790, symbol: * ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID. */ er_cant_set_gtid_next_when_owning_gtid = 1790, /** - * \brief Common server error. Error number: 1791, symbol: + * \brief Error number: 1791, symbol: * ER_UNKNOWN_EXPLAIN_FORMAT. */ er_unknown_explain_format = 1791, /** - * \brief Common server error. Error number: 1792, symbol: + * \brief Error number: 1792, symbol: * ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION. */ er_cant_execute_in_read_only_transaction = 1792, /** - * \brief Common server error. Error number: 1793, symbol: + * \brief Error number: 1793, symbol: * ER_TOO_LONG_TABLE_PARTITION_COMMENT. */ er_too_long_table_partition_comment = 1793, /** - * \brief Common server error. Error number: 1794, symbol: + * \brief Error number: 1794, symbol: * ER_SLAVE_CONFIGURATION. */ er_slave_configuration = 1794, /** - * \brief Common server error. Error number: 1795, symbol: + * \brief Error number: 1795, symbol: * ER_INNODB_FT_LIMIT. */ er_innodb_ft_limit = 1795, /** - * \brief Common server error. Error number: 1796, symbol: + * \brief Error number: 1796, symbol: * ER_INNODB_NO_FT_TEMP_TABLE. */ er_innodb_no_ft_temp_table = 1796, /** - * \brief Common server error. Error number: 1797, symbol: + * \brief Error number: 1797, symbol: * ER_INNODB_FT_WRONG_DOCID_COLUMN. */ er_innodb_ft_wrong_docid_column = 1797, /** - * \brief Common server error. Error number: 1798, symbol: + * \brief Error number: 1798, symbol: * ER_INNODB_FT_WRONG_DOCID_INDEX. */ er_innodb_ft_wrong_docid_index = 1798, /** - * \brief Common server error. Error number: 1799, symbol: + * \brief Error number: 1799, symbol: * ER_INNODB_ONLINE_LOG_TOO_BIG. */ er_innodb_online_log_too_big = 1799, /** - * \brief Common server error. Error number: 1800, symbol: + * \brief Error number: 1800, symbol: * ER_UNKNOWN_ALTER_ALGORITHM. */ er_unknown_alter_algorithm = 1800, /** - * \brief Common server error. Error number: 1801, symbol: + * \brief Error number: 1801, symbol: * ER_UNKNOWN_ALTER_LOCK. */ er_unknown_alter_lock = 1801, /** - * \brief Common server error. Error number: 1802, symbol: + * \brief Error number: 1802, symbol: * ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS. */ er_mts_change_master_cant_run_with_gaps = 1802, /** - * \brief Common server error. Error number: 1803, symbol: + * \brief Error number: 1803, symbol: * ER_MTS_RECOVERY_FAILURE. */ er_mts_recovery_failure = 1803, /** - * \brief Common server error. Error number: 1804, symbol: + * \brief Error number: 1804, symbol: * ER_MTS_RESET_WORKERS. */ er_mts_reset_workers = 1804, /** - * \brief Common server error. Error number: 1805, symbol: + * \brief Error number: 1805, symbol: * ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2. */ er_col_count_doesnt_match_corrupted_v2 = 1805, /** - * \brief Common server error. Error number: 1806, symbol: + * \brief Error number: 1806, symbol: * ER_SLAVE_SILENT_RETRY_TRANSACTION. */ er_slave_silent_retry_transaction = 1806, /** - * \brief Common server error. Error number: 1808, symbol: + * \brief Error number: 1808, symbol: * ER_TABLE_SCHEMA_MISMATCH. */ er_table_schema_mismatch = 1808, /** - * \brief Common server error. Error number: 1809, symbol: + * \brief Error number: 1809, symbol: * ER_TABLE_IN_SYSTEM_TABLESPACE. */ er_table_in_system_tablespace = 1809, /** - * \brief Common server error. Error number: 1810, symbol: + * \brief Error number: 1810, symbol: * ER_IO_READ_ERROR. */ er_io_read_error = 1810, /** - * \brief Common server error. Error number: 1811, symbol: + * \brief Error number: 1811, symbol: * ER_IO_WRITE_ERROR. */ er_io_write_error = 1811, /** - * \brief Common server error. Error number: 1812, symbol: + * \brief Error number: 1812, symbol: * ER_TABLESPACE_MISSING. */ er_tablespace_missing = 1812, /** - * \brief Common server error. Error number: 1813, symbol: + * \brief Error number: 1813, symbol: * ER_TABLESPACE_EXISTS. */ er_tablespace_exists = 1813, /** - * \brief Common server error. Error number: 1814, symbol: + * \brief Error number: 1814, symbol: * ER_TABLESPACE_DISCARDED. */ er_tablespace_discarded = 1814, /** - * \brief Common server error. Error number: 1815, symbol: + * \brief Error number: 1815, symbol: * ER_INTERNAL_ERROR. */ er_internal_error = 1815, /** - * \brief Common server error. Error number: 1816, symbol: + * \brief Error number: 1816, symbol: * ER_INNODB_IMPORT_ERROR. */ er_innodb_import_error = 1816, /** - * \brief Common server error. Error number: 1817, symbol: + * \brief Error number: 1817, symbol: * ER_INNODB_INDEX_CORRUPT. */ er_innodb_index_corrupt = 1817, /** - * \brief Common server error. Error number: 1818, symbol: + * \brief Error number: 1818, symbol: * ER_INVALID_YEAR_COLUMN_LENGTH. */ er_invalid_year_column_length = 1818, /** - * \brief Common server error. Error number: 1819, symbol: + * \brief Error number: 1819, symbol: * ER_NOT_VALID_PASSWORD. */ er_not_valid_password = 1819, /** - * \brief Common server error. Error number: 1820, symbol: + * \brief Error number: 1820, symbol: * ER_MUST_CHANGE_PASSWORD. */ er_must_change_password = 1820, /** - * \brief Common server error. Error number: 1821, symbol: + * \brief Error number: 1821, symbol: * ER_FK_NO_INDEX_CHILD. */ er_fk_no_index_child = 1821, /** - * \brief Common server error. Error number: 1822, symbol: + * \brief Error number: 1822, symbol: * ER_FK_NO_INDEX_PARENT. */ er_fk_no_index_parent = 1822, /** - * \brief Common server error. Error number: 1823, symbol: + * \brief Error number: 1823, symbol: * ER_FK_FAIL_ADD_SYSTEM. */ er_fk_fail_add_system = 1823, /** - * \brief Common server error. Error number: 1824, symbol: + * \brief Error number: 1824, symbol: * ER_FK_CANNOT_OPEN_PARENT. */ er_fk_cannot_open_parent = 1824, /** - * \brief Common server error. Error number: 1825, symbol: + * \brief Error number: 1825, symbol: * ER_FK_INCORRECT_OPTION. */ er_fk_incorrect_option = 1825, /** - * \brief Common server error. Error number: 1827, symbol: + * \brief Error number: 1827, symbol: * ER_PASSWORD_FORMAT. */ er_password_format = 1827, /** - * \brief Common server error. Error number: 1828, symbol: + * \brief Error number: 1828, symbol: * ER_FK_COLUMN_CANNOT_DROP. */ er_fk_column_cannot_drop = 1828, /** - * \brief Common server error. Error number: 1829, symbol: + * \brief Error number: 1829, symbol: * ER_FK_COLUMN_CANNOT_DROP_CHILD. */ er_fk_column_cannot_drop_child = 1829, /** - * \brief Common server error. Error number: 1830, symbol: + * \brief Error number: 1830, symbol: * ER_FK_COLUMN_NOT_NULL. */ er_fk_column_not_null = 1830, /** - * \brief Common server error. Error number: 1831, symbol: + * \brief Error number: 1831, symbol: * ER_DUP_INDEX. */ er_dup_index = 1831, /** - * \brief Common server error. Error number: 1832, symbol: + * \brief Error number: 1832, symbol: * ER_FK_COLUMN_CANNOT_CHANGE. */ er_fk_column_cannot_change = 1832, /** - * \brief Common server error. Error number: 1833, symbol: + * \brief Error number: 1833, symbol: * ER_FK_COLUMN_CANNOT_CHANGE_CHILD. */ er_fk_column_cannot_change_child = 1833, /** - * \brief Common server error. Error number: 1835, symbol: + * \brief Error number: 1835, symbol: * ER_MALFORMED_PACKET. */ er_malformed_packet = 1835, /** - * \brief Common server error. Error number: 1836, symbol: + * \brief Error number: 1836, symbol: * ER_READ_ONLY_MODE. */ er_read_only_mode = 1836, /** - * \brief Common server error. Error number: 1838, symbol: + * \brief Error number: 1838, symbol: * ER_VARIABLE_NOT_SETTABLE_IN_SP. */ er_variable_not_settable_in_sp = 1838, /** - * \brief Common server error. Error number: 1839, symbol: + * \brief Error number: 1839, symbol: * ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF. */ er_cant_set_gtid_purged_when_gtid_mode_is_off = 1839, /** - * \brief Common server error. Error number: 1840, symbol: + * \brief Error number: 1840, symbol: * ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY. */ er_cant_set_gtid_purged_when_gtid_executed_is_not_empty = 1840, /** - * \brief Common server error. Error number: 1841, symbol: + * \brief Error number: 1841, symbol: * ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY. */ er_cant_set_gtid_purged_when_owned_gtids_is_not_empty = 1841, /** - * \brief Common server error. Error number: 1842, symbol: + * \brief Error number: 1842, symbol: * ER_GTID_PURGED_WAS_CHANGED. */ er_gtid_purged_was_changed = 1842, /** - * \brief Common server error. Error number: 1843, symbol: + * \brief Error number: 1843, symbol: * ER_GTID_EXECUTED_WAS_CHANGED. */ er_gtid_executed_was_changed = 1843, /** - * \brief Common server error. Error number: 1844, symbol: + * \brief Error number: 1844, symbol: * ER_BINLOG_STMT_MODE_AND_NO_REPL_TABLES. */ er_binlog_stmt_mode_and_no_repl_tables = 1844, /** - * \brief Common server error. Error number: 1845, symbol: + * \brief Error number: 1845, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED. */ er_alter_operation_not_supported = 1845, /** - * \brief Common server error. Error number: 1846, symbol: + * \brief Error number: 1846, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON. */ er_alter_operation_not_supported_reason = 1846, /** - * \brief Common server error. Error number: 1847, symbol: + * \brief Error number: 1847, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY. */ er_alter_operation_not_supported_reason_copy = 1847, /** - * \brief Common server error. Error number: 1848, symbol: + * \brief Error number: 1848, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION. */ er_alter_operation_not_supported_reason_partition = 1848, /** - * \brief Common server error. Error number: 1849, symbol: + * \brief Error number: 1849, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME. */ er_alter_operation_not_supported_reason_fk_rename = 1849, /** - * \brief Common server error. Error number: 1850, symbol: + * \brief Error number: 1850, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE. */ er_alter_operation_not_supported_reason_column_type = 1850, /** - * \brief Common server error. Error number: 1851, symbol: + * \brief Error number: 1851, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK. */ er_alter_operation_not_supported_reason_fk_check = 1851, /** - * \brief Common server error. Error number: 1853, symbol: + * \brief Error number: 1853, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK. */ er_alter_operation_not_supported_reason_nopk = 1853, /** - * \brief Common server error. Error number: 1854, symbol: + * \brief Error number: 1854, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC. */ er_alter_operation_not_supported_reason_autoinc = 1854, /** - * \brief Common server error. Error number: 1855, symbol: + * \brief Error number: 1855, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS. */ er_alter_operation_not_supported_reason_hidden_fts = 1855, /** - * \brief Common server error. Error number: 1856, symbol: + * \brief Error number: 1856, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS. */ er_alter_operation_not_supported_reason_change_fts = 1856, /** - * \brief Common server error. Error number: 1857, symbol: + * \brief Error number: 1857, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS. */ er_alter_operation_not_supported_reason_fts = 1857, /** - * \brief Common server error. Error number: 1858, symbol: + * \brief Error number: 1858, symbol: * ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE. */ er_sql_slave_skip_counter_not_settable_in_gtid_mode = 1858, /** - * \brief Common server error. Error number: 1859, symbol: + * \brief Error number: 1859, symbol: * ER_DUP_UNKNOWN_IN_INDEX. */ er_dup_unknown_in_index = 1859, /** - * \brief Common server error. Error number: 1860, symbol: + * \brief Error number: 1860, symbol: * ER_IDENT_CAUSES_TOO_LONG_PATH. */ er_ident_causes_too_long_path = 1860, /** - * \brief Common server error. Error number: 1861, symbol: + * \brief Error number: 1861, symbol: * ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL. */ er_alter_operation_not_supported_reason_not_null = 1861, /** - * \brief Common server error. Error number: 1862, symbol: + * \brief Error number: 1862, symbol: * ER_MUST_CHANGE_PASSWORD_LOGIN. */ er_must_change_password_login = 1862, /** - * \brief Common server error. Error number: 1863, symbol: + * \brief Error number: 1863, symbol: * ER_ROW_IN_WRONG_PARTITION. */ er_row_in_wrong_partition = 1863, /** - * \brief Common server error. Error number: 1864, symbol: + * \brief Error number: 1864, symbol: * ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX. */ er_mts_event_bigger_pending_jobs_size_max = 1864, /** - * \brief Common server error. Error number: 1865, symbol: + * \brief Error number: 1865, symbol: * ER_INNODB_NO_FT_USES_PARSER. */ er_innodb_no_ft_uses_parser = 1865, /** - * \brief Common server error. Error number: 1866, symbol: + * \brief Error number: 1866, symbol: * ER_BINLOG_LOGICAL_CORRUPTION. */ er_binlog_logical_corruption = 1866, /** - * \brief Common server error. Error number: 1867, symbol: + * \brief Error number: 1867, symbol: * ER_WARN_PURGE_LOG_IN_USE. */ er_warn_purge_log_in_use = 1867, /** - * \brief Common server error. Error number: 1868, symbol: + * \brief Error number: 1868, symbol: * ER_WARN_PURGE_LOG_IS_ACTIVE. */ er_warn_purge_log_is_active = 1868, /** - * \brief Common server error. Error number: 1869, symbol: + * \brief Error number: 1869, symbol: * ER_AUTO_INCREMENT_CONFLICT. */ er_auto_increment_conflict = 1869, /** - * \brief Common server error. Error number: 1870, symbol: + * \brief Error number: 1870, symbol: * WARN_ON_BLOCKHOLE_IN_RBR. */ warn_on_blockhole_in_rbr = 1870, /** - * \brief Common server error. Error number: 1871, symbol: + * \brief Error number: 1871, symbol: * ER_SLAVE_MI_INIT_REPOSITORY. */ er_slave_mi_init_repository = 1871, /** - * \brief Common server error. Error number: 1872, symbol: + * \brief Error number: 1872, symbol: * ER_SLAVE_RLI_INIT_REPOSITORY. */ er_slave_rli_init_repository = 1872, /** - * \brief Common server error. Error number: 1873, symbol: + * \brief Error number: 1873, symbol: * ER_ACCESS_DENIED_CHANGE_USER_ERROR. */ er_access_denied_change_user_error = 1873, /** - * \brief Common server error. Error number: 1874, symbol: + * \brief Error number: 1874, symbol: * ER_INNODB_READ_ONLY. */ er_innodb_read_only = 1874, /** - * \brief Common server error. Error number: 1875, symbol: + * \brief Error number: 1875, symbol: * ER_STOP_SLAVE_SQL_THREAD_TIMEOUT. */ er_stop_slave_sql_thread_timeout = 1875, /** - * \brief Common server error. Error number: 1876, symbol: + * \brief Error number: 1876, symbol: * ER_STOP_SLAVE_IO_THREAD_TIMEOUT. */ er_stop_slave_io_thread_timeout = 1876, /** - * \brief Common server error. Error number: 1877, symbol: + * \brief Error number: 1877, symbol: * ER_TABLE_CORRUPT. */ er_table_corrupt = 1877, /** - * \brief Common server error. Error number: 1878, symbol: + * \brief Error number: 1878, symbol: * ER_TEMP_FILE_WRITE_FAILURE. */ er_temp_file_write_failure = 1878, /** - * \brief Common server error. Error number: 1879, symbol: + * \brief Error number: 1879, symbol: * ER_INNODB_FT_AUX_NOT_HEX_ID. */ er_innodb_ft_aux_not_hex_id = 1879, diff --git a/tools/scripts/server_errors.py b/tools/scripts/server_errors.py index 1baabc434..a6cb02bd8 100755 --- a/tools/scripts/server_errors.py +++ b/tools/scripts/server_errors.py @@ -49,7 +49,7 @@ class ErrorCodes(NamedTuple): COMMON_SERVER_ERRC_ENTRY = ''' /** - * \\brief Common server error. Error number: {number}, symbol: + * \\brief Error number: {number}, symbol: * {symbol_upper}. */ {symbol_lower} = {number}, @@ -92,7 +92,6 @@ class ErrorCodes(NamedTuple): }} // namespace mysql -#ifndef BOOST_MYSQL_DOXYGEN namespace system {{ template <> @@ -102,7 +101,6 @@ class ErrorCodes(NamedTuple): }}; }} // namespace system -#endif }} // namespace boost From 542afe52a9b777259b032c3d52b569671adef336 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Sat, 1 Feb 2025 00:48:24 +0100 Subject: [PATCH 48/50] Error categories --- include/boost/mysql/error_categories.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/boost/mysql/error_categories.hpp b/include/boost/mysql/error_categories.hpp index 7e4113a32..3546ffe80 100644 --- a/include/boost/mysql/error_categories.hpp +++ b/include/boost/mysql/error_categories.hpp @@ -28,7 +28,7 @@ namespace mysql { * This function is thread-safe. */ BOOST_MYSQL_DECL -const boost::system::error_category& get_client_category() noexcept; +const system::error_category& get_client_category() noexcept; /** * \brief Returns the error_category associated to \ref common_server_errc. @@ -43,7 +43,7 @@ const boost::system::error_category& get_client_category() noexcept; * This function is thread-safe. */ BOOST_MYSQL_DECL -const boost::system::error_category& get_common_server_category() noexcept; +const system::error_category& get_common_server_category() noexcept; /** * \brief Returns the error_category associated to errors specific to MySQL. @@ -58,7 +58,7 @@ const boost::system::error_category& get_common_server_category() noexcept; * This function is thread-safe. */ BOOST_MYSQL_DECL -const boost::system::error_category& get_mysql_server_category() noexcept; +const system::error_category& get_mysql_server_category() noexcept; /** * \brief Returns the error_category associated to errors specific to MariaDB. @@ -73,7 +73,7 @@ const boost::system::error_category& get_mysql_server_category() noexcept; * This function is thread-safe. */ BOOST_MYSQL_DECL -const boost::system::error_category& get_mariadb_server_category() noexcept; +const system::error_category& get_mariadb_server_category() noexcept; } // namespace mysql } // namespace boost From 4fa3b692856f63dde4a203e49f4d59d012ca56be Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Sat, 1 Feb 2025 00:51:01 +0100 Subject: [PATCH 49/50] sequence --- include/boost/mysql/sequence.hpp | 34 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/include/boost/mysql/sequence.hpp b/include/boost/mysql/sequence.hpp index 84235af88..251186e32 100644 --- a/include/boost/mysql/sequence.hpp +++ b/include/boost/mysql/sequence.hpp @@ -98,14 +98,14 @@ using sequence_range_t = impl_defined::sequence_range_t; * * Formally: * - * - If `Range` is a (possibly cv-qualified) C array reference (as per `std::is_array`), - * and the array has `N` elements of type `U`, the output range type is - * `std::array, N>`, and the range is created as if `std::to_array` was called. - * - If `Range` is a `std::reference_wrapper< U >` object, or a reference to one, - * the output range type is `U&`. This effectively disables copying the input range. - * The resulting object will be a view type, and the caller is responsible for lifetime management. - * - Otherwise, the output range type is `std::remove_cvref_t`, and it will be - * created by forwarding the passed `range`. + * \li If `Range` is a (possibly cv-qualified) C array reference (as per `std::is_array`), + * and the array has `N` elements of type `U`, the output range type + * is `std::array, N>`, and the range is created as if `std::to_array` was called. + * \li If `Range` is a `std::reference_wrapper< U >` object, or a reference to one, + * the output range type is `U&`. This effectively disables copying the input range. + * The resulting object will be a view type, and the caller is responsible for lifetime management. + * \li Otherwise, the output range type is `std::remove_cvref_t`, and it will be + * created by forwarding the passed `range`. * * `FormatFn` is always decay-copied into the resulting object. * @@ -116,15 +116,15 @@ using sequence_range_t = impl_defined::sequence_range_t; * The resulting range and format function should be compatible, and any required * copy/move operations should be well defined. Formally: * - * - `std::decay_t` should be a formatter function compatible with - * the elements of the output range. See \ref format_sequence for the formal requirements. - * - If `Range` is a `std::reference_wrapper< U >`, or a reference to one, - * no further requirements are placed on `U`. - * - If `Range` is a lvalue reference to a C array, its elements should be copy-constructible - * (as per `std::to_array` requirements). - * - If `Range` is a rvalue reference to a C array, its elements should be move-constructible - * (as per `std::to_array` requirements). - * - Performing a decay-copy of `FormatFn` should be well defined. + * \li `std::decay_t` should be a formatter function compatible with + * the elements of the output range. See \ref format_sequence for the formal requirements. + * \li If `Range` is a `std::reference_wrapper< U >`, or a reference to one, + * no further requirements are placed on `U`. + * \li If `Range` is a lvalue reference to a C array, its elements should be copy-constructible + * (as per `std::to_array` requirements). + * \li If `Range` is a rvalue reference to a C array, its elements should be move-constructible + * (as per `std::to_array` requirements). + * \li Performing a decay-copy of `FormatFn` should be well defined. * * \par Exception safety * Basic guarantee. Propagates any exception thrown when constructing the output From 93e416f1a636fc7b2e2a0bdfe63ba0f093dca691 Mon Sep 17 00:00:00 2001 From: Ruben Perez Date: Sat, 1 Feb 2025 17:24:58 +0100 Subject: [PATCH 50/50] with_params glitches --- include/boost/mysql/with_params.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/mysql/with_params.hpp b/include/boost/mysql/with_params.hpp index 19df5cc01..343af5979 100644 --- a/include/boost/mysql/with_params.hpp +++ b/include/boost/mysql/with_params.hpp @@ -62,7 +62,7 @@ using make_tuple_element_t = typename std::tuple_element<0, decltype(std::make_t * \par Object lifetimes * The format string `query` is stored as a view, as a compile-time string should be used in most cases. * When using \ref with_params, `args` will usually contain copies of the passed parameters - * (as per `std::make_tuple`), + * (as per std::make_tuple), * which is safe even when using async functions with deferred completion tokens. * You may disable such copies using `std::ref`, as you would when using `std::make_tuple`. * @@ -91,7 +91,7 @@ struct with_params_t * \brief Creates a query with parameters (client-side SQL formatting) that can be executed. * \details * Creates a \ref with_params_t object by packing the supplied arguments into a tuple, - * calling `std::make_tuple`. + * calling std::make_tuple. * As per `std::make_tuple`, parameters will be decay-copied into the resulting object. * This behavior can be disabled by passing `std::reference_wrapper` objects, which are * transformed into references.