mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-307 Add functionality for database comments
This commit adds a new feature to the server to add comments at the database level. 1024 bytes is the maximum comment length allowed. If the comment length exceeds this limit, a new error/warning code 4144 is thrown, based on whether thd->is_strict_mode() is true/false. The database comment is also added to the db.opt file, as well as to the information_schema.schemata table.
This commit is contained in:
committed by
Robert Bindar
parent
9a8d1d84f8
commit
e9c6d5a1e8
@ -71,6 +71,7 @@
|
|||||||
#define COLUMN_COMMENT_MAXLEN 1024
|
#define COLUMN_COMMENT_MAXLEN 1024
|
||||||
#define INDEX_COMMENT_MAXLEN 1024
|
#define INDEX_COMMENT_MAXLEN 1024
|
||||||
#define TABLE_PARTITION_COMMENT_MAXLEN 1024
|
#define TABLE_PARTITION_COMMENT_MAXLEN 1024
|
||||||
|
#define DATABASE_COMMENT_MAXLEN 1024
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Maximum length of protocol packet.
|
Maximum length of protocol packet.
|
||||||
|
78
mysql-test/main/comment_database.result
Normal file
78
mysql-test/main/comment_database.result
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
#
|
||||||
|
# MDEV-307: Add functionality for database comments
|
||||||
|
#
|
||||||
|
CREATE DATABASE db1 COMMENT=;
|
||||||
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
|
||||||
|
CREATE DATABASE db1
|
||||||
|
COMMENT='abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcd';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
Database Create Database
|
||||||
|
db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET latin1 */ COMMENT 'abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcd'
|
||||||
|
SELECT schema_comment, char_length(schema_comment)
|
||||||
|
FROM information_schema.schemata
|
||||||
|
WHERE schema_name='db1';
|
||||||
|
schema_comment char_length(schema_comment)
|
||||||
|
abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcd 1024
|
||||||
|
DROP DATABASE db1;
|
||||||
|
SET SQL_MODE='';
|
||||||
|
CREATE DATABASE db1
|
||||||
|
COMMENT='abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcde';
|
||||||
|
Warnings:
|
||||||
|
Warning 4144 Comment for database 'db1' is too long (max = 1024)
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
Database Create Database
|
||||||
|
db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET latin1 */ COMMENT 'abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcd'
|
||||||
|
SELECT schema_comment, char_length(schema_comment)
|
||||||
|
FROM information_schema.schemata
|
||||||
|
WHERE schema_name='db1';
|
||||||
|
schema_comment char_length(schema_comment)
|
||||||
|
abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcd 1024
|
||||||
|
DROP DATABASE db1;
|
||||||
|
SET SQL_MODE='TRADITIONAL';
|
||||||
|
CREATE DATABASE db1
|
||||||
|
COMMENT='abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcde';
|
||||||
|
ERROR HY000: Comment for database 'db1' is too long (max = 1024)
|
||||||
|
SELECT schema_comment, char_length(schema_comment)
|
||||||
|
FROM information_schema.schemata
|
||||||
|
WHERE schema_name='db1';
|
||||||
|
schema_comment char_length(schema_comment)
|
||||||
|
CREATE DATABASE db1 COMMENT 'db1';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
Database Create Database
|
||||||
|
db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET latin1 */ COMMENT 'db1'
|
||||||
|
ALTER DATABASE db1 COMMENT = "db1 comment";
|
||||||
|
SELECT * FROM information_schema.schemata
|
||||||
|
WHERE schema_name='db1';
|
||||||
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
|
def db1 latin1 latin1_swedish_ci NULL db1 comment
|
||||||
|
DROP DATABASE db1;
|
||||||
|
CREATE DATABASE db1;
|
||||||
|
USE db1;
|
||||||
|
ALTER DATABASE COMMENT 'db1 comment' CHARACTER SET 'utf8';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
Database Create Database
|
||||||
|
db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ COMMENT 'db1 comment'
|
||||||
|
ALTER DATABASE db1 COMMENT 'this is db1 comment';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
Database Create Database
|
||||||
|
db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ COMMENT 'this is db1 comment'
|
||||||
|
ALTER DATABASE CHARACTER SET 'latin1';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
Database Create Database
|
||||||
|
db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET latin1 */ COMMENT 'this is db1 comment'
|
||||||
|
DROP DATABASE db1;
|
||||||
|
CREATE DATABASE comment COMMENT 'comment' CHARACTER SET 'latin2';
|
||||||
|
SHOW CREATE DATABASE comment;
|
||||||
|
Database Create Database
|
||||||
|
comment CREATE DATABASE `comment` /*!40100 DEFAULT CHARACTER SET latin2 */ COMMENT 'comment'
|
||||||
|
ALTER DATABASE comment COMMENT 'comment comment';
|
||||||
|
SHOW CREATE DATABASE comment;
|
||||||
|
Database Create Database
|
||||||
|
comment CREATE DATABASE `comment` /*!40100 DEFAULT CHARACTER SET latin2 */ COMMENT 'comment comment'
|
||||||
|
USE comment;
|
||||||
|
ALTER DATABASE COMMENT 'comment';
|
||||||
|
SELECT * FROM information_schema.schemata
|
||||||
|
WHERE schema_name='comment';
|
||||||
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
|
def comment latin2 latin2_general_ci NULL comment
|
||||||
|
DROP DATABASE comment;
|
63
mysql-test/main/comment_database.test
Normal file
63
mysql-test/main/comment_database.test
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
--echo #
|
||||||
|
--echo # MDEV-307: Add functionality for database comments
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
# Check an error state
|
||||||
|
--error ER_PARSE_ERROR
|
||||||
|
CREATE DATABASE db1 COMMENT=;
|
||||||
|
|
||||||
|
# 1024 bytes
|
||||||
|
CREATE DATABASE db1
|
||||||
|
COMMENT='abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcd';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
SELECT schema_comment, char_length(schema_comment)
|
||||||
|
FROM information_schema.schemata
|
||||||
|
WHERE schema_name='db1';
|
||||||
|
DROP DATABASE db1;
|
||||||
|
|
||||||
|
# 1025 bytes (warning)
|
||||||
|
SET SQL_MODE='';
|
||||||
|
CREATE DATABASE db1
|
||||||
|
COMMENT='abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcde';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
SELECT schema_comment, char_length(schema_comment)
|
||||||
|
FROM information_schema.schemata
|
||||||
|
WHERE schema_name='db1';
|
||||||
|
DROP DATABASE db1;
|
||||||
|
SET SQL_MODE='TRADITIONAL';
|
||||||
|
|
||||||
|
# 1025 bytes (error)
|
||||||
|
--error ER_TOO_LONG_DATABASE_COMMENT
|
||||||
|
CREATE DATABASE db1
|
||||||
|
COMMENT='abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcde';
|
||||||
|
SELECT schema_comment, char_length(schema_comment)
|
||||||
|
FROM information_schema.schemata
|
||||||
|
WHERE schema_name='db1';
|
||||||
|
|
||||||
|
CREATE DATABASE db1 COMMENT 'db1';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
ALTER DATABASE db1 COMMENT = "db1 comment";
|
||||||
|
SELECT * FROM information_schema.schemata
|
||||||
|
WHERE schema_name='db1';
|
||||||
|
DROP DATABASE db1;
|
||||||
|
|
||||||
|
CREATE DATABASE db1;
|
||||||
|
USE db1;
|
||||||
|
ALTER DATABASE COMMENT 'db1 comment' CHARACTER SET 'utf8';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
ALTER DATABASE db1 COMMENT 'this is db1 comment';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
ALTER DATABASE CHARACTER SET 'latin1';
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
DROP DATABASE db1;
|
||||||
|
|
||||||
|
# Test the case when the database is named 'comment'
|
||||||
|
CREATE DATABASE comment COMMENT 'comment' CHARACTER SET 'latin2';
|
||||||
|
SHOW CREATE DATABASE comment;
|
||||||
|
ALTER DATABASE comment COMMENT 'comment comment';
|
||||||
|
SHOW CREATE DATABASE comment;
|
||||||
|
USE comment;
|
||||||
|
ALTER DATABASE COMMENT 'comment';
|
||||||
|
SELECT * FROM information_schema.schemata
|
||||||
|
WHERE schema_name='comment';
|
||||||
|
DROP DATABASE comment;
|
@ -10,11 +10,11 @@ grant select, update on test.* to mysqltest_1@localhost;
|
|||||||
create user mysqltest_3@localhost;
|
create user mysqltest_3@localhost;
|
||||||
create user mysqltest_3;
|
create user mysqltest_3;
|
||||||
select * from information_schema.SCHEMATA where schema_name > 'm';
|
select * from information_schema.SCHEMATA where schema_name > 'm';
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
def mtr latin1 latin1_swedish_ci NULL
|
def mtr latin1 latin1_swedish_ci NULL
|
||||||
def mysql latin1 latin1_swedish_ci NULL
|
def mysql latin1 latin1_swedish_ci NULL
|
||||||
def performance_schema utf8 utf8_general_ci NULL
|
def performance_schema utf8 utf8_general_ci NULL
|
||||||
def test latin1 latin1_swedish_ci NULL
|
def test latin1 latin1_swedish_ci NULL
|
||||||
select schema_name from information_schema.schemata;
|
select schema_name from information_schema.schemata;
|
||||||
schema_name
|
schema_name
|
||||||
information_schema
|
information_schema
|
||||||
@ -1575,14 +1575,14 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE b ALL NULL NULL NULL NULL NULL Using where; Open_frm_only; Scanned all databases; Using join buffer (flat, BNL join)
|
1 SIMPLE b ALL NULL NULL NULL NULL NULL Using where; Open_frm_only; Scanned all databases; Using join buffer (flat, BNL join)
|
||||||
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
|
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
|
||||||
WHERE SCHEMA_NAME = 'mysqltest';
|
WHERE SCHEMA_NAME = 'mysqltest';
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
|
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
|
||||||
WHERE SCHEMA_NAME = '';
|
WHERE SCHEMA_NAME = '';
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
|
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
|
||||||
WHERE SCHEMA_NAME = 'test';
|
WHERE SCHEMA_NAME = 'test';
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
def test latin1 latin1_swedish_ci NULL
|
def test latin1 latin1_swedish_ci NULL
|
||||||
select count(*) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='mysql' AND TABLE_NAME='nonexisting';
|
select count(*) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='mysql' AND TABLE_NAME='nonexisting';
|
||||||
count(*)
|
count(*)
|
||||||
0
|
0
|
||||||
@ -1627,7 +1627,7 @@ CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME UNIQUE_CONSTRAINT_CATALOG U
|
|||||||
select * from `information_schema`.`REFERENTIAL_CONSTRAINTS` where `TABLE_NAME` = NULL;
|
select * from `information_schema`.`REFERENTIAL_CONSTRAINTS` where `TABLE_NAME` = NULL;
|
||||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME UNIQUE_CONSTRAINT_CATALOG UNIQUE_CONSTRAINT_SCHEMA UNIQUE_CONSTRAINT_NAME MATCH_OPTION UPDATE_RULE DELETE_RULE TABLE_NAME REFERENCED_TABLE_NAME
|
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME UNIQUE_CONSTRAINT_CATALOG UNIQUE_CONSTRAINT_SCHEMA UNIQUE_CONSTRAINT_NAME MATCH_OPTION UPDATE_RULE DELETE_RULE TABLE_NAME REFERENCED_TABLE_NAME
|
||||||
select * from information_schema.schemata where schema_name = NULL;
|
select * from information_schema.schemata where schema_name = NULL;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
select * from `information_schema`.`STATISTICS` where `TABLE_SCHEMA` = NULL;
|
select * from `information_schema`.`STATISTICS` where `TABLE_SCHEMA` = NULL;
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT INDEX_COMMENT
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT INDEX_COMMENT
|
||||||
select * from `information_schema`.`STATISTICS` where `TABLE_NAME` = NULL;
|
select * from `information_schema`.`STATISTICS` where `TABLE_NAME` = NULL;
|
||||||
|
@ -326,6 +326,7 @@ def information_schema ROUTINES SQL_PATH 22 NULL YES varchar 64 192 NULL NULL NU
|
|||||||
def information_schema SCHEMATA CATALOG_NAME 1 '' NO varchar 512 1536 NULL NULL NULL utf8 utf8_general_ci varchar(512) select NEVER NULL
|
def information_schema SCHEMATA CATALOG_NAME 1 '' NO varchar 512 1536 NULL NULL NULL utf8 utf8_general_ci varchar(512) select NEVER NULL
|
||||||
def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 '' NO varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32) select NEVER NULL
|
def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 '' NO varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32) select NEVER NULL
|
||||||
def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 '' NO varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32) select NEVER NULL
|
def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 '' NO varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32) select NEVER NULL
|
||||||
|
def information_schema SCHEMATA SCHEMA_COMMENT 6 '' NO varchar 1024 3072 NULL NULL NULL utf8 utf8_general_ci varchar(1024) select NEVER NULL
|
||||||
def information_schema SCHEMATA SCHEMA_NAME 2 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select NEVER NULL
|
def information_schema SCHEMATA SCHEMA_NAME 2 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select NEVER NULL
|
||||||
def information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL NULL utf8 utf8_general_ci varchar(512) select NEVER NULL
|
def information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL NULL utf8 utf8_general_ci varchar(512) select NEVER NULL
|
||||||
def information_schema SCHEMA_PRIVILEGES GRANTEE 1 '' NO varchar 190 570 NULL NULL NULL utf8 utf8_general_ci varchar(190) select NEVER NULL
|
def information_schema SCHEMA_PRIVILEGES GRANTEE 1 '' NO varchar 190 570 NULL NULL NULL utf8 utf8_general_ci varchar(190) select NEVER NULL
|
||||||
@ -870,6 +871,7 @@ NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datet
|
|||||||
3.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
3.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||||
3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||||
3.0000 information_schema SCHEMATA SQL_PATH varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
3.0000 information_schema SCHEMATA SQL_PATH varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||||
|
3.0000 information_schema SCHEMATA SCHEMA_COMMENT varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||||
3.0000 information_schema SCHEMA_PRIVILEGES GRANTEE varchar 190 570 utf8 utf8_general_ci varchar(190)
|
3.0000 information_schema SCHEMA_PRIVILEGES GRANTEE varchar 190 570 utf8 utf8_general_ci varchar(190)
|
||||||
3.0000 information_schema SCHEMA_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
3.0000 information_schema SCHEMA_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||||
3.0000 information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
3.0000 information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||||
|
@ -33,6 +33,7 @@ SCHEMA_NAME varchar(64) NO
|
|||||||
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
|
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
|
||||||
DEFAULT_COLLATION_NAME varchar(32) NO
|
DEFAULT_COLLATION_NAME varchar(32) NO
|
||||||
SQL_PATH varchar(512) YES NULL
|
SQL_PATH varchar(512) YES NULL
|
||||||
|
SCHEMA_COMMENT varchar(1024) NO
|
||||||
SHOW CREATE TABLE information_schema.SCHEMATA;
|
SHOW CREATE TABLE information_schema.SCHEMATA;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
|
SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
|
||||||
@ -40,7 +41,8 @@ SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
|
|||||||
`SCHEMA_NAME` varchar(64) NOT NULL DEFAULT '',
|
`SCHEMA_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||||
`DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
`DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||||
`DEFAULT_COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
|
`DEFAULT_COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||||
`SQL_PATH` varchar(512) DEFAULT NULL
|
`SQL_PATH` varchar(512) DEFAULT NULL,
|
||||||
|
`SCHEMA_COMMENT` varchar(1024) NOT NULL DEFAULT ''
|
||||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||||
SHOW COLUMNS FROM information_schema.SCHEMATA;
|
SHOW COLUMNS FROM information_schema.SCHEMATA;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
@ -49,6 +51,7 @@ SCHEMA_NAME varchar(64) NO
|
|||||||
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
|
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
|
||||||
DEFAULT_COLLATION_NAME varchar(32) NO
|
DEFAULT_COLLATION_NAME varchar(32) NO
|
||||||
SQL_PATH varchar(512) YES NULL
|
SQL_PATH varchar(512) YES NULL
|
||||||
|
SCHEMA_COMMENT varchar(1024) NO
|
||||||
SELECT catalog_name, schema_name, sql_path
|
SELECT catalog_name, schema_name, sql_path
|
||||||
FROM information_schema.schemata
|
FROM information_schema.schemata
|
||||||
WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL
|
WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL
|
||||||
@ -77,9 +80,9 @@ GRANT SELECT ON db_datadict_1.* to 'testuser2'@'localhost';
|
|||||||
GRANT SELECT ON db_datadict_2.* to 'testuser2'@'localhost';
|
GRANT SELECT ON db_datadict_2.* to 'testuser2'@'localhost';
|
||||||
SELECT * FROM information_schema.schemata
|
SELECT * FROM information_schema.schemata
|
||||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
def db_datadict_1 latin1 latin1_swedish_ci NULL
|
def db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||||
def db_datadict_2 latin1 latin1_swedish_ci NULL
|
def db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||||
SHOW DATABASES LIKE 'db_datadict_%';
|
SHOW DATABASES LIKE 'db_datadict_%';
|
||||||
Database (db_datadict_%)
|
Database (db_datadict_%)
|
||||||
db_datadict_1
|
db_datadict_1
|
||||||
@ -87,17 +90,17 @@ db_datadict_2
|
|||||||
connect testuser1, localhost, testuser1, , db_datadict_1;
|
connect testuser1, localhost, testuser1, , db_datadict_1;
|
||||||
SELECT * FROM information_schema.schemata
|
SELECT * FROM information_schema.schemata
|
||||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
def db_datadict_1 latin1 latin1_swedish_ci NULL
|
def db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||||
SHOW DATABASES LIKE 'db_datadict_%';
|
SHOW DATABASES LIKE 'db_datadict_%';
|
||||||
Database (db_datadict_%)
|
Database (db_datadict_%)
|
||||||
db_datadict_1
|
db_datadict_1
|
||||||
connect testuser2, localhost, testuser2, , db_datadict_2;
|
connect testuser2, localhost, testuser2, , db_datadict_2;
|
||||||
SELECT * FROM information_schema.schemata
|
SELECT * FROM information_schema.schemata
|
||||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
def db_datadict_1 latin1 latin1_swedish_ci NULL
|
def db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||||
def db_datadict_2 latin1 latin1_swedish_ci NULL
|
def db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||||
SHOW DATABASES LIKE 'db_datadict_%';
|
SHOW DATABASES LIKE 'db_datadict_%';
|
||||||
Database (db_datadict_%)
|
Database (db_datadict_%)
|
||||||
db_datadict_1
|
db_datadict_1
|
||||||
@ -105,7 +108,7 @@ db_datadict_2
|
|||||||
connect testuser3, localhost, testuser3, , test;
|
connect testuser3, localhost, testuser3, , test;
|
||||||
SELECT * FROM information_schema.schemata
|
SELECT * FROM information_schema.schemata
|
||||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
SHOW DATABASES LIKE 'db_datadict_%';
|
SHOW DATABASES LIKE 'db_datadict_%';
|
||||||
Database (db_datadict_%)
|
Database (db_datadict_%)
|
||||||
connection default;
|
connection default;
|
||||||
@ -122,11 +125,11 @@ DROP DATABASE db_datadict_2;
|
|||||||
#################################################################################
|
#################################################################################
|
||||||
DROP DATABASE IF EXISTS db_datadict;
|
DROP DATABASE IF EXISTS db_datadict;
|
||||||
SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
|
CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
|
||||||
SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
def db_datadict latin1 latin1_swedish_ci NULL
|
def db_datadict latin1 latin1_swedish_ci NULL
|
||||||
SELECT schema_name, default_character_set_name
|
SELECT schema_name, default_character_set_name
|
||||||
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||||
schema_name default_character_set_name
|
schema_name default_character_set_name
|
||||||
|
@ -9,10 +9,10 @@ GRANT SELECT ON db_datadict.* TO 'testuser1'@'localhost';
|
|||||||
SELECT * FROM information_schema.schemata
|
SELECT * FROM information_schema.schemata
|
||||||
WHERE schema_name IN ('information_schema','mysql','test')
|
WHERE schema_name IN ('information_schema','mysql','test')
|
||||||
ORDER BY schema_name;
|
ORDER BY schema_name;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
def information_schema utf8 utf8_general_ci NULL
|
def information_schema utf8 utf8_general_ci NULL
|
||||||
def mysql latin1 latin1_swedish_ci NULL
|
def mysql latin1 latin1_swedish_ci NULL
|
||||||
def test latin1 latin1_swedish_ci NULL
|
def test latin1 latin1_swedish_ci NULL
|
||||||
SHOW DATABASES LIKE 'information_schema';
|
SHOW DATABASES LIKE 'information_schema';
|
||||||
Database (information_schema)
|
Database (information_schema)
|
||||||
information_schema
|
information_schema
|
||||||
@ -26,9 +26,9 @@ connect testuser1, localhost, testuser1, , db_datadict;
|
|||||||
SELECT * FROM information_schema.schemata
|
SELECT * FROM information_schema.schemata
|
||||||
WHERE schema_name IN ('information_schema','mysql','test')
|
WHERE schema_name IN ('information_schema','mysql','test')
|
||||||
ORDER BY schema_name;
|
ORDER BY schema_name;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH SCHEMA_COMMENT
|
||||||
def information_schema utf8 utf8_general_ci NULL
|
def information_schema utf8 utf8_general_ci NULL
|
||||||
def test latin1 latin1_swedish_ci NULL
|
def test latin1 latin1_swedish_ci NULL
|
||||||
SHOW DATABASES LIKE 'information_schema';
|
SHOW DATABASES LIKE 'information_schema';
|
||||||
Database (information_schema)
|
Database (information_schema)
|
||||||
information_schema
|
information_schema
|
||||||
|
@ -1945,11 +1945,12 @@ enum enum_stats_auto_recalc { HA_STATS_AUTO_RECALC_DEFAULT= 0,
|
|||||||
|
|
||||||
It stores the "schema_specification" part of the CREATE/ALTER statements and
|
It stores the "schema_specification" part of the CREATE/ALTER statements and
|
||||||
is passed to mysql_create_db() and mysql_alter_db().
|
is passed to mysql_create_db() and mysql_alter_db().
|
||||||
Currently consists only of the schema default character set and collation.
|
Currently consists of the schema default character set, collation and schema_comment.
|
||||||
*/
|
*/
|
||||||
struct Schema_specification_st
|
struct Schema_specification_st
|
||||||
{
|
{
|
||||||
CHARSET_INFO *default_table_charset;
|
CHARSET_INFO *default_table_charset;
|
||||||
|
LEX_CSTRING *schema_comment;
|
||||||
void init()
|
void init()
|
||||||
{
|
{
|
||||||
bzero(this, sizeof(*this));
|
bzero(this, sizeof(*this));
|
||||||
|
@ -7931,3 +7931,5 @@ ER_PERIOD_CONSTRAINT_DROP
|
|||||||
eng "Can't DROP CONSTRAINT `%s`. Use DROP PERIOD `%s` for this"
|
eng "Can't DROP CONSTRAINT `%s`. Use DROP PERIOD `%s` for this"
|
||||||
ER_TOO_LONG_KEYPART 42000 S1009
|
ER_TOO_LONG_KEYPART 42000 S1009
|
||||||
eng "Specified key part was too long; max key part length is %u bytes"
|
eng "Specified key part was too long; max key part length is %u bytes"
|
||||||
|
ER_TOO_LONG_DATABASE_COMMENT
|
||||||
|
eng "Comment for database '%-.64s' is too long (max = %u)"
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "lock.h" // lock_schema_name
|
#include "lock.h" // lock_schema_name
|
||||||
#include "sql_table.h" // build_table_filename,
|
#include "sql_table.h" // build_table_filename,
|
||||||
// filename_to_tablename
|
// filename_to_tablename
|
||||||
|
// validate_comment_length
|
||||||
#include "sql_rename.h" // mysql_rename_tables
|
#include "sql_rename.h" // mysql_rename_tables
|
||||||
#include "sql_acl.h" // SELECT_ACL, DB_ACLS,
|
#include "sql_acl.h" // SELECT_ACL, DB_ACLS,
|
||||||
// acl_get, check_grant_db
|
// acl_get, check_grant_db
|
||||||
@ -77,6 +78,7 @@ typedef struct my_dbopt_st
|
|||||||
char *name; /* Database name */
|
char *name; /* Database name */
|
||||||
uint name_length; /* Database length name */
|
uint name_length; /* Database length name */
|
||||||
CHARSET_INFO *charset; /* Database default character set */
|
CHARSET_INFO *charset; /* Database default character set */
|
||||||
|
LEX_STRING comment; /* Database comment */
|
||||||
} my_dbopt_t;
|
} my_dbopt_t;
|
||||||
|
|
||||||
|
|
||||||
@ -235,7 +237,8 @@ void my_dbopt_cleanup(void)
|
|||||||
1 on error.
|
1 on error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static my_bool get_dbopt(const char *dbname, Schema_specification_st *create)
|
static my_bool get_dbopt(THD *thd, const char *dbname,
|
||||||
|
Schema_specification_st *create)
|
||||||
{
|
{
|
||||||
my_dbopt_t *opt;
|
my_dbopt_t *opt;
|
||||||
uint length;
|
uint length;
|
||||||
@ -247,6 +250,11 @@ static my_bool get_dbopt(const char *dbname, Schema_specification_st *create)
|
|||||||
if ((opt= (my_dbopt_t*) my_hash_search(&dboptions, (uchar*) dbname, length)))
|
if ((opt= (my_dbopt_t*) my_hash_search(&dboptions, (uchar*) dbname, length)))
|
||||||
{
|
{
|
||||||
create->default_table_charset= opt->charset;
|
create->default_table_charset= opt->charset;
|
||||||
|
if (opt->comment.length)
|
||||||
|
{
|
||||||
|
create->schema_comment= thd->make_clex_string(const_cast<char*>(opt->comment.str),
|
||||||
|
opt->comment.length);
|
||||||
|
}
|
||||||
error= 0;
|
error= 0;
|
||||||
}
|
}
|
||||||
mysql_rwlock_unlock(&LOCK_dboptions);
|
mysql_rwlock_unlock(&LOCK_dboptions);
|
||||||
@ -274,15 +282,17 @@ static my_bool put_dbopt(const char *dbname, Schema_specification_st *create)
|
|||||||
DBUG_ENTER("put_dbopt");
|
DBUG_ENTER("put_dbopt");
|
||||||
|
|
||||||
length= (uint) strlen(dbname);
|
length= (uint) strlen(dbname);
|
||||||
|
|
||||||
mysql_rwlock_wrlock(&LOCK_dboptions);
|
mysql_rwlock_wrlock(&LOCK_dboptions);
|
||||||
if (!(opt= (my_dbopt_t*) my_hash_search(&dboptions, (uchar*) dbname,
|
if (!(opt= (my_dbopt_t*) my_hash_search(&dboptions, (uchar*) dbname,
|
||||||
length)))
|
length)))
|
||||||
{
|
{
|
||||||
/* Options are not in the hash, insert them */
|
/* Options are not in the hash, insert them */
|
||||||
char *tmp_name;
|
char *tmp_name;
|
||||||
|
char *tmp_comment= NULL;
|
||||||
if (!my_multi_malloc(MYF(MY_WME | MY_ZEROFILL),
|
if (!my_multi_malloc(MYF(MY_WME | MY_ZEROFILL),
|
||||||
&opt, (uint) sizeof(*opt), &tmp_name, (uint) length+1,
|
&opt, (uint) sizeof(*opt), &tmp_name, (uint) length+1,
|
||||||
|
&tmp_comment, (uint) DATABASE_COMMENT_MAXLEN+1,
|
||||||
NullS))
|
NullS))
|
||||||
{
|
{
|
||||||
error= 1;
|
error= 1;
|
||||||
@ -292,7 +302,7 @@ static my_bool put_dbopt(const char *dbname, Schema_specification_st *create)
|
|||||||
opt->name= tmp_name;
|
opt->name= tmp_name;
|
||||||
strmov(opt->name, dbname);
|
strmov(opt->name, dbname);
|
||||||
opt->name_length= length;
|
opt->name_length= length;
|
||||||
|
opt->comment.str= tmp_comment;
|
||||||
if (unlikely((error= my_hash_insert(&dboptions, (uchar*) opt))))
|
if (unlikely((error= my_hash_insert(&dboptions, (uchar*) opt))))
|
||||||
{
|
{
|
||||||
my_free(opt);
|
my_free(opt);
|
||||||
@ -303,6 +313,12 @@ static my_bool put_dbopt(const char *dbname, Schema_specification_st *create)
|
|||||||
/* Update / write options in hash */
|
/* Update / write options in hash */
|
||||||
opt->charset= create->default_table_charset;
|
opt->charset= create->default_table_charset;
|
||||||
|
|
||||||
|
if (create->schema_comment)
|
||||||
|
{
|
||||||
|
strmov(opt->comment.str, create->schema_comment->str);
|
||||||
|
opt->comment.length= create->schema_comment->length;
|
||||||
|
}
|
||||||
|
|
||||||
end:
|
end:
|
||||||
mysql_rwlock_unlock(&LOCK_dboptions);
|
mysql_rwlock_unlock(&LOCK_dboptions);
|
||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
@ -328,7 +344,7 @@ static void del_dbopt(const char *path)
|
|||||||
Create database options file:
|
Create database options file:
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
Currently database default charset is only stored there.
|
Currently database default charset, default collation and comment are stored there.
|
||||||
|
|
||||||
RETURN VALUES
|
RETURN VALUES
|
||||||
0 ok
|
0 ok
|
||||||
@ -339,9 +355,31 @@ static bool write_db_opt(THD *thd, const char *path,
|
|||||||
Schema_specification_st *create)
|
Schema_specification_st *create)
|
||||||
{
|
{
|
||||||
File file;
|
File file;
|
||||||
char buf[256]; // Should be enough for one option
|
char buf[256+DATABASE_COMMENT_MAXLEN];
|
||||||
bool error=1;
|
bool error=1;
|
||||||
|
|
||||||
|
if (create->schema_comment)
|
||||||
|
{
|
||||||
|
if (validate_comment_length(thd, create->schema_comment,
|
||||||
|
DATABASE_COMMENT_MAXLEN, ER_TOO_LONG_DATABASE_COMMENT,
|
||||||
|
thd->lex->name.str))
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Use existing values of schema_comment and charset for ALTER DATABASE queries */
|
||||||
|
Schema_specification_st tmp;
|
||||||
|
bzero((char*) &tmp,sizeof(tmp));
|
||||||
|
if (thd->lex->sql_command == SQLCOM_ALTER_DB)
|
||||||
|
{
|
||||||
|
load_db_opt(thd, path, &tmp);
|
||||||
|
|
||||||
|
if (!create->schema_comment)
|
||||||
|
create->schema_comment= tmp.schema_comment;
|
||||||
|
|
||||||
|
if (!create->default_table_charset)
|
||||||
|
create->default_table_charset= tmp.default_table_charset;
|
||||||
|
}
|
||||||
|
|
||||||
if (!create->default_table_charset)
|
if (!create->default_table_charset)
|
||||||
create->default_table_charset= thd->variables.collation_server;
|
create->default_table_charset= thd->variables.collation_server;
|
||||||
|
|
||||||
@ -358,6 +396,11 @@ static bool write_db_opt(THD *thd, const char *path,
|
|||||||
create->default_table_charset->name,
|
create->default_table_charset->name,
|
||||||
"\n", NullS) - buf);
|
"\n", NullS) - buf);
|
||||||
|
|
||||||
|
if (create->schema_comment)
|
||||||
|
length= (ulong) (strxnmov(buf+length, sizeof(buf)-1-length,
|
||||||
|
"comment=", create->schema_comment->str,
|
||||||
|
"\n", NullS) - buf);
|
||||||
|
|
||||||
/* Error is written by mysql_file_write */
|
/* Error is written by mysql_file_write */
|
||||||
if (!mysql_file_write(file, (uchar*) buf, length, MYF(MY_NABP+MY_WME)))
|
if (!mysql_file_write(file, (uchar*) buf, length, MYF(MY_NABP+MY_WME)))
|
||||||
error=0;
|
error=0;
|
||||||
@ -385,7 +428,7 @@ static bool write_db_opt(THD *thd, const char *path,
|
|||||||
bool load_db_opt(THD *thd, const char *path, Schema_specification_st *create)
|
bool load_db_opt(THD *thd, const char *path, Schema_specification_st *create)
|
||||||
{
|
{
|
||||||
File file;
|
File file;
|
||||||
char buf[256];
|
char buf[256+DATABASE_COMMENT_MAXLEN];
|
||||||
DBUG_ENTER("load_db_opt");
|
DBUG_ENTER("load_db_opt");
|
||||||
bool error=1;
|
bool error=1;
|
||||||
size_t nbytes;
|
size_t nbytes;
|
||||||
@ -394,7 +437,7 @@ bool load_db_opt(THD *thd, const char *path, Schema_specification_st *create)
|
|||||||
create->default_table_charset= thd->variables.collation_server;
|
create->default_table_charset= thd->variables.collation_server;
|
||||||
|
|
||||||
/* Check if options for this database are already in the hash */
|
/* Check if options for this database are already in the hash */
|
||||||
if (!get_dbopt(path, create))
|
if (!get_dbopt(thd, path, create))
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
|
||||||
/* Otherwise, load options from the .opt file */
|
/* Otherwise, load options from the .opt file */
|
||||||
@ -444,6 +487,8 @@ bool load_db_opt(THD *thd, const char *path, Schema_specification_st *create)
|
|||||||
create->default_table_charset= default_charset_info;
|
create->default_table_charset= default_charset_info;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (!strncmp(buf, "comment", (pos-buf)))
|
||||||
|
create->schema_comment= thd->make_clex_string(pos+1, strlen(pos+1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@ -544,7 +589,7 @@ CHARSET_INFO *get_default_db_collation(THD *thd, const char *db_name)
|
|||||||
Create a database
|
Create a database
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
mysql_create_db_iternal()
|
mysql_create_db_internal()
|
||||||
thd Thread handler
|
thd Thread handler
|
||||||
db Name of database to create
|
db Name of database to create
|
||||||
Function assumes that this is already validated.
|
Function assumes that this is already validated.
|
||||||
|
@ -1470,7 +1470,7 @@ bool mysqld_show_create_db(THD *thd, LEX_CSTRING *dbname,
|
|||||||
LEX_CSTRING *orig_dbname,
|
LEX_CSTRING *orig_dbname,
|
||||||
const DDL_options_st &options)
|
const DDL_options_st &options)
|
||||||
{
|
{
|
||||||
char buff[2048];
|
char buff[2048+DATABASE_COMMENT_MAXLEN];
|
||||||
String buffer(buff, sizeof(buff), system_charset_info);
|
String buffer(buff, sizeof(buff), system_charset_info);
|
||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||||
Security_context *sctx= thd->security_ctx;
|
Security_context *sctx= thd->security_ctx;
|
||||||
@ -1506,6 +1506,7 @@ bool mysqld_show_create_db(THD *thd, LEX_CSTRING *dbname,
|
|||||||
{
|
{
|
||||||
*dbname= INFORMATION_SCHEMA_NAME;
|
*dbname= INFORMATION_SCHEMA_NAME;
|
||||||
create.default_table_charset= system_charset_info;
|
create.default_table_charset= system_charset_info;
|
||||||
|
create.schema_comment= NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1545,6 +1546,13 @@ bool mysqld_show_create_db(THD *thd, LEX_CSTRING *dbname,
|
|||||||
}
|
}
|
||||||
buffer.append(STRING_WITH_LEN(" */"));
|
buffer.append(STRING_WITH_LEN(" */"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (create.schema_comment)
|
||||||
|
{
|
||||||
|
buffer.append(STRING_WITH_LEN(" COMMENT "));
|
||||||
|
append_unescaped(&buffer, create.schema_comment->str,
|
||||||
|
create.schema_comment->length);
|
||||||
|
}
|
||||||
protocol->store(buffer.ptr(), buffer.length(), buffer.charset());
|
protocol->store(buffer.ptr(), buffer.length(), buffer.charset());
|
||||||
|
|
||||||
if (protocol->write())
|
if (protocol->write())
|
||||||
@ -5306,14 +5314,16 @@ err:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool store_schema_shemata(THD* thd, TABLE *table, LEX_CSTRING *db_name,
|
bool store_schema_schemata(THD* thd, TABLE *table, LEX_CSTRING *db_name,
|
||||||
CHARSET_INFO *cs)
|
CHARSET_INFO *cs, LEX_CSTRING *schema_comment= NULL)
|
||||||
{
|
{
|
||||||
restore_record(table, s->default_values);
|
restore_record(table, s->default_values);
|
||||||
table->field[0]->store(STRING_WITH_LEN("def"), system_charset_info);
|
table->field[0]->store(STRING_WITH_LEN("def"), system_charset_info);
|
||||||
table->field[1]->store(db_name->str, db_name->length, system_charset_info);
|
table->field[1]->store(db_name->str, db_name->length, system_charset_info);
|
||||||
table->field[2]->store(cs->csname, strlen(cs->csname), system_charset_info);
|
table->field[2]->store(cs->csname, strlen(cs->csname), system_charset_info);
|
||||||
table->field[3]->store(cs->name, strlen(cs->name), system_charset_info);
|
table->field[3]->store(cs->name, strlen(cs->name), system_charset_info);
|
||||||
|
if (schema_comment)
|
||||||
|
table->field[5]->store(schema_comment->str, schema_comment->length, system_charset_info);
|
||||||
return schema_table_store_record(thd, table);
|
return schema_table_store_record(thd, table);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5366,8 +5376,8 @@ int fill_schema_schemata(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||||||
DBUG_ASSERT(db_name->length <= NAME_LEN);
|
DBUG_ASSERT(db_name->length <= NAME_LEN);
|
||||||
if (db_name == &INFORMATION_SCHEMA_NAME)
|
if (db_name == &INFORMATION_SCHEMA_NAME)
|
||||||
{
|
{
|
||||||
if (store_schema_shemata(thd, table, db_name,
|
if (store_schema_schemata(thd, table, db_name,
|
||||||
system_charset_info))
|
system_charset_info))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -5380,8 +5390,8 @@ int fill_schema_schemata(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
load_db_opt_by_name(thd, db_name->str, &create);
|
load_db_opt_by_name(thd, db_name->str, &create);
|
||||||
if (store_schema_shemata(thd, table, db_name,
|
if (store_schema_schemata(thd, table, db_name,
|
||||||
create.default_table_charset))
|
create.default_table_charset, create.schema_comment))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -9044,6 +9054,7 @@ ST_FIELD_INFO schema_fields_info[]=
|
|||||||
{"DEFAULT_COLLATION_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, 0,
|
{"DEFAULT_COLLATION_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, 0,
|
||||||
SKIP_OPEN_TABLE},
|
SKIP_OPEN_TABLE},
|
||||||
{"SQL_PATH", FN_REFLEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
|
{"SQL_PATH", FN_REFLEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
|
||||||
|
{"SCHEMA_COMMENT", DATABASE_COMMENT_MAXLEN, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
|
||||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
|
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1687,6 +1687,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
|
|||||||
*/
|
*/
|
||||||
%left PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE
|
%left PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE
|
||||||
%left TRANSACTION_SYM TIMESTAMP PERIOD_SYM SYSTEM USER
|
%left TRANSACTION_SYM TIMESTAMP PERIOD_SYM SYSTEM USER
|
||||||
|
%left COMMENT_SYM
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2793,6 +2794,7 @@ create:
|
|||||||
| create_or_replace DATABASE opt_if_not_exists ident
|
| create_or_replace DATABASE opt_if_not_exists ident
|
||||||
{
|
{
|
||||||
Lex->create_info.default_table_charset= NULL;
|
Lex->create_info.default_table_charset= NULL;
|
||||||
|
Lex->create_info.schema_comment= NULL;
|
||||||
Lex->create_info.used_fields= 0;
|
Lex->create_info.used_fields= 0;
|
||||||
if (Lex->main_select_push())
|
if (Lex->main_select_push())
|
||||||
MYSQL_YYABORT;
|
MYSQL_YYABORT;
|
||||||
@ -6043,6 +6045,11 @@ create_database_options:
|
|||||||
create_database_option:
|
create_database_option:
|
||||||
default_collation {}
|
default_collation {}
|
||||||
| default_charset {}
|
| default_charset {}
|
||||||
|
| COMMENT_SYM opt_equal TEXT_STRING_sys
|
||||||
|
{
|
||||||
|
Lex->create_info.schema_comment= thd->make_clex_string($3);
|
||||||
|
Lex->create_info.used_fields|= HA_CREATE_USED_COMMENT;
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_if_not_exists_table_element:
|
opt_if_not_exists_table_element:
|
||||||
@ -7764,6 +7771,7 @@ alter:
|
|||||||
| ALTER DATABASE ident_or_empty
|
| ALTER DATABASE ident_or_empty
|
||||||
{
|
{
|
||||||
Lex->create_info.default_table_charset= NULL;
|
Lex->create_info.default_table_charset= NULL;
|
||||||
|
Lex->create_info.schema_comment= NULL;
|
||||||
Lex->create_info.used_fields= 0;
|
Lex->create_info.used_fields= 0;
|
||||||
if (Lex->main_select_push())
|
if (Lex->main_select_push())
|
||||||
MYSQL_YYABORT;
|
MYSQL_YYABORT;
|
||||||
@ -7778,6 +7786,22 @@ alter:
|
|||||||
MYSQL_YYABORT;
|
MYSQL_YYABORT;
|
||||||
Lex->pop_select(); //main select
|
Lex->pop_select(); //main select
|
||||||
}
|
}
|
||||||
|
| ALTER DATABASE COMMENT_SYM opt_equal TEXT_STRING_sys
|
||||||
|
{
|
||||||
|
Lex->create_info.default_table_charset= NULL;
|
||||||
|
Lex->create_info.used_fields= 0;
|
||||||
|
Lex->create_info.schema_comment= thd->make_clex_string($5);
|
||||||
|
Lex->create_info.used_fields|= HA_CREATE_USED_COMMENT;
|
||||||
|
}
|
||||||
|
opt_create_database_options
|
||||||
|
{
|
||||||
|
LEX *lex=Lex;
|
||||||
|
lex->sql_command=SQLCOM_ALTER_DB;
|
||||||
|
lex->name= Lex_ident_sys();
|
||||||
|
if (lex->name.str == NULL &&
|
||||||
|
unlikely(lex->copy_db_to(&lex->name)))
|
||||||
|
MYSQL_YYABORT;
|
||||||
|
}
|
||||||
| ALTER DATABASE ident UPGRADE_SYM DATA_SYM DIRECTORY_SYM NAME_SYM
|
| ALTER DATABASE ident UPGRADE_SYM DATA_SYM DIRECTORY_SYM NAME_SYM
|
||||||
{
|
{
|
||||||
LEX *lex= Lex;
|
LEX *lex= Lex;
|
||||||
@ -8022,7 +8046,7 @@ opt_ev_sql_stmt:
|
|||||||
;
|
;
|
||||||
|
|
||||||
ident_or_empty:
|
ident_or_empty:
|
||||||
/* empty */ { $$= Lex_ident_sys(); }
|
/* empty */ %prec PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE { $$= Lex_ident_sys(); }
|
||||||
| ident
|
| ident
|
||||||
;
|
;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user