1#ifndef MYSQL_SERVICE_PARSER_INCLUDED
2#define MYSQL_SERVICE_PARSER_INCLUDED
27#ifndef MYSQL_ABI_CHECK
33#define MYSQL_THD THD *
44#define PARSER_SERVICE_DIGEST_LENGTH 32
46#define STATEMENT_TYPE_SELECT 1
47#define STATEMENT_TYPE_UPDATE 2
48#define STATEMENT_TYPE_INSERT 3
49#define STATEMENT_TYPE_DELETE 4
50#define STATEMENT_TYPE_REPLACE 5
51#define STATEMENT_TYPE_OTHER 6
57 const char *msg,
void *state);
66 void *(*callback_fun)(
void *),
void *arg,
96 unsigned char is_prepared,
98 void *condition_handler_state);
114 unsigned char *digest);
214#ifdef MYSQL_DYNAMIC_PLUGIN
216#define mysql_parser_current_session() \
217 mysql_parser_service->mysql_current_session()
219#define mysql_parser_open_session() mysql_parser_service->mysql_open_session()
221#define mysql_parser_start_thread(thd, func, arg, thread_handle) \
222 mysql_parser_service->mysql_start_thread(thd, func, arg, thread_handle)
224#define mysql_parser_join_thread(thread_handle) \
225 mysql_parser_service->mysql_join_thread(thread_handle)
227#define mysql_parser_set_current_database(thd, db) \
228 mysql_parser_service->mysql_set_current_database(thd, db)
230#define mysql_parser_parse(thd, query, is_prepared, condition_handler, \
231 condition_handler_state) \
232 mysql_parser_service->mysql_parse( \
233 thd, query, is_prepared, condition_handler, condition_handler_state)
235#define mysql_parser_get_statement_type(thd) \
236 mysql_parser_service->mysql_get_statement_type(thd)
238#define mysql_parser_get_statement_digest(thd, digest) \
239 mysql_parser_service->mysql_get_statement_digest(thd, digest)
241#define mysql_parser_get_number_params(thd) \
242 mysql_parser_service->mysql_get_number_params(thd)
244#define mysql_parser_extract_prepared_params(thd, positions) \
245 mysql_parser_service->mysql_extract_prepared_params(thd, positions)
247#define mysql_parser_visit_tree(thd, processor, arg) \
248 mysql_parser_service->mysql_visit_tree(thd, processor, arg)
250#define mysql_parser_item_string(item) \
251 mysql_parser_service->mysql_item_string(item)
253#define mysql_parser_free_string(string) \
254 mysql_parser_service->mysql_free_string(string)
256#define mysql_parser_get_query(thd) mysql_parser_service->mysql_get_query(thd)
258#define mysql_parser_get_normalized_query(thd) \
259 mysql_parser_service->mysql_get_normalized_query(thd)
262typedef void *(*callback_function)(
void *);
271 unsigned char is_prepared,
273 void *condition_handler_state);
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:850
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:33
static char * query
Definition: myisam_ftdump.cc:44
void mysql_parser_join_thread(struct my_thread_handle *thread_handle)
Definition: parser_service.cc:217
#define MYSQL_THD
Definition: service_parser.h:33
int mysql_parser_get_statement_type(MYSQL_THD thd)
Definition: parser_service.cc:283
int mysql_parser_parse(MYSQL_THD thd, const MYSQL_LEX_STRING query, unsigned char is_prepared, sql_condition_handler_function handle_condition, void *condition_handler_state)
Definition: parser_service.cc:232
MYSQL_THD(* mysql_open_session_t)()
Definition: service_parser.h:63
void(* mysql_set_current_database_t)(MYSQL_THD thd, const MYSQL_LEX_STRING db)
Definition: service_parser.h:71
Item * MYSQL_ITEM
Definition: service_parser.h:34
int mysql_parser_get_statement_digest(MYSQL_THD thd, unsigned char *digest)
Definition: parser_service.cc:309
int(* parse_node_visit_function)(MYSQL_ITEM item, unsigned char *arg)
Definition: service_parser.h:53
int(* mysql_get_statement_digest_t)(MYSQL_THD thd, unsigned char *digest)
Returns the digest of the last parsed statement in the session.
Definition: service_parser.h:113
void mysql_parser_start_thread(MYSQL_THD thd, callback_function fun, void *arg, struct my_thread_handle *thread_handle)
MYSQL_THD mysql_parser_current_session()
Definition: parser_service.cc:138
MYSQL_LEX_STRING(* mysql_get_normalized_query_t)(MYSQL_THD thd)
Returns the current query in normalized form.
Definition: service_parser.h:194
void mysql_parser_set_current_database(MYSQL_THD thd, const MYSQL_LEX_STRING db)
Definition: parser_service.cc:221
MYSQL_LEX_STRING(* mysql_item_string_t)(MYSQL_ITEM item)
Renders the MYSQL_ITEM as a string and returns a reference in the form of a MYSQL_LEX_STRING.
Definition: service_parser.h:167
int mysql_parser_visit_tree(MYSQL_THD thd, parse_node_visit_function processor, unsigned char *arg)
Definition: parser_service.cc:331
MYSQL_THD mysql_parser_open_session()
Definition: parser_service.cc:140
MYSQL_LEX_STRING(* mysql_get_query_t)(MYSQL_THD thd)
Returns the current query string.
Definition: service_parser.h:184
struct mysql_parser_service_st * mysql_parser_service
int(* mysql_get_statement_type_t)(MYSQL_THD thd)
Definition: service_parser.h:100
int(* mysql_parse_t)(MYSQL_THD thd, const MYSQL_LEX_STRING query, unsigned char is_prepared, sql_condition_handler_function handle_condition, void *condition_handler_state)
Parses the query.
Definition: service_parser.h:95
int(* mysql_get_number_params_t)(MYSQL_THD thd)
Returns the number of parameters ('?') in the parsed query.
Definition: service_parser.h:124
void(* mysql_free_string_t)(MYSQL_LEX_STRING string)
Frees a string buffer allocated by the server.
Definition: service_parser.h:174
void *(* callback_function)(void *)
Definition: service_parser.h:262
int(* mysql_visit_tree_t)(MYSQL_THD thd, parse_node_visit_function processor, unsigned char *arg)
Walks the tree depth first and applies a user defined function on each literal.
Definition: service_parser.h:152
MYSQL_LEX_STRING mysql_parser_item_string(MYSQL_ITEM item)
Definition: parser_service.cc:337
int(* sql_condition_handler_function)(int sql_errno, const char *sqlstate, const char *msg, void *state)
Definition: service_parser.h:55
int mysql_parser_extract_prepared_params(MYSQL_THD thd, int *positions)
Definition: parser_service.cc:323
int mysql_parser_get_number_params(MYSQL_THD thd)
Definition: parser_service.cc:319
MYSQL_LEX_STRING mysql_parser_get_normalized_query(MYSQL_THD thd)
Definition: parser_service.cc:357
void(* mysql_start_thread_t)(MYSQL_THD thd, void *(*callback_fun)(void *), void *arg, struct my_thread_handle *thread_handle)
Definition: service_parser.h:65
int(* mysql_extract_prepared_params_t)(MYSQL_THD thd, int *positions)
Stores in 'positions' the positions in the last parsed query of each parameter marker('?...
Definition: service_parser.h:140
void(* mysql_join_thread_t)(struct my_thread_handle *thread_handle)
Definition: service_parser.h:69
MYSQL_LEX_STRING mysql_parser_get_query(MYSQL_THD thd)
Definition: parser_service.cc:351
MYSQL_THD(* mysql_current_session_t)()
Definition: service_parser.h:61
void mysql_parser_free_string(MYSQL_LEX_STRING string)
Definition: parser_service.cc:349
Definition: mysql_lex_string.h:34
Definition: my_thread_bits.h:51
Definition: service_parser.h:196
mysql_get_number_params_t mysql_get_number_params
Definition: service_parser.h:205
mysql_visit_tree_t mysql_visit_tree
Definition: service_parser.h:207
mysql_start_thread_t mysql_start_thread
Definition: service_parser.h:199
mysql_get_statement_digest_t mysql_get_statement_digest
Definition: service_parser.h:204
mysql_get_normalized_query_t mysql_get_normalized_query
Definition: service_parser.h:211
mysql_join_thread_t mysql_join_thread
Definition: service_parser.h:200
mysql_get_statement_type_t mysql_get_statement_type
Definition: service_parser.h:203
mysql_item_string_t mysql_item_string
Definition: service_parser.h:208
mysql_open_session_t mysql_open_session
Definition: service_parser.h:198
mysql_extract_prepared_params_t mysql_extract_prepared_params
Definition: service_parser.h:206
mysql_set_current_database_t mysql_set_current_database
Definition: service_parser.h:201
mysql_get_query_t mysql_get_query
Definition: service_parser.h:210
mysql_current_session_t mysql_current_session
Definition: service_parser.h:197
mysql_free_string_t mysql_free_string
Definition: service_parser.h:209
mysql_parse_t mysql_parse
Definition: service_parser.h:202