MySQL 9.3.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
77 void connect(const MySQLSession &other, const std::string &username,
79 void connect(const std::string &host, unsigned int port,
80 const std::string &username,
82 const std::string &unix_socket,
83 const std::string &default_schema,
86 unsigned long extra_client_flags = 0) override;
87
88 void change_user(const std::string &user,
90 const std::string &db) override;
91 void reset() override;
92 uint64_t prepare(const std::string &query) override;
94 uint64_t ps_id, std::vector<MYSQL_BIND> bind_parameters,
95 const ResultRowProcessor &processor, const FieldValidator &validator,
96 const OnResultSetEnd &on_resultset_end) override;
97 void prepare_remove(uint64_t ps_id) override;
98
99 void execute(
100 const std::string &query) override; // throws Error, std::logic_error
101
102 void query(const std::string &query, const ResultRowProcessor &processor,
103 const FieldValidator &validator)
104 override; // throws Error, std::logic_error
105 std::unique_ptr<MySQLSession::ResultRow> query_one(
106 const std::string &query,
107 const FieldValidator &validator) override; // throws Error
108 std::unique_ptr<MySQLSession::ResultRow> query_one(
109 const std::string &query) override; // throws Error
110
111 private:
115};
116
117} // namespace collector
118
119#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:215
std::vector< std::string > Sqls
Definition: counted_mysql_session.h:40
void query(const std::string &query, const ResultRowProcessor &processor, const FieldValidator &validator) override
Definition: counted_mysql_session.cc:225
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:114
virtual Sqls get_initial_sqls() const
Definition: counted_mysql_session.cc:113
void connect(const MySQLSession &other, const std::string &username, const mysql_harness::SecureString &password) override
Definition: counted_mysql_session.cc:176
virtual void execute_initial_sqls()
Definition: counted_mysql_session.cc:107
void execute(const std::string &query) override
Definition: counted_mysql_session.cc:220
uint64_t prepare(const std::string &query) override
Definition: counted_mysql_session.cc:201
void reset() override
Definition: counted_mysql_session.cc:199
std::unique_ptr< MySQLSession::ResultRow > query_one(const std::string &query, const FieldValidator &validator) override
Definition: counted_mysql_session.cc:232
ConnectionParameters connection_params_
Definition: counted_mysql_session.h:112
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:206
bool reconnect_at_next_query_
Definition: counted_mysql_session.h:113
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:189
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:522
int connect_timeout() const
Definition: mysql_session.cc:338
std::function< void()> OnResultSetEnd
Definition: mysql_session.h:167
std::string default_schema
Definition: mysql_session.h:524
std::string host
Definition: mysql_session.h:521
static constexpr int kDefaultReadTimeout
Definition: mysql_session.h:160
std::string unix_socket
Definition: mysql_session.h:523
int read_timeout() const
Definition: mysql_session.cc:347
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