MySQL 9.4.0
Source Code Documentation
counted_mysql_session.h
Go to the documentation of this file.
1/*
2 Copyright (c) 2023, 2025, Oracle and/or its affiliates.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License, version 2.0,
6 as published by the Free Software Foundation.
7
8 This program is designed to work with certain software (including
9 but not limited to OpenSSL) that is licensed under separate terms,
10 as designated in a particular file or component or in included license
11 documentation. The authors of MySQL hereby grant you an additional
12 permission to link the program and your derivative works with the
13 separately licensed software that they have either included with
14 the program or referenced in the documentation.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software
23 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24*/
25
26#ifndef ROUTER_SRC_MYSQL_REST_SERVICE_SRC_COLLECTOR_MYSQL_SQL_SESSION_H_
27#define ROUTER_SRC_MYSQL_REST_SERVICE_SRC_COLLECTOR_MYSQL_SQL_SESSION_H_
28
31
32#include <vector>
33
34#include "secure_string.h" // NOLINT(build/include_subdir)
35
36namespace collector {
37
39 public:
40 using Sqls = std::vector<std::string>;
42 struct SslOptions {
44 std::string tls_version;
45 std::string ssl_cipher;
46 std::string ca;
47 std::string capath;
48 std::string crl;
49 std::string crlpath;
51 struct SslCert {
52 std::string cert;
53 std::string key;
55 struct ConnOptions {
57
58 std::string username;
60 std::string default_schema;
63 unsigned long extra_client_flags{0};
65 };
66
68 ~CountedMySQLSession() override;
69
70 virtual void allow_failure_at_next_query();
72 virtual void execute_initial_sqls();
73 virtual Sqls get_initial_sqls() const;
74 virtual void connect_and_set_opts(
75 const ConnectionParameters &connection_params, const Sqls &initial_sqls);
76 virtual void connect(const ConnectionParameters &connection_params);
77
78 void connect(const MySQLSession &other, const std::string &username,
80 void connect(const std::string &host, unsigned int port,
81 const std::string &username,
83 const std::string &unix_socket,
84 const std::string &default_schema,
87 unsigned long extra_client_flags = 0) override;
88
89 void change_user(const std::string &user,
91 const std::string &db) override;
92 void reset() override;
93 uint64_t prepare(const std::string &query) override;
95 uint64_t ps_id, std::vector<MYSQL_BIND> bind_parameters,
96 const ResultRowProcessor &processor, const FieldValidator &validator,
97 const OnResultSetEnd &on_resultset_end) override;
98 void prepare_remove(uint64_t ps_id) override;
99
100 void execute(
101 const std::string &query) override; // throws Error, std::logic_error
102
103 void query(const std::string &query, const ResultRowProcessor &processor,
104 const FieldValidator &validator)
105 override; // throws Error, std::logic_error
106 std::unique_ptr<MySQLSession::ResultRow> query_one(
107 const std::string &query,
108 const FieldValidator &validator) override; // throws Error
109 std::unique_ptr<MySQLSession::ResultRow> query_one(
110 const std::string &query) override; // throws Error
111
112 private:
116};
117
118} // namespace collector
119
120#endif // ROUTER_SRC_MYSQL_REST_SERVICE_SRC_COLLECTOR_MYSQL_SQL_SESSION_H_
Definition: counted_mysql_session.h:38
~CountedMySQLSession() override
Definition: counted_mysql_session.cc:94
void prepare_remove(uint64_t ps_id) override
Definition: counted_mysql_session.cc:220
std::vector< std::string > Sqls
Definition: counted_mysql_session.h:40
virtual void connect(const ConnectionParameters &connection_params)
Definition: counted_mysql_session.cc:127
void query(const std::string &query, const ResultRowProcessor &processor, const FieldValidator &validator) override
Definition: counted_mysql_session.cc:230
virtual void connect_and_set_opts(const ConnectionParameters &connection_params, const Sqls &initial_sqls)
Definition: counted_mysql_session.cc:117
Sqls initial_sqls_
Definition: counted_mysql_session.h:115
virtual Sqls get_initial_sqls() const
Definition: counted_mysql_session.cc:113
virtual void execute_initial_sqls()
Definition: counted_mysql_session.cc:107
void execute(const std::string &query) override
Definition: counted_mysql_session.cc:225
uint64_t prepare(const std::string &query) override
Definition: counted_mysql_session.cc:206
void reset() override
Definition: counted_mysql_session.cc:204
std::unique_ptr< MySQLSession::ResultRow > query_one(const std::string &query, const FieldValidator &validator) override
Definition: counted_mysql_session.cc:237
ConnectionParameters connection_params_
Definition: counted_mysql_session.h:113
void prepare_execute_with_bind_parameters(uint64_t ps_id, std::vector< MYSQL_BIND > bind_parameters, const ResultRowProcessor &processor, const FieldValidator &validator, const OnResultSetEnd &on_resultset_end) override
Definition: counted_mysql_session.cc:211
bool reconnect_at_next_query_
Definition: counted_mysql_session.h:114
virtual void allow_failure_at_next_query()
Definition: counted_mysql_session.cc:98
virtual ConnectionParameters get_connection_parameters() const
Definition: counted_mysql_session.cc:103
void change_user(const std::string &user, const mysql_harness::SecureString &password, const std::string &db) override
Definition: counted_mysql_session.cc:194
CountedMySQLSession()
Definition: counted_mysql_session.cc:90
Definition: destination.h:95
Definition: destination.h:40
Null-terminated string which is securely wiped on destruction.
Definition: secure_string.h:59
Definition: mysql_session.h:157
std::function< void(unsigned, MYSQL_FIELD *)> FieldValidator
Definition: mysql_session.h:166
std::function< bool(const ResultRow &)> ResultRowProcessor
Definition: mysql_session.h:164
unsigned int port
Definition: mysql_session.h:526
int connect_timeout() const
Definition: mysql_session.cc:336
std::function< void()> OnResultSetEnd
Definition: mysql_session.h:167
std::string default_schema
Definition: mysql_session.h:528
std::string host
Definition: mysql_session.h:525
static constexpr int kDefaultReadTimeout
Definition: mysql_session.h:160
std::string unix_socket
Definition: mysql_session.h:527
int read_timeout() const
Definition: mysql_session.cc:345
static constexpr int kDefaultConnectTimeout
Definition: mysql_session.h:159
mysql_ssl_mode
Definition: mysql.h:272
static char * password
Definition: mysql_secure_installation.cc:58
Definition: cache_manager.h:33
collector::CountedMySQLSession::ConnectionParameters ConnectionParameters
Definition: query_retry_on_ro.cc:38
std::string username
Definition: counted_mysql_session.h:58
mysql_harness::Destination destination
Definition: counted_mysql_session.h:56
std::string default_schema
Definition: counted_mysql_session.h:60
mysql_harness::SecureString password
Definition: counted_mysql_session.h:59
int read_timeout
Definition: counted_mysql_session.h:62
int connect_timeout
Definition: counted_mysql_session.h:61
unsigned long extra_client_flags
Definition: counted_mysql_session.h:63
std::string cert
Definition: counted_mysql_session.h:52
std::string key
Definition: counted_mysql_session.h:53
std::string ssl_cipher
Definition: counted_mysql_session.h:45
std::string tls_version
Definition: counted_mysql_session.h:44
std::string crl
Definition: counted_mysql_session.h:48
std::string capath
Definition: counted_mysql_session.h:47
std::string crlpath
Definition: counted_mysql_session.h:49
std::string ca
Definition: counted_mysql_session.h:46
mysql_ssl_mode ssl_mode
Definition: counted_mysql_session.h:43
Definition: counted_mysql_session.h:41
struct collector::CountedMySQLSession::ConnectionParameters::SslCert ssl_cert
struct collector::CountedMySQLSession::ConnectionParameters::SslOptions ssl_opts
struct collector::CountedMySQLSession::ConnectionParameters::ConnOptions conn_opts