mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
dict_print_info_on_foreign_key_in_create_format(): Use ut_print_name()
instead of passing the wrong length to ut_print_namel(). (Bug #23368) ut_print_name(), ut_print_namel(): Document the special treatment of '/'. ut_print_namel(): Replace strchr() with memchr(), as the string might not be NUL-terminated.
This commit is contained in:
parent
7241316fba
commit
3d9db439cd
3 changed files with 18 additions and 16 deletions
|
@ -4146,18 +4146,8 @@ dict_print_info_on_foreign_key_in_create_format(
|
||||||
dict_remove_db_name(
|
dict_remove_db_name(
|
||||||
foreign->referenced_table_name));
|
foreign->referenced_table_name));
|
||||||
} else {
|
} 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,
|
ut_print_name(file, trx, TRUE,
|
||||||
foreign->referenced_table_name + i + 1);
|
foreign->referenced_table_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
putc(' ', file);
|
putc(' ', file);
|
||||||
|
|
|
@ -218,7 +218,10 @@ ut_print_filename(
|
||||||
struct trx_struct;
|
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
|
void
|
||||||
ut_print_name(
|
ut_print_name(
|
||||||
|
@ -230,7 +233,10 @@ ut_print_name(
|
||||||
const char* name); /* in: name to print */
|
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
|
void
|
||||||
ut_print_namel(
|
ut_print_namel(
|
||||||
|
|
12
ut/ut0ut.c
12
ut/ut0ut.c
|
@ -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
|
void
|
||||||
ut_print_name(
|
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
|
void
|
||||||
ut_print_namel(
|
ut_print_namel(
|
||||||
|
@ -424,7 +430,7 @@ ut_print_namel(
|
||||||
#ifdef UNIV_HOTBACKUP
|
#ifdef UNIV_HOTBACKUP
|
||||||
fwrite(name, 1, namelen, f);
|
fwrite(name, 1, namelen, f);
|
||||||
#else
|
#else
|
||||||
char* slash = strchr(name, '/');
|
char* slash = memchr(name, '/', namelen);
|
||||||
|
|
||||||
if (UNIV_LIKELY_NULL(slash)) {
|
if (UNIV_LIKELY_NULL(slash)) {
|
||||||
/* Print the database name and table name separately. */
|
/* Print the database name and table name separately. */
|
||||||
|
|
Loading…
Add table
Reference in a new issue