69#define SP_DEFAULT_ACCESS_MAPPING SP_CONTAINS_SQL
72#define SP_DEFAULT_SUID_MAPPING SP_IS_SUID
194 bool lookup_only,
sp_head **sp);
208 const char *body,
st_sp_chistics *chistics,
const char *definer_user,
213 bool if_not_exists,
bool &sp_already_exists);
293 const char *
db()
const {
return (
char *)
m_key + 1; }
309 return (
char *)
m_key + 1;
355 size_t db_length,
const char *
name,
size_t name_length,
358 bool own_routine,
Table_ref *belong_to_view);
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:936
Object_creation_ctx – interface for creation context of database objects (views, stored routines,...
Definition: table.h:201
Definition: sql_class.h:348
Definition: sql_lex.h:2597
Simple intrusive linked list.
Definition: sql_list.h:47
Structure that represents element in the set of stored routines used by statement or routine.
Definition: sp.h:225
bool use_normalized_key() const
Definition: sp.h:303
entry_type type() const
Definition: sp.h:292
LEX_CSTRING m_object_name
Definition: sp.h:249
Table_ref * belong_to_view
Uppermost view which directly or indirectly uses this routine.
Definition: sp.h:326
Sroutine_hash_entry * next
Next element in list linking all routines in set.
Definition: sp.h:320
int64 m_cache_version
This is for prepared statement validation purposes.
Definition: sp.h:337
uint16 m_db_length
Definition: sp.h:251
const char * name() const
Definition: sp.h:295
const char * db() const
Definition: sp.h:293
size_t part_mdl_key_length()
Definition: sp.h:311
char * m_key
Key identifying routine or other object added to the set.
Definition: sp.h:248
entry_type
Definition: sp.h:253
@ FUNCTION
Definition: sp.h:254
@ FK_TABLE_ROLE_CHILD_UPDATE
Child table in a foreign key with CASCADE/SET NULL/SET DEFAULT as 'on update' rule,...
Definition: sp.h:279
@ FK_TABLE_ROLE_CHILD_DELETE
Child table in a foreign key with CASCADE as 'on delete' rule for which there was delete from the par...
Definition: sp.h:289
@ FK_TABLE_ROLE_PARENT_CHECK
Parent table in a foreign key on which child table there was insert or update.
Definition: sp.h:262
@ TRIGGER
Definition: sp.h:256
@ PROCEDURE
Definition: sp.h:255
@ FK_TABLE_ROLE_CHILD_CHECK
Child table in a foreign key with RESTRICT/NO ACTION as corresponding rule and on which parent table ...
Definition: sp.h:269
const char * part_mdl_key()
Definition: sp.h:307
uint16 m_key_length
Definition: sp.h:250
size_t db_length() const
Definition: sp.h:294
size_t name_length() const
Definition: sp.h:299
Stored_program_creation_ctx – base class for creation context of stored programs (stored routines,...
Definition: sp_head.h:92
Stored_routine_creation_ctx – creation context of stored routines (stored procedures and functions).
Definition: sp.h:146
Object_creation_ctx * create_backup_ctx(THD *thd) const override
Definition: sp.cc:249
static Stored_routine_creation_ctx * load_from_db(THD *thd, const sp_name *name, TABLE *proc_tbl)
Definition: sp.cc:186
static Stored_routine_creation_ctx * create_routine_creation_ctx(const dd::Routine *routine)
Definition: sp.cc:165
Stored_routine_creation_ctx(const CHARSET_INFO *client_cs, const CHARSET_INFO *connection_cl, const CHARSET_INFO *db_cl)
Definition: sp.h:166
Stored_program_creation_ctx * clone(MEM_ROOT *mem_root) override
Definition: sp.cc:243
void delete_backup_ctx() override
Definition: sp.cc:255
Stored_routine_creation_ctx(THD *thd)
Definition: sp.h:163
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:167
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
Abstract base class for functions and procedures.
Definition: routine.h:61
std::unordered_map, but with my_malloc, so that you can track the memory used using PSI memory keys.
Definition: map_helpers.h:157
Definition: sp_cache.cc:42
sp_head represents one instance of a stored program.
Definition: sp_head.h:383
Definition: sp_head.h:123
LEX_STRING m_name
Definition: sp_head.h:126
LEX_CSTRING m_db
Definition: sp_head.h:125
static MEM_ROOT mem_root
Definition: client_plugin.cc:114
uint64_t sql_mode_t
Definition: dd_event.h:39
This file contains the field type.
enum_sp_type
enum_sp_type defines type codes of stored programs.
Definition: sql_lex.h:224
Some integer typedefs for easier portability.
unsigned char uchar
Definition: my_inttypes.h:52
int64_t int64
Definition: my_inttypes.h:68
long long int longlong
Definition: my_inttypes.h:55
uint16_t uint16
Definition: my_inttypes.h:65
static const char * sql_mode
Definition: mysqlslap.cc:199
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1081
borrowable::session_track::Schema< true > Schema
Definition: classic_protocol_session_track.h:288
Definition: commit_order_queue.h:34
The version of the current data dictionary table definitions.
Definition: dictionary_client.h:43
required string type
Definition: replication_group_member_actions.proto:34
bool sp_check_name(LEX_STRING *ident)
Check that the name 'ident' is ok.
Definition: sp.cc:2452
bool sp_eval_expr(THD *thd, Field *result_field, Item **expr_item_ptr)
Evaluate an expression and store the result in the field.
Definition: sp.cc:2515
Table_ref * sp_add_to_query_tables(THD *thd, LEX *lex, const char *db, const char *name)
enum_sp_return_code sp_drop_routine(THD *thd, enum_sp_type type, sp_name *name)
Drops a stored routine.
Definition: sp.cc:926
void sp_update_stmt_used_routines(THD *thd, Query_tables_list *prelocking_ctx, malloc_unordered_map< std::string, Sroutine_hash_entry * > *src, Table_ref *belong_to_view)
Add contents of hash representing set of routines to the set of routines used by statement.
Definition: sp.cc:1916
sp_head * sp_setup_routine(THD *thd, enum_sp_type type, sp_name *name, sp_cache **cp)
Setup a cached routine for execution.
Definition: sp.cc:1570
void sp_remove_not_own_routines(Query_tables_list *prelocking_ctx)
Remove routines which are only indirectly used by statement from the set of routines used by this sta...
Definition: sp.cc:1883
Sp_name_normalize_type
Definition: sp.h:344
@ UNACCENT_AND_LOWERCASE_NAME
uint sp_get_flags_for_command(LEX *lex)
Definition: sp.cc:2292
bool load_charset(MEM_ROOT *mem_root, Field *field, const CHARSET_INFO *dflt_cs, const CHARSET_INFO **cs)
Definition: sp.cc:120
sp_head * sp_start_parsing(THD *thd, enum_sp_type sp_type, sp_name *sp_name)
Start parsing of a stored program.
Definition: sp.cc:2237
bool sp_show_create_routine(THD *thd, enum_sp_type type, sp_name *name)
Implement SHOW CREATE statement for stored routines.
Definition: sp.cc:1472
bool sp_create_routine(THD *thd, sp_head *sp, const LEX_USER *definer, bool if_not_exists, bool &sp_already_exists)
Creates a stored routine.
Definition: sp.cc:797
String * sp_get_item_value(THD *thd, Item *item, String *str)
Return a string representation of the Item value.
Definition: sp.cc:2583
Item * sp_prepare_func_item(THD *thd, Item **it_addr)
Prepare an Item for evaluation (call of fix_fields).
Definition: sp.cc:2481
bool lock_db_routines(THD *thd, const dd::Schema &schema)
Acquires exclusive metadata lock on all stored routines in the given database.
Definition: sp.cc:1178
enum_sp_return_code
Definition: sp.h:80
@ SP_ALREADY_EXISTS
Definition: sp.h:90
@ SP_INTERNAL_ERROR
Definition: sp.h:105
@ SP_NO_DB_ERROR
Definition: sp.h:84
@ SP_LOAD_FAILED
Definition: sp.h:99
@ SP_PARSE_ERROR
Definition: sp.h:102
@ SP_DOES_NOT_EXISTS
Definition: sp.h:87
@ SP_DROP_FAILED
Definition: sp.h:96
@ SP_STORE_FAILED
Definition: sp.h:93
@ SP_OK
Definition: sp.h:81
static const uint MYSQL_STORED_ROUTINE_BODY_LENGTH
Definition: sp.h:75
bool sp_add_used_routine(Query_tables_list *prelocking_ctx, Query_arena *arena, Sroutine_hash_entry::entry_type type, const char *db, size_t db_length, const char *name, size_t name_length, bool lowercase_db, Sp_name_normalize_type name_normalize_type, bool own_routine, Table_ref *belong_to_view)
Add routine or trigger which is used by statement to the set of stored routines used by this statemen...
Definition: sp.cc:1789
@ MYSQL_PROC_FIELD_PARAM_LIST
Definition: sp.h:124
@ MYSQL_PROC_FIELD_DETERMINISTIC
Definition: sp.h:122
@ MYSQL_PROC_FIELD_CHARACTER_SET_CLIENT
Definition: sp.h:132
@ MYSQL_PROC_FIELD_RETURNS
Definition: sp.h:125
@ MYSQL_PROC_FIELD_SECURITY_TYPE
Definition: sp.h:123
@ MYSQL_PROC_FIELD_NAME
Definition: sp.h:117
@ MYSQL_PROC_FIELD_COUNT
Definition: sp.h:136
@ MYSQL_PROC_FIELD_LANGUAGE
Definition: sp.h:120
@ MYSQL_PROC_MYSQL_TYPE
Definition: sp.h:118
@ MYSQL_PROC_FIELD_SPECIFIC_NAME
Definition: sp.h:119
@ MYSQL_PROC_FIELD_COMMENT
Definition: sp.h:131
@ MYSQL_PROC_FIELD_SQL_MODE
Definition: sp.h:130
@ MYSQL_PROC_FIELD_DB_COLLATION
Definition: sp.h:134
@ MYSQL_PROC_FIELD_BODY
Definition: sp.h:126
@ MYSQL_PROC_FIELD_CREATED
Definition: sp.h:128
@ MYSQL_PROC_FIELD_ACCESS
Definition: sp.h:121
@ MYSQL_PROC_FIELD_COLLATION_CONNECTION
Definition: sp.h:133
@ MYSQL_PROC_FIELD_DB
Definition: sp.h:116
@ MYSQL_PROC_FIELD_MODIFIED
Definition: sp.h:129
@ MYSQL_PROC_FIELD_BODY_UTF8
Definition: sp.h:135
@ MYSQL_PROC_FIELD_DEFINER
Definition: sp.h:127
bool sp_drop_db_routines(THD *thd, const dd::Schema &schema)
Drop all routines in database 'db'.
Definition: sp.cc:1242
bool sp_update_routine(THD *thd, enum_sp_type type, sp_name *name, st_sp_chistics *chistics)
Updates(Alter) a stored routine.
Definition: sp.cc:1056
bool sp_exist_routines(THD *thd, Table_ref *procs, bool is_proc)
This is used by sql_acl.cc:mysql_routine_grant() and is used to find the routines in 'routines'.
Definition: sp.cc:1651
enum_sp_return_code sp_cache_routine(THD *thd, Sroutine_hash_entry *rt, bool lookup_only, sp_head **sp)
A helper wrapper around sp_cache_routine() to use from prelocking until 'sp_name' is eradicated as a ...
Definition: sp.cc:1958
enum_sp_return_code db_load_routine(THD *thd, enum_sp_type type, const char *sp_db, size_t sp_db_len, const char *sp_name, size_t sp_name_len, sp_head **sphp, sql_mode_t sql_mode, const char *params, const char *returns, const char *body, st_sp_chistics *chistics, const char *definer_user, const char *definer_host, longlong created, longlong modified, Stored_program_creation_ctx *creation_ctx)
Definition: sp.cc:498
bool sp_add_own_used_routine(Query_tables_list *prelocking_ctx, Query_arena *arena, Sroutine_hash_entry::entry_type type, sp_name *sp_name)
Convenience wrapper around sp_add_used_routine() for most common case - stored procedure or function ...
Definition: sp.h:365
void sp_finish_parsing(THD *thd)
Finish parsing of a stored program.
Definition: sp.cc:2273
bool load_collation(MEM_ROOT *mem_root, Field *field, const CHARSET_INFO *dflt_cl, const CHARSET_INFO **cl)
Definition: sp.cc:141
const uchar * sp_sroutine_key(const uchar *ptr, size_t *plen)
static const int MYSQL_STORED_ROUTINE_COMMENT_LENGTH
Definition: sp.h:78
sp_head * sp_find_routine(THD *thd, enum_sp_type type, sp_name *name, sp_cache **cp, bool cache_only)
Obtain object representing stored procedure/function by its name from stored procedures cache and loo...
Definition: sp.cc:1535
case opt name
Definition: sslopt-case.h:29
Definition: m_ctype.h:423
The LEX object currently serves three different purposes:
Definition: sql_lex.h:3823
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
Definition: mysql_lex_string.h:40
const char * str
Definition: mysql_lex_string.h:41
size_t length
Definition: mysql_lex_string.h:42
Definition: mysql_lex_string.h:35
char * str
Definition: mysql_lex_string.h:36
size_t length
Definition: mysql_lex_string.h:37
Definition: sql_lex.h:2555