diff options
Diffstat (limited to 'sql')
-rw-r--r-- | sql/event_scheduler.cc | 4 | ||||
-rw-r--r-- | sql/gen_win_tzname_data.ps1 | 2 | ||||
-rw-r--r-- | sql/opt_range.cc | 48 | ||||
-rw-r--r-- | sql/slave.cc | 1 | ||||
-rw-r--r-- | sql/sql_alter.cc | 34 | ||||
-rw-r--r-- | sql/sql_alter.h | 26 | ||||
-rw-r--r-- | sql/sql_lex.cc | 18 | ||||
-rw-r--r-- | sql/sql_parse.cc | 2 | ||||
-rw-r--r-- | sql/sql_partition.cc | 2 | ||||
-rw-r--r-- | sql/sql_select.cc | 21 | ||||
-rw-r--r-- | sql/sql_table.cc | 18 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 4 | ||||
-rw-r--r-- | sql/win_tzname_data.h | 8 |
13 files changed, 123 insertions, 65 deletions
diff --git a/sql/event_scheduler.cc b/sql/event_scheduler.cc index e842d95e3b0..4ecf19c389b 100644 --- a/sql/event_scheduler.cc +++ b/sql/event_scheduler.cc @@ -1,4 +1,5 @@ -/* Copyright (c) 2006, 2013, Oracle and/or its affiliates. +/* Copyright (c) 2006, 2019, Oracle and/or its affiliates. + Copyright (c) 2009, 2020, MariaDB Corporation 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 @@ -509,6 +510,7 @@ Event_scheduler::run(THD *thd) DBUG_PRINT("info", ("job_data is NULL, the thread was killed")); } DBUG_PRINT("info", ("state=%s", scheduler_states_names[state].str)); + free_root(thd->mem_root, MYF(0)); } LOCK_DATA(); diff --git a/sql/gen_win_tzname_data.ps1 b/sql/gen_win_tzname_data.ps1 index 13b6ce6ffd0..c0a37d21895 100644 --- a/sql/gen_win_tzname_data.ps1 +++ b/sql/gen_win_tzname_data.ps1 @@ -4,7 +4,7 @@ write-output "/* This file was generated using gen_win_tzname_data.ps1 */" $xdoc = new-object System.Xml.XmlDocument -$xdoc.load("https://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml") +$xdoc.load("https://raw.githubusercontent.com/unicode-org/cldr/master/common/supplemental/windowsZones.xml") $nodes = $xdoc.SelectNodes("//mapZone[@territory='001']") # use default territory (001) foreach ($node in $nodes) { write-output ('{L"'+ $node.other + '","'+ $node.type+'"},') diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 29cf73aeea0..be907a0c4b3 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -355,9 +355,8 @@ QUICK_RANGE_SELECT *get_quick_select(PARAM *param,uint index, uint mrr_buf_size, MEM_ROOT *alloc); static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree, bool index_read_must_be_used, - bool update_tbl_stats, - double read_time, - bool ror_scans_required); + bool for_range_access, + double read_time); static TRP_INDEX_INTERSECT *get_best_index_intersect(PARAM *param, SEL_TREE *tree, double read_time); @@ -2889,7 +2888,6 @@ int SQL_SELECT::test_quick_select(THD *thd, key_map keys_to_use, It is possible to use a range-based quick select (but it might be slower than 'all' table scan). */ - TRP_RANGE *range_trp; TRP_ROR_INTERSECT *rori_trp; TRP_INDEX_INTERSECT *intersect_trp; bool can_build_covering= FALSE; @@ -2902,9 +2900,9 @@ int SQL_SELECT::test_quick_select(THD *thd, key_map keys_to_use, remove_nonrange_trees(¶m, tree); /* Get best 'range' plan and prepare data for making other plans */ - if ((range_trp= get_key_scans_params(¶m, tree, - only_single_index_range_scan, TRUE, - best_read_time, FALSE))) + if (auto range_trp= get_key_scans_params(¶m, tree, + only_single_index_range_scan, + true, best_read_time)) { best_trp= range_trp; best_read_time= best_trp->read_cost; @@ -5097,9 +5095,6 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge, n_child_scans))) DBUG_RETURN(NULL); - const bool only_ror_scans_required= !optimizer_flag(param->thd, - OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION); - Json_writer_object trace_best_disjunct(thd); Json_writer_array to_merge(thd, "indexes_to_merge"); /* @@ -5115,8 +5110,7 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge, "tree in SEL_IMERGE");); Json_writer_object trace_idx(thd); if (!(*cur_child= get_key_scans_params(param, *ptree, TRUE, FALSE, - read_time, - only_ror_scans_required))) + read_time))) { /* One of index scans in this index_merge is more expensive than entire @@ -5474,9 +5468,12 @@ TABLE_READ_PLAN *merge_same_index_scans(PARAM *param, SEL_IMERGE *imerge, a random order 2. the functions that estimate the cost of a range scan and an index merge retrievals are not well calibrated + + As the best range access has been already chosen it does not + make sense to evaluate the one obtained from a degenerated + index merge. */ - trp= get_key_scans_params(param, *imerge->trees, FALSE, TRUE, - read_time, FALSE); + trp= 0; } DBUG_RETURN(trp); @@ -7361,9 +7358,9 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param, tree make range select for this SEL_TREE index_read_must_be_used if TRUE, assume 'index only' option will be set (except for clustered PK indexes) + for_range_access if TRUE the function is called to get the best range + plan for range access, not for index merge access read_time don't create read plans with cost > read_time. - only_ror_scans_required set to TRUE when we are only interested - in ROR scan RETURN Best range read plan NULL if no plan found or error occurred @@ -7371,9 +7368,8 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param, static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree, bool index_read_must_be_used, - bool update_tbl_stats, - double read_time, - bool only_ror_scans_required) + bool for_range_access, + double read_time) { uint idx, UNINIT_VAR(best_idx); SEL_ARG *key_to_read= NULL; @@ -7401,7 +7397,8 @@ static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree, (INDEX_SCAN_INFO **) alloc_root(param->mem_root, sizeof(INDEX_SCAN_INFO *) * param->keys); } - tree->index_scans_end= tree->index_scans; + tree->index_scans_end= tree->index_scans; + for (idx= 0; idx < param->keys; idx++) { SEL_ARG *key= tree->keys[idx]; @@ -7425,10 +7422,15 @@ static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree, trace_idx.add("index", param->table->key_info[keynr].name); found_records= check_quick_select(param, idx, read_index_only, key, - update_tbl_stats, &mrr_flags, + for_range_access, &mrr_flags, &buf_size, &cost, &is_ror_scan); - if (only_ror_scans_required && !is_ror_scan) + + if (!for_range_access && !is_ror_scan && + !optimizer_flag(param->thd,OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION)) + { + /* The scan is not a ROR-scan, just skip it */ continue; + } if (found_records != HA_POS_ERROR && tree->index_scans && (index_scan= (INDEX_SCAN_INFO *)alloc_root(param->mem_root, @@ -7457,7 +7459,7 @@ static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree, .add("index_only", read_index_only) .add("rows", found_records) .add("cost", cost.total_cost()); - } + } if ((found_records != HA_POS_ERROR) && is_ror_scan) { tree->n_ror_scans++; diff --git a/sql/slave.cc b/sql/slave.cc index fb26856f811..9b9400bd7bc 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -4914,6 +4914,7 @@ connected: goto err; goto connected; } + DBUG_EXECUTE_IF("fail_com_register_slave", goto err;); } DBUG_PRINT("info",("Starting reading binary log from master")); diff --git a/sql/sql_alter.cc b/sql/sql_alter.cc index 2cbbd83ec36..a1d235086db 100644 --- a/sql/sql_alter.cc +++ b/sql/sql_alter.cc @@ -71,6 +71,10 @@ bool Alter_info::set_requested_algorithm(const LEX_CSTRING *str) return false; } +void Alter_info::set_requested_algorithm(enum_alter_table_algorithm algo_val) +{ + requested_algorithm= algo_val; +} bool Alter_info::set_requested_lock(const LEX_CSTRING *str) { @@ -88,13 +92,16 @@ bool Alter_info::set_requested_lock(const LEX_CSTRING *str) return false; } -const char* Alter_info::algorithm() const +const char* Alter_info::algorithm_clause(THD *thd) const { - switch (requested_algorithm) { + switch (algorithm(thd)) { case ALTER_TABLE_ALGORITHM_INPLACE: return "ALGORITHM=INPLACE"; case ALTER_TABLE_ALGORITHM_COPY: return "ALGORITHM=COPY"; + case ALTER_TABLE_ALGORITHM_NONE: + DBUG_ASSERT(0); + /* Fall through */ case ALTER_TABLE_ALGORITHM_DEFAULT: return "ALGORITHM=DEFAULT"; case ALTER_TABLE_ALGORITHM_NOCOPY: @@ -125,9 +132,6 @@ const char* Alter_info::lock() const bool Alter_info::supports_algorithm(THD *thd, enum_alter_inplace_result result, const Alter_inplace_info *ha_alter_info) { - if (requested_algorithm == Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT) - requested_algorithm = (Alter_info::enum_alter_table_algorithm) thd->variables.alter_algorithm; - switch (result) { case HA_ALTER_INPLACE_EXCLUSIVE_LOCK: case HA_ALTER_INPLACE_SHARED_LOCK: @@ -136,16 +140,16 @@ bool Alter_info::supports_algorithm(THD *thd, enum_alter_inplace_result result, return false; case HA_ALTER_INPLACE_COPY_NO_LOCK: case HA_ALTER_INPLACE_COPY_LOCK: - if (requested_algorithm >= Alter_info::ALTER_TABLE_ALGORITHM_NOCOPY) + if (algorithm(thd) >= Alter_info::ALTER_TABLE_ALGORITHM_NOCOPY) { - ha_alter_info->report_unsupported_error(algorithm(), + ha_alter_info->report_unsupported_error(algorithm_clause(thd), "ALGORITHM=INPLACE"); return true; } return false; case HA_ALTER_INPLACE_NOCOPY_NO_LOCK: case HA_ALTER_INPLACE_NOCOPY_LOCK: - if (requested_algorithm == Alter_info::ALTER_TABLE_ALGORITHM_INSTANT) + if (algorithm(thd) == Alter_info::ALTER_TABLE_ALGORITHM_INSTANT) { ha_alter_info->report_unsupported_error("ALGORITHM=INSTANT", "ALGORITHM=NOCOPY"); @@ -153,9 +157,9 @@ bool Alter_info::supports_algorithm(THD *thd, enum_alter_inplace_result result, } return false; case HA_ALTER_INPLACE_NOT_SUPPORTED: - if (requested_algorithm >= Alter_info::ALTER_TABLE_ALGORITHM_INPLACE) + if (algorithm(thd) >= Alter_info::ALTER_TABLE_ALGORITHM_INPLACE) { - ha_alter_info->report_unsupported_error(algorithm(), + ha_alter_info->report_unsupported_error(algorithm_clause(thd), "ALGORITHM=COPY"); return true; } @@ -176,7 +180,7 @@ bool Alter_info::supports_lock(THD *thd, enum_alter_inplace_result result, case HA_ALTER_INPLACE_EXCLUSIVE_LOCK: // If SHARED lock and no particular algorithm was requested, use COPY. if (requested_lock == Alter_info::ALTER_TABLE_LOCK_SHARED && - requested_algorithm == Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT && + algorithm(thd) == Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT && thd->variables.alter_algorithm == Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT) return false; @@ -239,6 +243,14 @@ bool Alter_info::vers_prohibited(THD *thd) const return false; } +Alter_info::enum_alter_table_algorithm +Alter_info::algorithm(const THD *thd) const +{ + if (requested_algorithm == ALTER_TABLE_ALGORITHM_NONE) + return (Alter_info::enum_alter_table_algorithm) thd->variables.alter_algorithm; + return requested_algorithm; +} + Alter_table_ctx::Alter_table_ctx() : implicit_default_value_error_field(NULL), diff --git a/sql/sql_alter.h b/sql/sql_alter.h index a553c31346a..88873477c7c 100644 --- a/sql/sql_alter.h +++ b/sql/sql_alter.h @@ -58,7 +58,10 @@ public: ALTER_TABLE_ALGORITHM_NOCOPY, // Instant should allow any operation that changes metadata only. - ALTER_TABLE_ALGORITHM_INSTANT + ALTER_TABLE_ALGORITHM_INSTANT, + + // When there is no specification of algorithm during alter table. + ALTER_TABLE_ALGORITHM_NONE }; @@ -107,8 +110,11 @@ public: List<const char> partition_names; // Number of partitions. uint num_parts; +private: // Type of ALTER TABLE algorithm. enum_alter_table_algorithm requested_algorithm; + +public: // Type of ALTER TABLE lock. enum_alter_table_lock requested_lock; @@ -117,7 +123,7 @@ public: flags(0), partition_flags(0), keys_onoff(LEAVE_AS_IS), num_parts(0), - requested_algorithm(ALTER_TABLE_ALGORITHM_DEFAULT), + requested_algorithm(ALTER_TABLE_ALGORITHM_NONE), requested_lock(ALTER_TABLE_LOCK_DEFAULT) {} @@ -134,7 +140,7 @@ public: keys_onoff= LEAVE_AS_IS; num_parts= 0; partition_names.empty(); - requested_algorithm= ALTER_TABLE_ALGORITHM_DEFAULT; + requested_algorithm= ALTER_TABLE_ALGORITHM_NONE; requested_lock= ALTER_TABLE_LOCK_DEFAULT; } @@ -182,9 +188,15 @@ public: bool set_requested_lock(const LEX_CSTRING *str); /** + Set the requested algorithm to the given algorithm value + @param algo_value algorithm to be set + */ + void set_requested_algorithm(enum_alter_table_algorithm algo_value); + + /** Returns the algorithm value in the format "algorithm=value" */ - const char* algorithm() const; + const char* algorithm_clause(THD *thd) const; /** Returns the lock value in the format "lock=value" @@ -220,6 +232,12 @@ public: bool supports_lock(THD *thd, enum_alter_inplace_result result, const Alter_inplace_info *ha_alter_info); + /** + Return user requested algorithm. If user does not specify + algorithm then return alter_algorithm variable value. + */ + enum_alter_table_algorithm algorithm(const THD *thd) const; + private: Alter_info &operator=(const Alter_info &rhs); // not implemented Alter_info(const Alter_info &rhs); // not implemented diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 59990e11e71..12c3d0a153d 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1,4 +1,4 @@ -/* Copyright (c) 2000, 2014, Oracle and/or its affiliates. +/* Copyright (c) 2000, 2019, Oracle and/or its affiliates. Copyright (c) 2009, 2020, MariaDB Corporation This program is free software; you can redistribute it and/or modify @@ -1795,17 +1795,27 @@ static inline uint int_token(const char *str,uint length) */ bool Lex_input_stream::consume_comment(int remaining_recursions_permitted) { + // only one level of nested comments are allowed + DBUG_ASSERT(remaining_recursions_permitted == 0 || + remaining_recursions_permitted == 1); uchar c; while (!eof()) { c= yyGet(); - if (remaining_recursions_permitted > 0) + if (remaining_recursions_permitted == 1) { if ((c == '/') && (yyPeek() == '*')) { - yySkip(); // Eat asterisk - consume_comment(remaining_recursions_permitted - 1); + yyUnput('('); // Replace nested "/*..." with "(*..." + yySkip(); // and skip "(" + + yySkip(); /* Eat asterisk */ + if (consume_comment(0)) + return true; + + yyUnput(')'); // Replace "...*/" with "...*)" + yySkip(); // and skip ")" continue; } } diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 273e5b79233..872dc8ce840 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2103,7 +2103,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, general_log_print(thd, command, "Log: '%s' Pos: %lu", name, pos); if (nlen < FN_REFLEN) mysql_binlog_send(thd, thd->strmake(name, nlen), (my_off_t)pos, flags); - thd->unregister_slave(); + thd->unregister_slave(); // todo: can be extraneous /* fake COM_QUIT -- if we get here, the thread needs to terminate */ error = TRUE; break; diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index c7b1efc89f3..5ce2ba1f407 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -5908,7 +5908,7 @@ the generated partition syntax in a correct manner. */ if (alter_info->partition_flags != ALTER_PARTITION_INFO || !table->part_info || - alter_info->requested_algorithm != + alter_info->algorithm(thd) != Alter_info::ALTER_TABLE_ALGORITHM_INPLACE || !table->part_info->has_same_partitioning(part_info)) { diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 638f044be77..fcff6b6c3b1 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -10741,6 +10741,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, uchar *key_buff=j->ref.key_buff, *null_ref_key= 0; uint null_ref_part= NO_REF_PART; bool keyuse_uses_no_tables= TRUE; + uint not_null_keyparts= 0; if (ftkey) { j->ref.items[0]=((Item_func*)(keyuse->val))->key_item(); @@ -10770,6 +10771,8 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, j->ref.items[i]=keyuse->val; // Save for cond removal j->ref.cond_guards[i]= keyuse->cond_guard; + if (!keyuse->val->maybe_null || keyuse->null_rejecting) + not_null_keyparts++; /* Set ref.null_rejecting to true only if we are going to inject a "keyuse->val IS NOT NULL" predicate. @@ -10829,12 +10832,18 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, ulong key_flags= j->table->actual_key_flags(keyinfo); if (j->type == JT_CONST) j->table->const_table= 1; - else if (!((keyparts == keyinfo->user_defined_key_parts && - ((key_flags & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME)) || - (keyparts > keyinfo->user_defined_key_parts && // true only for extended keys - MY_TEST(key_flags & HA_EXT_NOSAME) && - keyparts == keyinfo->ext_key_parts)) || - null_ref_key) + else if (!((keyparts == keyinfo->user_defined_key_parts && + ( + (key_flags & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME || + /* Unique key and all keyparts are NULL rejecting */ + ((key_flags & HA_NOSAME) && keyparts == not_null_keyparts) + )) || + /* true only for extended keys */ + (keyparts > keyinfo->user_defined_key_parts && + MY_TEST(key_flags & HA_EXT_NOSAME) && + keyparts == keyinfo->ext_key_parts) + ) || + null_ref_key) { /* Must read with repeat */ j->type= null_ref_key ? JT_REF_OR_NULL : JT_REF; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index b272a0f44b5..1434e0d61d4 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -10108,7 +10108,7 @@ do_continue:; */ if (!(alter_info->flags & ~(ALTER_RENAME | ALTER_KEYS_ONOFF)) && alter_info->partition_flags == 0 && - alter_info->requested_algorithm != + alter_info->algorithm(thd) != Alter_info::ALTER_TABLE_ALGORITHM_COPY) // No need to touch frm. { bool res; @@ -10182,7 +10182,7 @@ do_continue:; "LOCK=DEFAULT"); DBUG_RETURN(true); } - else if (alter_info->requested_algorithm != + else if (alter_info->algorithm(thd) != Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT) { my_error(ER_ALTER_OPERATION_NOT_SUPPORTED_REASON, MYF(0), @@ -10222,20 +10222,21 @@ do_continue:; using in-place API. */ if ((thd->variables.alter_algorithm == Alter_info::ALTER_TABLE_ALGORITHM_COPY && - alter_info->requested_algorithm != + alter_info->algorithm(thd) != Alter_info::ALTER_TABLE_ALGORITHM_INPLACE) || is_inplace_alter_impossible(table, create_info, alter_info) || IF_PARTITIONING((partition_changed && !(table->s->db_type()->partition_flags() & HA_USE_AUTO_PARTITION)), 0)) { - if (alter_info->requested_algorithm == + if (alter_info->algorithm(thd) == Alter_info::ALTER_TABLE_ALGORITHM_INPLACE) { my_error(ER_ALTER_OPERATION_NOT_SUPPORTED, MYF(0), "ALGORITHM=INPLACE", "ALGORITHM=COPY"); DBUG_RETURN(true); } - alter_info->requested_algorithm= Alter_info::ALTER_TABLE_ALGORITHM_COPY; + alter_info->set_requested_algorithm( + Alter_info::ALTER_TABLE_ALGORITHM_COPY); } /* @@ -10327,7 +10328,7 @@ do_continue:; DBUG_RETURN(true); } - if (alter_info->requested_algorithm != Alter_info::ALTER_TABLE_ALGORITHM_COPY) + if (alter_info->algorithm(thd) != Alter_info::ALTER_TABLE_ALGORITHM_COPY) { Alter_inplace_info ha_alter_info(create_info, alter_info, key_info, key_count, @@ -10425,7 +10426,7 @@ do_continue:; // If SHARED lock and no particular algorithm was requested, use COPY. if (inplace_supported == HA_ALTER_INPLACE_EXCLUSIVE_LOCK && alter_info->requested_lock == Alter_info::ALTER_TABLE_LOCK_SHARED && - alter_info->requested_algorithm == + alter_info->algorithm(thd) == Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT && thd->variables.alter_algorithm == Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT) @@ -11368,7 +11369,8 @@ bool mysql_recreate_table(THD *thd, TABLE_LIST *table_list, bool table_copy) alter_info.flags= (ALTER_CHANGE_COLUMN | ALTER_RECREATE); if (table_copy) - alter_info.requested_algorithm= Alter_info::ALTER_TABLE_ALGORITHM_COPY; + alter_info.set_requested_algorithm( + Alter_info::ALTER_TABLE_ALGORITHM_COPY); bool res= mysql_alter_table(thd, &null_clex_str, &null_clex_str, &create_info, table_list, &alter_info, 0, diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 8d20193e518..b946b8a9ee0 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -7842,8 +7842,8 @@ opt_index_lock_algorithm: alter_algorithm_option: ALGORITHM_SYM opt_equal DEFAULT { - Lex->alter_info.requested_algorithm= - Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT; + Lex->alter_info.set_requested_algorithm( + Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT); } | ALGORITHM_SYM opt_equal ident { diff --git a/sql/win_tzname_data.h b/sql/win_tzname_data.h index 28a14ab7c11..03197227f8e 100644 --- a/sql/win_tzname_data.h +++ b/sql/win_tzname_data.h @@ -23,13 +23,13 @@ {L"Haiti Standard Time","America/Port-au-Prince"}, {L"Cuba Standard Time","America/Havana"}, {L"US Eastern Standard Time","America/Indianapolis"}, +{L"Turks And Caicos Standard Time","America/Grand_Turk"}, {L"Paraguay Standard Time","America/Asuncion"}, {L"Atlantic Standard Time","America/Halifax"}, {L"Venezuela Standard Time","America/Caracas"}, {L"Central Brazilian Standard Time","America/Cuiaba"}, {L"SA Western Standard Time","America/La_Paz"}, {L"Pacific SA Standard Time","America/Santiago"}, -{L"Turks And Caicos Standard Time","America/Grand_Turk"}, {L"Newfoundland Standard Time","America/St_Johns"}, {L"Tocantins Standard Time","America/Araguaina"}, {L"E. South America Standard Time","America/Sao_Paulo"}, @@ -46,11 +46,11 @@ {L"UTC","Etc/GMT"}, {L"GMT Standard Time","Europe/London"}, {L"Greenwich Standard Time","Atlantic/Reykjavik"}, +{L"Sao Tome Standard Time","Africa/Sao_Tome"}, +{L"Morocco Standard Time","Africa/Casablanca"}, {L"W. Europe Standard Time","Europe/Berlin"}, {L"Central Europe Standard Time","Europe/Budapest"}, {L"Romance Standard Time","Europe/Paris"}, -{L"Morocco Standard Time","Africa/Casablanca"}, -{L"Sao Tome Standard Time","Africa/Sao_Tome"}, {L"Central European Standard Time","Europe/Warsaw"}, {L"W. Central Africa Standard Time","Africa/Lagos"}, {L"Jordan Standard Time","Asia/Amman"}, @@ -81,11 +81,13 @@ {L"Mauritius Standard Time","Indian/Mauritius"}, {L"Saratov Standard Time","Europe/Saratov"}, {L"Georgian Standard Time","Asia/Tbilisi"}, +{L"Volgograd Standard Time","Europe/Volgograd"}, {L"Caucasus Standard Time","Asia/Yerevan"}, {L"Afghanistan Standard Time","Asia/Kabul"}, {L"West Asia Standard Time","Asia/Tashkent"}, {L"Ekaterinburg Standard Time","Asia/Yekaterinburg"}, {L"Pakistan Standard Time","Asia/Karachi"}, +{L"Qyzylorda Standard Time","Asia/Qyzylorda"}, {L"India Standard Time","Asia/Calcutta"}, {L"Sri Lanka Standard Time","Asia/Colombo"}, {L"Nepal Standard Time","Asia/Katmandu"}, |