70
70
MYSQL_PROC_FIELD_COUNT
74
TABLE_FIELD_TYPE proc_table_fields[MYSQL_PROC_FIELD_COUNT] =
77
{ C_STRING_WITH_LEN("db") },
78
{ C_STRING_WITH_LEN("char(64)") },
79
{ C_STRING_WITH_LEN("utf8") }
82
{ C_STRING_WITH_LEN("name") },
83
{ C_STRING_WITH_LEN("char(64)") },
84
{ C_STRING_WITH_LEN("utf8") }
87
{ C_STRING_WITH_LEN("type") },
88
{ C_STRING_WITH_LEN("enum('FUNCTION','PROCEDURE')") },
92
{ C_STRING_WITH_LEN("specific_name") },
93
{ C_STRING_WITH_LEN("char(64)") },
94
{ C_STRING_WITH_LEN("utf8") }
97
{ C_STRING_WITH_LEN("language") },
98
{ C_STRING_WITH_LEN("enum('SQL')") },
102
{ C_STRING_WITH_LEN("sql_data_access") },
103
{ C_STRING_WITH_LEN("enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA')") },
107
{ C_STRING_WITH_LEN("is_deterministic") },
108
{ C_STRING_WITH_LEN("enum('YES','NO')") },
112
{ C_STRING_WITH_LEN("security_type") },
113
{ C_STRING_WITH_LEN("enum('INVOKER','DEFINER')") },
117
{ C_STRING_WITH_LEN("param_list") },
118
{ C_STRING_WITH_LEN("blob") },
123
{ C_STRING_WITH_LEN("returns") },
124
{ C_STRING_WITH_LEN("longblob") },
128
{ C_STRING_WITH_LEN("body") },
129
{ C_STRING_WITH_LEN("longblob") },
133
{ C_STRING_WITH_LEN("definer") },
134
{ C_STRING_WITH_LEN("char(77)") },
135
{ C_STRING_WITH_LEN("utf8") }
138
{ C_STRING_WITH_LEN("created") },
139
{ C_STRING_WITH_LEN("timestamp") },
143
{ C_STRING_WITH_LEN("modified") },
144
{ C_STRING_WITH_LEN("timestamp") },
148
{ C_STRING_WITH_LEN("sql_mode") },
149
{ C_STRING_WITH_LEN("set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES',"
150
"'IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION',"
151
"'NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB',"
152
"'NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40',"
153
"'ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES',"
154
"'STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES',"
155
"'ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER',"
156
"'HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')") },
160
{ C_STRING_WITH_LEN("comment") },
161
{ C_STRING_WITH_LEN("char(64)") },
162
{ C_STRING_WITH_LEN("utf8") }
165
{ C_STRING_WITH_LEN("character_set_client") },
166
{ C_STRING_WITH_LEN("char(32)") },
167
{ C_STRING_WITH_LEN("utf8") }
170
{ C_STRING_WITH_LEN("collation_connection") },
171
{ C_STRING_WITH_LEN("char(32)") },
172
{ C_STRING_WITH_LEN("utf8") }
175
{ C_STRING_WITH_LEN("db_collation") },
176
{ C_STRING_WITH_LEN("char(32)") },
177
{ C_STRING_WITH_LEN("utf8") }
180
{ C_STRING_WITH_LEN("body_utf8") },
181
{ C_STRING_WITH_LEN("longblob") },
186
static const TABLE_FIELD_DEF
187
proc_table_def= {MYSQL_PROC_FIELD_COUNT, proc_table_fields};
73
189
/*************************************************************************/
248
364
/*************************************************************************/
366
class Proc_table_intact : public Table_check_intact
372
Proc_table_intact() : m_print_once(TRUE) {}
375
void report_error(uint code, const char *fmt, ...);
380
Report failure to validate the mysql.proc table definition.
381
Print a message to the error log only once.
384
void Proc_table_intact::report_error(uint code, const char *fmt, ...)
390
my_vsnprintf(buf, sizeof(buf), fmt, args);
394
my_message(code, buf, MYF(0));
396
my_error(ER_CANNOT_LOAD_FROM_TABLE, MYF(0), "proc");
401
sql_print_error("%s", buf);
406
/** Single instance used to control printing to the error log. */
407
static Proc_table_intact proc_table_intact;
251
411
Open the mysql.proc table for read.