23#ifndef MYSQL_TRACE_INCLUDED
24#define MYSQL_TRACE_INCLUDED
43#if !defined(CLIENT_PROTOCOL_TRACING) || defined(MYSQL_SERVER)
45#define MYSQL_TRACE(E, M, ARGS)
46#define MYSQL_TRACE_STAGE(M, S)
66struct st_mysql_trace_info {
68 void *trace_plugin_data;
72#define TRACE_DATA(M) (MYSQL_EXTENSION_PTR(M)->trace_data)
98#define MYSQL_TRACE(E, M, ARGS) \
100 if (NULL == TRACE_DATA(M)) break; \
102 struct st_trace_event_args event_args = TRACE_ARGS_##E ARGS; \
103 mysql_trace_trace(M, TRACE_EVENT_##E, event_args); \
120#define MYSQL_TRACE_STAGE(M, S) \
123 TRACE_DATA(M)->stage = PROTOCOL_STAGE_##S; \
124 else if (trace_plugin && \
125 (PROTOCOL_STAGE_CONNECTING == PROTOCOL_STAGE_##S)) \
126 mysql_trace_start(M); \
135#define TRACE_ARGS_SEND_SSL_REQUEST(Size, Packet) \
136 { NULL, 0, NULL, 0, Packet, Size }
137#define TRACE_ARGS_SEND_AUTH_RESPONSE(Size, Packet) \
138 { NULL, 0, NULL, 0, Packet, Size }
139#define TRACE_ARGS_SEND_AUTH_DATA(Size, Packet) \
140 { NULL, 0, NULL, 0, Packet, Size }
141#define TRACE_ARGS_AUTH_PLUGIN(PluginName) \
142 { PluginName, 0, NULL, 0, NULL, 0 }
143#define TRACE_ARGS_SEND_COMMAND(Command, HdrSize, ArgSize, Header, Args) \
144 { NULL, Command, Header, HdrSize, Args, ArgSize }
145#define TRACE_ARGS_SEND_FILE(Size, Packet) \
146 { NULL, 0, NULL, 0, Packet, Size }
148#define TRACE_ARGS_PACKET_SENT(Size) \
149 { NULL, 0, NULL, 0, NULL, Size }
150#define TRACE_ARGS_PACKET_RECEIVED(Size, Packet) \
151 { NULL, 0, NULL, 0, Packet, Size }
152#define TRACE_ARGS_INIT_PACKET_RECEIVED(Size, Packet) \
153 { NULL, 0, NULL, 0, Packet, Size }
155#define TRACE_ARGS_ERROR() \
156 { NULL, 0, NULL, 0, NULL, 0 }
157#define TRACE_ARGS_READ_PACKET() \
158 { NULL, 0, NULL, 0, NULL, 0 }
159#define TRACE_ARGS_CONNECTING() \
160 { NULL, 0, NULL, 0, NULL, 0 }
161#define TRACE_ARGS_CONNECTED() \
162 { NULL, 0, NULL, 0, NULL, 0 }
163#define TRACE_ARGS_DISCONNECTED() \
164 { NULL, 0, NULL, 0, NULL, 0 }
165#define TRACE_ARGS_AUTHENTICATED() \
166 { NULL, 0, NULL, 0, NULL, 0 }
167#define TRACE_ARGS_SSL_CONNECT() \
168 { NULL, 0, NULL, 0, NULL, 0 }
169#define TRACE_ARGS_SSL_CONNECTED() \
170 { NULL, 0, NULL, 0, NULL, 0 }
void mysql_trace_trace(MYSQL *m, enum trace_event ev, struct st_trace_event_args args)
Report a protocol trace event to trace plugin.
Definition: mysql_trace.cc:138
void mysql_trace_start(MYSQL *m)
Initialize tracing in a given connection.
Definition: mysql_trace.cc:85
Declarations for client-side plugins of type MYSQL_CLIENT_TRACE_PLUGIN.
trace_event
Definition: plugin_trace.h:229
protocol_stage
Definition: plugin_trace.h:225
Definition: plugin_trace.h:297
Some trace events have additional arguments.
Definition: plugin_trace.h:212