From 2b2efa420802b9dd7a6302ace3eb4a174c9b5fc2 Mon Sep 17 00:00:00 2001 From: "jimw@mysql.com" <> Date: Tue, 8 Mar 2005 17:40:43 -0800 Subject: [PATCH] Add all SQL_MODE settings to proc table. (Bug #8902) --- mysql-test/include/system_db_struct.inc | 1 + mysql-test/r/system_mysql_db.result | 21 +++++++++++ scripts/mysql_create_system_tables.sh | 12 ++++++- scripts/mysql_fix_privilege_tables.sql | 46 +++++++++++++++++++++++-- sql/mysql_priv.h | 4 +++ 5 files changed, 81 insertions(+), 3 deletions(-) diff --git a/mysql-test/include/system_db_struct.inc b/mysql-test/include/system_db_struct.inc index e24c8f3311d..c66590b2fd8 100644 --- a/mysql-test/include/system_db_struct.inc +++ b/mysql-test/include/system_db_struct.inc @@ -11,3 +11,4 @@ show create table func; show create table tables_priv; show create table columns_priv; show create table procs_priv; +show create table proc; diff --git a/mysql-test/r/system_mysql_db.result b/mysql-test/r/system_mysql_db.result index 930acf68706..532f0eca014 100644 --- a/mysql-test/r/system_mysql_db.result +++ b/mysql-test/r/system_mysql_db.result @@ -154,5 +154,26 @@ procs_priv CREATE TABLE `procs_priv` ( PRIMARY KEY (`Host`,`Db`,`User`,`Routine_name`), KEY `Grantor` (`Grantor`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Procedure privileges' +show create table proc; +Table Create Table +proc CREATE TABLE `proc` ( + `db` char(64) character set latin1 collate latin1_bin NOT NULL default '', + `name` char(64) NOT NULL default '', + `type` enum('FUNCTION','PROCEDURE') NOT NULL default 'FUNCTION', + `specific_name` char(64) NOT NULL default '', + `language` enum('SQL') NOT NULL default 'SQL', + `sql_data_access` enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NOT NULL default 'CONTAINS_SQL', + `is_deterministic` enum('YES','NO') NOT NULL default 'NO', + `security_type` enum('INVOKER','DEFINER') NOT NULL default 'DEFINER', + `param_list` blob NOT NULL, + `returns` char(64) NOT NULL default '', + `body` blob NOT NULL, + `definer` char(77) character set latin1 collate latin1_bin NOT NULL default '', + `created` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, + `modified` timestamp NOT NULL default '0000-00-00 00:00:00', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE') NOT NULL default '', + `comment` char(64) character set latin1 collate latin1_bin NOT NULL default '', + PRIMARY KEY (`db`,`name`,`type`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Stored Procedures' show tables; Tables_in_test diff --git a/scripts/mysql_create_system_tables.sh b/scripts/mysql_create_system_tables.sh index ea4c85d7a2c..d87113d3656 100644 --- a/scripts/mysql_create_system_tables.sh +++ b/scripts/mysql_create_system_tables.sh @@ -702,7 +702,17 @@ then c_p="$c_p 'MYSQL323'," c_p="$c_p 'MYSQL40'," c_p="$c_p 'ANSI'," - c_p="$c_p 'NO_AUTO_VALUE_ON_ZERO'" + c_p="$c_p 'NO_AUTO_VALUE_ON_ZERO'," + c_p="$c_p 'NO_BACKSLASH_ESCAPES'," + c_p="$c_p 'STRICT_TRANS_TABLES'," + c_p="$c_p 'STRICT_ALL_TABLES'," + c_p="$c_p 'NO_ZERO_IN_DATE'," + c_p="$c_p 'NO_ZERO_DATE'," + c_p="$c_p 'INVALID_DATES'," + c_p="$c_p 'ERROR_FOR_DIVISION_BY_ZERO'," + c_p="$c_p 'TRADITIONAL'," + c_p="$c_p 'NO_AUTO_CREATE_USER'," + c_p="$c_p 'HIGH_NOT_PRECEDENCE'" c_p="$c_p ) DEFAULT 0 NOT NULL," c_p="$c_p comment char(64) binary DEFAULT '' NOT NULL," c_p="$c_p PRIMARY KEY (db,name,type)" diff --git a/scripts/mysql_fix_privilege_tables.sql b/scripts/mysql_fix_privilege_tables.sql index e8012ecc03a..2310e8d0bef 100644 --- a/scripts/mysql_fix_privilege_tables.sql +++ b/scripts/mysql_fix_privilege_tables.sql @@ -422,7 +422,17 @@ CREATE TABLE IF NOT EXISTS proc ( 'MYSQL323', 'MYSQL40', 'ANSI', - 'NO_AUTO_VALUE_ON_ZERO' + 'NO_AUTO_VALUE_ON_ZERO', + 'NO_BACKSLASH_ESCAPES', + 'STRICT_TRANS_TABLES', + 'STRICT_ALL_TABLES', + 'NO_ZERO_IN_DATE', + 'NO_ZERO_DATE', + 'INVALID_DATES', + 'ERROR_FOR_DIVISION_BY_ZERO', + 'TRADITIONAL', + 'NO_AUTO_CREATE_USER', + 'HIGH_NOT_PRECEDENCE' ) DEFAULT 0 NOT NULL, comment char(64) binary DEFAULT '' NOT NULL, PRIMARY KEY (db,name,type) @@ -436,4 +446,36 @@ ALTER TABLE proc MODIFY name char(64) DEFAULT '' NOT NULL, 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA' - ) DEFAULT 'CONTAINS_SQL' NOT NULL; + ) DEFAULT 'CONTAINS_SQL' NOT NULL, + MODIFY sql_mode + set('REAL_AS_FLOAT', + 'PIPES_AS_CONCAT', + 'ANSI_QUOTES', + 'IGNORE_SPACE', + 'NOT_USED', + 'ONLY_FULL_GROUP_BY', + 'NO_UNSIGNED_SUBTRACTION', + 'NO_DIR_IN_CREATE', + 'POSTGRESQL', + 'ORACLE', + 'MSSQL', + 'DB2', + 'MAXDB', + 'NO_KEY_OPTIONS', + 'NO_TABLE_OPTIONS', + 'NO_FIELD_OPTIONS', + 'MYSQL323', + 'MYSQL40', + 'ANSI', + 'NO_AUTO_VALUE_ON_ZERO', + 'NO_BACKSLASH_ESCAPES', + 'STRICT_TRANS_TABLES', + 'STRICT_ALL_TABLES', + 'NO_ZERO_IN_DATE', + 'NO_ZERO_DATE', + 'INVALID_DATES', + 'ERROR_FOR_DIVISION_BY_ZERO', + 'TRADITIONAL', + 'NO_AUTO_CREATE_USER', + 'HIGH_NOT_PRECEDENCE' + ) DEFAULT 0 NOT NULL; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index b978ffe175b..5e1f6f0dd38 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -299,6 +299,10 @@ extern CHARSET_INFO *national_charset_info, *table_alias_charset; use strictly more than 64 bits by adding one more define above, you should contact the replication team because the replication code should then be updated (to store more bytes on disk). + + NOTE: When adding new SQL_MODE types, make sure to also add them to + ../scripts/mysql_create_system_tables.sh and + ../scripts/mysql_fix_privilege_tables.sql */ #define RAID_BLOCK_SIZE 1024