Loading innobase/dict/dict0dict.c +16 −3 Original line number Diff line number Diff line Loading @@ -2201,7 +2201,8 @@ ulint dict_foreign_add_to_cache( /*======================*/ /* out: DB_SUCCESS or error code */ dict_foreign_t* foreign) /* in, own: foreign key constraint */ dict_foreign_t* foreign, /* in, own: foreign key constraint */ ibool check_types) /* in: TRUE=check type compatibility */ { dict_table_t* for_table; dict_table_t* ref_table; Loading Loading @@ -2237,10 +2238,16 @@ dict_foreign_add_to_cache( } if (for_in_cache->referenced_table == NULL && ref_table) { dict_index_t* types_idx; if (check_types) { types_idx = for_in_cache->foreign_index; } else { types_idx = NULL; } index = dict_foreign_find_index(ref_table, (const char**) for_in_cache->referenced_col_names, for_in_cache->n_fields, for_in_cache->foreign_index); types_idx); if (index == NULL) { dict_foreign_error_report(ef, for_in_cache, Loading @@ -2264,10 +2271,16 @@ dict_foreign_add_to_cache( } if (for_in_cache->foreign_table == NULL && for_table) { dict_index_t* types_idx; if (check_types) { types_idx = for_in_cache->referenced_index; } else { types_idx = NULL; } index = dict_foreign_find_index(for_table, (const char**) for_in_cache->foreign_col_names, for_in_cache->n_fields, for_in_cache->referenced_index); types_idx); if (index == NULL) { dict_foreign_error_report(ef, for_in_cache, Loading innobase/dict/dict0load.c +7 −8 Original line number Diff line number Diff line Loading @@ -868,7 +868,7 @@ dict_load_table( dict_load_indexes(table, heap); err = dict_load_foreigns(table->name); err = dict_load_foreigns(table->name, TRUE); /* if (err != DB_SUCCESS) { Loading Loading @@ -1089,8 +1089,9 @@ ulint dict_load_foreign( /*==============*/ /* out: DB_SUCCESS or error code */ const char* id) /* in: foreign constraint id as a const char* id, /* in: foreign constraint id as a null-terminated string */ ibool check_types)/* in: TRUE=check type compatibility */ { dict_foreign_t* foreign; dict_table_t* sys_foreign; Loading @@ -1102,7 +1103,6 @@ dict_load_foreign( rec_t* rec; byte* field; ulint len; ulint err; mtr_t mtr; #ifdef UNIV_SYNC_DEBUG Loading Loading @@ -1204,9 +1204,7 @@ dict_load_foreign( a new foreign key constraint but loading one from the data dictionary. */ err = dict_foreign_add_to_cache(foreign); return(err); return(dict_foreign_add_to_cache(foreign, check_types)); } /*************************************************************************** Loading @@ -1220,7 +1218,8 @@ ulint dict_load_foreigns( /*===============*/ /* out: DB_SUCCESS or error code */ const char* table_name) /* in: table name */ const char* table_name, /* in: table name */ ibool check_types) /* in: TRUE=check type compatibility */ { btr_pcur_t pcur; mem_heap_t* heap; Loading Loading @@ -1320,7 +1319,7 @@ dict_load_foreigns( /* Load the foreign constraint definition to the dictionary cache */ err = dict_load_foreign(id); err = dict_load_foreign(id, check_types); if (err != DB_SUCCESS) { btr_pcur_close(&pcur); Loading innobase/include/dict0dict.h +2 −1 Original line number Diff line number Diff line Loading @@ -189,7 +189,8 @@ ulint dict_foreign_add_to_cache( /*======================*/ /* out: DB_SUCCESS or error code */ dict_foreign_t* foreign); /* in, own: foreign key constraint */ dict_foreign_t* foreign, /* in, own: foreign key constraint */ ibool check_types); /* in: TRUE=check type compatibility */ /************************************************************************* Checks if a table is referenced by foreign keys. */ Loading innobase/include/dict0load.h +2 −1 Original line number Diff line number Diff line Loading @@ -81,7 +81,8 @@ ulint dict_load_foreigns( /*===============*/ /* out: DB_SUCCESS or error code */ const char* table_name); /* in: table name */ const char* table_name, /* in: table name */ ibool check_types); /* in: TRUE=check type compatibility */ /************************************************************************ Prints to the standard output information on all tables found in the data dictionary system table. */ Loading innobase/row/row0mysql.c +3 −5 Original line number Diff line number Diff line Loading @@ -2075,7 +2075,7 @@ row_table_add_foreign_constraints( if (err == DB_SUCCESS) { /* Check that also referencing constraints are ok */ err = dict_load_foreigns(name); err = dict_load_foreigns(name, trx->check_foreigns); } if (err != DB_SUCCESS) { Loading Loading @@ -3784,6 +3784,8 @@ row_rename_table_for_mysql( goto funct_exit; } err = dict_load_foreigns(new_name, trx->check_foreigns); if (row_is_mysql_tmp_table_name(old_name)) { /* MySQL is doing an ALTER TABLE command and it Loading @@ -3793,8 +3795,6 @@ row_rename_table_for_mysql( table. But we want to load also the foreign key constraint definitions for the original table name. */ err = dict_load_foreigns(new_name); if (err != DB_SUCCESS) { ut_print_timestamp(stderr); fputs(" InnoDB: Error: in ALTER TABLE ", Loading @@ -3813,8 +3813,6 @@ row_rename_table_for_mysql( trx->error_state = DB_SUCCESS; } } else { err = dict_load_foreigns(new_name); if (err != DB_SUCCESS) { ut_print_timestamp(stderr); Loading Loading
innobase/dict/dict0dict.c +16 −3 Original line number Diff line number Diff line Loading @@ -2201,7 +2201,8 @@ ulint dict_foreign_add_to_cache( /*======================*/ /* out: DB_SUCCESS or error code */ dict_foreign_t* foreign) /* in, own: foreign key constraint */ dict_foreign_t* foreign, /* in, own: foreign key constraint */ ibool check_types) /* in: TRUE=check type compatibility */ { dict_table_t* for_table; dict_table_t* ref_table; Loading Loading @@ -2237,10 +2238,16 @@ dict_foreign_add_to_cache( } if (for_in_cache->referenced_table == NULL && ref_table) { dict_index_t* types_idx; if (check_types) { types_idx = for_in_cache->foreign_index; } else { types_idx = NULL; } index = dict_foreign_find_index(ref_table, (const char**) for_in_cache->referenced_col_names, for_in_cache->n_fields, for_in_cache->foreign_index); types_idx); if (index == NULL) { dict_foreign_error_report(ef, for_in_cache, Loading @@ -2264,10 +2271,16 @@ dict_foreign_add_to_cache( } if (for_in_cache->foreign_table == NULL && for_table) { dict_index_t* types_idx; if (check_types) { types_idx = for_in_cache->referenced_index; } else { types_idx = NULL; } index = dict_foreign_find_index(for_table, (const char**) for_in_cache->foreign_col_names, for_in_cache->n_fields, for_in_cache->referenced_index); types_idx); if (index == NULL) { dict_foreign_error_report(ef, for_in_cache, Loading
innobase/dict/dict0load.c +7 −8 Original line number Diff line number Diff line Loading @@ -868,7 +868,7 @@ dict_load_table( dict_load_indexes(table, heap); err = dict_load_foreigns(table->name); err = dict_load_foreigns(table->name, TRUE); /* if (err != DB_SUCCESS) { Loading Loading @@ -1089,8 +1089,9 @@ ulint dict_load_foreign( /*==============*/ /* out: DB_SUCCESS or error code */ const char* id) /* in: foreign constraint id as a const char* id, /* in: foreign constraint id as a null-terminated string */ ibool check_types)/* in: TRUE=check type compatibility */ { dict_foreign_t* foreign; dict_table_t* sys_foreign; Loading @@ -1102,7 +1103,6 @@ dict_load_foreign( rec_t* rec; byte* field; ulint len; ulint err; mtr_t mtr; #ifdef UNIV_SYNC_DEBUG Loading Loading @@ -1204,9 +1204,7 @@ dict_load_foreign( a new foreign key constraint but loading one from the data dictionary. */ err = dict_foreign_add_to_cache(foreign); return(err); return(dict_foreign_add_to_cache(foreign, check_types)); } /*************************************************************************** Loading @@ -1220,7 +1218,8 @@ ulint dict_load_foreigns( /*===============*/ /* out: DB_SUCCESS or error code */ const char* table_name) /* in: table name */ const char* table_name, /* in: table name */ ibool check_types) /* in: TRUE=check type compatibility */ { btr_pcur_t pcur; mem_heap_t* heap; Loading Loading @@ -1320,7 +1319,7 @@ dict_load_foreigns( /* Load the foreign constraint definition to the dictionary cache */ err = dict_load_foreign(id); err = dict_load_foreign(id, check_types); if (err != DB_SUCCESS) { btr_pcur_close(&pcur); Loading
innobase/include/dict0dict.h +2 −1 Original line number Diff line number Diff line Loading @@ -189,7 +189,8 @@ ulint dict_foreign_add_to_cache( /*======================*/ /* out: DB_SUCCESS or error code */ dict_foreign_t* foreign); /* in, own: foreign key constraint */ dict_foreign_t* foreign, /* in, own: foreign key constraint */ ibool check_types); /* in: TRUE=check type compatibility */ /************************************************************************* Checks if a table is referenced by foreign keys. */ Loading
innobase/include/dict0load.h +2 −1 Original line number Diff line number Diff line Loading @@ -81,7 +81,8 @@ ulint dict_load_foreigns( /*===============*/ /* out: DB_SUCCESS or error code */ const char* table_name); /* in: table name */ const char* table_name, /* in: table name */ ibool check_types); /* in: TRUE=check type compatibility */ /************************************************************************ Prints to the standard output information on all tables found in the data dictionary system table. */ Loading
innobase/row/row0mysql.c +3 −5 Original line number Diff line number Diff line Loading @@ -2075,7 +2075,7 @@ row_table_add_foreign_constraints( if (err == DB_SUCCESS) { /* Check that also referencing constraints are ok */ err = dict_load_foreigns(name); err = dict_load_foreigns(name, trx->check_foreigns); } if (err != DB_SUCCESS) { Loading Loading @@ -3784,6 +3784,8 @@ row_rename_table_for_mysql( goto funct_exit; } err = dict_load_foreigns(new_name, trx->check_foreigns); if (row_is_mysql_tmp_table_name(old_name)) { /* MySQL is doing an ALTER TABLE command and it Loading @@ -3793,8 +3795,6 @@ row_rename_table_for_mysql( table. But we want to load also the foreign key constraint definitions for the original table name. */ err = dict_load_foreigns(new_name); if (err != DB_SUCCESS) { ut_print_timestamp(stderr); fputs(" InnoDB: Error: in ALTER TABLE ", Loading @@ -3813,8 +3813,6 @@ row_rename_table_for_mysql( trx->error_state = DB_SUCCESS; } } else { err = dict_load_foreigns(new_name); if (err != DB_SUCCESS) { ut_print_timestamp(stderr); Loading