Commit 28a18fef authored by Otto Kekäläinen's avatar Otto Kekäläinen
Browse files

Merge tag 'upstream/5.5.50' into ubuntu-14.04

Upstream version 5.5.50
parents 3747036d 95c6357a
/* /* Copyright (c) 2000, 2016, Oracle and/or its affiliates.
Copyright (c) 2000, 2010, Oracle and/or its affiliates. Copyright (c) 2009, 2016, MariaDB
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
......
/* /*
Copyright (c) 2002, 2013, Oracle and/or its affiliates. Copyright (c) 2002, 2016, Oracle and/or its affiliates.
Copyright (c) 2011, 2013, Monty Program Ab Copyright (c) 2011, 2016, MariaDB
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
...@@ -480,8 +480,10 @@ sp_name::init_qname(THD *thd) ...@@ -480,8 +480,10 @@ sp_name::init_qname(THD *thd)
bool bool
check_routine_name(LEX_STRING *ident) check_routine_name(LEX_STRING *ident)
{ {
if (!ident || !ident->str || !ident->str[0] || DBUG_ASSERT(ident);
ident->str[ident->length-1] == ' ') DBUG_ASSERT(ident->str);
if (!ident->str[0] || ident->str[ident->length-1] == ' ')
{ {
my_error(ER_SP_WRONG_NAME, MYF(0), ident->str); my_error(ER_SP_WRONG_NAME, MYF(0), ident->str);
return TRUE; return TRUE;
......
...@@ -1092,7 +1092,8 @@ void end_connection(THD *thd) ...@@ -1092,7 +1092,8 @@ void end_connection(THD *thd)
} }
if (!thd->killed && (net->error && net->vio != 0)) if (!thd->killed && (net->error && net->vio != 0))
thd->print_aborted_warning(1, ER(ER_UNKNOWN_ERROR)); thd->print_aborted_warning(1,
thd->stmt_da->is_error() ? thd->stmt_da->message() : ER(ER_UNKNOWN_ERROR));
} }
......
...@@ -1452,32 +1452,35 @@ static int lex_one_token(YYSTYPE *yylval, THD *thd) ...@@ -1452,32 +1452,35 @@ static int lex_one_token(YYSTYPE *yylval, THD *thd)
return (BIN_NUM); return (BIN_NUM);
case MY_LEX_CMP_OP: // Incomplete comparison operator case MY_LEX_CMP_OP: // Incomplete comparison operator
lip->next_state= MY_LEX_START; // Allow signed numbers
if (state_map[(uchar) lip->yyPeek()] == MY_LEX_CMP_OP || if (state_map[(uchar) lip->yyPeek()] == MY_LEX_CMP_OP ||
state_map[(uchar) lip->yyPeek()] == MY_LEX_LONG_CMP_OP) state_map[(uchar) lip->yyPeek()] == MY_LEX_LONG_CMP_OP)
lip->yySkip();
if ((tokval = find_keyword(lip, lip->yyLength() + 1, 0)))
{ {
lip->next_state= MY_LEX_START; // Allow signed numbers lip->yySkip();
return(tokval); if ((tokval= find_keyword(lip, 2, 0)))
return(tokval);
lip->yyUnget();
} }
state = MY_LEX_CHAR; // Something fishy found return(c);
break;
case MY_LEX_LONG_CMP_OP: // Incomplete comparison operator case MY_LEX_LONG_CMP_OP: // Incomplete comparison operator
lip->next_state= MY_LEX_START;
if (state_map[(uchar) lip->yyPeek()] == MY_LEX_CMP_OP || if (state_map[(uchar) lip->yyPeek()] == MY_LEX_CMP_OP ||
state_map[(uchar) lip->yyPeek()] == MY_LEX_LONG_CMP_OP) state_map[(uchar) lip->yyPeek()] == MY_LEX_LONG_CMP_OP)
{ {
lip->yySkip(); lip->yySkip();
if (state_map[(uchar) lip->yyPeek()] == MY_LEX_CMP_OP) if (state_map[(uchar) lip->yyPeek()] == MY_LEX_CMP_OP)
{
lip->yySkip(); lip->yySkip();
if ((tokval= find_keyword(lip, 3, 0)))
return(tokval);
lip->yyUnget();
}
if ((tokval= find_keyword(lip, 2, 0)))
return(tokval);
lip->yyUnget();
} }
if ((tokval = find_keyword(lip, lip->yyLength() + 1, 0))) return(c);
{
lip->next_state= MY_LEX_START; // Found long op
return(tokval);
}
state = MY_LEX_CHAR; // Something fishy found
break;
case MY_LEX_BOOL: case MY_LEX_BOOL:
if (c != lip->yyPeek()) if (c != lip->yyPeek())
......
...@@ -61,6 +61,8 @@ class MY_LOCALE ...@@ -61,6 +61,8 @@ class MY_LOCALE
grouping(grouping_par), grouping(grouping_par),
errmsgs(errmsgs_par) errmsgs(errmsgs_par)
{} {}
uint repertoire() const
{ return is_ascii ? MY_REPERTOIRE_ASCII : MY_REPERTOIRE_EXTENDED; }
}; };
/* Exported variables */ /* Exported variables */
......
...@@ -5395,6 +5395,7 @@ bool check_global_access(THD *thd, ulong want_access, bool no_errors) ...@@ -5395,6 +5395,7 @@ bool check_global_access(THD *thd, ulong want_access, bool no_errors)
temporary table flag) temporary table flag)
@param alter_info [in] Initial list of columns and indexes for the @param alter_info [in] Initial list of columns and indexes for the
table to be created table to be created
@param create_db [in] Database of the created table
@retval @retval
false ok. false ok.
...@@ -5403,7 +5404,8 @@ bool check_global_access(THD *thd, ulong want_access, bool no_errors) ...@@ -5403,7 +5404,8 @@ bool check_global_access(THD *thd, ulong want_access, bool no_errors)
*/ */
bool check_fk_parent_table_access(THD *thd, bool check_fk_parent_table_access(THD *thd,
HA_CREATE_INFO *create_info, HA_CREATE_INFO *create_info,
Alter_info *alter_info) Alter_info *alter_info,
const char* create_db)
{ {
Key *key; Key *key;
List_iterator<Key> key_iterator(alter_info->key_list); List_iterator<Key> key_iterator(alter_info->key_list);
...@@ -5443,10 +5445,28 @@ bool check_fk_parent_table_access(THD *thd, ...@@ -5443,10 +5445,28 @@ bool check_fk_parent_table_access(THD *thd,
return true; return true;
} }
} }
else if (thd->lex->copy_db_to(&db_name.str, &db_name.length))
return true;
else else
is_qualified_table_name= false; {
if (!thd->db)
{
db_name.str= (char *) thd->memdup(create_db, strlen(create_db)+1);
db_name.length= strlen(create_db);
is_qualified_table_name= true;
if(create_db && check_db_name(&db_name))
{
my_error(ER_WRONG_DB_NAME, MYF(0), db_name.str);
return true;
}
}
else
{
if (thd->lex->copy_db_to(&db_name.str, &db_name.length))
return true;
else
is_qualified_table_name= false;
}
}
// if lower_case_table_names is set then convert tablename to lower case. // if lower_case_table_names is set then convert tablename to lower case.
if (lower_case_table_names) if (lower_case_table_names)
...@@ -7462,7 +7482,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables, ...@@ -7462,7 +7482,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables,
goto err; goto err;
} }
if (check_fk_parent_table_access(thd, &lex->create_info, &lex->alter_info)) if (check_fk_parent_table_access(thd, &lex->create_info, &lex->alter_info, create_table->db))
goto err; goto err;
error= FALSE; error= FALSE;
......
...@@ -47,7 +47,8 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables, ...@@ -47,7 +47,8 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables,
TABLE_LIST *create_table); TABLE_LIST *create_table);
bool check_fk_parent_table_access(THD *thd, bool check_fk_parent_table_access(THD *thd,
HA_CREATE_INFO *create_info, HA_CREATE_INFO *create_info,
Alter_info *alter_info); Alter_info *alter_info,
const char* create_db);
bool parse_sql(THD *thd, bool parse_sql(THD *thd,
Parser_state *parser_state, Parser_state *parser_state,
......
/* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2010, 2016, Oracle and/or its affiliates.
Copyright (c) 2011, 2016, MariaDB
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
......
...@@ -14586,7 +14586,8 @@ static Field *create_tmp_field_from_item(THD *thd, Item *item, TABLE *table, ...@@ -14586,7 +14586,8 @@ static Field *create_tmp_field_from_item(THD *thd, Item *item, TABLE *table,
item->collation.collation); item->collation.collation);
else else
new_field= item->make_string_field(table); new_field= item->make_string_field(table);
new_field->set_derivation(item->collation.derivation); new_field->set_derivation(item->collation.derivation,
item->collation.repertoire);
break; break;
case DECIMAL_RESULT: case DECIMAL_RESULT:
new_field= Field_new_decimal::create_from_item(item); new_field= Field_new_decimal::create_from_item(item);
...@@ -14825,7 +14826,8 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type, ...@@ -14825,7 +14826,8 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
modify_item, convert_blob_length); modify_item, convert_blob_length);
case Item::TYPE_HOLDER: case Item::TYPE_HOLDER:
result= ((Item_type_holder *)item)->make_field_by_type(table); result= ((Item_type_holder *)item)->make_field_by_type(table);
result->set_derivation(item->collation.derivation); result->set_derivation(item->collation.derivation,
item->collation.repertoire);
return result; return result;
default: // Dosen't have to be stored default: // Dosen't have to be stored
return 0; return 0;
......
...@@ -6305,7 +6305,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, ...@@ -6305,7 +6305,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
till this point for the alter operation. till this point for the alter operation.
*/ */
if ((alter_info->flags & ALTER_FOREIGN_KEY) && if ((alter_info->flags & ALTER_FOREIGN_KEY) &&
check_fk_parent_table_access(thd, create_info, alter_info)) check_fk_parent_table_access(thd, create_info, alter_info, new_db))
goto err; goto err;
/* /*
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -197,465 +197,462 @@ ...@@ -197,465 +197,462 @@
ENGINES_SYM = 413, ENGINES_SYM = 413,
ENGINE_SYM = 414, ENGINE_SYM = 414,
ENUM = 415, ENUM = 415,
EQ = 416, EQUAL_SYM = 416,
EQUAL_SYM = 417, ERROR_SYM = 417,
ERROR_SYM = 418, ERRORS = 418,
ERRORS = 419, ESCAPED = 419,
ESCAPED = 420, ESCAPE_SYM = 420,
ESCAPE_SYM = 421, EVENTS_SYM = 421,
EVENTS_SYM = 422, EVENT_SYM = 422,
EVENT_SYM = 423, EVERY_SYM = 423,
EVERY_SYM = 424, EXAMINED_SYM = 424,
EXAMINED_SYM = 425, EXECUTE_SYM = 425,
EXECUTE_SYM = 426, EXISTS = 426,
EXISTS = 427, EXIT_SYM = 427,
EXIT_SYM = 428, EXPANSION_SYM = 428,
EXPANSION_SYM = 429, EXTENDED_SYM = 429,
EXTENDED_SYM = 430, EXTENT_SIZE_SYM = 430,
EXTENT_SIZE_SYM = 431, EXTRACT_SYM = 431,
EXTRACT_SYM = 432, FALSE_SYM = 432,
FALSE_SYM = 433, FAST_SYM = 433,
FAST_SYM = 434, FAULTS_SYM = 434,
FAULTS_SYM = 435, FETCH_SYM = 435,
FETCH_SYM = 436, FILE_SYM = 436,
FILE_SYM = 437, FIRST_SYM = 437,
FIRST_SYM = 438, FIXED_SYM = 438,
FIXED_SYM = 439, FLOAT_NUM = 439,
FLOAT_NUM = 440, FLOAT_SYM = 440,
FLOAT_SYM = 441, FLUSH_SYM = 441,
FLUSH_SYM = 442, FORCE_SYM = 442,
FORCE_SYM = 443, FOREIGN = 443,
FOREIGN = 444, FOR_SYM = 444,
FOR_SYM = 445, FOUND_SYM = 445,
FOUND_SYM = 446, FROM = 446,
FROM = 447, FULL = 447,
FULL = 448, FULLTEXT_SYM = 448,
FULLTEXT_SYM = 449, FUNCTION_SYM = 449,
FUNCTION_SYM = 450, GE = 450,
GE = 451, GENERAL = 451,
GENERAL = 452, GENERATED_SYM = 452,
GENERATED_SYM = 453, GEOMETRYCOLLECTION = 453,
GEOMETRYCOLLECTION = 454, GEOMETRY_SYM = 454,
GEOMETRY_SYM = 455, GET_FORMAT = 455,
GET_FORMAT = 456, GLOBAL_SYM = 456,
GLOBAL_SYM = 457, GRANT = 457,
GRANT = 458, GRANTS = 458,
GRANTS = 459, GROUP_SYM = 459,
GROUP_SYM = 460, GROUP_CONCAT_SYM = 460,
GROUP_CONCAT_SYM = 461, HANDLER_SYM = 461,
GT_SYM = 462, HARD_SYM = 462,
HANDLER_SYM = 463, HASH_SYM = 463,
HARD_SYM = 464, HAVING = 464,
HASH_SYM = 465, HELP_SYM = 465,
HAVING = 466, HEX_NUM = 466,
HELP_SYM = 467, HEX_STRING = 467,
HEX_NUM = 468, HIGH_PRIORITY = 468,
HEX_STRING = 469, HOST_SYM = 469,
HIGH_PRIORITY = 470, HOSTS_SYM = 470,
HOST_SYM = 471, HOUR_MICROSECOND_SYM = 471,
HOSTS_SYM = 472, HOUR_MINUTE_SYM = 472,
HOUR_MICROSECOND_SYM = 473, HOUR_SECOND_SYM = 473,
HOUR_MINUTE_SYM = 474, HOUR_SYM = 474,
HOUR_SECOND_SYM = 475, IDENT = 475,
HOUR_SYM = 476, IDENTIFIED_SYM = 476,
IDENT = 477, IDENT_QUOTED = 477,
IDENTIFIED_SYM = 478, IF = 478,
IDENT_QUOTED = 479, IGNORE_SYM = 479,
IF = 480, IGNORE_SERVER_IDS_SYM = 480,
IGNORE_SYM = 481, IMPORT = 481,
IGNORE_SERVER_IDS_SYM = 482, INDEXES = 482,
IMPORT = 483, INDEX_SYM = 483,
INDEXES = 484, INDEX_STATS_SYM = 484,
INDEX_SYM = 485, INFILE = 485,
INDEX_STATS_SYM = 486, INITIAL_SIZE_SYM = 486,
INFILE = 487, INNER_SYM = 487,
INITIAL_SIZE_SYM = 488, INOUT_SYM = 488,
INNER_SYM = 489, INSENSITIVE_SYM = 489,
INOUT_SYM = 490, INSERT = 490,
INSENSITIVE_SYM = 491, INSERT_METHOD = 491,
INSERT = 492, INSTALL_SYM = 492,
INSERT_METHOD = 493, INTERVAL_SYM = 493,
INSTALL_SYM = 494, INTO = 494,
INTERVAL_SYM = 495, INT_SYM = 495,
INTO = 496, INVOKER_SYM = 496,
INT_SYM = 497, IN_SYM = 497,
INVOKER_SYM = 498, IO_SYM = 498,
IN_SYM = 499, IPC_SYM = 499,
IO_SYM = 500, IS = 500,
IPC_SYM = 501, ISOLATION = 501,
IS = 502, ISSUER_SYM = 502,
ISOLATION = 503, ITERATE_SYM = 503,
ISSUER_SYM = 504, JOIN_SYM = 504,
ITERATE_SYM = 505, KEYS = 505,
JOIN_SYM = 506, KEY_BLOCK_SIZE = 506,
KEYS = 507, KEY_SYM = 507,
KEY_BLOCK_SIZE = 508, KILL_SYM = 508,
KEY_SYM = 509, LANGUAGE_SYM = 509,
KILL_SYM = 510, LAST_SYM = 510,
LANGUAGE_SYM = 511, LAST_VALUE = 511,
LAST_SYM = 512, LE = 512,
LAST_VALUE = 513, LEADING = 513,
LE = 514, LEAVES = 514,
LEADING = 515, LEAVE_SYM = 515,
LEAVES = 516, LEFT = 516,
LEAVE_SYM = 517, LESS_SYM = 517,
LEFT = 518, LEVEL_SYM = 518,
LESS_SYM = 519, LEX_HOSTNAME = 519,
LEVEL_SYM = 520, LIKE = 520,
LEX_HOSTNAME = 521, LIMIT = 521,
LIKE = 522, LINEAR_SYM = 522,
LIMIT = 523, LINES = 523,
LINEAR_SYM = 524, LINESTRING = 524,
LINES = 525, LIST_SYM = 525,
LINESTRING = 526, LOAD = 526,
LIST_SYM = 527, LOCAL_SYM = 527,
LOAD = 528, LOCATOR_SYM = 528,
LOCAL_SYM = 529, LOCKS_SYM = 529,
LOCATOR_SYM = 530, LOCK_SYM = 530,
LOCKS_SYM = 531, LOGFILE_SYM = 531,
LOCK_SYM = 532, LOGS_SYM = 532,
LOGFILE_SYM = 533, LONGBLOB = 533,
LOGS_SYM = 534, LONGTEXT = 534,
LONGBLOB = 535, LONG_NUM = 535,
LONGTEXT = 536, LONG_SYM = 536,
LONG_NUM = 537, LOOP_SYM = 537,
LONG_SYM = 538, LOW_PRIORITY = 538,
LOOP_SYM = 539, MASTER_CONNECT_RETRY_SYM = 539,
LOW_PRIORITY = 540, MASTER_HOST_SYM = 540,
LT = 541, MASTER_LOG_FILE_SYM = 541,
MASTER_CONNECT_RETRY_SYM = 542, MASTER_LOG_POS_SYM = 542,
MASTER_HOST_SYM = 543, MASTER_PASSWORD_SYM = 543,
MASTER_LOG_FILE_SYM = 544, MASTER_PORT_SYM = 544,
MASTER_LOG_POS_SYM = 545, MASTER_SERVER_ID_SYM = 545,
MASTER_PASSWORD_SYM = 546, MASTER_SSL_CAPATH_SYM = 546,
MASTER_PORT_SYM = 547, MASTER_SSL_CA_SYM = 547,
MASTER_SERVER_ID_SYM = 548, MASTER_SSL_CERT_SYM = 548,
MASTER_SSL_CAPATH_SYM = 549, MASTER_SSL_CIPHER_SYM = 549,
MASTER_SSL_CA_SYM = 550, MASTER_SSL_KEY_SYM = 550,
MASTER_SSL_CERT_SYM = 551, MASTER_SSL_SYM = 551,
MASTER_SSL_CIPHER_SYM = 552, MASTER_SSL_VERIFY_SERVER_CERT_SYM = 552,
MASTER_SSL_KEY_SYM = 553, MASTER_SYM = 553,
MASTER_SSL_SYM = 554, MASTER_USER_SYM = 554,
MASTER_SSL_VERIFY_SERVER_CERT_SYM = 555, MASTER_HEARTBEAT_PERIOD_SYM = 555,
MASTER_SYM = 556, MATCH = 556,
MASTER_USER_SYM = 557, MAX_CONNECTIONS_PER_HOUR = 557,
MASTER_HEARTBEAT_PERIOD_SYM = 558, MAX_QUERIES_PER_HOUR = 558,
MATCH = 559, MAX_ROWS = 559,
MAX_CONNECTIONS_PER_HOUR = 560, MAX_SIZE_SYM = 560,
MAX_QUERIES_PER_HOUR = 561, MAX_SYM = 561,
MAX_ROWS = 562, MAX_UPDATES_PER_HOUR = 562,
MAX_SIZE_SYM = 563, MAX_USER_CONNECTIONS_SYM = 563,
MAX_SYM = 564, MAX_VALUE_SYM = 564,
MAX_UPDATES_PER_HOUR = 565, MEDIUMBLOB = 565,
MAX_USER_CONNECTIONS_SYM = 566, MEDIUMINT = 566,
MAX_VALUE_SYM = 567, MEDIUMTEXT = 567,
MEDIUMBLOB = 568, MEDIUM_SYM = 568,
MEDIUMINT = 569, MEMORY_SYM = 569,
MEDIUMTEXT = 570, MERGE_SYM = 570,
MEDIUM_SYM = 571, MESSAGE_TEXT_SYM = 571,
MEMORY_SYM = 572, MICROSECOND_SYM = 572,
MERGE_SYM = 573, MIGRATE_SYM = 573,
MESSAGE_TEXT_SYM = 574, MINUTE_MICROSECOND_SYM = 574,
MICROSECOND_SYM = 575, MINUTE_SECOND_SYM = 575,
MIGRATE_SYM = 576, MINUTE_SYM = 576,
MINUTE_MICROSECOND_SYM = 577, MIN_ROWS = 577,
MINUTE_SECOND_SYM = 578, MIN_SYM = 578,
MINUTE_SYM = 579, MODE_SYM = 579,
MIN_ROWS = 580, MODIFIES_SYM = 580,
MIN_SYM = 581, MODIFY_SYM = 581,
MODE_SYM = 582, MOD_SYM = 582,
MODIFIES_SYM = 583, MONTH_SYM = 583,
MODIFY_SYM = 584, MULTILINESTRING = 584,
MOD_SYM = 585, MULTIPOINT = 585,
MONTH_SYM = 586, MULTIPOLYGON = 586,
MULTILINESTRING = 587, MUTEX_SYM = 587,
MULTIPOINT = 588, MYSQL_SYM = 588,
MULTIPOLYGON = 589, MYSQL_ERRNO_SYM = 589,
MUTEX_SYM = 590, NAMES_SYM = 590,
MYSQL_SYM = 591, NAME_SYM = 591,
MYSQL_ERRNO_SYM = 592, NATIONAL_SYM = 592,
NAMES_SYM = 593, NATURAL = 593,
NAME_SYM = 594, NCHAR_STRING = 594,
NATIONAL_SYM = 595, NCHAR_SYM = 595,
NATURAL = 596, NDBCLUSTER_SYM = 596,
NCHAR_STRING = 597, NE = 597,
NCHAR_SYM = 598, NEG = 598,
NDBCLUSTER_SYM = 599, NEW_SYM = 599,
NE = 600, NEXT_SYM = 600,
NEG = 601, NODEGROUP_SYM = 601,
NEW_SYM = 602, NONE_SYM = 602,
NEXT_SYM = 603, NOT2_SYM = 603,
NODEGROUP_SYM = 604, NOT_SYM = 604,
NONE_SYM = 605, NOW_SYM = 605,
NOT2_SYM = 606, NO_SYM = 606,
NOT_SYM = 607, NO_WAIT_SYM = 607,
NOW_SYM = 608, NO_WRITE_TO_BINLOG = 608,
NO_SYM = 609, NULL_SYM = 609,
NO_WAIT_SYM = 610, NUM = 610,
NO_WRITE_TO_BINLOG = 611, NUMERIC_SYM = 611,
NULL_SYM = 612, NVARCHAR_SYM = 612,
NUM = 613, OFFSET_SYM = 613,
NUMERIC_SYM = 614, OLD_PASSWORD = 614,
NVARCHAR_SYM = 615, ON = 615,
OFFSET_SYM = 616, ONE_SHOT_SYM = 616,
OLD_PASSWORD = 617, ONE_SYM = 617,
ON = 618, ONLINE_SYM = 618,
ONE_SHOT_SYM = 619, OPEN_SYM = 619,
ONE_SYM = 620, OPTIMIZE = 620,
ONLINE_SYM = 621, OPTIONS_SYM = 621,
OPEN_SYM = 622, OPTION = 622,
OPTIMIZE = 623, OPTIONALLY = 623,
OPTIONS_SYM = 624, OR2_SYM = 624,
OPTION = 625, ORDER_SYM = 625,
OPTIONALLY = 626, OR_OR_SYM = 626,
OR2_SYM = 627, OR_SYM = 627,
ORDER_SYM = 628, OUTER = 628,
OR_OR_SYM = 629, OUTFILE = 629,
OR_SYM = 630, OUT_SYM = 630,
OUTER = 631, OWNER_SYM = 631,
OUTFILE = 632, PACK_KEYS_SYM = 632,
OUT_SYM = 633, PAGE_SYM = 633,
OWNER_SYM = 634, PAGE_CHECKSUM_SYM = 634,
PACK_KEYS_SYM = 635, PARAM_MARKER = 635,
PAGE_SYM = 636, PARSER_SYM = 636,
PAGE_CHECKSUM_SYM = 637, PARSE_VCOL_EXPR_SYM = 637,
PARAM_MARKER = 638, PARTIAL = 638,
PARSER_SYM = 639, PARTITIONING_SYM = 639,
PARSE_VCOL_EXPR_SYM = 640, PARTITIONS_SYM = 640,
PARTIAL = 641, PARTITION_SYM = 641,
PARTITIONING_SYM = 642, PASSWORD = 642,
PARTITIONS_SYM = 643, PERSISTENT_SYM = 643,
PARTITION_SYM = 644, PHASE_SYM = 644,
PASSWORD = 645, PLUGINS_SYM = 645,
PERSISTENT_SYM = 646, PLUGIN_SYM = 646,
PHASE_SYM = 647, POINT_SYM = 647,
PLUGINS_SYM = 648, POLYGON = 648,
PLUGIN_SYM = 649, PORT_SYM = 649,
POINT_SYM = 650, POSITION_SYM = 650,
POLYGON = 651, PRECISION = 651,
PORT_SYM = 652, PREPARE_SYM = 652,
POSITION_SYM = 653, PRESERVE_SYM = 653,
PRECISION = 654, PREV_SYM = 654,
PREPARE_SYM = 655, PRIMARY_SYM = 655,
PRESERVE_SYM = 656, PRIVILEGES = 656,
PREV_SYM = 657, PROCEDURE_SYM = 657,
PRIMARY_SYM = 658, PROCESS = 658,
PRIVILEGES = 659, PROCESSLIST_SYM = 659,
PROCEDURE_SYM = 660, PROFILE_SYM = 660,
PROCESS = 661, PROFILES_SYM = 661,
PROCESSLIST_SYM = 662, PROXY_SYM = 662,
PROFILE_SYM = 663, PURGE = 663,
PROFILES_SYM = 664, QUARTER_SYM = 664,
PROXY_SYM = 665, QUERY_SYM = 665,
PURGE = 666, QUICK = 666,
QUARTER_SYM = 667, RANGE_SYM = 667,
QUERY_SYM = 668, READS_SYM = 668,
QUICK = 669, READ_ONLY_SYM = 669,
RANGE_SYM = 670, READ_SYM = 670,
READS_SYM = 671, READ_WRITE_SYM = 671,
READ_ONLY_SYM = 672, REAL = 672,
READ_SYM = 673, REBUILD_SYM = 673,
READ_WRITE_SYM = 674, RECOVER_SYM = 674,
REAL = 675, REDOFILE_SYM = 675,
REBUILD_SYM = 676, REDO_BUFFER_SIZE_SYM = 676,
RECOVER_SYM = 677, REDUNDANT_SYM = 677,
REDOFILE_SYM = 678, REFERENCES = 678,
REDO_BUFFER_SIZE_SYM = 679, REGEXP = 679,
REDUNDANT_SYM = 680, RELAY = 680,
REFERENCES = 681, RELAYLOG_SYM = 681,
REGEXP = 682, RELAY_LOG_FILE_SYM = 682,
RELAY = 683, RELAY_LOG_POS_SYM = 683,
RELAYLOG_SYM = 684, RELAY_THREAD = 684,
RELAY_LOG_FILE_SYM = 685, RELEASE_SYM = 685,
RELAY_LOG_POS_SYM = 686, RELOAD = 686,
RELAY_THREAD = 687, REMOVE_SYM = 687,
RELEASE_SYM = 688, RENAME = 688,
RELOAD = 689, REORGANIZE_SYM = 689,
REMOVE_SYM = 690, REPAIR = 690,
RENAME = 691, REPEATABLE_SYM = 691,
REORGANIZE_SYM = 692, REPEAT_SYM = 692,
REPAIR = 693, REPLACE = 693,
REPEATABLE_SYM = 694, REPLICATION = 694,
REPEAT_SYM = 695, REQUIRE_SYM = 695,
REPLACE = 696, RESET_SYM = 696,
REPLICATION = 697, RESIGNAL_SYM = 697,
REQUIRE_SYM = 698, RESOURCES = 698,
RESET_SYM = 699, RESTORE_SYM = 699,
RESIGNAL_SYM = 700, RESTRICT = 700,
RESOURCES = 701, RESUME_SYM = 701,
RESTORE_SYM = 702, RETURNS_SYM = 702,
RESTRICT = 703, RETURN_SYM = 703,
RESUME_SYM = 704, REVOKE = 704,
RETURNS_SYM = 705, RIGHT = 705,
RETURN_SYM = 706, ROLLBACK_SYM = 706,
REVOKE = 707, ROLLUP_SYM = 707,
RIGHT = 708, ROUTINE_SYM = 708,
ROLLBACK_SYM = 709, ROWS_SYM = 709,
ROLLUP_SYM = 710, ROW_FORMAT_SYM = 710,
ROUTINE_SYM = 711, ROW_SYM = 711,
ROWS_SYM = 712, RTREE_SYM = 712,
ROW_FORMAT_SYM = 713, SAVEPOINT_SYM = 713,
ROW_SYM = 714, SCHEDULE_SYM = 714,
RTREE_SYM = 715, SCHEMA_NAME_SYM = 715,
SAVEPOINT_SYM = 716, SECOND_MICROSECOND_SYM = 716,
SCHEDULE_SYM = 717, SECOND_SYM = 717,
SCHEMA_NAME_SYM = 718, SECURITY_SYM = 718,
SECOND_MICROSECOND_SYM = 719, SELECT_SYM = 719,
SECOND_SYM = 720, SENSITIVE_SYM = 720,
SECURITY_SYM = 721, SEPARATOR_SYM = 721,
SELECT_SYM = 722, SERIALIZABLE_SYM = 722,
SENSITIVE_SYM = 723, SERIAL_SYM = 723,
SEPARATOR_SYM = 724, SESSION_SYM = 724,
SERIALIZABLE_SYM = 725, SERVER_SYM = 725,
SERIAL_SYM = 726, SERVER_OPTIONS = 726,
SESSION_SYM = 727, SET = 727,
SERVER_SYM = 728, SET_VAR = 728,
SERVER_OPTIONS = 729, SHARE_SYM = 729,
SET = 730, SHIFT_LEFT = 730,
SET_VAR = 731, SHIFT_RIGHT = 731,
SHARE_SYM = 732, SHOW = 732,
SHIFT_LEFT = 733, SHUTDOWN = 733,
SHIFT_RIGHT = 734, SIGNAL_SYM = 734,
SHOW = 735, SIGNED_SYM = 735,
SHUTDOWN = 736, SIMPLE_SYM = 736,
SIGNAL_SYM = 737, SLAVE = 737,
SIGNED_SYM = 738, SLOW = 738,
SIMPLE_SYM = 739, SMALLINT = 739,
SLAVE = 740, SNAPSHOT_SYM = 740,
SLOW = 741, SOCKET_SYM = 741,
SMALLINT = 742, SOFT_SYM = 742,
SNAPSHOT_SYM = 743, SONAME_SYM = 743,
SOCKET_SYM = 744, SOUNDS_SYM = 744,
SOFT_SYM = 745, SOURCE_SYM = 745,
SONAME_SYM = 746, SPATIAL_SYM = 746,
SOUNDS_SYM = 747, SPECIFIC_SYM = 747,
SOURCE_SYM = 748, SQLEXCEPTION_SYM = 748,
SPATIAL_SYM = 749, SQLSTATE_SYM = 749,
SPECIFIC_SYM = 750, SQLWARNING_SYM = 750,
SQLEXCEPTION_SYM = 751, SQL_BIG_RESULT = 751,
SQLSTATE_SYM = 752, SQL_BUFFER_RESULT = 752,
SQLWARNING_SYM = 753, SQL_CACHE_SYM = 753,
SQL_BIG_RESULT = 754, SQL_CALC_FOUND_ROWS = 754,
SQL_BUFFER_RESULT = 755, SQL_NO_CACHE_SYM = 755,
SQL_CACHE_SYM = 756, SQL_SMALL_RESULT = 756,
SQL_CALC_FOUND_ROWS = 757, SQL_SYM = 757,
SQL_NO_CACHE_SYM = 758, SQL_THREAD = 758,
SQL_SMALL_RESULT = 759, SSL_SYM = 759,
SQL_SYM = 760, STARTING = 760,
SQL_THREAD = 761, STARTS_SYM = 761,
SSL_SYM = 762, START_SYM = 762,
STARTING = 763, STATUS_SYM = 763,
STARTS_SYM = 764, STDDEV_SAMP_SYM = 764,
START_SYM = 765, STD_SYM = 765,
STATUS_SYM = 766, STOP_SYM = 766,
STDDEV_SAMP_SYM = 767, STORAGE_SYM = 767,
STD_SYM = 768, STRAIGHT_JOIN = 768,
STOP_SYM = 769, STRING_SYM = 769,
STORAGE_SYM = 770, SUBCLASS_ORIGIN_SYM = 770,
STRAIGHT_JOIN = 771, SUBDATE_SYM = 771,
STRING_SYM = 772, SUBJECT_SYM = 772,
SUBCLASS_ORIGIN_SYM = 773, SUBPARTITIONS_SYM = 773,
SUBDATE_SYM = 774, SUBPARTITION_SYM = 774,
SUBJECT_SYM = 775, SUBSTRING = 775,
SUBPARTITIONS_SYM = 776, SUM_SYM = 776,
SUBPARTITION_SYM = 777, SUPER_SYM = 777,
SUBSTRING = 778, SUSPEND_SYM = 778,
SUM_SYM = 779, SWAPS_SYM = 779,
SUPER_SYM = 780, SWITCHES_SYM = 780,
SUSPEND_SYM = 781, SYSDATE = 781,
SWAPS_SYM = 782, TABLES = 782,
SWITCHES_SYM = 783, TABLESPACE = 783,
SYSDATE = 784, TABLE_REF_PRIORITY = 784,
TABLES = 785, TABLE_STATS_SYM = 785,
TABLESPACE = 786, TABLE_SYM = 786,
TABLE_REF_PRIORITY = 787, TABLE_CHECKSUM_SYM = 787,
TABLE_STATS_SYM = 788, TABLE_NAME_SYM = 788,
TABLE_SYM = 789, TEMPORARY = 789,
TABLE_CHECKSUM_SYM = 790, TEMPTABLE_SYM = 790,
TABLE_NAME_SYM = 791, TERMINATED = 791,
TEMPORARY = 792, TEXT_STRING = 792,
TEMPTABLE_SYM = 793, TEXT_SYM = 793,
TERMINATED = 794, THAN_SYM = 794,
TEXT_STRING = 795, THEN_SYM = 795,
TEXT_SYM = 796, TIMESTAMP = 796,
THAN_SYM = 797, TIMESTAMP_ADD = 797,
THEN_SYM = 798, TIMESTAMP_DIFF = 798,
TIMESTAMP = 799, TIME_SYM = 799,
TIMESTAMP_ADD = 800, TINYBLOB = 800,
TIMESTAMP_DIFF = 801, TINYINT = 801,
TIME_SYM = 802, TINYTEXT = 802,
TINYBLOB = 803, TO_SYM = 803,
TINYINT = 804, TRAILING = 804,
TINYTEXT = 805, TRANSACTION_SYM = 805,
TO_SYM = 806, TRANSACTIONAL_SYM = 806,
TRAILING = 807, TRIGGERS_SYM = 807,
TRANSACTION_SYM = 808, TRIGGER_SYM = 808,
TRANSACTIONAL_SYM = 809, TRIM = 809,
TRIGGERS_SYM = 810, TRUE_SYM = 810,
TRIGGER_SYM = 811, TRUNCATE_SYM = 811,
TRIM = 812, TYPES_SYM = 812,
TRUE_SYM = 813, TYPE_SYM = 813,
TRUNCATE_SYM = 814, UDF_RETURNS_SYM = 814,
TYPES_SYM = 815, ULONGLONG_NUM = 815,
TYPE_SYM = 816, UNCOMMITTED_SYM = 816,
UDF_RETURNS_SYM = 817, UNDEFINED_SYM = 817,
ULONGLONG_NUM = 818, UNDERSCORE_CHARSET = 818,
UNCOMMITTED_SYM = 819, UNDOFILE_SYM = 819,
UNDEFINED_SYM = 820, UNDO_BUFFER_SIZE_SYM = 820,
UNDERSCORE_CHARSET = 821, UNDO_SYM = 821,
UNDOFILE_SYM = 822, UNICODE_SYM = 822,
UNDO_BUFFER_SIZE_SYM = 823, UNINSTALL_SYM = 823,
UNDO_SYM = 824, UNION_SYM = 824,
UNICODE_SYM = 825, UNIQUE_SYM = 825,
UNINSTALL_SYM = 826, UNKNOWN_SYM = 826,
UNION_SYM = 827, UNLOCK_SYM = 827,
UNIQUE_SYM = 828, UNSIGNED = 828,
UNKNOWN_SYM = 829, UNTIL_SYM = 829,
UNLOCK_SYM = 830, UPDATE_SYM = 830,
UNSIGNED = 831, UPGRADE_SYM = 831,
UNTIL_SYM = 832, USAGE = 832,
UPDATE_SYM = 833, USER = 833,
UPGRADE_SYM = 834, USER_STATS_SYM = 834,
USAGE = 835, USE_FRM = 835,
USER = 836, USE_SYM = 836,
USER_STATS_SYM = 837, USING = 837,
USE_FRM = 838, UTC_DATE_SYM = 838,
USE_SYM = 839, UTC_TIMESTAMP_SYM = 839,
USING = 840, UTC_TIME_SYM = 840,
UTC_DATE_SYM = 841, VALUES = 841,
UTC_TIMESTAMP_SYM = 842, VALUE_SYM = 842,
UTC_TIME_SYM = 843, VARBINARY = 843,
VALUES = 844, VARCHAR = 844,
VALUE_SYM = 845, VARIABLES = 845,
VARBINARY = 846, VARIANCE_SYM = 846,
VARCHAR = 847, VARYING = 847,
VARIABLES = 848, VAR_SAMP_SYM = 848,
VARIANCE_SYM = 849, VIA_SYM = 849,
VARYING = 850, VIEW_SYM = 850,
VAR_SAMP_SYM = 851, VIRTUAL_SYM = 851,
VIA_SYM = 852, WAIT_SYM = 852,
VIEW_SYM = 853, WARNINGS = 853,
VIRTUAL_SYM = 854, WEEK_SYM = 854,
WAIT_SYM = 855, WHEN_SYM = 855,
WARNINGS = 856, WHERE = 856,
WEEK_SYM = 857, WHILE_SYM = 857,
WHEN_SYM = 858, WITH = 858,
WHERE = 859, WITH_CUBE_SYM = 859,
WHILE_SYM = 860, WITH_ROLLUP_SYM = 860,
WITH = 861, WORK_SYM = 861,
WITH_CUBE_SYM = 862, WRAPPER_SYM = 862,
WITH_ROLLUP_SYM = 863, WRITE_SYM = 863,
WORK_SYM = 864, X509_SYM = 864,
WRAPPER_SYM = 865, XA_SYM = 865,
WRITE_SYM = 866, XML_SYM = 866,
X509_SYM = 867, XOR = 867,
XA_SYM = 868, YEAR_MONTH_SYM = 868,
XML_SYM = 869, YEAR_SYM = 869,
XOR = 870, ZEROFILL = 870,
YEAR_MONTH_SYM = 871, IMPOSSIBLE_ACTION = 871
YEAR_SYM = 872,
ZEROFILL = 873,
IMPOSSIBLE_ACTION = 874
}; };
#endif #endif
/* Tokens. */ /* Tokens. */
...@@ -817,465 +814,462 @@ ...@@ -817,465 +814,462 @@
#define ENGINES_SYM 413 #define ENGINES_SYM 413
#define ENGINE_SYM 414 #define ENGINE_SYM 414
#define ENUM 415 #define ENUM 415
#define EQ 416 #define EQUAL_SYM 416
#define EQUAL_SYM 417 #define ERROR_SYM 417
#define ERROR_SYM 418 #define ERRORS 418
#define ERRORS 419 #define ESCAPED 419
#define ESCAPED 420 #define ESCAPE_SYM 420
#define ESCAPE_SYM 421 #define EVENTS_SYM 421
#define EVENTS_SYM 422 #define EVENT_SYM 422
#define EVENT_SYM 423 #define EVERY_SYM 423
#define EVERY_SYM 424 #define EXAMINED_SYM 424
#define EXAMINED_SYM 425 #define EXECUTE_SYM 425
#define EXECUTE_SYM 426 #define EXISTS 426
#define EXISTS 427 #define EXIT_SYM 427
#define EXIT_SYM 428 #define EXPANSION_SYM 428
#define EXPANSION_SYM 429 #define EXTENDED_SYM 429
#define EXTENDED_SYM 430 #define EXTENT_SIZE_SYM 430
#define EXTENT_SIZE_SYM 431 #define EXTRACT_SYM 431
#define EXTRACT_SYM 432 #define FALSE_SYM 432
#define FALSE_SYM 433 #define FAST_SYM 433
#define FAST_SYM 434 #define FAULTS_SYM 434
#define FAULTS_SYM 435 #define FETCH_SYM 435
#define FETCH_SYM 436 #define FILE_SYM 436
#define FILE_SYM 437 #define FIRST_SYM 437
#define FIRST_SYM 438 #define FIXED_SYM 438
#define FIXED_SYM 439 #define FLOAT_NUM 439
#define FLOAT_NUM 440 #define FLOAT_SYM 440
#define FLOAT_SYM 441 #define FLUSH_SYM 441
#define FLUSH_SYM 442 #define FORCE_SYM 442
#define FORCE_SYM 443 #define FOREIGN 443
#define FOREIGN 444 #define FOR_SYM 444
#define FOR_SYM 445 #define FOUND_SYM 445
#define FOUND_SYM 446 #define FROM 446
#define FROM 447 #define FULL 447
#define FULL 448 #define FULLTEXT_SYM 448
#define FULLTEXT_SYM 449 #define FUNCTION_SYM 449
#define FUNCTION_SYM 450 #define GE 450
#define GE 451 #define GENERAL 451
#define GENERAL 452 #define GENERATED_SYM 452
#define GENERATED_SYM 453 #define GEOMETRYCOLLECTION 453
#define GEOMETRYCOLLECTION 454 #define GEOMETRY_SYM 454
#define GEOMETRY_SYM 455 #define GET_FORMAT 455
#define GET_FORMAT 456 #define GLOBAL_SYM 456
#define GLOBAL_SYM 457 #define GRANT 457
#define GRANT 458 #define GRANTS 458
#define GRANTS 459 #define GROUP_SYM 459
#define GROUP_SYM 460 #define GROUP_CONCAT_SYM 460
#define GROUP_CONCAT_SYM 461 #define HANDLER_SYM 461
#define GT_SYM 462 #define HARD_SYM 462
#define HANDLER_SYM 463 #define HASH_SYM 463
#define HARD_SYM 464 #define HAVING 464
#define HASH_SYM 465 #define HELP_SYM 465
#define HAVING 466 #define HEX_NUM 466
#define HELP_SYM 467 #define HEX_STRING 467
#define HEX_NUM 468 #define HIGH_PRIORITY 468
#define HEX_STRING 469 #define HOST_SYM 469
#define HIGH_PRIORITY 470 #define HOSTS_SYM 470
#define HOST_SYM 471 #define HOUR_MICROSECOND_SYM 471
#define HOSTS_SYM 472 #define HOUR_MINUTE_SYM 472
#define HOUR_MICROSECOND_SYM 473 #define HOUR_SECOND_SYM 473
#define HOUR_MINUTE_SYM 474 #define HOUR_SYM 474
#define HOUR_SECOND_SYM 475 #define IDENT 475
#define HOUR_SYM 476 #define IDENTIFIED_SYM 476
#define IDENT 477 #define IDENT_QUOTED 477
#define IDENTIFIED_SYM 478 #define IF 478
#define IDENT_QUOTED 479 #define IGNORE_SYM 479
#define IF 480 #define IGNORE_SERVER_IDS_SYM 480
#define IGNORE_SYM 481 #define IMPORT 481
#define IGNORE_SERVER_IDS_SYM 482 #define INDEXES 482
#define IMPORT 483 #define INDEX_SYM 483
#define INDEXES 484 #define INDEX_STATS_SYM 484
#define INDEX_SYM 485 #define INFILE 485
#define INDEX_STATS_SYM 486 #define INITIAL_SIZE_SYM 486
#define INFILE 487 #define INNER_SYM 487
#define INITIAL_SIZE_SYM 488 #define INOUT_SYM 488
#define INNER_SYM 489 #define INSENSITIVE_SYM 489
#define INOUT_SYM 490 #define INSERT 490
#define INSENSITIVE_SYM 491 #define INSERT_METHOD 491
#define INSERT 492 #define INSTALL_SYM 492
#define INSERT_METHOD 493 #define INTERVAL_SYM 493
#define INSTALL_SYM 494 #define INTO 494
#define INTERVAL_SYM 495 #define INT_SYM 495
#define INTO 496 #define INVOKER_SYM 496
#define INT_SYM 497 #define IN_SYM 497
#define INVOKER_SYM 498 #define IO_SYM 498
#define IN_SYM 499 #define IPC_SYM 499
#define IO_SYM 500 #define IS 500
#define IPC_SYM 501 #define ISOLATION 501
#define IS 502 #define ISSUER_SYM 502
#define ISOLATION 503 #define ITERATE_SYM 503
#define ISSUER_SYM 504 #define JOIN_SYM 504
#define ITERATE_SYM 505 #define KEYS 505
#define JOIN_SYM 506 #define KEY_BLOCK_SIZE 506
#define KEYS 507 #define KEY_SYM 507
#define KEY_BLOCK_SIZE 508 #define KILL_SYM 508
#define KEY_SYM 509 #define LANGUAGE_SYM 509
#define KILL_SYM 510 #define LAST_SYM 510
#define LANGUAGE_SYM 511 #define LAST_VALUE 511
#define LAST_SYM 512 #define LE 512
#define LAST_VALUE 513 #define LEADING 513
#define LE 514 #define LEAVES 514
#define LEADING 515 #define LEAVE_SYM 515
#define LEAVES 516 #define LEFT 516
#define LEAVE_SYM 517 #define LESS_SYM 517
#define LEFT 518 #define LEVEL_SYM 518
#define LESS_SYM 519 #define LEX_HOSTNAME 519
#define LEVEL_SYM 520 #define LIKE 520
#define LEX_HOSTNAME 521 #define LIMIT 521
#define LIKE 522 #define LINEAR_SYM 522
#define LIMIT 523 #define LINES 523
#define LINEAR_SYM 524 #define LINESTRING 524
#define LINES 525 #define LIST_SYM 525
#define LINESTRING 526 #define LOAD 526
#define LIST_SYM 527 #define LOCAL_SYM 527
#define LOAD 528 #define LOCATOR_SYM 528
#define LOCAL_SYM 529 #define LOCKS_SYM 529
#define LOCATOR_SYM 530 #define LOCK_SYM 530
#define LOCKS_SYM 531 #define LOGFILE_SYM 531
#define LOCK_SYM 532 #define LOGS_SYM 532
#define LOGFILE_SYM 533 #define LONGBLOB 533
#define LOGS_SYM 534 #define LONGTEXT 534
#define LONGBLOB 535 #define LONG_NUM 535
#define LONGTEXT 536 #define LONG_SYM 536
#define LONG_NUM 537 #define LOOP_SYM 537
#define LONG_SYM 538 #define LOW_PRIORITY 538
#define LOOP_SYM 539 #define MASTER_CONNECT_RETRY_SYM 539
#define LOW_PRIORITY 540 #define MASTER_HOST_SYM 540
#define LT 541 #define MASTER_LOG_FILE_SYM 541
#define MASTER_CONNECT_RETRY_SYM 542 #define MASTER_LOG_POS_SYM 542
#define MASTER_HOST_SYM 543 #define MASTER_PASSWORD_SYM 543
#define MASTER_LOG_FILE_SYM 544 #define MASTER_PORT_SYM 544
#define MASTER_LOG_POS_SYM 545 #define MASTER_SERVER_ID_SYM 545
#define MASTER_PASSWORD_SYM 546 #define MASTER_SSL_CAPATH_SYM 546
#define MASTER_PORT_SYM 547 #define MASTER_SSL_CA_SYM 547
#define MASTER_SERVER_ID_SYM 548 #define MASTER_SSL_CERT_SYM 548
#define MASTER_SSL_CAPATH_SYM 549 #define MASTER_SSL_CIPHER_SYM 549
#define MASTER_SSL_CA_SYM 550 #define MASTER_SSL_KEY_SYM 550
#define MASTER_SSL_CERT_SYM 551 #define MASTER_SSL_SYM 551
#define MASTER_SSL_CIPHER_SYM 552 #define MASTER_SSL_VERIFY_SERVER_CERT_SYM 552
#define MASTER_SSL_KEY_SYM 553 #define MASTER_SYM 553
#define MASTER_SSL_SYM 554 #define MASTER_USER_SYM 554
#define MASTER_SSL_VERIFY_SERVER_CERT_SYM 555 #define MASTER_HEARTBEAT_PERIOD_SYM 555
#define MASTER_SYM 556 #define MATCH 556
#define MASTER_USER_SYM 557 #define MAX_CONNECTIONS_PER_HOUR 557
#define MASTER_HEARTBEAT_PERIOD_SYM 558 #define MAX_QUERIES_PER_HOUR 558
#define MATCH 559 #define MAX_ROWS 559
#define MAX_CONNECTIONS_PER_HOUR 560 #define MAX_SIZE_SYM 560
#define MAX_QUERIES_PER_HOUR 561 #define MAX_SYM 561
#define MAX_ROWS 562 #define MAX_UPDATES_PER_HOUR 562
#define MAX_SIZE_SYM 563 #define MAX_USER_CONNECTIONS_SYM 563
#define MAX_SYM 564 #define MAX_VALUE_SYM 564
#define MAX_UPDATES_PER_HOUR 565 #define MEDIUMBLOB 565
#define MAX_USER_CONNECTIONS_SYM 566 #define MEDIUMINT 566
#define MAX_VALUE_SYM 567 #define MEDIUMTEXT 567
#define MEDIUMBLOB 568 #define MEDIUM_SYM 568
#define MEDIUMINT 569 #define MEMORY_SYM 569
#define MEDIUMTEXT 570 #define MERGE_SYM 570
#define MEDIUM_SYM 571 #define MESSAGE_TEXT_SYM 571
#define MEMORY_SYM 572 #define MICROSECOND_SYM 572
#define MERGE_SYM 573 #define MIGRATE_SYM 573
#define MESSAGE_TEXT_SYM 574 #define MINUTE_MICROSECOND_SYM 574
#define MICROSECOND_SYM 575 #define MINUTE_SECOND_SYM 575
#define MIGRATE_SYM 576 #define MINUTE_SYM 576
#define MINUTE_MICROSECOND_SYM 577 #define MIN_ROWS 577
#define MINUTE_SECOND_SYM 578 #define MIN_SYM 578
#define MINUTE_SYM 579 #define MODE_SYM 579
#define MIN_ROWS 580 #define MODIFIES_SYM 580
#define MIN_SYM 581 #define MODIFY_SYM 581
#define MODE_SYM 582 #define MOD_SYM 582
#define MODIFIES_SYM 583 #define MONTH_SYM 583
#define MODIFY_SYM 584 #define MULTILINESTRING 584
#define MOD_SYM 585 #define MULTIPOINT 585
#define MONTH_SYM 586 #define MULTIPOLYGON 586
#define MULTILINESTRING 587 #define MUTEX_SYM 587
#define MULTIPOINT 588 #define MYSQL_SYM 588
#define MULTIPOLYGON 589 #define MYSQL_ERRNO_SYM 589
#define MUTEX_SYM 590 #define NAMES_SYM 590
#define MYSQL_SYM 591 #define NAME_SYM 591
#define MYSQL_ERRNO_SYM 592 #define NATIONAL_SYM 592
#define NAMES_SYM 593 #define NATURAL 593
#define NAME_SYM 594 #define NCHAR_STRING 594
#define NATIONAL_SYM 595 #define NCHAR_SYM 595
#define NATURAL 596 #define NDBCLUSTER_SYM 596
#define NCHAR_STRING 597 #define NE 597
#define NCHAR_SYM 598 #define NEG 598
#define NDBCLUSTER_SYM 599 #define NEW_SYM 599
#define NE 600 #define NEXT_SYM 600
#define NEG 601 #define NODEGROUP_SYM 601
#define NEW_SYM 602 #define NONE_SYM 602
#define NEXT_SYM 603 #define NOT2_SYM 603
#define NODEGROUP_SYM 604 #define NOT_SYM 604
#define NONE_SYM 605 #define NOW_SYM 605
#define NOT2_SYM 606 #define NO_SYM 606
#define NOT_SYM 607 #define NO_WAIT_SYM 607
#define NOW_SYM 608 #define NO_WRITE_TO_BINLOG 608
#define NO_SYM 609 #define NULL_SYM 609
#define NO_WAIT_SYM 610 #define NUM 610
#define NO_WRITE_TO_BINLOG 611 #define NUMERIC_SYM 611
#define NULL_SYM 612 #define NVARCHAR_SYM 612
#define NUM 613 #define OFFSET_SYM 613
#define NUMERIC_SYM 614 #define OLD_PASSWORD 614
#define NVARCHAR_SYM 615 #define ON 615
#define OFFSET_SYM 616 #define ONE_SHOT_SYM 616
#define OLD_PASSWORD 617 #define ONE_SYM 617
#define ON 618 #define ONLINE_SYM 618
#define ONE_SHOT_SYM 619 #define OPEN_SYM 619
#define ONE_SYM 620 #define OPTIMIZE 620
#define ONLINE_SYM 621 #define OPTIONS_SYM 621
#define OPEN_SYM 622 #define OPTION 622
#define OPTIMIZE 623 #define OPTIONALLY 623
#define OPTIONS_SYM 624 #define OR2_SYM 624
#define OPTION 625 #define ORDER_SYM 625
#define OPTIONALLY 626 #define OR_OR_SYM 626
#define OR2_SYM 627 #define OR_SYM 627
#define ORDER_SYM 628 #define OUTER 628
#define OR_OR_SYM 629 #define OUTFILE 629
#define OR_SYM 630 #define OUT_SYM 630
#define OUTER 631 #define OWNER_SYM 631
#define OUTFILE 632 #define PACK_KEYS_SYM 632
#define OUT_SYM 633 #define PAGE_SYM 633
#define OWNER_SYM 634 #define PAGE_CHECKSUM_SYM 634
#define PACK_KEYS_SYM 635 #define PARAM_MARKER 635
#define PAGE_SYM 636 #define PARSER_SYM 636
#define PAGE_CHECKSUM_SYM 637 #define PARSE_VCOL_EXPR_SYM 637
#define PARAM_MARKER 638 #define PARTIAL 638
#define PARSER_SYM 639 #define PARTITIONING_SYM 639
#define PARSE_VCOL_EXPR_SYM 640 #define PARTITIONS_SYM 640
#define PARTIAL 641 #define PARTITION_SYM 641
#define PARTITIONING_SYM 642 #define PASSWORD 642
#define PARTITIONS_SYM 643 #define PERSISTENT_SYM 643
#define PARTITION_SYM 644 #define PHASE_SYM 644
#define PASSWORD 645 #define PLUGINS_SYM 645
#define PERSISTENT_SYM 646 #define PLUGIN_SYM 646
#define PHASE_SYM 647 #define POINT_SYM 647
#define PLUGINS_SYM 648 #define POLYGON 648
#define PLUGIN_SYM 649 #define PORT_SYM 649
#define POINT_SYM 650 #define POSITION_SYM 650
#define POLYGON 651 #define PRECISION 651
#define PORT_SYM 652 #define PREPARE_SYM 652
#define POSITION_SYM 653 #define PRESERVE_SYM 653
#define PRECISION 654 #define PREV_SYM 654
#define PREPARE_SYM 655 #define PRIMARY_SYM 655
#define PRESERVE_SYM 656 #define PRIVILEGES 656
#define PREV_SYM 657 #define PROCEDURE_SYM 657
#define PRIMARY_SYM 658 #define PROCESS 658
#define PRIVILEGES 659 #define PROCESSLIST_SYM 659
#define PROCEDURE_SYM 660 #define PROFILE_SYM 660
#define PROCESS 661 #define PROFILES_SYM 661
#define PROCESSLIST_SYM 662 #define PROXY_SYM 662
#define PROFILE_SYM 663 #define PURGE 663
#define PROFILES_SYM 664 #define QUARTER_SYM 664
#define PROXY_SYM 665 #define QUERY_SYM 665
#define PURGE 666 #define QUICK 666
#define QUARTER_SYM 667 #define RANGE_SYM 667
#define QUERY_SYM 668 #define READS_SYM 668
#define QUICK 669 #define READ_ONLY_SYM 669
#define RANGE_SYM 670 #define READ_SYM 670
#define READS_SYM 671 #define READ_WRITE_SYM 671
#define READ_ONLY_SYM 672 #define REAL 672
#define READ_SYM 673 #define REBUILD_SYM 673
#define READ_WRITE_SYM 674 #define RECOVER_SYM 674
#define REAL 675 #define REDOFILE_SYM 675
#define REBUILD_SYM 676 #define REDO_BUFFER_SIZE_SYM 676
#define RECOVER_SYM 677 #define REDUNDANT_SYM 677
#define REDOFILE_SYM 678 #define REFERENCES 678
#define REDO_BUFFER_SIZE_SYM 679 #define REGEXP 679
#define REDUNDANT_SYM 680 #define RELAY 680
#define REFERENCES 681 #define RELAYLOG_SYM 681
#define REGEXP 682 #define RELAY_LOG_FILE_SYM 682
#define RELAY 683 #define RELAY_LOG_POS_SYM 683
#define RELAYLOG_SYM 684 #define RELAY_THREAD 684
#define RELAY_LOG_FILE_SYM 685 #define RELEASE_SYM 685
#define RELAY_LOG_POS_SYM 686 #define RELOAD 686
#define RELAY_THREAD 687 #define REMOVE_SYM 687
#define RELEASE_SYM 688 #define RENAME 688
#define RELOAD 689 #define REORGANIZE_SYM 689
#define REMOVE_SYM 690 #define REPAIR 690
#define RENAME 691 #define REPEATABLE_SYM 691
#define REORGANIZE_SYM 692 #define REPEAT_SYM 692
#define REPAIR 693 #define REPLACE 693
#define REPEATABLE_SYM 694 #define REPLICATION 694
#define REPEAT_SYM 695 #define REQUIRE_SYM 695
#define REPLACE 696 #define RESET_SYM 696
#define REPLICATION 697 #define RESIGNAL_SYM 697
#define REQUIRE_SYM 698 #define RESOURCES 698
#define RESET_SYM 699 #define RESTORE_SYM 699
#define RESIGNAL_SYM 700 #define RESTRICT 700
#define RESOURCES 701 #define RESUME_SYM 701
#define RESTORE_SYM 702 #define RETURNS_SYM 702
#define RESTRICT 703 #define RETURN_SYM 703
#define RESUME_SYM 704 #define REVOKE 704
#define RETURNS_SYM 705 #define RIGHT 705
#define RETURN_SYM 706 #define ROLLBACK_SYM 706
#define REVOKE 707 #define ROLLUP_SYM 707
#define RIGHT 708 #define ROUTINE_SYM 708
#define ROLLBACK_SYM 709 #define ROWS_SYM 709
#define ROLLUP_SYM 710 #define ROW_FORMAT_SYM 710
#define ROUTINE_SYM 711 #define ROW_SYM 711
#define ROWS_SYM 712 #define RTREE_SYM 712
#define ROW_FORMAT_SYM 713 #define SAVEPOINT_SYM 713
#define ROW_SYM 714 #define SCHEDULE_SYM 714
#define RTREE_SYM 715 #define SCHEMA_NAME_SYM 715
#define SAVEPOINT_SYM 716 #define SECOND_MICROSECOND_SYM 716
#define SCHEDULE_SYM 717 #define SECOND_SYM 717
#define SCHEMA_NAME_SYM 718 #define SECURITY_SYM 718
#define SECOND_MICROSECOND_SYM 719 #define SELECT_SYM 719
#define SECOND_SYM 720 #define SENSITIVE_SYM 720
#define SECURITY_SYM 721 #define SEPARATOR_SYM 721
#define SELECT_SYM 722 #define SERIALIZABLE_SYM 722
#define SENSITIVE_SYM 723 #define SERIAL_SYM 723
#define SEPARATOR_SYM 724 #define SESSION_SYM 724
#define SERIALIZABLE_SYM 725 #define SERVER_SYM 725
#define SERIAL_SYM 726 #define SERVER_OPTIONS 726
#define SESSION_SYM 727 #define SET 727
#define SERVER_SYM 728 #define SET_VAR 728
#define SERVER_OPTIONS 729 #define SHARE_SYM 729
#define SET 730 #define SHIFT_LEFT 730
#define SET_VAR 731 #define SHIFT_RIGHT 731
#define SHARE_SYM 732 #define SHOW 732
#define SHIFT_LEFT 733 #define SHUTDOWN 733
#define SHIFT_RIGHT 734 #define SIGNAL_SYM 734
#define SHOW 735 #define SIGNED_SYM 735
#define SHUTDOWN 736 #define SIMPLE_SYM 736
#define SIGNAL_SYM 737 #define SLAVE 737
#define SIGNED_SYM 738 #define SLOW 738
#define SIMPLE_SYM 739 #define SMALLINT 739
#define SLAVE 740 #define SNAPSHOT_SYM 740
#define SLOW 741 #define SOCKET_SYM 741
#define SMALLINT 742 #define SOFT_SYM 742
#define SNAPSHOT_SYM 743 #define SONAME_SYM 743
#define SOCKET_SYM 744 #define SOUNDS_SYM 744
#define SOFT_SYM 745 #define SOURCE_SYM 745
#define SONAME_SYM 746 #define SPATIAL_SYM 746
#define SOUNDS_SYM 747 #define SPECIFIC_SYM 747
#define SOURCE_SYM 748 #define SQLEXCEPTION_SYM 748
#define SPATIAL_SYM 749 #define SQLSTATE_SYM 749
#define SPECIFIC_SYM 750 #define SQLWARNING_SYM 750
#define SQLEXCEPTION_SYM 751 #define SQL_BIG_RESULT 751
#define SQLSTATE_SYM 752 #define SQL_BUFFER_RESULT 752
#define SQLWARNING_SYM 753 #define SQL_CACHE_SYM 753
#define SQL_BIG_RESULT 754 #define SQL_CALC_FOUND_ROWS 754
#define SQL_BUFFER_RESULT 755 #define SQL_NO_CACHE_SYM 755
#define SQL_CACHE_SYM 756 #define SQL_SMALL_RESULT 756
#define SQL_CALC_FOUND_ROWS 757 #define SQL_SYM 757
#define SQL_NO_CACHE_SYM 758 #define SQL_THREAD 758
#define SQL_SMALL_RESULT 759 #define SSL_SYM 759
#define SQL_SYM 760 #define STARTING 760
#define SQL_THREAD 761 #define STARTS_SYM 761
#define SSL_SYM 762 #define START_SYM 762
#define STARTING 763 #define STATUS_SYM 763
#define STARTS_SYM 764 #define STDDEV_SAMP_SYM 764
#define START_SYM 765 #define STD_SYM 765
#define STATUS_SYM 766 #define STOP_SYM 766
#define STDDEV_SAMP_SYM 767 #define STORAGE_SYM 767
#define STD_SYM 768 #define STRAIGHT_JOIN 768
#define STOP_SYM 769 #define STRING_SYM 769
#define STORAGE_SYM 770 #define SUBCLASS_ORIGIN_SYM 770
#define STRAIGHT_JOIN 771 #define SUBDATE_SYM 771
#define STRING_SYM 772 #define SUBJECT_SYM 772
#define SUBCLASS_ORIGIN_SYM 773 #define SUBPARTITIONS_SYM 773
#define SUBDATE_SYM 774 #define SUBPARTITION_SYM 774
#define SUBJECT_SYM 775 #define SUBSTRING 775
#define SUBPARTITIONS_SYM 776 #define SUM_SYM 776
#define SUBPARTITION_SYM 777 #define SUPER_SYM 777
#define SUBSTRING 778 #define SUSPEND_SYM 778
#define SUM_SYM 779 #define SWAPS_SYM 779
#define SUPER_SYM 780 #define SWITCHES_SYM 780
#define SUSPEND_SYM 781 #define SYSDATE 781
#define SWAPS_SYM 782 #define TABLES 782
#define SWITCHES_SYM 783 #define TABLESPACE 783
#define SYSDATE 784 #define TABLE_REF_PRIORITY 784
#define TABLES 785 #define TABLE_STATS_SYM 785
#define TABLESPACE 786 #define TABLE_SYM 786
#define TABLE_REF_PRIORITY 787 #define TABLE_CHECKSUM_SYM 787
#define TABLE_STATS_SYM 788 #define TABLE_NAME_SYM 788
#define TABLE_SYM 789 #define TEMPORARY 789
#define TABLE_CHECKSUM_SYM 790 #define TEMPTABLE_SYM 790
#define TABLE_NAME_SYM 791 #define TERMINATED 791
#define TEMPORARY 792 #define TEXT_STRING 792
#define TEMPTABLE_SYM 793 #define TEXT_SYM 793
#define TERMINATED 794 #define THAN_SYM 794
#define TEXT_STRING 795 #define THEN_SYM 795
#define TEXT_SYM 796 #define TIMESTAMP 796
#define THAN_SYM 797 #define TIMESTAMP_ADD 797
#define THEN_SYM 798 #define TIMESTAMP_DIFF 798
#define TIMESTAMP 799 #define TIME_SYM 799
#define TIMESTAMP_ADD 800 #define TINYBLOB 800
#define TIMESTAMP_DIFF 801 #define TINYINT 801
#define TIME_SYM 802 #define TINYTEXT 802
#define TINYBLOB 803 #define TO_SYM 803
#define TINYINT 804 #define TRAILING 804
#define TINYTEXT 805 #define TRANSACTION_SYM 805
#define TO_SYM 806 #define TRANSACTIONAL_SYM 806
#define TRAILING 807 #define TRIGGERS_SYM 807
#define TRANSACTION_SYM 808 #define TRIGGER_SYM 808
#define TRANSACTIONAL_SYM 809 #define TRIM 809
#define TRIGGERS_SYM 810 #define TRUE_SYM 810
#define TRIGGER_SYM 811 #define TRUNCATE_SYM 811
#define TRIM 812 #define TYPES_SYM 812
#define TRUE_SYM 813 #define TYPE_SYM 813
#define TRUNCATE_SYM 814 #define UDF_RETURNS_SYM 814
#define TYPES_SYM 815 #define ULONGLONG_NUM 815
#define TYPE_SYM 816 #define UNCOMMITTED_SYM 816
#define UDF_RETURNS_SYM 817 #define UNDEFINED_SYM 817
#define ULONGLONG_NUM 818 #define UNDERSCORE_CHARSET 818
#define UNCOMMITTED_SYM 819 #define UNDOFILE_SYM 819
#define UNDEFINED_SYM 820 #define UNDO_BUFFER_SIZE_SYM 820
#define UNDERSCORE_CHARSET 821 #define UNDO_SYM 821
#define UNDOFILE_SYM 822 #define UNICODE_SYM 822
#define UNDO_BUFFER_SIZE_SYM 823 #define UNINSTALL_SYM 823
#define UNDO_SYM 824 #define UNION_SYM 824
#define UNICODE_SYM 825 #define UNIQUE_SYM 825
#define UNINSTALL_SYM 826 #define UNKNOWN_SYM 826
#define UNION_SYM 827 #define UNLOCK_SYM 827
#define UNIQUE_SYM 828 #define UNSIGNED 828
#define UNKNOWN_SYM 829 #define UNTIL_SYM 829
#define UNLOCK_SYM 830 #define UPDATE_SYM 830
#define UNSIGNED 831 #define UPGRADE_SYM 831
#define UNTIL_SYM 832 #define USAGE 832
#define UPDATE_SYM 833 #define USER 833
#define UPGRADE_SYM 834 #define USER_STATS_SYM 834
#define USAGE 835 #define USE_FRM 835
#define USER 836 #define USE_SYM 836
#define USER_STATS_SYM 837 #define USING 837
#define USE_FRM 838 #define UTC_DATE_SYM 838
#define USE_SYM 839 #define UTC_TIMESTAMP_SYM 839
#define USING 840 #define UTC_TIME_SYM 840
#define UTC_DATE_SYM 841 #define VALUES 841
#define UTC_TIMESTAMP_SYM 842 #define VALUE_SYM 842
#define UTC_TIME_SYM 843 #define VARBINARY 843
#define VALUES 844 #define VARCHAR 844
#define VALUE_SYM 845 #define VARIABLES 845
#define VARBINARY 846 #define VARIANCE_SYM 846
#define VARCHAR 847 #define VARYING 847
#define VARIABLES 848 #define VAR_SAMP_SYM 848
#define VARIANCE_SYM 849 #define VIA_SYM 849
#define VARYING 850 #define VIEW_SYM 850
#define VAR_SAMP_SYM 851 #define VIRTUAL_SYM 851
#define VIA_SYM 852 #define WAIT_SYM 852
#define VIEW_SYM 853 #define WARNINGS 853
#define VIRTUAL_SYM 854 #define WEEK_SYM 854
#define WAIT_SYM 855 #define WHEN_SYM 855
#define WARNINGS 856 #define WHERE 856
#define WEEK_SYM 857 #define WHILE_SYM 857
#define WHEN_SYM 858 #define WITH 858
#define WHERE 859 #define WITH_CUBE_SYM 859
#define WHILE_SYM 860 #define WITH_ROLLUP_SYM 860
#define WITH 861 #define WORK_SYM 861
#define WITH_CUBE_SYM 862 #define WRAPPER_SYM 862
#define WITH_ROLLUP_SYM 863 #define WRITE_SYM 863
#define WORK_SYM 864 #define X509_SYM 864
#define WRAPPER_SYM 865 #define XA_SYM 865
#define WRITE_SYM 866 #define XML_SYM 866
#define X509_SYM 867 #define XOR 867
#define XA_SYM 868 #define YEAR_MONTH_SYM 868
#define XML_SYM 869 #define YEAR_SYM 869
#define XOR 870 #define ZEROFILL 870
#define YEAR_MONTH_SYM 871 #define IMPOSSIBLE_ACTION 871
#define YEAR_SYM 872
#define ZEROFILL 873
#define IMPOSSIBLE_ACTION 874
...@@ -1341,7 +1335,7 @@ typedef union YYSTYPE ...@@ -1341,7 +1335,7 @@ typedef union YYSTYPE
/* Line 1676 of yacc.c */ /* Line 1676 of yacc.c */
#line 1345 "/home/buildbot/git/mkdist/sql/sql_yacc.h" #line 1339 "/home/buildbot/git/mkdist/sql/sql_yacc.h"
} YYSTYPE; } YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
......
...@@ -970,7 +970,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -970,7 +970,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%token ENGINES_SYM %token ENGINES_SYM
%token ENGINE_SYM %token ENGINE_SYM
%token ENUM %token ENUM
%token EQ /* OPERATOR */
%token EQUAL_SYM /* OPERATOR */ %token EQUAL_SYM /* OPERATOR */
%token ERROR_SYM %token ERROR_SYM
%token ERRORS %token ERRORS
...@@ -1016,7 +1015,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -1016,7 +1015,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%token GRANTS %token GRANTS
%token GROUP_SYM /* SQL-2003-R */ %token GROUP_SYM /* SQL-2003-R */
%token GROUP_CONCAT_SYM %token GROUP_CONCAT_SYM
%token GT_SYM /* OPERATOR */
%token HANDLER_SYM %token HANDLER_SYM
%token HARD_SYM %token HARD_SYM
%token HASH_SYM %token HASH_SYM
...@@ -1095,7 +1093,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -1095,7 +1093,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%token LONG_SYM %token LONG_SYM
%token LOOP_SYM %token LOOP_SYM
%token LOW_PRIORITY %token LOW_PRIORITY
%token LT /* OPERATOR */
%token MASTER_CONNECT_RETRY_SYM %token MASTER_CONNECT_RETRY_SYM
%token MASTER_HOST_SYM %token MASTER_HOST_SYM
%token MASTER_LOG_FILE_SYM %token MASTER_LOG_FILE_SYM
...@@ -1439,7 +1436,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -1439,7 +1436,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%left XOR %left XOR
%left AND_SYM AND_AND_SYM %left AND_SYM AND_AND_SYM
%left BETWEEN_SYM CASE_SYM WHEN_SYM THEN_SYM ELSE %left BETWEEN_SYM CASE_SYM WHEN_SYM THEN_SYM ELSE
%left EQ EQUAL_SYM GE GT_SYM LE LT NE IS LIKE REGEXP IN_SYM %left '=' EQUAL_SYM GE '>' LE '<' NE IS LIKE REGEXP IN_SYM
%left '|' %left '|'
%left '&' %left '&'
%left SHIFT_LEFT SHIFT_RIGHT %left SHIFT_LEFT SHIFT_RIGHT
...@@ -1922,58 +1919,58 @@ master_defs: ...@@ -1922,58 +1919,58 @@ master_defs:
; ;
master_def: master_def:
MASTER_HOST_SYM EQ TEXT_STRING_sys MASTER_HOST_SYM '=' TEXT_STRING_sys
{ {
Lex->mi.host = $3.str; Lex->mi.host = $3.str;
} }
| MASTER_USER_SYM EQ TEXT_STRING_sys | MASTER_USER_SYM '=' TEXT_STRING_sys
{ {
Lex->mi.user = $3.str; Lex->mi.user = $3.str;
} }
| MASTER_PASSWORD_SYM EQ TEXT_STRING_sys | MASTER_PASSWORD_SYM '=' TEXT_STRING_sys
{ {
Lex->mi.password = $3.str; Lex->mi.password = $3.str;
} }
| MASTER_PORT_SYM EQ ulong_num | MASTER_PORT_SYM '=' ulong_num
{ {
Lex->mi.port = $3; Lex->mi.port = $3;
} }
| MASTER_CONNECT_RETRY_SYM EQ ulong_num | MASTER_CONNECT_RETRY_SYM '=' ulong_num
{ {
Lex->mi.connect_retry = $3; Lex->mi.connect_retry = $3;
} }
| MASTER_SSL_SYM EQ ulong_num | MASTER_SSL_SYM '=' ulong_num
{ {
Lex->mi.ssl= $3 ? Lex->mi.ssl= $3 ?
LEX_MASTER_INFO::LEX_MI_ENABLE : LEX_MASTER_INFO::LEX_MI_DISABLE; LEX_MASTER_INFO::LEX_MI_ENABLE : LEX_MASTER_INFO::LEX_MI_DISABLE;
} }
| MASTER_SSL_CA_SYM EQ TEXT_STRING_sys | MASTER_SSL_CA_SYM '=' TEXT_STRING_sys
{ {
Lex->mi.ssl_ca= $3.str; Lex->mi.ssl_ca= $3.str;
} }
| MASTER_SSL_CAPATH_SYM EQ TEXT_STRING_sys | MASTER_SSL_CAPATH_SYM '=' TEXT_STRING_sys
{ {
Lex->mi.ssl_capath= $3.str; Lex->mi.ssl_capath= $3.str;
} }
| MASTER_SSL_CERT_SYM EQ TEXT_STRING_sys | MASTER_SSL_CERT_SYM '=' TEXT_STRING_sys
{ {
Lex->mi.ssl_cert= $3.str; Lex->mi.ssl_cert= $3.str;
} }
| MASTER_SSL_CIPHER_SYM EQ TEXT_STRING_sys | MASTER_SSL_CIPHER_SYM '=' TEXT_STRING_sys
{ {
Lex->mi.ssl_cipher= $3.str; Lex->mi.ssl_cipher= $3.str;
} }
| MASTER_SSL_KEY_SYM EQ TEXT_STRING_sys | MASTER_SSL_KEY_SYM '=' TEXT_STRING_sys
{ {
Lex->mi.ssl_key= $3.str; Lex->mi.ssl_key= $3.str;
} }
| MASTER_SSL_VERIFY_SERVER_CERT_SYM EQ ulong_num | MASTER_SSL_VERIFY_SERVER_CERT_SYM '=' ulong_num
{ {
Lex->mi.ssl_verify_server_cert= $3 ? Lex->mi.ssl_verify_server_cert= $3 ?
LEX_MASTER_INFO::LEX_MI_ENABLE : LEX_MASTER_INFO::LEX_MI_DISABLE; LEX_MASTER_INFO::LEX_MI_ENABLE : LEX_MASTER_INFO::LEX_MI_DISABLE;
} }
| MASTER_HEARTBEAT_PERIOD_SYM EQ NUM_literal | MASTER_HEARTBEAT_PERIOD_SYM '=' NUM_literal
{ {
Lex->mi.heartbeat_period= (float) $3->val_real(); Lex->mi.heartbeat_period= (float) $3->val_real();
if (Lex->mi.heartbeat_period > SLAVE_MAX_HEARTBEAT_PERIOD || if (Lex->mi.heartbeat_period > SLAVE_MAX_HEARTBEAT_PERIOD ||
...@@ -2004,7 +2001,7 @@ master_def: ...@@ -2004,7 +2001,7 @@ master_def:
} }
Lex->mi.heartbeat_opt= LEX_MASTER_INFO::LEX_MI_ENABLE; Lex->mi.heartbeat_opt= LEX_MASTER_INFO::LEX_MI_ENABLE;
} }
| IGNORE_SERVER_IDS_SYM EQ '(' ignore_server_id_list ')' | IGNORE_SERVER_IDS_SYM '=' '(' ignore_server_id_list ')'
{ {
Lex->mi.repl_ignore_server_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE; Lex->mi.repl_ignore_server_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE;
} }
...@@ -2025,11 +2022,11 @@ ignore_server_id: ...@@ -2025,11 +2022,11 @@ ignore_server_id:
} }
master_file_def: master_file_def:
MASTER_LOG_FILE_SYM EQ TEXT_STRING_sys MASTER_LOG_FILE_SYM '=' TEXT_STRING_sys
{ {
Lex->mi.log_file_name = $3.str; Lex->mi.log_file_name = $3.str;
} }
| MASTER_LOG_POS_SYM EQ ulonglong_num | MASTER_LOG_POS_SYM '=' ulonglong_num
{ {
Lex->mi.pos = $3; Lex->mi.pos = $3;
/* /*
...@@ -2045,11 +2042,11 @@ master_file_def: ...@@ -2045,11 +2042,11 @@ master_file_def:
*/ */
Lex->mi.pos = max(BIN_LOG_HEADER_SIZE, Lex->mi.pos); Lex->mi.pos = max(BIN_LOG_HEADER_SIZE, Lex->mi.pos);
} }
| RELAY_LOG_FILE_SYM EQ TEXT_STRING_sys | RELAY_LOG_FILE_SYM '=' TEXT_STRING_sys
{ {
Lex->mi.relay_log_name = $3.str; Lex->mi.relay_log_name = $3.str;
} }
| RELAY_LOG_POS_SYM EQ ulong_num | RELAY_LOG_POS_SYM '=' ulong_num
{ {
Lex->mi.relay_log_pos = $3; Lex->mi.relay_log_pos = $3;
/* Adjust if < BIN_LOG_HEADER_SIZE (same comment as Lex->mi.pos) */ /* Adjust if < BIN_LOG_HEADER_SIZE (same comment as Lex->mi.pos) */
...@@ -3032,7 +3029,7 @@ opt_set_signal_information: ...@@ -3032,7 +3029,7 @@ opt_set_signal_information:
; ;
signal_information_item_list: signal_information_item_list:
signal_condition_information_item_name EQ signal_allowed_expr signal_condition_information_item_name '=' signal_allowed_expr
{ {
Set_signal_information *info; Set_signal_information *info;
info= &thd->m_parser_state->m_yacc.m_set_signal_info; info= &thd->m_parser_state->m_yacc.m_set_signal_info;
...@@ -3041,7 +3038,7 @@ signal_information_item_list: ...@@ -3041,7 +3038,7 @@ signal_information_item_list:
info->m_item[index]= $3; info->m_item[index]= $3;
} }
| signal_information_item_list ',' | signal_information_item_list ','
signal_condition_information_item_name EQ signal_allowed_expr signal_condition_information_item_name '=' signal_allowed_expr
{ {
Set_signal_information *info; Set_signal_information *info;
info= &thd->m_parser_state->m_yacc.m_set_signal_info; info= &thd->m_parser_state->m_yacc.m_set_signal_info;
...@@ -4439,7 +4436,7 @@ opt_linear: ...@@ -4439,7 +4436,7 @@ opt_linear:
opt_key_algo: opt_key_algo:
/* empty */ /* empty */
{ Lex->part_info->key_algorithm= partition_info::KEY_ALGORITHM_NONE;} { Lex->part_info->key_algorithm= partition_info::KEY_ALGORITHM_NONE;}
| ALGORITHM_SYM EQ real_ulong_num | ALGORITHM_SYM '=' real_ulong_num
{ {
switch ($3) { switch ($3) {
case 1: case 1:
...@@ -7076,7 +7073,7 @@ opt_place: ...@@ -7076,7 +7073,7 @@ opt_place:
opt_to: opt_to:
/* empty */ {} /* empty */ {}
| TO_SYM {} | TO_SYM {}
| EQ {} | '=' {}
| AS {} | AS {}
; ;
...@@ -7943,13 +7940,13 @@ bool_pri: ...@@ -7943,13 +7940,13 @@ bool_pri:
if ($$ == NULL) if ($$ == NULL)
MYSQL_YYABORT; MYSQL_YYABORT;
} }
| bool_pri comp_op predicate %prec EQ | bool_pri comp_op predicate %prec '='
{ {
$$= (*$2)(0)->create($1,$3); $$= (*$2)(0)->create($1,$3);
if ($$ == NULL) if ($$ == NULL)
MYSQL_YYABORT; MYSQL_YYABORT;
} }
| bool_pri comp_op all_or_any '(' subselect ')' %prec EQ | bool_pri comp_op all_or_any '(' subselect ')' %prec '='
{ {
$$= all_any_subquery_creator($1, $2, $3, $5); $$= all_any_subquery_creator($1, $2, $3, $5);
if ($$ == NULL) if ($$ == NULL)
...@@ -8172,11 +8169,11 @@ not2: ...@@ -8172,11 +8169,11 @@ not2:
; ;
comp_op: comp_op:
EQ { $$ = &comp_eq_creator; } '=' { $$ = &comp_eq_creator; }
| GE { $$ = &comp_ge_creator; } | GE { $$ = &comp_ge_creator; }
| GT_SYM { $$ = &comp_gt_creator; } | '>' { $$ = &comp_gt_creator; }
| LE { $$ = &comp_le_creator; } | LE { $$ = &comp_le_creator; }
| LT { $$ = &comp_lt_creator; } | '<' { $$ = &comp_lt_creator; }
| NE { $$ = &comp_ne_creator; } | NE { $$ = &comp_ne_creator; }
; ;
...@@ -10197,7 +10194,7 @@ date_time_type: ...@@ -10197,7 +10194,7 @@ date_time_type:
table_alias: table_alias:
/* empty */ /* empty */
| AS | AS
| EQ | '='
; ;
opt_table_alias: opt_table_alias:
...@@ -11100,7 +11097,7 @@ ident_eq_value: ...@@ -11100,7 +11097,7 @@ ident_eq_value:
; ;
equal: equal:
EQ {} '=' {}
| SET_VAR {} | SET_VAR {}
; ;
...@@ -13968,11 +13965,11 @@ handler_rkey_function: ...@@ -13968,11 +13965,11 @@ handler_rkey_function:
; ;
handler_rkey_mode: handler_rkey_mode:
EQ { $$=HA_READ_KEY_EXACT; } '=' { $$=HA_READ_KEY_EXACT; }
| GE { $$=HA_READ_KEY_OR_NEXT; } | GE { $$=HA_READ_KEY_OR_NEXT; }
| LE { $$=HA_READ_KEY_OR_PREV; } | LE { $$=HA_READ_KEY_OR_PREV; }
| GT_SYM { $$=HA_READ_AFTER_KEY; } | '>' { $$=HA_READ_AFTER_KEY; }
| LT { $$=HA_READ_BEFORE_KEY; } | '<' { $$=HA_READ_BEFORE_KEY; }
; ;
/* GRANT / REVOKE */ /* GRANT / REVOKE */
...@@ -14744,7 +14741,7 @@ no_definer: ...@@ -14744,7 +14741,7 @@ no_definer:
; ;
definer: definer:
DEFINER_SYM EQ user DEFINER_SYM '=' user
{ {
thd->lex->definer= get_current_user(thd, $3); thd->lex->definer= get_current_user(thd, $3);
} }
...@@ -14771,11 +14768,11 @@ view_replace: ...@@ -14771,11 +14768,11 @@ view_replace:
; ;
view_algorithm: view_algorithm:
ALGORITHM_SYM EQ UNDEFINED_SYM ALGORITHM_SYM '=' UNDEFINED_SYM
{ Lex->create_view_algorithm= DTYPE_ALGORITHM_UNDEFINED; } { Lex->create_view_algorithm= DTYPE_ALGORITHM_UNDEFINED; }
| ALGORITHM_SYM EQ MERGE_SYM | ALGORITHM_SYM '=' MERGE_SYM
{ Lex->create_view_algorithm= VIEW_ALGORITHM_MERGE; } { Lex->create_view_algorithm= VIEW_ALGORITHM_MERGE; }
| ALGORITHM_SYM EQ TEMPTABLE_SYM | ALGORITHM_SYM '=' TEMPTABLE_SYM
{ Lex->create_view_algorithm= VIEW_ALGORITHM_TMPTABLE; } { Lex->create_view_algorithm= VIEW_ALGORITHM_TMPTABLE; }
; ;
......
...@@ -166,6 +166,7 @@ struct pool_timer_t ...@@ -166,6 +166,7 @@ struct pool_timer_t
volatile uint64 next_timeout_check; volatile uint64 next_timeout_check;
int tick_interval; int tick_interval;
bool shutdown; bool shutdown;
pthread_t timer_thread_id;
}; };
static pool_timer_t pool_timer; static pool_timer_t pool_timer;
...@@ -603,12 +604,12 @@ void check_stall(thread_group_t *thread_group) ...@@ -603,12 +604,12 @@ void check_stall(thread_group_t *thread_group)
static void start_timer(pool_timer_t* timer) static void start_timer(pool_timer_t* timer)
{ {
pthread_t thread_id;
DBUG_ENTER("start_timer"); DBUG_ENTER("start_timer");
mysql_mutex_init(key_timer_mutex,&timer->mutex, NULL); mysql_mutex_init(key_timer_mutex,&timer->mutex, NULL);
mysql_cond_init(key_timer_cond, &timer->cond, NULL); mysql_cond_init(key_timer_cond, &timer->cond, NULL);
timer->shutdown = false; timer->shutdown = false;
mysql_thread_create(key_timer_thread,&thread_id, NULL, timer_thread, timer); mysql_thread_create(key_timer_thread, &timer->timer_thread_id, NULL,
timer_thread, timer);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
...@@ -620,6 +621,7 @@ static void stop_timer(pool_timer_t *timer) ...@@ -620,6 +621,7 @@ static void stop_timer(pool_timer_t *timer)
timer->shutdown = true; timer->shutdown = true;
mysql_cond_signal(&timer->cond); mysql_cond_signal(&timer->cond);
mysql_mutex_unlock(&timer->mutex); mysql_mutex_unlock(&timer->mutex);
pthread_join(timer->timer_thread_id, NULL);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
......
...@@ -2106,7 +2106,6 @@ innobase_convert_name( ...@@ -2106,7 +2106,6 @@ innobase_convert_name(
A wrapper function of innobase_convert_name(), convert a table or A wrapper function of innobase_convert_name(), convert a table or
index name to the MySQL system_charset_info (UTF-8) and quote it if needed. index name to the MySQL system_charset_info (UTF-8) and quote it if needed.
@return pointer to the end of buf */ @return pointer to the end of buf */
static inline
void void
innobase_format_name( innobase_format_name(
/*==================*/ /*==================*/
...@@ -8685,6 +8684,36 @@ ha_innobase::check( ...@@ -8685,6 +8684,36 @@ ha_innobase::check(
DBUG_RETURN(HA_ADMIN_CORRUPT); DBUG_RETURN(HA_ADMIN_CORRUPT);
} }
if (prebuilt->table->corrupted) {
char index_name[MAX_FULL_NAME_LEN + 1];
/* If some previous operation has marked the table as
corrupted in memory, and has not propagated such to
clustered index, we will do so here */
index = dict_table_get_first_index(prebuilt->table);
if (!dict_index_is_corrupted(index)) {
row_mysql_lock_data_dictionary(prebuilt->trx);
dict_set_corrupted(index);
row_mysql_unlock_data_dictionary(prebuilt->trx);
}
innobase_format_name(index_name, sizeof index_name,
index->name, TRUE);
push_warning_printf(thd,
MYSQL_ERROR::WARN_LEVEL_WARN,
HA_ERR_INDEX_CORRUPT,
"InnoDB: Index %s is marked as"
" corrupted",
index_name);
/* Now that the table is already marked as corrupted,
there is no need to check any index of this table */
prebuilt->trx->op_info = "";
DBUG_RETURN(HA_ADMIN_CORRUPT);
}
prebuilt->trx->op_info = "checking table"; prebuilt->trx->op_info = "checking table";
old_isolation_level = prebuilt->trx->isolation_level; old_isolation_level = prebuilt->trx->isolation_level;
...@@ -8761,6 +8790,15 @@ ha_innobase::check( ...@@ -8761,6 +8790,15 @@ ha_innobase::check(
prebuilt->index_usable = row_merge_is_index_usable( prebuilt->index_usable = row_merge_is_index_usable(
prebuilt->trx, prebuilt->index); prebuilt->trx, prebuilt->index);
DBUG_EXECUTE_IF(
"dict_set_index_corrupted",
if (!dict_index_is_clust(index)) {
prebuilt->index_usable = FALSE;
row_mysql_lock_data_dictionary(prebuilt->trx);
dict_set_corrupted(index);
row_mysql_unlock_data_dictionary(prebuilt->trx);
});
if (UNIV_UNLIKELY(!prebuilt->index_usable)) { if (UNIV_UNLIKELY(!prebuilt->index_usable)) {
innobase_format_name( innobase_format_name(
index_name, sizeof index_name, index_name, sizeof index_name,
......
...@@ -654,6 +654,19 @@ class ha_innobase_add_index : public handler_add_index ...@@ -654,6 +654,19 @@ class ha_innobase_add_index : public handler_add_index
~ha_innobase_add_index() {} ~ha_innobase_add_index() {}
}; };
/*****************************************************************//**
A wrapper function of innobase_convert_name(), convert a table or
index name to the MySQL system_charset_info (UTF-8) and quote it if needed.
@return pointer to the end of buf */
void
innobase_format_name(
/*==================*/
char* buf, /*!< out: buffer for converted identifier */
ulint buflen, /*!< in: length of buf, in bytes */
const char* name, /*!< in: index or table name to format */
ibool is_index_name); /*!< in: index name */
/*******************************************************************//** /*******************************************************************//**
Create indexes. Create indexes.
@return 0 or error number */ @return 0 or error number */
...@@ -715,6 +728,28 @@ ha_innobase::add_index( ...@@ -715,6 +728,28 @@ ha_innobase::add_index(
DBUG_RETURN(-1); DBUG_RETURN(-1);
} }
/* Check if any of the existing indexes are marked as corruption,
and if they are, refuse adding more indexes. */
for (dict_index_t* check_index = dict_table_get_first_index(indexed_table);
check_index != NULL;
check_index = dict_table_get_next_index(check_index)) {
if (dict_index_is_corrupted(check_index)) {
char index_name[MAX_FULL_NAME_LEN + 1];
innobase_format_name(index_name, sizeof index_name,
check_index->name, TRUE);
push_warning_printf(user_thd,
MYSQL_ERROR::WARN_LEVEL_WARN,
HA_ERR_INDEX_CORRUPT,
"InnoDB: Index %s is marked as"
" corrupted",
index_name);
DBUG_RETURN(HA_ERR_INDEX_CORRUPT);
}
}
/* Check that index keys are sensible */ /* Check that index keys are sensible */
error = innobase_check_index_keys(key_info, num_of_keys, prebuilt->table); error = innobase_check_index_keys(key_info, num_of_keys, prebuilt->table);
......
...@@ -46,7 +46,7 @@ static mysql_mutex_t LOCK_checkpoint; ...@@ -46,7 +46,7 @@ static mysql_mutex_t LOCK_checkpoint;
static mysql_cond_t COND_checkpoint; static mysql_cond_t COND_checkpoint;
/** @brief control structure for checkpoint background thread */ /** @brief control structure for checkpoint background thread */
static MA_SERVICE_THREAD_CONTROL checkpoint_control= static MA_SERVICE_THREAD_CONTROL checkpoint_control=
{THREAD_DEAD, FALSE, &LOCK_checkpoint, &COND_checkpoint}; {0, FALSE, FALSE, &LOCK_checkpoint, &COND_checkpoint};
/* is ulong like pagecache->blocks_changed */ /* is ulong like pagecache->blocks_changed */
static ulong pages_to_flush_before_next_checkpoint; static ulong pages_to_flush_before_next_checkpoint;
static PAGECACHE_FILE *dfiles, /**< data files to flush in background */ static PAGECACHE_FILE *dfiles, /**< data files to flush in background */
...@@ -326,7 +326,6 @@ static int really_execute_checkpoint(void) ...@@ -326,7 +326,6 @@ static int really_execute_checkpoint(void)
int ma_checkpoint_init(ulong interval) int ma_checkpoint_init(ulong interval)
{ {
pthread_t th;
int res= 0; int res= 0;
DBUG_ENTER("ma_checkpoint_init"); DBUG_ENTER("ma_checkpoint_init");
if (ma_service_thread_control_init(&checkpoint_control)) if (ma_service_thread_control_init(&checkpoint_control))
...@@ -334,14 +333,14 @@ int ma_checkpoint_init(ulong interval) ...@@ -334,14 +333,14 @@ int ma_checkpoint_init(ulong interval)
else if (interval > 0) else if (interval > 0)
{ {
compile_time_assert(sizeof(void *) >= sizeof(ulong)); compile_time_assert(sizeof(void *) >= sizeof(ulong));
if (!(res= mysql_thread_create(key_thread_checkpoint, if ((res= mysql_thread_create(key_thread_checkpoint,
&th, NULL, ma_checkpoint_background, &checkpoint_control.thread, NULL,
(void *)interval))) ma_checkpoint_background,
{ (void*) interval)))
/* thread lives, will have to be killed */ checkpoint_control.killed= TRUE;
checkpoint_control.status= THREAD_RUNNING;
}
} }
else
checkpoint_control.killed= TRUE;
DBUG_RETURN(res); DBUG_RETURN(res);
} }
...@@ -717,7 +716,6 @@ pthread_handler_t ma_checkpoint_background(void *arg) ...@@ -717,7 +716,6 @@ pthread_handler_t ma_checkpoint_background(void *arg)
DBUG_EXECUTE_IF("maria_checkpoint_indirect", level= CHECKPOINT_INDIRECT;); DBUG_EXECUTE_IF("maria_checkpoint_indirect", level= CHECKPOINT_INDIRECT;);
ma_checkpoint_execute(level, FALSE); ma_checkpoint_execute(level, FALSE);
} }
my_service_thread_signal_end(&checkpoint_control);
my_thread_end(); my_thread_end();
return 0; return 0;
} }
......
...@@ -54,7 +54,7 @@ static mysql_mutex_t LOCK_soft_sync; ...@@ -54,7 +54,7 @@ static mysql_mutex_t LOCK_soft_sync;
static mysql_cond_t COND_soft_sync; static mysql_cond_t COND_soft_sync;
/** @brief control structure for checkpoint background thread */ /** @brief control structure for checkpoint background thread */
static MA_SERVICE_THREAD_CONTROL soft_sync_control= static MA_SERVICE_THREAD_CONTROL soft_sync_control=
{THREAD_DEAD, FALSE, &LOCK_soft_sync, &COND_soft_sync}; {0, FALSE, FALSE, &LOCK_soft_sync, &COND_soft_sync};
/* transaction log file descriptor */ /* transaction log file descriptor */
...@@ -8819,7 +8819,6 @@ ma_soft_sync_background( void *arg __attribute__((unused))) ...@@ -8819,7 +8819,6 @@ ma_soft_sync_background( void *arg __attribute__((unused)))
if (my_service_thread_sleep(&soft_sync_control, sleep)) if (my_service_thread_sleep(&soft_sync_control, sleep))
break; break;
} }
my_service_thread_signal_end(&soft_sync_control);
my_thread_end(); my_thread_end();
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -8832,7 +8831,6 @@ ma_soft_sync_background( void *arg __attribute__((unused))) ...@@ -8832,7 +8831,6 @@ ma_soft_sync_background( void *arg __attribute__((unused)))
int translog_soft_sync_start(void) int translog_soft_sync_start(void)
{ {
pthread_t th;
int res= 0; int res= 0;
uint32 min, max; uint32 min, max;
DBUG_ENTER("translog_soft_sync_start"); DBUG_ENTER("translog_soft_sync_start");
...@@ -8847,9 +8845,10 @@ int translog_soft_sync_start(void) ...@@ -8847,9 +8845,10 @@ int translog_soft_sync_start(void)
soft_need_sync= 1; soft_need_sync= 1;
if (!(res= ma_service_thread_control_init(&soft_sync_control))) if (!(res= ma_service_thread_control_init(&soft_sync_control)))
if (!(res= mysql_thread_create(key_thread_soft_sync, if ((res= mysql_thread_create(key_thread_soft_sync,
&th, NULL, ma_soft_sync_background, NULL))) &soft_sync_control.thread, NULL,
soft_sync_control.status= THREAD_RUNNING; ma_soft_sync_background, NULL)))
soft_sync_control.killed= TRUE;
DBUG_RETURN(res); DBUG_RETURN(res);
} }
......
...@@ -500,8 +500,8 @@ static void test_key_cache(PAGECACHE *pagecache, ...@@ -500,8 +500,8 @@ static void test_key_cache(PAGECACHE *pagecache,
const char *where, my_bool lock); const char *where, my_bool lock);
#endif #endif
#define PAGECACHE_HASH(p, f, pos) (((ulong) (pos) + \ #define PAGECACHE_HASH(p, f, pos) (((size_t) (pos) + \
(ulong) (f).file) & (p->hash_entries-1)) (size_t) (f).file) & (p->hash_entries-1))
#define FILE_HASH(f) ((uint) (f).file & (PAGECACHE_CHANGED_BLOCKS_HASH - 1)) #define FILE_HASH(f) ((uint) (f).file & (PAGECACHE_CHANGED_BLOCKS_HASH - 1))
#define DEFAULT_PAGECACHE_DEBUG_LOG "pagecache_debug.log" #define DEFAULT_PAGECACHE_DEBUG_LOG "pagecache_debug.log"
...@@ -639,10 +639,10 @@ static my_bool pagecache_fwrite(PAGECACHE *pagecache, ...@@ -639,10 +639,10 @@ static my_bool pagecache_fwrite(PAGECACHE *pagecache,
{ {
char buff[80]; char buff[80];
uint len= my_sprintf(buff, uint len= my_sprintf(buff,
(buff, "fwrite: fd: %d id: %u page: %lu", (buff, "fwrite: fd: %d id: %u page: %llu",
filedesc->file, filedesc->file,
_ma_file_callback_to_id(filedesc->callback_data), _ma_file_callback_to_id(filedesc->callback_data),
(ulong) pageno)); pageno));
(void) translog_log_debug_info(0, LOGREC_DEBUG_INFO_QUERY, (void) translog_log_debug_info(0, LOGREC_DEBUG_INFO_QUERY,
(uchar*) buff, len); (uchar*) buff, len);
} }
...@@ -741,11 +741,11 @@ static inline uint next_power(uint value) ...@@ -741,11 +741,11 @@ static inline uint next_power(uint value)
*/ */
ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem, size_t init_pagecache(PAGECACHE *pagecache, size_t use_mem,
uint division_limit, uint age_threshold, uint division_limit, uint age_threshold,
uint block_size, myf my_readwrite_flags) uint block_size, myf my_readwrite_flags)
{ {
ulong blocks, hash_links, length; size_t blocks, hash_links, length;
int error; int error;
DBUG_ENTER("init_pagecache"); DBUG_ENTER("init_pagecache");
DBUG_ASSERT(block_size >= 512); DBUG_ASSERT(block_size >= 512);
...@@ -782,10 +782,10 @@ ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem, ...@@ -782,10 +782,10 @@ ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem,
DBUG_PRINT("info", ("block_size: %u", block_size)); DBUG_PRINT("info", ("block_size: %u", block_size));
DBUG_ASSERT(((uint)(1 << pagecache->shift)) == block_size); DBUG_ASSERT(((uint)(1 << pagecache->shift)) == block_size);
blocks= (ulong) (use_mem / (sizeof(PAGECACHE_BLOCK_LINK) + blocks= use_mem / (sizeof(PAGECACHE_BLOCK_LINK) +
2 * sizeof(PAGECACHE_HASH_LINK) + 2 * sizeof(PAGECACHE_HASH_LINK) +
sizeof(PAGECACHE_HASH_LINK*) * sizeof(PAGECACHE_HASH_LINK*) *
5/4 + block_size)); 5/4 + block_size);
/* /*
We need to support page cache with just one block to be able to do We need to support page cache with just one block to be able to do
scanning of rows-in-block files scanning of rows-in-block files
...@@ -816,7 +816,7 @@ ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem, ...@@ -816,7 +816,7 @@ ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem,
blocks--; blocks--;
/* Allocate memory for cache page buffers */ /* Allocate memory for cache page buffers */
if ((pagecache->block_mem= if ((pagecache->block_mem=
my_large_malloc((ulong) blocks * pagecache->block_size, my_large_malloc(blocks * pagecache->block_size,
MYF(MY_WME)))) MYF(MY_WME))))
{ {
/* /*
...@@ -824,7 +824,7 @@ ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem, ...@@ -824,7 +824,7 @@ ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem,
For each block 2 hash links are allocated For each block 2 hash links are allocated
*/ */
if ((pagecache->block_root= if ((pagecache->block_root=
(PAGECACHE_BLOCK_LINK*) my_malloc((size_t) length, MYF(0)))) (PAGECACHE_BLOCK_LINK*) my_malloc(length, MYF(0))))
break; break;
my_large_free(pagecache->block_mem); my_large_free(pagecache->block_mem);
pagecache->block_mem= 0; pagecache->block_mem= 0;
...@@ -832,7 +832,7 @@ ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem, ...@@ -832,7 +832,7 @@ ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem,
blocks= blocks / 4*3; blocks= blocks / 4*3;
} }
pagecache->blocks_unused= blocks; pagecache->blocks_unused= blocks;
pagecache->disk_blocks= (long) blocks; pagecache->disk_blocks= blocks;
pagecache->hash_links= hash_links; pagecache->hash_links= hash_links;
pagecache->hash_root= pagecache->hash_root=
(PAGECACHE_HASH_LINK**) ((char*) pagecache->block_root + (PAGECACHE_HASH_LINK**) ((char*) pagecache->block_root +
...@@ -887,7 +887,7 @@ ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem, ...@@ -887,7 +887,7 @@ ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem,
PAGECACHE_CHANGED_BLOCKS_HASH); PAGECACHE_CHANGED_BLOCKS_HASH);
pagecache->blocks= pagecache->disk_blocks > 0 ? pagecache->disk_blocks : 0; pagecache->blocks= pagecache->disk_blocks > 0 ? pagecache->disk_blocks : 0;
DBUG_RETURN((ulong) pagecache->disk_blocks); DBUG_RETURN((size_t)pagecache->disk_blocks);
err: err:
error= my_errno; error= my_errno;
...@@ -978,11 +978,11 @@ static int flush_all_key_blocks(PAGECACHE *pagecache) ...@@ -978,11 +978,11 @@ static int flush_all_key_blocks(PAGECACHE *pagecache)
So we disable it for now. So we disable it for now.
*/ */
#if NOT_USED /* keep disabled until code is fixed see above !! */ #if NOT_USED /* keep disabled until code is fixed see above !! */
ulong resize_pagecache(PAGECACHE *pagecache, size_t resize_pagecache(PAGECACHE *pagecache,
size_t use_mem, uint division_limit, size_t use_mem, uint division_limit,
uint age_threshold) uint age_threshold)
{ {
ulong blocks; size_t blocks;
struct st_my_thread_var *thread; struct st_my_thread_var *thread;
WQUEUE *wqueue; WQUEUE *wqueue;
...@@ -1379,7 +1379,7 @@ static void link_block(PAGECACHE *pagecache, PAGECACHE_BLOCK_LINK *block, ...@@ -1379,7 +1379,7 @@ static void link_block(PAGECACHE *pagecache, PAGECACHE_BLOCK_LINK *block,
("linked block: %u:%1u status: %x #requests: %u #available: %u", ("linked block: %u:%1u status: %x #requests: %u #available: %u",
PCBLOCK_NUMBER(pagecache, block), at_end, block->status, PCBLOCK_NUMBER(pagecache, block), at_end, block->status,
block->requests, pagecache->blocks_available)); block->requests, pagecache->blocks_available));
KEYCACHE_DBUG_ASSERT((ulong) pagecache->blocks_available <= KEYCACHE_DBUG_ASSERT(pagecache->blocks_available <=
pagecache->blocks_used); pagecache->blocks_used);
#endif #endif
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
...@@ -2018,7 +2018,7 @@ static PAGECACHE_BLOCK_LINK *find_block(PAGECACHE *pagecache, ...@@ -2018,7 +2018,7 @@ static PAGECACHE_BLOCK_LINK *find_block(PAGECACHE *pagecache,
/* There are some never used blocks, take first of them */ /* There are some never used blocks, take first of them */
block= &pagecache->block_root[pagecache->blocks_used]; block= &pagecache->block_root[pagecache->blocks_used];
block->buffer= ADD_TO_PTR(pagecache->block_mem, block->buffer= ADD_TO_PTR(pagecache->block_mem,
((ulong) pagecache->blocks_used* (pagecache->blocks_used*
pagecache->block_size), pagecache->block_size),
uchar*); uchar*);
pagecache->blocks_used++; pagecache->blocks_used++;
...@@ -4870,7 +4870,7 @@ my_bool pagecache_collect_changed_blocks_with_lsn(PAGECACHE *pagecache, ...@@ -4870,7 +4870,7 @@ my_bool pagecache_collect_changed_blocks_with_lsn(PAGECACHE *pagecache,
LSN *min_rec_lsn) LSN *min_rec_lsn)
{ {
my_bool error= 0; my_bool error= 0;
ulong stored_list_size= 0; size_t stored_list_size= 0;
uint file_hash; uint file_hash;
char *ptr; char *ptr;
LSN minimum_rec_lsn= LSN_MAX; LSN minimum_rec_lsn= LSN_MAX;
......
...@@ -117,20 +117,20 @@ typedef struct st_pagecache_hash_link PAGECACHE_HASH_LINK; ...@@ -117,20 +117,20 @@ typedef struct st_pagecache_hash_link PAGECACHE_HASH_LINK;
typedef struct st_pagecache typedef struct st_pagecache
{ {
size_t mem_size; /* specified size of the cache memory */ size_t mem_size; /* specified size of the cache memory */
ulong min_warm_blocks; /* min number of warm blocks; */ size_t min_warm_blocks; /* min number of warm blocks; */
ulong age_threshold; /* age threshold for hot blocks */ size_t age_threshold; /* age threshold for hot blocks */
ulonglong time; /* total number of block link operations */ ulonglong time; /* total number of block link operations */
ulong hash_entries; /* max number of entries in the hash table */ size_t hash_entries; /* max number of entries in the hash table */
long hash_links; /* max number of hash links */ ssize_t hash_links; /* max number of hash links */
long hash_links_used; /* number of hash links taken from free links pool */ ssize_t hash_links_used; /* number of hash links taken from free links pool */
long disk_blocks; /* max number of blocks in the cache */ ssize_t disk_blocks; /* max number of blocks in the cache */
ulong blocks_used; /* maximum number of concurrently used blocks */ size_t blocks_used; /* maximum number of concurrently used blocks */
ulong blocks_unused; /* number of currently unused blocks */ size_t blocks_unused; /* number of currently unused blocks */
ulong blocks_changed; /* number of currently dirty blocks */ size_t blocks_changed; /* number of currently dirty blocks */
ulong warm_blocks; /* number of blocks in warm sub-chain */ size_t warm_blocks; /* number of blocks in warm sub-chain */
ulong cnt_for_resize_op; /* counter to block resize operation */ size_t cnt_for_resize_op; /* counter to block resize operation */
ulong blocks_available; /* number of blocks available in the LRU chain */ size_t blocks_available; /* number of blocks available in the LRU chain */
long blocks; /* max number of blocks in the cache */ ssize_t blocks; /* max number of blocks in the cache */
uint32 block_size; /* size of the page buffer of a cache block */ uint32 block_size; /* size of the page buffer of a cache block */
PAGECACHE_HASH_LINK **hash_root;/* arr. of entries into hash table buckets */ PAGECACHE_HASH_LINK **hash_root;/* arr. of entries into hash table buckets */
PAGECACHE_HASH_LINK *hash_link_root;/* memory for hash table links */ PAGECACHE_HASH_LINK *hash_link_root;/* memory for hash table links */
...@@ -155,12 +155,12 @@ typedef struct st_pagecache ...@@ -155,12 +155,12 @@ typedef struct st_pagecache
*/ */
ulonglong param_buff_size; /* size the memory allocated for the cache */ ulonglong param_buff_size; /* size the memory allocated for the cache */
ulong param_block_size; /* size of the blocks in the key cache */ size_t param_block_size; /* size of the blocks in the key cache */
ulong param_division_limit; /* min. percentage of warm blocks */ size_t param_division_limit; /* min. percentage of warm blocks */
ulong param_age_threshold; /* determines when hot block is downgraded */ size_t param_age_threshold; /* determines when hot block is downgraded */
/* Statistics variables. These are reset in reset_pagecache_counters(). */ /* Statistics variables. These are reset in reset_pagecache_counters(). */
ulong global_blocks_changed; /* number of currently dirty blocks */ size_t global_blocks_changed; /* number of currently dirty blocks */
ulonglong global_cache_w_requests;/* number of write requests (write hits) */ ulonglong global_cache_w_requests;/* number of write requests (write hits) */
ulonglong global_cache_write; /* number of writes from cache to files */ ulonglong global_cache_write; /* number of writes from cache to files */
ulonglong global_cache_r_requests;/* number of read requests (read hits) */ ulonglong global_cache_r_requests;/* number of read requests (read hits) */
...@@ -193,10 +193,10 @@ typedef enum pagecache_flush_filter_result ...@@ -193,10 +193,10 @@ typedef enum pagecache_flush_filter_result
/* The default key cache */ /* The default key cache */
extern PAGECACHE dflt_pagecache_var, *dflt_pagecache; extern PAGECACHE dflt_pagecache_var, *dflt_pagecache;
extern ulong init_pagecache(PAGECACHE *pagecache, size_t use_mem, extern size_t init_pagecache(PAGECACHE *pagecache, size_t use_mem,
uint division_limit, uint age_threshold, uint division_limit, uint age_threshold,
uint block_size, myf my_read_flags); uint block_size, myf my_read_flags);
extern ulong resize_pagecache(PAGECACHE *pagecache, extern size_t resize_pagecache(PAGECACHE *pagecache,
size_t use_mem, uint division_limit, size_t use_mem, uint division_limit,
uint age_threshold); uint age_threshold);
extern void change_pagecache_param(PAGECACHE *pagecache, uint division_limit, extern void change_pagecache_param(PAGECACHE *pagecache, uint division_limit,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment