mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
This is a patch for bug#41569.
"mysql_upgrade (ver 5.1) add 3 fields to mysql.proc table but does not set values". mysql_upgrade (ver 5.1) adds 3 fields (character_set_client, collation_connection and db_collation) to the mysql.proc table, but does not set any values. When we run stored procedures, which were created with mysql 5.0, a warning is logged into the error log. The solution to this is for mysql_upgrade to set default best guess values for these fields. A warning is also written during upgrade, to make the user aware that default values are set. client/mysql_upgrade.c: Result lines which start with "WARNING" are passed through to the output. This way we have a way of triggering WARNING-messages during upgrade directly from the .sql-script. mysql-test/r/mysql_upgrade.result: Expected result of the test. mysql-test/t/mysql_upgrade.test: Added a test-case for the bug. scripts/mysql_system_tables_fix.sql: The new fields are populated, and warnings are written.
This commit is contained in:
@ -415,18 +415,48 @@ ALTER TABLE proc ADD character_set_client
|
||||
ALTER TABLE proc MODIFY character_set_client
|
||||
char(32) collate utf8_bin DEFAULT NULL;
|
||||
|
||||
SELECT CASE WHEN COUNT(*) > 0 THEN
|
||||
CONCAT ("WARNING: NULL values of the 'character_set_client' column ('mysql.proc' table) have been updated with a default value (", @@character_set_client, "). Please verify if necessary.")
|
||||
ELSE NULL
|
||||
END
|
||||
AS value FROM proc WHERE character_set_client IS NULL;
|
||||
|
||||
UPDATE proc SET character_set_client = @@character_set_client
|
||||
WHERE character_set_client IS NULL;
|
||||
|
||||
ALTER TABLE proc ADD collation_connection
|
||||
char(32) collate utf8_bin DEFAULT NULL
|
||||
AFTER character_set_client;
|
||||
ALTER TABLE proc MODIFY collation_connection
|
||||
char(32) collate utf8_bin DEFAULT NULL;
|
||||
|
||||
SELECT CASE WHEN COUNT(*) > 0 THEN
|
||||
CONCAT ("WARNING: NULL values of the 'collation_connection' column ('mysql.proc' table) have been updated with a default value (", @@collation_connection, "). Please verify if necessary.")
|
||||
ELSE NULL
|
||||
END
|
||||
AS value FROM proc WHERE collation_connection IS NULL;
|
||||
|
||||
UPDATE proc SET collation_connection = @@collation_connection
|
||||
WHERE collation_connection IS NULL;
|
||||
|
||||
ALTER TABLE proc ADD db_collation
|
||||
char(32) collate utf8_bin DEFAULT NULL
|
||||
AFTER collation_connection;
|
||||
ALTER TABLE proc MODIFY db_collation
|
||||
char(32) collate utf8_bin DEFAULT NULL;
|
||||
|
||||
SELECT CASE WHEN COUNT(*) > 0 THEN
|
||||
CONCAT ("WARNING: NULL values of the 'db_collation' column ('mysql.proc' table) have been updated with default values. Please verify if necessary.")
|
||||
ELSE NULL
|
||||
END
|
||||
AS value FROM proc WHERE db_collation IS NULL;
|
||||
|
||||
UPDATE proc AS p SET db_collation =
|
||||
( SELECT DEFAULT_COLLATION_NAME
|
||||
FROM INFORMATION_SCHEMA.SCHEMATA
|
||||
WHERE SCHEMA_NAME = p.db)
|
||||
WHERE db_collation IS NULL;
|
||||
|
||||
ALTER TABLE proc ADD body_utf8 longblob DEFAULT NULL
|
||||
AFTER db_collation;
|
||||
ALTER TABLE proc MODIFY body_utf8 longblob DEFAULT NULL;
|
||||
|
Reference in New Issue
Block a user