From 5845476009a4e93b12a4c248b6038a06d96fb40e Mon Sep 17 00:00:00 2001
From: "dlenev@mysql.com" <>
Date: Thu, 2 Feb 2006 13:36:07 +0300
Subject: [PATCH] Yet another addition to the fix for BUG#9412 "Triggers:
 should have trigger privilege".

Corrected addition of TRIGGER privilege by "mysql_fix_privilege_tables" script.
Problem with it should have been caught by system_mysql_db/system_mysql_db_fix
tests but they were disabled. Enabled them back.
---
 mysql-test/r/system_mysql_db.result    | 5 ++++-
 mysql-test/t/disabled.def              | 2 --
 scripts/mysql_fix_privilege_tables.sql | 6 +++++-
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/mysql-test/r/system_mysql_db.result b/mysql-test/r/system_mysql_db.result
index 5f801ee71c5..bed5a2d4903 100644
--- a/mysql-test/r/system_mysql_db.result
+++ b/mysql-test/r/system_mysql_db.result
@@ -46,6 +46,7 @@ db	CREATE TABLE `db` (
   `Alter_routine_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
   `Execute_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
   `Event_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
+  `Trigger_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
   PRIMARY KEY  (`Host`,`Db`,`User`),
   KEY `User` (`User`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Database privileges'
@@ -71,6 +72,7 @@ host	CREATE TABLE `host` (
   `Create_routine_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
   `Alter_routine_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
   `Execute_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
+  `Trigger_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
   PRIMARY KEY  (`Host`,`Db`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Host privileges;  Merged with database privileges'
 show create table user;
@@ -106,6 +108,7 @@ user	CREATE TABLE `user` (
   `Alter_routine_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
   `Create_user_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
   `Event_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
+  `Trigger_priv` enum('N','Y') character set utf8 NOT NULL default 'N',
   `ssl_type` enum('','ANY','X509','SPECIFIED') character set utf8 NOT NULL default '',
   `ssl_cipher` blob NOT NULL,
   `x509_issuer` blob NOT NULL,
@@ -134,7 +137,7 @@ tables_priv	CREATE TABLE `tables_priv` (
   `Table_name` char(64) collate utf8_bin NOT NULL default '',
   `Grantor` char(77) collate utf8_bin NOT NULL default '',
   `Timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
-  `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') character set utf8 NOT NULL default '',
+  `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') character set utf8 NOT NULL default '',
   `Column_priv` set('Select','Insert','Update','References') character set utf8 NOT NULL default '',
   PRIMARY KEY  (`Host`,`Db`,`User`,`Table_name`),
   KEY `Grantor` (`Grantor`)
diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def
index b3bec0a8ad6..a6903b6fa23 100644
--- a/mysql-test/t/disabled.def
+++ b/mysql-test/t/disabled.def
@@ -27,8 +27,6 @@ rpl_sp          : Bug #16456
 #ndb_dd_disk2memory : Bug #16466 
 ndb_autodiscover : Needs to be fixed w.r.t binlog
 ndb_autodiscover2 : Needs to be fixed w.r.t binlog
-system_mysql_db : Needs fixing
-system_mysql_db_fix : Needs fixing
 #ndb_alter_table_row : sometimes wrong error 1015!=1046
 ndb_gis : garbled msgs from corrupt THD*
 
diff --git a/scripts/mysql_fix_privilege_tables.sql b/scripts/mysql_fix_privilege_tables.sql
index 73b4ce32640..0fbaf7bec8a 100644
--- a/scripts/mysql_fix_privilege_tables.sql
+++ b/scripts/mysql_fix_privilege_tables.sql
@@ -674,5 +674,9 @@ ALTER TABLE event ADD sql_mode
 SET @hadTriggerPriv := 0;
 SELECT @hadTriggerPriv :=1 FROM user WHERE Trigger_priv LIKE '%';
 
-ALTER TABLE user add Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
+ALTER TABLE user ADD Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Event_priv;
+ALTER TABLE host ADD Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
+ALTER TABLE db   ADD Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
+ALTER TABLE tables_priv MODIFY Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') COLLATE utf8_general_ci DEFAULT '' NOT NULL;
+
 UPDATE user SET Trigger_priv=Super_priv WHERE @hadTriggerPriv = 0;