mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
merge
This commit is contained in:
commit
5994f28470
6 changed files with 99 additions and 4 deletions
|
@ -4460,12 +4460,13 @@ typedef struct
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
uint code;
|
uint code;
|
||||||
|
const char *text;
|
||||||
} st_error;
|
} st_error;
|
||||||
|
|
||||||
static st_error global_error_names[] =
|
static st_error global_error_names[] =
|
||||||
{
|
{
|
||||||
#include <mysqld_ername.h>
|
#include <mysqld_ername.h>
|
||||||
{ 0, 0 }
|
{ 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
uint get_errcode_from_name(char *error_name, char *error_end)
|
uint get_errcode_from_name(char *error_name, char *error_end)
|
||||||
|
|
|
@ -199,11 +199,34 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void print_escaped_string(FILE *f, const char *str)
|
||||||
|
{
|
||||||
|
const char *tmp = str;
|
||||||
|
|
||||||
|
while (tmp[0] != 0)
|
||||||
|
{
|
||||||
|
switch (tmp[0])
|
||||||
|
{
|
||||||
|
case '\\': fprintf(f, "\\\\"); break;
|
||||||
|
case '\'': fprintf(f, "\\\'"); break;
|
||||||
|
case '\"': fprintf(f, "\\\""); break;
|
||||||
|
case '\n': fprintf(f, "\\n"); break;
|
||||||
|
case '\r': fprintf(f, "\\r"); break;
|
||||||
|
default: fprintf(f, "%c", tmp[0]);
|
||||||
|
}
|
||||||
|
tmp++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int create_header_files(struct errors *error_head)
|
static int create_header_files(struct errors *error_head)
|
||||||
{
|
{
|
||||||
uint er_last;
|
uint er_last;
|
||||||
FILE *er_definef, *sql_statef, *er_namef;
|
FILE *er_definef, *sql_statef, *er_namef;
|
||||||
struct errors *tmp_error;
|
struct errors *tmp_error;
|
||||||
|
struct message *er_msg;
|
||||||
|
const char *er_text;
|
||||||
|
|
||||||
DBUG_ENTER("create_header_files");
|
DBUG_ENTER("create_header_files");
|
||||||
LINT_INIT(er_last);
|
LINT_INIT(er_last);
|
||||||
|
|
||||||
|
@ -245,9 +268,12 @@ static int create_header_files(struct errors *error_head)
|
||||||
"{ %-40s,\"%s\", \"%s\" },\n", tmp_error->er_name,
|
"{ %-40s,\"%s\", \"%s\" },\n", tmp_error->er_name,
|
||||||
tmp_error->sql_code1, tmp_error->sql_code2);
|
tmp_error->sql_code1, tmp_error->sql_code2);
|
||||||
/*generating er_name file */
|
/*generating er_name file */
|
||||||
fprintf(er_namef, "{ \"%s\", %d },\n", tmp_error->er_name,
|
er_msg= find_message(tmp_error, default_language, 0);
|
||||||
tmp_error->d_code);
|
er_text = (er_msg ? er_msg->text : "");
|
||||||
|
fprintf(er_namef, "{ \"%s\", %d, \"", tmp_error->er_name,
|
||||||
|
tmp_error->d_code);
|
||||||
|
print_escaped_string(er_namef, er_text);
|
||||||
|
fprintf(er_namef, "\" },\n");
|
||||||
}
|
}
|
||||||
/* finishing off with mysqld_error.h */
|
/* finishing off with mysqld_error.h */
|
||||||
fprintf(er_definef, "#define ER_ERROR_LAST %d\n", er_last);
|
fprintf(er_definef, "#define ER_ERROR_LAST %d\n", er_last);
|
||||||
|
|
|
@ -184,6 +184,45 @@ static const char *get_ha_error_msg(int code)
|
||||||
return NullS;
|
return NullS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
uint code;
|
||||||
|
const char *text;
|
||||||
|
} st_error;
|
||||||
|
|
||||||
|
static st_error global_error_names[] =
|
||||||
|
{
|
||||||
|
#include <mysqld_ername.h>
|
||||||
|
{ 0, 0, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Lookup an error by code in the global_error_names array.
|
||||||
|
@param code the code to lookup
|
||||||
|
@param [out] name_ptr the error name, when found
|
||||||
|
@param [out] msg_ptr the error text, when found
|
||||||
|
@return 1 when found, otherwise 0
|
||||||
|
*/
|
||||||
|
int get_ER_error_msg(uint code, const char **name_ptr, const char **msg_ptr)
|
||||||
|
{
|
||||||
|
st_error *tmp_error;
|
||||||
|
|
||||||
|
tmp_error= & global_error_names[0];
|
||||||
|
|
||||||
|
while (tmp_error->name != NULL)
|
||||||
|
{
|
||||||
|
if (tmp_error->code == code)
|
||||||
|
{
|
||||||
|
*name_ptr= tmp_error->name;
|
||||||
|
*msg_ptr= tmp_error->text;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
tmp_error++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(__WIN__)
|
#if defined(__WIN__)
|
||||||
static my_bool print_win_error_msg(DWORD error, my_bool verbose)
|
static my_bool print_win_error_msg(DWORD error, my_bool verbose)
|
||||||
|
@ -211,6 +250,7 @@ int main(int argc,char *argv[])
|
||||||
{
|
{
|
||||||
int error,code,found;
|
int error,code,found;
|
||||||
const char *msg;
|
const char *msg;
|
||||||
|
const char *name;
|
||||||
char *unknown_error = 0;
|
char *unknown_error = 0;
|
||||||
#if defined(__WIN__)
|
#if defined(__WIN__)
|
||||||
my_bool skip_win_message= 0;
|
my_bool skip_win_message= 0;
|
||||||
|
@ -316,6 +356,14 @@ int main(int argc,char *argv[])
|
||||||
else
|
else
|
||||||
puts(msg);
|
puts(msg);
|
||||||
}
|
}
|
||||||
|
if (get_ER_error_msg(code, & name, & msg))
|
||||||
|
{
|
||||||
|
found= 1;
|
||||||
|
if (verbose)
|
||||||
|
printf("MySQL error code %3d (%s): %s\n", code, name, msg);
|
||||||
|
else
|
||||||
|
puts(msg);
|
||||||
|
}
|
||||||
if (!found)
|
if (!found)
|
||||||
{
|
{
|
||||||
#if defined(__WIN__)
|
#if defined(__WIN__)
|
||||||
|
|
|
@ -1 +1,6 @@
|
||||||
Illegal error code: 10000
|
Illegal error code: 10000
|
||||||
|
MySQL error code 1062 (ER_DUP_ENTRY): Duplicate entry '%-.192s' for key %d
|
||||||
|
MySQL error code 1076 (ER_READY): %s: ready for connections.
|
||||||
|
Version: '%s' socket: '%s' port: %d
|
||||||
|
MySQL error code 1459 (ER_TABLE_NEEDS_UPGRADE): Table upgrade required. Please do "REPAIR TABLE `%-.32s`" or dump/reload to fix it!
|
||||||
|
MySQL error code 1461 (ER_MAX_PREPARED_STMT_COUNT_REACHED): Can't create more than max_prepared_stmt_count statements (current value: %lu)
|
||||||
|
|
|
@ -787,6 +787,7 @@ f1 f2 f3
|
||||||
222222 bbbbbb 2
|
222222 bbbbbb 2
|
||||||
drop table t1;
|
drop table t1;
|
||||||
Illegal ndb error code: 1186
|
Illegal ndb error code: 1186
|
||||||
|
MySQL error code 1186 (ER_FLUSH_MASTER_BINLOG_CLOSED): Binlog closed, cannot RESET MASTER
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
a VARBINARY(40) NOT NULL,
|
a VARBINARY(40) NOT NULL,
|
||||||
b VARCHAR (256) CHARACTER SET UTF8 NOT NULL,
|
b VARCHAR (256) CHARACTER SET UTF8 NOT NULL,
|
||||||
|
|
|
@ -17,3 +17,17 @@ enable_query_log;
|
||||||
# As there is no error code defined for 10000, expect error
|
# As there is no error code defined for 10000, expect error
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MY_PERROR 10000 2>&1
|
--exec $MY_PERROR 10000 2>&1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#10143 (Perror not showing error description)
|
||||||
|
#
|
||||||
|
|
||||||
|
# test reported case
|
||||||
|
--exec $MY_PERROR 1062 2>&1
|
||||||
|
|
||||||
|
# test errors that contain characters to escape in the text.
|
||||||
|
--exec $MY_PERROR 1076 2>&1
|
||||||
|
--exec $MY_PERROR 1459 2>&1
|
||||||
|
--exec $MY_PERROR 1461 2>&1
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue