From: Jon Olav Hauglid Date: May 20 2011 12:38pm Subject: bzr commit into mysql-trunk branch (jon.hauglid:3377) WL#5534 List-Archive: http://lists.mysql.com/commits/137784 Message-Id: <201105201238.p4KCcMnt016315@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6927062719061580694==" --===============6927062719061580694== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/x/mysql-trunk-online-alter/ based on revid:mayank.prasad@stripped 3377 Jon Olav Hauglid 2011-05-20 WL#5534 Online ALTER in 5.6* Implementation of ALTER TABLE syntax changes: ALTER TABLE ... algorithm concurrency algorithm: /* empty */ | ALGORITHM [=] DEFAULT | ALGORITHM [=] INPLACE | ALGORITHM [=] COPY concurrency: /* empty */ | LOCK [=] DEFAULT | LOCK [=] NONE | LOCK [=] SHARED | LOCK [=] EXCLUSIVE The patch updates sql_yacc.yy to add support for these two new clauses. It also updates the Alter_info class to store information about them for a given ALTER TABLE statement. None of these clauses currently have any effect. modified: sql/share/errmsg-utf8.txt sql/sql_lex.cc sql/sql_lex.h sql/sql_yacc.yy === modified file 'sql/share/errmsg-utf8.txt' --- a/sql/share/errmsg-utf8.txt 2011-05-12 17:29:19 +0000 +++ b/sql/share/errmsg-utf8.txt 2011-05-20 12:38:10 +0000 @@ -6503,3 +6503,8 @@ ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CR eng "The creation of some temporary tables could not be rolled back." ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE eng "Some temporary tables were dropped, but these operations could not be rolled back." + +ER_UNKNOWN_ALTER_ALGORITHM + eng "Unknown ALGORITHM value '%s'" +ER_UNKNOWN_ALTER_LOCK + eng "Unknown LOCK value '%s'" === modified file 'sql/sql_lex.cc' --- a/sql/sql_lex.cc 2011-04-01 14:04:52 +0000 +++ b/sql/sql_lex.cc 2011-05-20 12:38:10 +0000 @@ -1650,7 +1650,9 @@ Alter_info::Alter_info(const Alter_info num_parts(rhs.num_parts), change_level(rhs.change_level), datetime_field(rhs.datetime_field), - error_if_not_empty(rhs.error_if_not_empty) + error_if_not_empty(rhs.error_if_not_empty), + requested_algorithm(rhs.requested_algorithm), + requested_lock(rhs.requested_lock) { /* Make deep copies of used objects. @@ -1669,6 +1671,36 @@ Alter_info::Alter_info(const Alter_info } +bool Alter_info::set_requested_algorithm(const LEX_STRING *str) +{ + if (!my_strcasecmp(system_charset_info, str->str, "INPLACE")) + requested_algorithm= ALTER_TABLE_ALGORITHM_INPLACE; + else if (!my_strcasecmp(system_charset_info, str->str, "COPY")) + requested_algorithm= ALTER_TABLE_ALGORITHM_COPY; + else if (!my_strcasecmp(system_charset_info, str->str, "DEFAULT")) + requested_algorithm= ALTER_TABLE_ALGORITHM_DEFAULT; + else + return true; + return false; +} + + +bool Alter_info::set_requested_lock(const LEX_STRING *str) +{ + if (!my_strcasecmp(system_charset_info, str->str, "NONE")) + requested_lock= ALTER_TABLE_LOCK_NONE; + else if (!my_strcasecmp(system_charset_info, str->str, "SHARED")) + requested_lock= ALTER_TABLE_LOCK_SHARED; + else if (!my_strcasecmp(system_charset_info, str->str, "EXCLUSIVE")) + requested_lock= ALTER_TABLE_LOCK_EXCLUSIVE; + else if (!my_strcasecmp(system_charset_info, str->str, "DEFAULT")) + requested_lock= ALTER_TABLE_LOCK_DEFAULT; + else + return true; + return false; +} + + void trim_whitespace(const CHARSET_INFO *cs, LEX_STRING *str) { /* === modified file 'sql/sql_lex.h' --- a/sql/sql_lex.h 2011-05-12 17:29:19 +0000 +++ b/sql/sql_lex.h 2011-05-20 12:38:10 +0000 @@ -911,6 +911,20 @@ enum enum_alter_table_change_level ALTER_TABLE_INDEX_CHANGED= 2 }; +enum enum_alter_table_algorithm +{ + ALTER_TABLE_ALGORITHM_DEFAULT= 0, + ALTER_TABLE_ALGORITHM_INPLACE, + ALTER_TABLE_ALGORITHM_COPY +}; + +enum enum_alter_table_lock +{ + ALTER_TABLE_LOCK_DEFAULT= 0, + ALTER_TABLE_LOCK_NONE, + ALTER_TABLE_LOCK_SHARED, + ALTER_TABLE_LOCK_EXCLUSIVE +}; /** Temporary hack to enable a class bound forward declaration @@ -951,6 +965,8 @@ public: enum_alter_table_change_level change_level; Create_field *datetime_field; bool error_if_not_empty; + enum_alter_table_algorithm requested_algorithm; + enum_alter_table_lock requested_lock; Alter_info() : @@ -960,7 +976,9 @@ public: num_parts(0), change_level(ALTER_TABLE_METADATA_ONLY), datetime_field(NULL), - error_if_not_empty(FALSE) + error_if_not_empty(FALSE), + requested_algorithm(ALTER_TABLE_ALGORITHM_DEFAULT), + requested_lock(ALTER_TABLE_LOCK_DEFAULT) {} void reset() @@ -977,8 +995,35 @@ public: change_level= ALTER_TABLE_METADATA_ONLY; datetime_field= 0; error_if_not_empty= FALSE; + requested_algorithm= ALTER_TABLE_ALGORITHM_DEFAULT; + requested_lock= ALTER_TABLE_LOCK_DEFAULT; } Alter_info(const Alter_info &rhs, MEM_ROOT *mem_root); + + + /** + Parses the given string and sets requested_algorithm + if the string value matches a supported value. + Supported values: INPLACE, COPY, DEFAULT + + @param str String containing the supplied value + @retval false Supported value found, state updated + @retval true Not supported value, no changes made + */ + bool set_requested_algorithm(const LEX_STRING *str); + + + /** + Parses the given string and sets requested_lock + if the string value matches a supported value. + Supported values: NONE, SHARED, EXCLUSIVE, DEFAULT + + @param str String containing the supplied value + @retval false Supported value found, state updated + @retval true Not supported value, no changes made + */ + + bool set_requested_lock(const LEX_STRING *str); private: Alter_info &operator=(const Alter_info &rhs); // not implemented Alter_info(const Alter_info &rhs); // not implemented === modified file 'sql/sql_yacc.yy' --- a/sql/sql_yacc.yy 2011-05-12 05:52:39 +0000 +++ b/sql/sql_yacc.yy 2011-05-20 12:38:10 +0000 @@ -6871,6 +6871,24 @@ alter_list_item: LEX *lex=Lex; lex->alter_info.flags|= ALTER_ORDER; } + | ALGORITHM_SYM opt_equal DEFAULT {} + | ALGORITHM_SYM opt_equal ident_or_text + { + if (Lex->alter_info.set_requested_algorithm(&$3)) + { + my_error(ER_UNKNOWN_ALTER_ALGORITHM, MYF(0), $3.str); + MYSQL_YYABORT; + } + } + | LOCK_SYM opt_equal DEFAULT {} + | LOCK_SYM opt_equal ident_or_text + { + if (Lex->alter_info.set_requested_lock(&$3)) + { + my_error(ER_UNKNOWN_ALTER_LOCK, MYF(0), $3.str); + MYSQL_YYABORT; + } + } ; opt_column: --===============6927062719061580694== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jon.hauglid@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jon.hauglid@stripped # target_branch: file:///export/home/x/mysql-trunk-online-alter/ # testament_sha1: 391c498c885d8767b9d0d2d856b0b4184fa93fd8 # timestamp: 2011-05-20 14:38:13 +0200 # base_revision_id: mayank.prasad@stripped\ # 7sr3ixi04rnoqxwl # # Begin bundle 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 ok/8XckU4UJBZ3be1A== --===============6927062719061580694==--