Applied InnoDB snapshot 5.1-ss927

Fixes:
- Bug #23368: crash during insert, table has foreign key pointing into other schema,permission
This commit is contained in:
tsmith/tim@siva.hindu.god 2006-10-20 13:44:49 -06:00
parent 07db2bc7e5
commit 09e094850b
3 changed files with 18 additions and 16 deletions

View file

@ -4146,18 +4146,8 @@ dict_print_info_on_foreign_key_in_create_format(
dict_remove_db_name(
foreign->referenced_table_name));
} else {
/* Look for the '/' in the table name */
i = 0;
while (foreign->referenced_table_name[i] != '/') {
i++;
}
ut_print_namel(file, trx, TRUE,
foreign->referenced_table_name, i);
putc('.', file);
ut_print_name(file, trx, TRUE,
foreign->referenced_table_name + i + 1);
foreign->referenced_table_name);
}
putc(' ', file);

View file

@ -218,7 +218,10 @@ ut_print_filename(
struct trx_struct;
/**************************************************************************
Outputs a NUL-terminated string, quoted as an SQL identifier. */
Outputs a fixed-length string, quoted as an SQL identifier.
If the string contains a slash '/', the string will be
output as two identifiers separated by a period (.),
as in SQL database_name.identifier. */
void
ut_print_name(
@ -230,7 +233,10 @@ ut_print_name(
const char* name); /* in: name to print */
/**************************************************************************
Outputs a fixed-length string, quoted as an SQL identifier. */
Outputs a fixed-length string, quoted as an SQL identifier.
If the string contains a slash '/', the string will be
output as two identifiers separated by a period (.),
as in SQL database_name.identifier. */
void
ut_print_namel(

View file

@ -394,7 +394,10 @@ done:
}
/**************************************************************************
Outputs a NUL-terminated string, quoted as an SQL identifier. */
Outputs a fixed-length string, quoted as an SQL identifier.
If the string contains a slash '/', the string will be
output as two identifiers separated by a period (.),
as in SQL database_name.identifier. */
void
ut_print_name(
@ -409,7 +412,10 @@ ut_print_name(
}
/**************************************************************************
Outputs a fixed-length string, quoted as an SQL identifier. */
Outputs a fixed-length string, quoted as an SQL identifier.
If the string contains a slash '/', the string will be
output as two identifiers separated by a period (.),
as in SQL database_name.identifier. */
void
ut_print_namel(
@ -424,7 +430,7 @@ ut_print_namel(
#ifdef UNIV_HOTBACKUP
fwrite(name, 1, namelen, f);
#else
char* slash = strchr(name, '/');
char* slash = memchr(name, '/', namelen);
if (UNIV_LIKELY_NULL(slash)) {
/* Print the database name and table name separately. */