Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
5.5.68, 10.7.1
-
None
Description
From https://dba.stackexchange.com/questions/306183/why-is-my-database-name-truncated
$ db=$(printf 'a%.0s' {1..40})
|
$ echo $db
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
$ podman run -d --rm -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_DATABASE=$db -e MYSQL_USER=u -e MYSQL_PASSWORD=p --name m55 mariadb:5.5
|
1b2c0740bf664b8a3da8071bb96234a86fe8dd5f3eb6348598f5d0c2b59ede56
|
|
$ podman exec -ti m55 mysql -u u -pp --column-type-info -e 'select database() as "database" union all select database()' $db
|
Field 1: `database`
|
Catalog: `def`
|
Database: ``
|
Table: ``
|
Org_table: ``
|
Type: VAR_STRING
|
Collation: latin1_swedish_ci (8)
|
Length: 34
|
Max_length: 34
|
Decimals: 0
|
Flags:
|
|
|
+------------------------------------+
|
| database |
|
+------------------------------------+
|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
|
+------------------------------------+
|
|
$ podman exec -ti m55 mysql -u u -pp --column-type-info -e 'select database()' $db
|
Field 1: `database()`
|
Catalog: `def`
|
Database: ``
|
Table: ``
|
Org_table: ``
|
Type: VAR_STRING
|
Collation: latin1_swedish_ci (8)
|
Length: 34
|
Max_length: 40
|
Decimals: 31
|
Flags:
|
|
|
+------------------------------------------+
|
| database() |
|
+------------------------------------------+
|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
|
+------------------------------------------+
|
Above with 5.5 however have verified it on 10.2.
bar is the fix just the following?
diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h
index 0bf21b63ac9..3abc7fba2f6 100644
--- a/sql/item_strfunc.h
+++ b/sql/item_strfunc.h
@@ -717,7 +717,7 @@ class Item_func_database :public Item_func_sysconst
String *val_str(String *);
bool fix_length_and_dec()
{
- max_length= MAX_FIELD_NAME * system_charset_info->mbmaxlen;
+ max_length= NAME_LEN;
maybe_null=1;
return FALSE;
}
This results in:
$ mc -u root --default-character-set=utf8mb4 -e "create database $db"; mc -u root --default-character-set=utf8mb4 --column-type-info -e 'select database() as "database" union all select database()' $db
Field 1: `database`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: VAR_STRING
Collation: utf8mb4_general_ci (45)
Length: 256
Max_length: 40
Decimals: 39
Flags:
+------------------------------------------+
| database |
+------------------------------------------+
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
+------------------------------------------+
~/repos/build-mariadb-server-10.2
$ wc -c
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa40
~/repos/build-mariadb-server-10.2
$ mc -u root --default-character-set=latin1 --column-type-info -e 'select database() as "database" union all select database()' $db
Field 1: `database`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: VAR_STRING
Collation: latin1_swedish_ci (8)
Length: 64
Max_length: 40
Decimals: 39
Flags:
+------------------------------------------+
| database |
+------------------------------------------+
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
+------------------------------------------+
Are you happy with this fix? If so I can progress with test cases.