From: Konstantin Osipov Date: July 29 2009 11:57am Subject: bzr commit into mysql-6.1-fk branch (kostja:2762) WL#148 List-Archive: http://lists.mysql.com/commits/79517 Message-Id: <20090729115716.8751D1E08B2@ibbur.local> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_q+ThhWlDFmbh0Kaw4tMtcA)" --Boundary_(ID_q+ThhWlDFmbh0Kaw4tMtcA) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///opt/local/work/6.1-fk-stage-new/ based on revid:kostja@stripped 2762 Konstantin Osipov 2009-07-29 WL#148 "Foreign keys", Milestone 13 "ALTER", misc review fixes. modified: sql/fk_dd.cc sql/sql_class.h === modified file 'sql/fk_dd.cc' --- a/sql/fk_dd.cc 2009-07-29 10:17:28 +0000 +++ b/sql/fk_dd.cc 2009-07-29 11:57:04 +0000 @@ -1835,21 +1835,22 @@ bool fk_check_constraint_added(THD *thd, an error was emitted. */ -static bool -fk_check_if_can_change_engine(THD *thd, Foreign_key_parent *fkey, - TABLE_LIST *old_table, handler *new_file) +bool +Foreign_key_parent:: +check_if_can_change_engine(THD *thd, + TABLE_LIST *old_table, handler *new_file) { if (!(thd->options & OPTION_NO_FOREIGN_KEY_CHECKS)) { handler *old_file= old_table->table->file; - if (! fkey->is_self_reference && + if (! this->is_self_reference && (new_file->ha_table_flags() & HA_NO_TRANSACTIONS) != (old_file->ha_table_flags() & HA_NO_TRANSACTIONS)) { my_error(ER_FK_NON_TRANSACTIONAL_AND_TRANSACTIONAL, MYF(0), - fkey->name.str); + this->name.str); return TRUE; } /* @@ -1858,12 +1859,12 @@ fk_check_if_can_change_engine(THD *thd, what will happen if we encounter some problem in the middle of cascading update). So disallow it. */ - if (fkey->has_cascading_action()) + if (this->has_cascading_action()) { if (new_file->ha_table_flags() & HA_NO_TRANSACTIONS) { my_error(ER_FK_NON_TRANSACTIONAL_CASCADING_ACTION, MYF(0), - fkey->name.str, old_table->table_name); + this->name.str, old_table->table_name); return TRUE; } } @@ -1874,12 +1875,12 @@ fk_check_if_can_change_engine(THD *thd, like RESTRICT for UPDATE/DELETE). Alternative is emit warning in this case. */ - if ((fkey->update_opt == FK_OPTION_NO_ACTION || - fkey->delete_opt == FK_OPTION_NO_ACTION)) + if ((this->update_opt == FK_OPTION_NO_ACTION || + this->delete_opt == FK_OPTION_NO_ACTION)) { if (new_file->ha_table_flags() & HA_NO_TRANSACTIONS) { - my_error(ER_FK_NON_TRANSACTIONAL_NO_ACTION, MYF(0), fkey->name.str, + my_error(ER_FK_NON_TRANSACTIONAL_NO_ACTION, MYF(0), this->name.str, old_table->table_name); return TRUE; } @@ -1916,12 +1917,12 @@ fk_check_if_can_change_engine(THD *thd, while ((fk_c= c_it++)) if (fk_c->exists && - fk_check_if_can_change_engine(thd, fk_c, old_table, new_file)) + fk_c->check_if_can_change_engine(thd, old_table, new_file)) return TRUE; while ((fk_p= p_it++)) if (fk_p->exists && - fk_check_if_can_change_engine(thd, fk_p, old_table, new_file)) + fk_p->check_if_can_change_engine(thd, old_table, new_file)) return TRUE; return FALSE; === modified file 'sql/sql_class.h' --- a/sql/sql_class.h 2009-07-28 13:21:59 +0000 +++ b/sql/sql_class.h 2009-07-29 11:57:04 +0000 @@ -304,10 +304,10 @@ enum enum_fk_option { FK_OPTION_UNDEF, F /** - Class that represents foreign key in the structures describing its - parent table in CREATE TABLE/ALTER TABLE statements. Contains all - information about foreign key which should be saved in .FRM of its - parent table. + Class that represents foreign key in the structures describing its + parent table in CREATE TABLE/ALTER TABLE statements. Contains all + information about foreign key which should be saved in .FRM of its + parent table. */ class Foreign_key_parent: public Sql_alloc { @@ -378,6 +378,8 @@ public: delete_opt != FK_OPTION_RESTRICT)); } + bool check_if_can_change_engine(THD *thd, TABLE_LIST *old_table, handler + *new_file); protected: virtual uint get_match_opt_frm_length(); virtual char get_additional_flags(); --Boundary_(ID_q+ThhWlDFmbh0Kaw4tMtcA) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/kostja@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/kostja@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: kostja@stripped # target_branch: file:///opt/local/work/6.1-fk-stage-new/ # testament_sha1: 0cfb3db89dcfd11fe385220ad3a49b85c8c5d27b # timestamp: 2009-07-29 15:57:16 +0400 # base_revision_id: kostja@stripped # # Begin bundle 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 --Boundary_(ID_q+ThhWlDFmbh0Kaw4tMtcA)--