MySQL 8.4.2
Source Code Documentation
QueryForwarder Class Reference

#include <classic_query_forwarder.h>

Inheritance diagram for QueryForwarder:
[legend]

Public Types

enum class  Stage {
  Command , ExplicitCommitConnect , ExplicitCommitConnectDone , ExplicitCommit ,
  ExplicitCommitDone , ClassifyQuery , SwitchBackend , PrepareBackend ,
  Connect , Connected , Forward , ForwardDone ,
  Response , ColumnCount , Column , ColumnEnd ,
  RowOrEnd , Row , RowEnd , LoadData ,
  Data , Ok , Error , ResponseDone ,
  Done , SendQueued
}
 
- Public Types inherited from BasicProcessor
enum class  Result {
  Again , RecvFromClient , SendToClient , RecvFromServer ,
  RecvFromBoth , SendToServer , SendableToServer , Suspend ,
  Done , Void
}
 

Public Member Functions

stdx::expected< Result, std::error_code > process () override
 
void stage (Stage stage)
 
Stage stage () const
 
void failed (const std::optional< classic_protocol::message::server::Error > &err)
 
std::optional< classic_protocol::message::server::Errorfailed () const
 
- Public Member Functions inherited from Processor
 BasicProcessor (MysqlRoutingClassicConnectionBase *conn)
 
- Public Member Functions inherited from BasicProcessor
 BasicProcessor (MysqlRoutingClassicConnectionBase *conn)
 
virtual ~BasicProcessor ()=default
 
const MysqlRoutingClassicConnectionBaseconnection () const
 
MysqlRoutingClassicConnectionBaseconnection ()
 

Static Public Member Functions

static constexpr std::string_view prefix ()
 

Private Member Functions

stdx::expected< Result, std::error_code > command ()
 
stdx::expected< Result, std::error_code > explicit_commit_connect ()
 
stdx::expected< Result, std::error_code > explicit_commit_connect_done ()
 
stdx::expected< Result, std::error_code > explicit_commit ()
 
stdx::expected< Result, std::error_code > explicit_commit_done ()
 
stdx::expected< Result, std::error_code > classify_query ()
 
stdx::expected< Result, std::error_code > switch_backend ()
 
stdx::expected< Result, std::error_code > prepare_backend ()
 
stdx::expected< Result, std::error_code > connect ()
 
stdx::expected< Result, std::error_code > connected ()
 
stdx::expected< Result, std::error_code > forward ()
 
stdx::expected< Result, std::error_code > forward_done ()
 
stdx::expected< Result, std::error_code > response ()
 
stdx::expected< Result, std::error_code > load_data ()
 
stdx::expected< Result, std::error_code > data ()
 
stdx::expected< Result, std::error_code > column_count ()
 
stdx::expected< Result, std::error_code > column ()
 
stdx::expected< Result, std::error_code > column_end ()
 
stdx::expected< Result, std::error_code > row_or_end ()
 
stdx::expected< Result, std::error_code > row ()
 
stdx::expected< Result, std::error_code > row_end ()
 
stdx::expected< Result, std::error_code > ok ()
 
stdx::expected< Result, std::error_code > error ()
 
stdx::expected< Result, std::error_code > response_done ()
 
stdx::expected< Result, std::error_code > send_queued ()
 
stdx::expected< void, std::error_code > track_session_changes (net::const_buffer session_trackers, classic_protocol::capabilities::value_type caps)
 
TraceEventtrace_connect_and_explicit_commit (TraceEvent *parent_span)
 

Private Attributes

stdx::flags< StmtClassifierstmt_classified_ {}
 
Stage stage_ {Stage::Command}
 
uint64_t columns_left_ {0}
 
TraceEventtrace_event_command_ {}
 
TraceEventtrace_event_connect_and_explicit_commit_ {}
 
TraceEventtrace_event_connect_and_forward_command_ {}
 
TraceEventtrace_event_forward_command_ {}
 
TraceEventtrace_event_query_result_ {}
 
std::optional< classic_protocol::message::server::Errorfailed_
 
SqlParserState sql_parser_state_
 

Additional Inherited Members

- Static Public Attributes inherited from ForwardingProcessor
static constexpr const std::chrono::milliseconds kConnectRetryInterval
 interval between connect-retries. More...
 
- Protected Member Functions inherited from ForwardingProcessor
stdx::expected< Result, std::error_code > forward_server_to_client (bool noflush=false)
 forward the current packet from the server-side to the client-side. More...
 
stdx::expected< Result, std::error_code > forward_client_to_server (bool noflush=false)
 forward the current packet from the client-side to the server-side. More...
 
stdx::expected< Processor::Result, std::error_code > skip_or_inject_end_of_columns (bool no_flush=false)
 adjust the end-of-columns packet. More...
 
stdx::expected< bool, std::error_code > pool_server_connection ()
 move the server connection to the pool. More...
 
stdx::expected< Processor::Result, std::error_code > socket_reconnect_start (TraceEvent *parent_event)
 reconnect a socket. More...
 
stdx::expected< Processor::Result, std::error_code > mysql_reconnect_start (TraceEvent *parent_event)
 reconnect a mysql classic connection. More...
 
stdx::expected< Result, std::error_code > recv_server_failed_and_check_client_socket (std::error_code ec)
 handle error-code of a failed receive() from the server-socket and check the status of the client socket. More...
 
stdx::expected< Processor::Result, std::error_code > reconnect_send_error_msg (Channel &src_channel, ClassicProtocolState &src_protocol)
 send a Error msg based on the reconnect_error(). More...
 
template<class Proto >
stdx::expected< Processor::Result, std::error_code > reconnect_send_error_msg (TlsSwitchableConnection< Proto > &conn)
 
void reconnect_error (classic_protocol::message::server::Error err)
 set the reconnect error. More...
 
classic_protocol::message::server::Error reconnect_error () const
 get the reconnect error. More...
 
- Protected Member Functions inherited from Processor
stdx::expected< Result, std::error_code > send_server_failed (std::error_code ec)
 
stdx::expected< Result, std::error_code > recv_server_failed (std::error_code ec)
 
stdx::expected< Result, std::error_code > send_client_failed (std::error_code ec)
 
stdx::expected< Result, std::error_code > recv_client_failed (std::error_code ec)
 
stdx::expected< Result, std::error_code > server_socket_failed (std::error_code ec)
 
stdx::expected< Result, std::error_code > client_socket_failed (std::error_code ec)
 
stdx::expected< void, std::error_code > discard_current_msg (Channel &src_channel, ClassicProtocolState &src_protocol)
 discard to current message. More...
 
template<class Proto >
stdx::expected< void, std::error_code > discard_current_msg (TlsSwitchableConnection< Proto > &conn)
 
void trace (Tracer::Event e)
 
Tracertracer ()
 
TraceEventtrace_span (TraceEvent *parent_span, const std::string_view &prefix)
 start a span. More...
 
void trace_span_end (TraceEvent *event, TraceEvent::StatusCode status_code=TraceEvent::StatusCode::kUnset)
 end a span and set a status-code. More...
 
TraceEventtrace_command (const std::string_view &prefix)
 start a command span. More...
 
TraceEventtrace_connect_and_forward_command (TraceEvent *parent_span)
 start a connect-and-forward span. More...
 
TraceEventtrace_connect (TraceEvent *parent_span)
 start a connect span. More...
 
void trace_set_connection_attributes (TraceEvent *ev)
 start a connect span. More...
 
TraceEventtrace_forward_command (TraceEvent *parent_span)
 start a forward span. More...
 
void trace_command_end (TraceEvent *event, TraceEvent::StatusCode status_code=TraceEvent::StatusCode::kUnset)
 end a command span and set a status-code. More...
 
- Static Protected Member Functions inherited from ForwardingProcessor
template<class T >
static bool message_can_be_forwarded_as_is (ClassicProtocolState &src_protocol, ClassicProtocolState &dst_protocol, const T &msg)
 check of the capabilities of the source and the destination are the same for this message. More...
 
static bool connect_error_is_transient (const classic_protocol::message::server::Error &err)
 check if the error is a transient error. More...
 
- Static Protected Member Functions inherited from Processor
static void log_fatal_error_code (const char *msg, std::error_code ec)
 log a message with error-code as error. More...
 

Member Enumeration Documentation

◆ Stage

enum class QueryForwarder::Stage
strong
Enumerator
Command 
ExplicitCommitConnect 
ExplicitCommitConnectDone 
ExplicitCommit 
ExplicitCommitDone 
ClassifyQuery 
SwitchBackend 
PrepareBackend 
Connect 
Connected 
Forward 
ForwardDone 
Response 
ColumnCount 
Column 
ColumnEnd 
RowOrEnd 
Row 
RowEnd 
LoadData 
Data 
Ok 
Error 
ResponseDone 
Done 
SendQueued 

Member Function Documentation

◆ classify_query()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::classify_query ( )
private

◆ column()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::column ( )
private

◆ column_count()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::column_count ( )
private

◆ column_end()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::column_end ( )
private

◆ command()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::command ( )
private

◆ connect()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::connect ( )
private

◆ connected()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::connected ( )
private

◆ data()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::data ( )
private

◆ error()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::error ( )
private

◆ explicit_commit()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::explicit_commit ( )
private

◆ explicit_commit_connect()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::explicit_commit_connect ( )
private

◆ explicit_commit_connect_done()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::explicit_commit_connect_done ( )
private

◆ explicit_commit_done()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::explicit_commit_done ( )
private

◆ failed() [1/2]

std::optional< classic_protocol::message::server::Error > QueryForwarder::failed ( ) const
inline

◆ failed() [2/2]

void QueryForwarder::failed ( const std::optional< classic_protocol::message::server::Error > &  err)
inline

◆ forward()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::forward ( )
private

◆ forward_done()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::forward_done ( )
private

◆ load_data()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::load_data ( )
private

◆ ok()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::ok ( )
private

◆ prefix()

static constexpr std::string_view QueryForwarder::prefix ( )
inlinestaticconstexpr

◆ prepare_backend()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::prepare_backend ( )
private

◆ process()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::process ( )
overridevirtual

Implements BasicProcessor.

◆ response()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::response ( )
private

◆ response_done()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::response_done ( )
private

◆ row()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::row ( )
private

◆ row_end()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::row_end ( )
private

◆ row_or_end()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::row_or_end ( )
private

◆ send_queued()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::send_queued ( )
private

◆ stage() [1/2]

Stage QueryForwarder::stage ( ) const
inline

◆ stage() [2/2]

void QueryForwarder::stage ( Stage  stage)
inline

◆ switch_backend()

stdx::expected< Processor::Result, std::error_code > QueryForwarder::switch_backend ( )
private

◆ trace_connect_and_explicit_commit()

TraceEvent * QueryForwarder::trace_connect_and_explicit_commit ( TraceEvent parent_span)
private

◆ track_session_changes()

stdx::expected< void, std::error_code > QueryForwarder::track_session_changes ( net::const_buffer  session_trackers,
classic_protocol::capabilities::value_type  caps 
)
private

Member Data Documentation

◆ columns_left_

uint64_t QueryForwarder::columns_left_ {0}
private

◆ failed_

std::optional<classic_protocol::message::server::Error> QueryForwarder::failed_
private

◆ sql_parser_state_

SqlParserState QueryForwarder::sql_parser_state_
private

◆ stage_

Stage QueryForwarder::stage_ {Stage::Command}
private

◆ stmt_classified_

stdx::flags<StmtClassifier> QueryForwarder::stmt_classified_ {}
private

◆ trace_event_command_

TraceEvent* QueryForwarder::trace_event_command_ {}
private

◆ trace_event_connect_and_explicit_commit_

TraceEvent* QueryForwarder::trace_event_connect_and_explicit_commit_ {}
private

◆ trace_event_connect_and_forward_command_

TraceEvent* QueryForwarder::trace_event_connect_and_forward_command_ {}
private

◆ trace_event_forward_command_

TraceEvent* QueryForwarder::trace_event_forward_command_ {}
private

◆ trace_event_query_result_

TraceEvent* QueryForwarder::trace_event_query_result_ {}
private

The documentation for this class was generated from the following files: