mirror of
https://github.com/MariaDB/server.git
synced 2025-11-13 09:16:14 +01:00
Item:print_for_table_def() uses QT_TO_SYSTEM_CHARSET to print
the DEFAULT expression into FRM file during CREATE TABLE.
Therefore, the expression is encoded in utf8 in FRM.
get_field_default_value() erroneously used field->charset() to
print the DEFAULT expression at SHOW CREATE TABLE time.
Fixing get_field_default_value() to use &my_charset_utf8mb4_general_ci instead.
This makes DEFAULT work in the way way with:
- virtual column expressions:
if (field->vcol_info)
{
StringBuffer<MAX_FIELD_WIDTH> str(&my_charset_utf8mb4_general_ci);
field->vcol_info->print(&str);
- check constraint expressions:
if (field->check_constraint)
{
StringBuffer<MAX_FIELD_WIDTH> str(&my_charset_utf8mb4_general_ci);
field->check_constraint->print(&str);
Additional cleanup:
Fixing system_charset_info to &my_charset_utf8mb4_general_ci in a few
places to make non-BMP characters work in DEFAULT, virtual column,
check constraint expressions.
|
||
|---|---|---|
| .. | ||
| async_example.c | ||
| client_metadata.h | ||
| client_priv.h | ||
| CMakeLists.txt | ||
| completion_hash.cc | ||
| completion_hash.h | ||
| echo.c | ||
| mariadb-conv.cc | ||
| my_readline.h | ||
| mysql.cc | ||
| mysql_plugin.c | ||
| mysql_upgrade.c | ||
| mysqladmin.cc | ||
| mysqlbinlog.cc | ||
| mysqlcheck.c | ||
| mysqldump.c | ||
| mysqlimport.c | ||
| mysqlshow.c | ||
| mysqlslap.c | ||
| mysqltest.cc | ||
| readline.cc | ||