mirror of
https://github.com/MariaDB/server.git
synced 2026-05-16 11:57:38 +02:00
merge with 4.0
Build-tools/mysql-copyright: Auto merged Docs/Support/texi2html: Auto merged innobase/dict/dict0dict.c: Auto merged innobase/eval/eval0eval.c: Auto merged innobase/pars/pars0pars.c: Auto merged
This commit is contained in:
commit
94839ddf5e
8 changed files with 129 additions and 61 deletions
|
|
@ -1067,6 +1067,12 @@ dict_create_or_check_foreign_constraint_tables(void)
|
|||
there are 2 secondary indexes on SYS_FOREIGN, and they
|
||||
are defined just like below */
|
||||
|
||||
/* NOTE: when designing InnoDB's foreign key support in 2001, we made
|
||||
an error and made the table names and the foreign key id of type
|
||||
'CHAR' (internally, really a VARCHAR). We should have made the type
|
||||
VARBINARY, like in other InnoDB system tables, to get a clean
|
||||
design. */
|
||||
|
||||
str =
|
||||
"PROCEDURE CREATE_FOREIGN_SYS_TABLES_PROC () IS\n"
|
||||
"BEGIN\n"
|
||||
|
|
@ -1284,9 +1290,17 @@ loop:
|
|||
fputs(".\nA foreign key constraint of name ", ef);
|
||||
ut_print_name(ef, trx, foreign->id);
|
||||
fputs("\nalready exists."
|
||||
" (Note that internally InnoDB adds 'databasename/'\n"
|
||||
" (Note that internally InnoDB adds 'databasename/'\n"
|
||||
"in front of the user-defined constraint name).\n",
|
||||
ef);
|
||||
fputs("Note that InnoDB's FOREIGN KEY system tables store\n"
|
||||
"constraint names as case-insensitive, with the\n"
|
||||
"MySQL standard latin1_swedish_ci collation. If you\n"
|
||||
"create tables or databases whose names differ only in\n"
|
||||
"the character case, then collisions in constraint\n"
|
||||
"names can occur. Workaround: name your constraints\n"
|
||||
"explicitly with unique names.\n",
|
||||
ef);
|
||||
|
||||
mutex_exit(&dict_foreign_err_mutex);
|
||||
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ dict_index_build_internal_non_clust(
|
|||
dict_index_t* index); /* in: user representation of a non-clustered
|
||||
index */
|
||||
/**************************************************************************
|
||||
Removes a foreign constraint struct from the dictionet cache. */
|
||||
Removes a foreign constraint struct from the dictionary cache. */
|
||||
static
|
||||
void
|
||||
dict_foreign_remove_from_cache(
|
||||
|
|
@ -606,7 +606,7 @@ dict_table_get_on_id(
|
|||
dict_table_t* table;
|
||||
|
||||
if (ut_dulint_cmp(table_id, DICT_FIELDS_ID) <= 0
|
||||
|| trx->dict_operation) {
|
||||
|| trx->dict_operation_lock_mode == RW_X_LATCH) {
|
||||
/* It is a system table which will always exist in the table
|
||||
cache: we avoid acquiring the dictionary mutex, because
|
||||
if we are doing a rollback to handle an error in TABLE
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ Created 4/24/1996 Heikki Tuuri
|
|||
#include "mach0data.h"
|
||||
#include "dict0dict.h"
|
||||
#include "dict0boot.h"
|
||||
#include "rem0cmp.h"
|
||||
#include "srv0start.h"
|
||||
|
||||
/************************************************************************
|
||||
|
|
@ -1242,12 +1243,26 @@ loop:
|
|||
rec = btr_pcur_get_rec(&pcur);
|
||||
field = rec_get_nth_field(rec, 0, &len);
|
||||
|
||||
/* Check if the table name in record is the one searched for */
|
||||
if (len != ut_strlen(table_name)
|
||||
|| 0 != ut_memcmp(field, table_name, len)) {
|
||||
/* Check if the table name in the record is the one searched for; the
|
||||
following call does the comparison in the latin1_swedish_ci
|
||||
charset-collation, in a case-insensitive way. */
|
||||
|
||||
if (0 != cmp_data_data(dfield_get_type(dfield),
|
||||
dfield_get_data(dfield), dfield_get_len(dfield),
|
||||
field, len)) {
|
||||
|
||||
goto load_next_index;
|
||||
}
|
||||
|
||||
/* Since table names in SYS_FOREIGN are stored in a case-insensitive
|
||||
order, we have to check that the table name matches also in a binary
|
||||
string comparison. On Unix, MySQL allows table names that only differ
|
||||
in character case. */
|
||||
|
||||
if (0 != ut_memcmp(field, table_name, len)) {
|
||||
|
||||
goto next_rec;
|
||||
}
|
||||
|
||||
if (rec_get_deleted_flag(rec)) {
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue