初版
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
DROP USER dbdict_test@localhost;
|
||||
CREATE USER dbdict_test@localhost;
|
||||
# Establish connection con (user=dbdict_test)
|
||||
|
||||
SELECT *
|
||||
FROM information_schema.character_sets
|
||||
WHERE character_set_name IN ('utf8','latin1','binary')
|
||||
ORDER BY character_set_name;
|
||||
CHARACTER_SET_NAME DEFAULT_COLLATE_NAME DESCRIPTION MAXLEN
|
||||
binary binary Binary pseudo charset 1
|
||||
latin1 latin1_swedish_ci cp1252 West European 1
|
||||
utf8 utf8_general_ci UTF-8 Unicode 3
|
||||
|
||||
SELECT *
|
||||
FROM information_schema.collations
|
||||
WHERE character_set_name IN ('utf8','latin1','binary')
|
||||
AND (collation_name LIKE CONCAT(character_set_name,'_general_ci')
|
||||
OR
|
||||
collation_name LIKE CONCAT(character_set_name,'_bin'))
|
||||
ORDER BY collation_name;
|
||||
COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN
|
||||
latin1_bin latin1 47 Yes 1
|
||||
latin1_general_ci latin1 48 Yes 1
|
||||
utf8_bin utf8 83 Yes 1
|
||||
utf8_general_ci utf8 33 Yes Yes 1
|
||||
|
||||
SELECT *
|
||||
FROM information_schema.collation_character_set_applicability
|
||||
WHERE character_set_name IN ('utf8','latin1','binary')
|
||||
AND (collation_name LIKE CONCAT(character_set_name,'_general_ci')
|
||||
OR
|
||||
collation_name LIKE CONCAT(character_set_name,'_bin'))
|
||||
ORDER BY collation_name, character_set_name;
|
||||
COLLATION_NAME CHARACTER_SET_NAME
|
||||
latin1_bin latin1
|
||||
latin1_general_ci latin1
|
||||
utf8_bin utf8
|
||||
utf8_general_ci utf8
|
||||
# Switch to connection default + disconnect con
|
||||
DROP USER dbdict_test@localhost;
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
NOT YET IMPLEMENTED: bitdata tests
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
NOT YET IMPLEMENTED: cursor tests
|
||||
--------------------------------------------------------------------------------
|
||||
5270
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_func_view.result
Normal file
5270
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_func_view.result
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,496 @@
|
||||
|
||||
--source suite/funcs_1/storedproc/load_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
CREATE DATABASE db_storedproc;
|
||||
CREATE DATABASE db_storedproc_1;
|
||||
USE db_storedproc;
|
||||
create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
|
||||
create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
|
||||
create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
|
||||
create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
|
||||
USE db_storedproc_1;
|
||||
create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
|
||||
USE db_storedproc;
|
||||
create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
|
||||
create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
|
||||
create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
|
||||
|
||||
Section 3.1.3 - Syntax checks for the stored procedure-specific flow
|
||||
control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE:
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Testcase 3.1.3.7:
|
||||
-----------------
|
||||
|
||||
Ensure that the IF statement acts correctly for all variants, including cases
|
||||
where statements are nested.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
DROP PROCEDURE IF EXISTS sp9;
|
||||
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
|
||||
CREATE PROCEDURE sp9( action char(20), subaction char(20) )
|
||||
BEGIN
|
||||
if action = 'action' then
|
||||
if subaction = 'subaction' then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction' , 1);
|
||||
else
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'none' , 2);
|
||||
END if;
|
||||
else
|
||||
if subaction = 'subaction'
|
||||
then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction' , 3);
|
||||
elseif subaction = 'subaction1'
|
||||
then
|
||||
BEGIN
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values ('none', 'subaction1', 4);
|
||||
END;
|
||||
else
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'none' , 5);
|
||||
END if;
|
||||
END if;
|
||||
END//
|
||||
CALL sp9( 'action', 'subaction' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=1;
|
||||
f1 f2 f3
|
||||
action subaction 1
|
||||
CALL sp9( 'temp', 'subaction' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=3;
|
||||
f1 f2 f3
|
||||
none subaction 3
|
||||
CALL sp9( 'temp', 'subaction1' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=4;
|
||||
f1 f2 f3
|
||||
none subaction1 4
|
||||
CALL sp9( 'action', 'temp' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=2;
|
||||
f1 f2 f3
|
||||
action none 2
|
||||
CALL sp9( 'temp', 'temp' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=5;
|
||||
f1 f2 f3
|
||||
none none 5
|
||||
DROP PROCEDURE sp9;
|
||||
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
|
||||
Testcase 3.1.3.8.:
|
||||
------------------
|
||||
|
||||
Ensure that the CASE statement acts correctly for all variants, including cases
|
||||
where statements are nested.
|
||||
--------------------------------------------------------------------------------
|
||||
drop table IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
DROP PROCEDURE IF EXISTS sp10;
|
||||
create table res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 char(20), f2 varchar(20), f3 smallint);
|
||||
CREATE PROCEDURE sp10( action char(20), subaction char(20) )
|
||||
BEGIN
|
||||
case action
|
||||
when 'action' then
|
||||
case
|
||||
when subaction = 'subaction_1' then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction_2' , 1);
|
||||
when subaction = 'subaction_2' then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction_2' , 2);
|
||||
else
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'none' , 3);
|
||||
END case;
|
||||
else
|
||||
case
|
||||
when subaction = 'subaction_1' then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction_1' , 4);
|
||||
when subaction = 'subaction_2' then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction_2' , 5);
|
||||
else
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'none' , 6);
|
||||
END case;
|
||||
END case;
|
||||
END//
|
||||
CALL sp10( 'action', 'subaction_1' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
action subaction_2 1
|
||||
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CALL sp10( 'action', 'subaction_2' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
action subaction_2 2
|
||||
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CALL sp10( 'temp', 'subaction_1' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
none subaction_1 4
|
||||
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CALL sp10( 'temp', 'subaction_2' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
none subaction_2 5
|
||||
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CALL sp10( 'action', 'temp' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
action none 3
|
||||
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CALL sp10( 'temp', 'temp' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
none none 6
|
||||
DROP PROCEDURE sp10;
|
||||
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
|
||||
Testcase 3.1.3.9 + 3.1.3.15:
|
||||
----------------------------
|
||||
|
||||
09. Ensure that the LOOP statement acts correctly for all variants, including
|
||||
. cases where statements are nested.
|
||||
15. Ensure that the LEAVE statement acts correctly for all variants, including
|
||||
. cases where statements are nested.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
DROP PROCEDURE IF EXISTS sp11;
|
||||
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
|
||||
CREATE PROCEDURE sp11( )
|
||||
BEGIN
|
||||
declare count1 integer default 1;
|
||||
declare count2 integer default 1;
|
||||
label1: loop
|
||||
if count2 > 3 then leave label1;
|
||||
END if;
|
||||
set count1 = 1;
|
||||
label2: loop
|
||||
if count1 > 4 then leave label2;
|
||||
END if;
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'xyz' , 'pqr', count1);
|
||||
set count1 = count1 + 1;
|
||||
iterate label2;
|
||||
END loop label2;
|
||||
set count2 = count2 + 1;
|
||||
iterate label1;
|
||||
END loop label1;
|
||||
END//
|
||||
CALL sp11();
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
xyz pqr 1
|
||||
xyz pqr 2
|
||||
xyz pqr 3
|
||||
xyz pqr 4
|
||||
xyz pqr 1
|
||||
xyz pqr 2
|
||||
xyz pqr 3
|
||||
xyz pqr 4
|
||||
xyz pqr 1
|
||||
xyz pqr 2
|
||||
xyz pqr 3
|
||||
xyz pqr 4
|
||||
DROP PROCEDURE sp11;
|
||||
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
|
||||
Testcase 3.1.3.16:
|
||||
------------------
|
||||
|
||||
Ensure that the ITERATE statement acts correctly for all variants, including
|
||||
cases where statements are nested.
|
||||
(tests for this testcase are also included in other testcases)
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp31316;
|
||||
CREATE PROCEDURE sp31316( )
|
||||
BEGIN
|
||||
declare count1 integer default 1;
|
||||
declare count2 integer default 1;
|
||||
label1: loop
|
||||
if count2 > 3 then leave label1;
|
||||
END if;
|
||||
set count1 = 1;
|
||||
label2: loop
|
||||
if count1 > 4 then leave label2;
|
||||
END if;
|
||||
insert into temp values( count1, count2);
|
||||
set count1 = count1 + 1;
|
||||
iterate label3;
|
||||
END loop label2;
|
||||
set count2 = count2 + 1;
|
||||
iterate label1;
|
||||
END loop label1;
|
||||
END//
|
||||
ERROR 42000: ITERATE with no matching label: label3
|
||||
|
||||
Testcase 3.1.3.18:
|
||||
------------------
|
||||
|
||||
Ensure that the REPEAT statement acts correctly for all variants, including
|
||||
cases where statements are nested.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp17;
|
||||
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
|
||||
CREATE PROCEDURE sp17( )
|
||||
BEGIN
|
||||
declare count1 integer default 1;
|
||||
declare count2 integer default 1;
|
||||
repeat
|
||||
set count1 = count1 + 1;
|
||||
set count2 = 1;
|
||||
label1: repeat
|
||||
set count2 = count2 + 1;
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'xyz' , 'pqr', count1);
|
||||
until count2 > 3
|
||||
END repeat label1;
|
||||
until count1 > 3
|
||||
END repeat;
|
||||
END//
|
||||
CALL sp17();
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
xyz pqr 2
|
||||
xyz pqr 2
|
||||
xyz pqr 2
|
||||
xyz pqr 3
|
||||
xyz pqr 3
|
||||
xyz pqr 3
|
||||
xyz pqr 4
|
||||
xyz pqr 4
|
||||
xyz pqr 4
|
||||
DROP PROCEDURE sp17;
|
||||
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
|
||||
Testcase 3.1.3.24:
|
||||
------------------
|
||||
|
||||
Ensure that the WHILE statement acts correctly for all variants, including cases
|
||||
where statements are nested.
|
||||
--------------------------------------------------------------------------------
|
||||
drop table IF EXISTS res_t21;
|
||||
DROP PROCEDURE IF EXISTS sp21;
|
||||
create table res_t21(name text(10), surname blob(20), age_averylongfieldname_averylongname_1234569 smallint);
|
||||
insert into res_t21 values('ashwin', 'mokadam', 25);
|
||||
CREATE PROCEDURE sp21( )
|
||||
BEGIN
|
||||
declare count1 integer default 0;
|
||||
declare count2 integer default 0;
|
||||
while count1 < 3 do
|
||||
BEGIN
|
||||
declare ithisissamevariablename int default 100;
|
||||
SELECT ithisissamevariablename;
|
||||
BEGIN
|
||||
declare ithisissamevariablename int default 200;
|
||||
SELECT ithisissamevariablename;
|
||||
END;
|
||||
set count2 = 0;
|
||||
label1: while count2 < 3 do
|
||||
BEGIN
|
||||
declare count1 integer default 7;
|
||||
set count2 = count2 + 1;
|
||||
insert into res_t21 values( 'xyz' , 'pqr', count2);
|
||||
label2: while count1 < 10 do
|
||||
set count1 = count1 + 1;
|
||||
insert into res_t21 values( 'xyz' , 'pqr', count1);
|
||||
END while label2;
|
||||
END;
|
||||
END while label1;
|
||||
set count1 = count1 + 1;
|
||||
END;
|
||||
END while;
|
||||
END//
|
||||
CALL sp21();
|
||||
ithisissamevariablename
|
||||
100
|
||||
ithisissamevariablename
|
||||
200
|
||||
ithisissamevariablename
|
||||
100
|
||||
ithisissamevariablename
|
||||
200
|
||||
ithisissamevariablename
|
||||
100
|
||||
ithisissamevariablename
|
||||
200
|
||||
SELECT * from res_t21;
|
||||
name surname age_averylongfieldname_averylongname_1234569
|
||||
ashwin mokadam 25
|
||||
xyz pqr 1
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 2
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 3
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 1
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 2
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 3
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 1
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 2
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 3
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
DROP PROCEDURE sp21;
|
||||
drop table res_t21;
|
||||
|
||||
Testcase 3.1.3.30:
|
||||
------------------
|
||||
|
||||
Ensure that multiple cases of all possible combinations of the control flow
|
||||
statements, nested within multiple compound statements within a stored
|
||||
procedure, always act correctly and return the expected result.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS res_tbl;
|
||||
DROP PROCEDURE IF EXISTS sp31330;
|
||||
create table res_tbl (f1 int, f2 text, f3 blob, f4 date,
|
||||
f5 set('one', 'two', 'three', 'four', 'five') default 'one');
|
||||
CREATE PROCEDURE sp31330 (path int)
|
||||
BEGIN
|
||||
declare count int default 1;
|
||||
declare var1 text;
|
||||
declare var2 blob;
|
||||
declare var3 date;
|
||||
declare var4 set('one', 'two', 'three', 'four', 'five') DEFAULT 'five';
|
||||
case
|
||||
when path=1 then
|
||||
set var3 = '2000-11-09';
|
||||
set var1 = 'flowing through case 1';
|
||||
label1: loop
|
||||
if count > 5 then
|
||||
if var4=1000 then
|
||||
set var2 = 'exiting out of case 1 - invalid SET';
|
||||
END if;
|
||||
if var4='two' then
|
||||
set var2 = 'exiting out of case 1';
|
||||
END if;
|
||||
insert into res_tbl values (1, var1, var2, var3, (count-2));
|
||||
leave label1;
|
||||
elseif count = 5 then
|
||||
set count= count + 2;
|
||||
set var4='two';
|
||||
iterate label1;
|
||||
else
|
||||
set count= count + 1;
|
||||
END if;
|
||||
set var4='one';
|
||||
END loop label1;
|
||||
when path=2 then
|
||||
set var3 = '1989-11-09';
|
||||
set var1 = 'flowing through case 2';
|
||||
set @count3=0;
|
||||
label2: repeat
|
||||
set count=count + 1;
|
||||
set @count2=1;
|
||||
while @count2 <= 5 do
|
||||
set @count2 = @count2 + 1;
|
||||
END while;
|
||||
SELECT @count2;
|
||||
set @count3=@count3 + @count2;
|
||||
until count > 5
|
||||
END repeat label2;
|
||||
set var2 = 'exiting out of case 2';
|
||||
set var4 = count-3;
|
||||
SELECT @count3;
|
||||
insert into res_tbl values (2, var1, var2, var3, var4);
|
||||
ELSE BEGIN
|
||||
set @error_opt='undefined path specified';
|
||||
SELECT @error_opt;
|
||||
END;
|
||||
END case;
|
||||
END//
|
||||
CALL sp31330();
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE db_storedproc.sp31330; expected 1, got 0
|
||||
CALL sp31330(1);
|
||||
SELECT * from res_tbl;
|
||||
f1 f2 f3 f4 f5
|
||||
1 flowing through case 1 exiting out of case 1 2000-11-09 one,three
|
||||
CALL sp31330(2);
|
||||
@count2
|
||||
6
|
||||
@count2
|
||||
6
|
||||
@count2
|
||||
6
|
||||
@count2
|
||||
6
|
||||
@count2
|
||||
6
|
||||
@count3
|
||||
30
|
||||
SELECT * from res_tbl;
|
||||
f1 f2 f3 f4 f5
|
||||
1 flowing through case 1 exiting out of case 1 2000-11-09 one,three
|
||||
2 flowing through case 2 exiting out of case 2 1989-11-09 one,two
|
||||
CALL sp31330(4);
|
||||
@error_opt
|
||||
undefined path specified
|
||||
DROP PROCEDURE sp31330;
|
||||
drop table res_tbl;
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
|
||||
. +++ END OF SCRIPT +++
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,393 @@
|
||||
|
||||
--source suite/funcs_1/storedproc/load_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
CREATE DATABASE db_storedproc;
|
||||
CREATE DATABASE db_storedproc_1;
|
||||
USE db_storedproc;
|
||||
create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
|
||||
create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
|
||||
create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
|
||||
create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
|
||||
USE db_storedproc_1;
|
||||
create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
|
||||
USE db_storedproc;
|
||||
create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
|
||||
create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
|
||||
create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
|
||||
|
||||
Section 3.1.6 - Privilege Checks:
|
||||
--------------------------------------------------------------------------------
|
||||
USE db_storedproc_1;
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
|
||||
Testcase 3.1.6.1:
|
||||
-----------------
|
||||
Ensure that no user may create a stored procedure without the GRANT CREATE
|
||||
ROUTINE privilege.
|
||||
--------------------------------------------------------------------------------
|
||||
create user 'user_1'@'localhost';
|
||||
grant all on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
revoke create routine on db_storedproc_1.* from 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
USE db_storedproc_1;
|
||||
CREATE PROCEDURE sp1(v1 char(20))
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||
END//
|
||||
ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1'
|
||||
USE db_storedproc_1;
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
USE db_storedproc_1;
|
||||
CREATE PROCEDURE sp1(v1 char(20))
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||
END//
|
||||
USE db_storedproc_1;
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
DROP USER 'user_1'@'localhost';
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
Testcase 3.1.6.2:
|
||||
-----------------
|
||||
Ensure that root always has the GRANT CREATE ROUTINE privilege.
|
||||
(checked by other testscases)
|
||||
--------------------------------------------------------------------------------
|
||||
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
DROP PROCEDURE IF EXISTS sp3;
|
||||
DROP FUNCTION IF EXISTS fn1;
|
||||
CREATE PROCEDURE sp3(v1 char(20))
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||
END//
|
||||
CREATE FUNCTION fn1(v1 int) returns int
|
||||
BEGIN
|
||||
return v1;
|
||||
END//
|
||||
USE db_storedproc_1;
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
drop user 'user_1'@'localhost';
|
||||
DROP PROCEDURE sp3;
|
||||
DROP FUNCTION fn1;
|
||||
|
||||
Testcase 3.1.6.4:
|
||||
-----------------
|
||||
Ensure that the default security provision of a stored procedure is SQL SECURITY
|
||||
DEFINER.
|
||||
--------------------------------------------------------------------------------
|
||||
CREATE USER 'user_1'@'localhost';
|
||||
grant update on db_storedproc_1.t6 to 'user_1'@'localhost';
|
||||
grant execute on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
USE db_storedproc_1;
|
||||
DROP PROCEDURE IF EXISTS sp4;
|
||||
CREATE PROCEDURE sp4(v1 char(20))
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||
END//
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
USE db_storedproc_1;
|
||||
CALL sp4('a');
|
||||
f1 f2 f3 f4 f5 f6
|
||||
SELECT SPECIFIC_NAME, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE,
|
||||
ROUTINE_BODY, ROUTINE_DEFINITION, IS_DETERMINISTIC,
|
||||
SQL_DATA_ACCESS, SECURITY_TYPE, SQL_MODE, ROUTINE_COMMENT
|
||||
FROM information_schema.routines
|
||||
WHERE routine_schema LIKE 'db_sto%';
|
||||
SPECIFIC_NAME sp4
|
||||
ROUTINE_SCHEMA db_storedproc_1
|
||||
ROUTINE_NAME sp4
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION NULL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SECURITY_TYPE DEFINER
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
DROP PROCEDURE sp4;
|
||||
DROP USER 'user_1'@'localhost';
|
||||
|
||||
Testcase 3.1.6.5:
|
||||
-----------------
|
||||
Ensure that a stored procedure defined with SQL SECURITY DEFINER can be
|
||||
called/executed by any user, using only the privileges (including database
|
||||
access privileges) associated with the user who created the stored procedure.
|
||||
--------------------------------------------------------------------------------
|
||||
USE db_storedproc_1;
|
||||
CREATE TABLE t3165 ( c1 char(20), c2 char(20), c3 date);
|
||||
INSERT INTO t3165 VALUES ('inserted', 'outside of SP', NULL);
|
||||
create user 'user_1'@'localhost';
|
||||
create user 'user_2'@'localhost';
|
||||
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
||||
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
CREATE PROCEDURE sp5_s_i () sql security definer
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t3165;
|
||||
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_s_i', 1000);
|
||||
END//
|
||||
CREATE PROCEDURE sp5_sel () sql security definer
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t3165;
|
||||
END//
|
||||
CREATE PROCEDURE sp5_ins () sql security definer
|
||||
BEGIN
|
||||
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_ins', 1000);
|
||||
END//
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp5_s_i();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_ins();
|
||||
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
CALL sp5_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
grant insert on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp5_s_i();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_ins();
|
||||
CALL sp5_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
CALL sp5_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
grant SELECT on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp5_s_i();
|
||||
c1 c2 c3
|
||||
inserted outside of SP NULL
|
||||
inserted from sp5_ins 2000-10-00
|
||||
CALL sp5_ins();
|
||||
CALL sp5_sel();
|
||||
c1 c2 c3
|
||||
inserted outside of SP NULL
|
||||
inserted from sp5_ins 2000-10-00
|
||||
inserted from sp5_s_i 2000-10-00
|
||||
inserted from sp5_ins 2000-10-00
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
REVOKE INSERT on db_storedproc_1.* from 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp5_s_i();
|
||||
c1 c2 c3
|
||||
inserted outside of SP NULL
|
||||
inserted from sp5_ins 2000-10-00
|
||||
inserted from sp5_s_i 2000-10-00
|
||||
inserted from sp5_ins 2000-10-00
|
||||
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_ins();
|
||||
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_sel();
|
||||
c1 c2 c3
|
||||
inserted outside of SP NULL
|
||||
inserted from sp5_ins 2000-10-00
|
||||
inserted from sp5_s_i 2000-10-00
|
||||
inserted from sp5_ins 2000-10-00
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
REVOKE SELECT on db_storedproc_1.* from 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp5_s_i();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_ins();
|
||||
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
DROP PROCEDURE sp5_s_i;
|
||||
DROP PROCEDURE sp5_sel;
|
||||
DROP PROCEDURE sp5_ins;
|
||||
DROP TABLE t3165;
|
||||
DROP USER 'user_1'@'localhost';
|
||||
DROP USER 'user_2'@'localhost';
|
||||
|
||||
Testcase 3.1.6.6:
|
||||
-----------------
|
||||
Ensure that a stored procedure defined with SQL SECURITY INVOKER can be
|
||||
called/executed by any user, using only the privileges (including database
|
||||
access privileges) associated with the user executing the stored procedure.
|
||||
--------------------------------------------------------------------------------
|
||||
USE db_storedproc_1;
|
||||
CREATE TABLE t3166 ( c1 char(30) );
|
||||
INSERT INTO db_storedproc_1.t3166 VALUES ('inserted outside SP');
|
||||
create user 'user_1'@'localhost';
|
||||
create user 'user_2'@'localhost';
|
||||
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
||||
GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
CREATE PROCEDURE sp3166_s_i () SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t3166;
|
||||
insert into db_storedproc_1.t3166 values ('inserted from sp3166_s_i');
|
||||
END//
|
||||
CREATE PROCEDURE sp3166_sel () SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t3166;
|
||||
END//
|
||||
CREATE PROCEDURE sp3166_ins () SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
insert into db_storedproc_1.t3166 values ('inserted from sp3166_ins');
|
||||
END//
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp3166_s_i();
|
||||
c1
|
||||
inserted outside SP
|
||||
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table 't3166'
|
||||
CALL sp3166_ins();
|
||||
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table 't3166'
|
||||
CALL sp3166_sel();
|
||||
c1
|
||||
inserted outside SP
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
CALL sp3166_sel();
|
||||
c1
|
||||
inserted outside SP
|
||||
GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp3166_s_i();
|
||||
c1
|
||||
inserted outside SP
|
||||
CALL sp3166_ins();
|
||||
CALL sp3166_sel();
|
||||
c1
|
||||
inserted outside SP
|
||||
inserted from sp3166_s_i
|
||||
inserted from sp3166_ins
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
CALL sp3166_sel();
|
||||
c1
|
||||
inserted outside SP
|
||||
inserted from sp3166_s_i
|
||||
inserted from sp3166_ins
|
||||
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp3166_s_i();
|
||||
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table 't3166'
|
||||
CALL sp3166_ins();
|
||||
CALL sp3166_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table 't3166'
|
||||
CALL sp3166_s_i();
|
||||
c1
|
||||
inserted outside SP
|
||||
inserted from sp3166_s_i
|
||||
inserted from sp3166_ins
|
||||
inserted from sp3166_ins
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp3166_s_i();
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc_1.sp3166_s_i'
|
||||
CALL sp3166_ins();
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc_1.sp3166_ins'
|
||||
CALL sp3166_sel();
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc_1.sp3166_sel'
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
DROP PROCEDURE sp3166_s_i;
|
||||
DROP PROCEDURE sp3166_sel;
|
||||
DROP PROCEDURE sp3166_ins;
|
||||
DROP TABLE t3166;
|
||||
DROP USER 'user_1'@'localhost';
|
||||
DROP USER 'user_2'@'localhost';
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
|
||||
. +++ END OF SCRIPT +++
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,178 @@
|
||||
|
||||
--source suite/funcs_1/storedproc/load_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
CREATE DATABASE db_storedproc;
|
||||
CREATE DATABASE db_storedproc_1;
|
||||
USE db_storedproc;
|
||||
create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
|
||||
create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
|
||||
create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
|
||||
create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
|
||||
USE db_storedproc_1;
|
||||
create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
|
||||
USE db_storedproc;
|
||||
create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
|
||||
create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
|
||||
create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
|
||||
|
||||
Section 3.1.7 - SQL mode checks:
|
||||
--------------------------------------------------------------------------------
|
||||
USE db_storedproc;
|
||||
|
||||
Testcase 3.1.7.1:
|
||||
-----------------
|
||||
Ensure that the sql_mode setting in effect at the time a stored procedure is
|
||||
created is the same setting under which the stored procedure runs when it is
|
||||
called/executed.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
DROP TABLE IF EXISTS temp_tbl;
|
||||
DROP TABLE IF EXISTS result;
|
||||
CREATE TABLE temp_tbl (f1 tinyint);
|
||||
CREATE TABLE result (f1 text(200), f2 char(20));
|
||||
set @@sql_mode='traditional';
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
CREATE PROCEDURE sp1()
|
||||
BEGIN
|
||||
declare a tinyint;
|
||||
declare count_ int default 1;
|
||||
declare continue handler for sqlstate '22003' set count_=1000;
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
SELECT @@sql_mode into @cur_val_sql_mode;
|
||||
insert into temp_tbl values (1000);
|
||||
if count_ = 1000 THEN
|
||||
INSERT INTO result VALUES (@cur_val_sql_mode, 'value restored');
|
||||
ELSE
|
||||
INSERT INTO result VALUES (@cur_val_sql_mode, 'value not restored');
|
||||
END if;
|
||||
END//
|
||||
SHOW CREATE PROCEDURE sp1;
|
||||
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||||
sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
|
||||
BEGIN
|
||||
declare a tinyint;
|
||||
declare count_ int default 1;
|
||||
declare continue handler for sqlstate '22003' set count_=1000;
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
SELECT @@sql_mode into @cur_val_sql_mode;
|
||||
insert into temp_tbl values (1000);
|
||||
if count_ = 1000 THEN
|
||||
INSERT INTO result VALUES (@cur_val_sql_mode, 'value restored');
|
||||
ELSE
|
||||
INSERT INTO result VALUES (@cur_val_sql_mode, 'value not restored');
|
||||
END if;
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
set @@sql_mode='';
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode
|
||||
CALL sp1();
|
||||
Variable_name Value
|
||||
sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
SELECT * from result;
|
||||
f1 f2
|
||||
STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER value restored
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode
|
||||
SELECT @@sql_mode;
|
||||
@@sql_mode
|
||||
|
||||
SET @@sql_mode='TRADITIONAL';
|
||||
DROP PROCEDURE sp1;
|
||||
DROP TABLE temp_tbl;
|
||||
DROP TABLE result;
|
||||
|
||||
Testcase 3.1.7.2:
|
||||
-----------------
|
||||
Ensure that if the sql_mode setting is changed when a stored procedure is run,
|
||||
that the original setting is restored as soon as the stored procedure execution
|
||||
is complete.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp2;
|
||||
... show initial value
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
CREATE PROCEDURE sp2()
|
||||
BEGIN
|
||||
SET @@sql_mode='MAXDB';
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
END//
|
||||
SHOW CREATE PROCEDURE sp2;
|
||||
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||||
sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
|
||||
BEGIN
|
||||
SET @@sql_mode='MAXDB';
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
... show value prior calling procedure
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
... call procedure that changes sql_mode
|
||||
CALL sp2();
|
||||
Variable_name Value
|
||||
sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
|
||||
... check whether old value is re-set
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
DROP PROCEDURE sp2;
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
|
||||
. +++ END OF SCRIPT +++
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,751 @@
|
||||
|
||||
--source suite/funcs_1/storedproc/load_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
CREATE DATABASE db_storedproc;
|
||||
CREATE DATABASE db_storedproc_1;
|
||||
USE db_storedproc;
|
||||
create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
|
||||
create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
|
||||
create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
|
||||
create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
|
||||
USE db_storedproc_1;
|
||||
create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
|
||||
USE db_storedproc;
|
||||
create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
|
||||
create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
|
||||
create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
|
||||
|
||||
Section 3.1.8 - SHOW statement checks:
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Testcase 3.1.8.9:
|
||||
-----------------
|
||||
|
||||
Ensure that all stored procedure changes made with ALTER PROCEDURE or ALTER
|
||||
FUNCTION are properly recorded and displayed when a SHOW CREATE PROCEDURE or
|
||||
SHOW CREATE PROCEDURE STATUS statement, or a SHOW CREATE FUNCTION or SHOW CREATE
|
||||
FUNCTION STATUS statement (respectively) is executed.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP FUNCTION IF EXISTS fn_1;
|
||||
DROP FUNCTION IF EXISTS fn_2;
|
||||
DROP PROCEDURE IF EXISTS sp_1;
|
||||
DROP PROCEDURE IF EXISTS sp_2;
|
||||
CREATE PROCEDURE sp_1 (i1 int)
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END//
|
||||
CREATE PROCEDURE sp_2 (i1 int) SQL SECURITY INVOKER COMMENT 'created with INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END//
|
||||
CREATE FUNCTION fn_1 (i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) returns year
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END//
|
||||
CREATE FUNCTION fn_2 (i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real)
|
||||
RETURNS YEAR
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'created with INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END//
|
||||
|
||||
... now check what is stored:
|
||||
-----------------------------
|
||||
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
|
||||
SPECIFIC_NAME fn_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_1
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME fn_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_2
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT created with INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_1
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_2
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT created with INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_1;
|
||||
Function fn_1
|
||||
sql_mode
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_1`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_2;
|
||||
Function fn_2
|
||||
sql_mode
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_2`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'created with INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_1;
|
||||
Procedure sp_1
|
||||
sql_mode
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_1`(i1 int)
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_2;
|
||||
Procedure sp_2
|
||||
sql_mode
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_2`(i1 int)
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'created with INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW FUNCTION STATUS LIKE 'fn_%';
|
||||
Db db_storedproc
|
||||
Name fn_1
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name fn_2
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment created with INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW PROCEDURE STATUS LIKE 'sp_%';
|
||||
Db db_storedproc
|
||||
Name sp_1
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name sp_2
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment created with INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
|
||||
... now change some stuff:
|
||||
--------------------------
|
||||
ALTER PROCEDURE sp_1 SQL SECURITY INVOKER;
|
||||
ALTER PROCEDURE sp_1 COMMENT 'new comment, SP changed to INVOKER';
|
||||
ALTER PROCEDURE sp_2 SQL SECURITY DEFINER;
|
||||
ALTER PROCEDURE sp_2 DROP COMMENT;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP COMMENT' at line 1
|
||||
ALTER PROCEDURE sp_2 COMMENT 'SP changed to DEFINER';
|
||||
ALTER PROCEDURE sp_2 READS SQL DATA;
|
||||
ALTER FUNCTION fn_1 SQL SECURITY INVOKER;
|
||||
ALTER FUNCTION fn_1 COMMENT 'new comment, FN changed to INVOKER';
|
||||
ALTER FUNCTION fn_1 NO SQL;
|
||||
ALTER FUNCTION fn_2 SQL SECURITY DEFINER;
|
||||
ALTER FUNCTION fn_2 COMMENT 'FN changed to DEFINER';
|
||||
ALTER FUNCTION fn_2 MODIFIES SQL DATA;
|
||||
|
||||
... now check what is stored:
|
||||
-----------------------------
|
||||
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
|
||||
SPECIFIC_NAME fn_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_1
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS NO SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT new comment, FN changed to INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME fn_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_2
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS MODIFIES SQL DATA
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT FN changed to DEFINER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_1
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT new comment, SP changed to INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_2
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS READS SQL DATA
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT SP changed to DEFINER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_1;
|
||||
Function fn_1
|
||||
sql_mode
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_1`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
NO SQL
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'new comment, FN changed to INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_2;
|
||||
Function fn_2
|
||||
sql_mode
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_2`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
MODIFIES SQL DATA
|
||||
COMMENT 'FN changed to DEFINER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_1;
|
||||
Procedure sp_1
|
||||
sql_mode
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_1`(i1 int)
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'new comment, SP changed to INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_2;
|
||||
Procedure sp_2
|
||||
sql_mode
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_2`(i1 int)
|
||||
READS SQL DATA
|
||||
COMMENT 'SP changed to DEFINER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW FUNCTION STATUS LIKE 'fn_%';
|
||||
Db db_storedproc
|
||||
Name fn_1
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment new comment, FN changed to INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name fn_2
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment FN changed to DEFINER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW PROCEDURE STATUS LIKE 'sp_%';
|
||||
Db db_storedproc
|
||||
Name sp_1
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment new comment, SP changed to INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name sp_2
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment SP changed to DEFINER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
|
||||
... change back to default and check result:
|
||||
--------------------------------------------
|
||||
ALTER FUNCTION fn_2 CONTAINS SQL;
|
||||
|
||||
... now check what is stored:
|
||||
-----------------------------
|
||||
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
|
||||
SPECIFIC_NAME fn_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_1
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS NO SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT new comment, FN changed to INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME fn_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_2
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT FN changed to DEFINER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_1
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT new comment, SP changed to INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_2
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS READS SQL DATA
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT SP changed to DEFINER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_1;
|
||||
Function fn_1
|
||||
sql_mode
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_1`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
NO SQL
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'new comment, FN changed to INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_2;
|
||||
Function fn_2
|
||||
sql_mode
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_2`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
COMMENT 'FN changed to DEFINER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_1;
|
||||
Procedure sp_1
|
||||
sql_mode
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_1`(i1 int)
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'new comment, SP changed to INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_2;
|
||||
Procedure sp_2
|
||||
sql_mode
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_2`(i1 int)
|
||||
READS SQL DATA
|
||||
COMMENT 'SP changed to DEFINER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW FUNCTION STATUS LIKE 'fn_%';
|
||||
Db db_storedproc
|
||||
Name fn_1
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment new comment, FN changed to INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name fn_2
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment FN changed to DEFINER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW PROCEDURE STATUS LIKE 'sp_%';
|
||||
Db db_storedproc
|
||||
Name sp_1
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment new comment, SP changed to INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name sp_2
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment SP changed to DEFINER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
|
||||
... cleanup
|
||||
-----------
|
||||
DROP FUNCTION fn_1;
|
||||
DROP FUNCTION fn_2;
|
||||
DROP PROCEDURE sp_1;
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
|
||||
. +++ END OF SCRIPT +++
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,400 @@
|
||||
|
||||
--source suite/funcs_1/storedproc/load_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
CREATE DATABASE db_storedproc;
|
||||
CREATE DATABASE db_storedproc_1;
|
||||
USE db_storedproc;
|
||||
create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
|
||||
create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
|
||||
create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
|
||||
create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
|
||||
USE db_storedproc_1;
|
||||
create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
|
||||
USE db_storedproc;
|
||||
create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
|
||||
create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
|
||||
create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
|
||||
|
||||
Section 3.1.10 - CALL checks:
|
||||
--------------------------------------------------------------------------------
|
||||
USE db_storedproc;
|
||||
|
||||
Testcase 3.1.10.2 + 3.1.10.5:
|
||||
-----------------------------
|
||||
|
||||
2. Ensure that a procedure cannot be called if the appropriate privileges do not
|
||||
exist.
|
||||
5. Ensure that a function cannot be executed if the appropriate privileges do
|
||||
not exist.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp31102;
|
||||
DROP FUNCTION IF EXISTS fn31105;
|
||||
create user 'user_1'@'localhost';
|
||||
create user 'user_2'@'localhost';
|
||||
GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
||||
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_1@localhost db_storedproc
|
||||
CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
SELECT * FROM db_storedproc.t1 WHERE f4=-5000 LIMIT 1;
|
||||
END//
|
||||
CREATE FUNCTION fn31105(n INT) RETURNS INT
|
||||
BEGIN
|
||||
DECLARE res INT;
|
||||
SET res = n * n;
|
||||
RETURN res;
|
||||
END//
|
||||
|
||||
user_2@localhost db_storedproc
|
||||
CALL sp31102();
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
|
||||
SELECT fn31105( 9 );
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
|
||||
connection default;
|
||||
USE db_storedproc;
|
||||
|
||||
root@localhost db_storedproc
|
||||
CALL sp31102();
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
SELECT fn31105( 9 );
|
||||
fn31105( 9 )
|
||||
81
|
||||
GRANT EXECUTE ON db_storedproc.* TO 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_2@localhost db_storedproc
|
||||
CALL sp31102();
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
SELECT fn31105( 9 );
|
||||
fn31105( 9 )
|
||||
81
|
||||
connection default;
|
||||
USE db_storedproc;
|
||||
|
||||
root@localhost db_storedproc
|
||||
REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
CALL sp31102();
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
SELECT fn31105( 9 );
|
||||
fn31105( 9 )
|
||||
81
|
||||
|
||||
user_2@localhost db_storedproc
|
||||
CALL sp31102();
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
|
||||
SELECT fn31105( 9 );
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
|
||||
USE db_storedproc;
|
||||
|
||||
root@localhost db_storedproc
|
||||
DROP PROCEDURE sp31102;
|
||||
DROP FUNCTION fn31105;
|
||||
DROP USER 'user_1'@'localhost';
|
||||
DROP USER 'user_2'@'localhost';
|
||||
|
||||
Testcase 3.1.10.3:
|
||||
------------------
|
||||
|
||||
Ensure that a function can never be called.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP FUNCTION IF EXISTS fn1;
|
||||
CREATE FUNCTION fn1(a int) returns int
|
||||
BEGIN
|
||||
set @b = 0.9 * a;
|
||||
return @b;
|
||||
END//
|
||||
CALL fn1();
|
||||
ERROR 42000: PROCEDURE db_storedproc.fn1 does not exist
|
||||
DROP FUNCTION fn1;
|
||||
|
||||
Testcase 3.1.10.6:
|
||||
------------------
|
||||
|
||||
Ensure that a procedure can never be executed.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
DROP FUNCTION IF EXISTS sp1;
|
||||
CREATE PROCEDURE sp1()
|
||||
BEGIN
|
||||
SELECT * from t10;
|
||||
END//
|
||||
SELECT sp1();
|
||||
ERROR 42000: FUNCTION db_storedproc.sp1 does not exist
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
Testcase 3.1.10.7:
|
||||
------------------
|
||||
|
||||
Ensure that the ROW_COUNT() SQL function always returns the correct number of
|
||||
rows affected by the execution of a stored procedure.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp_ins_1;
|
||||
DROP PROCEDURE IF EXISTS sp_ins_3;
|
||||
DROP PROCEDURE IF EXISTS sp_upd;
|
||||
DROP PROCEDURE IF EXISTS sp_ins_upd;
|
||||
DROP PROCEDURE IF EXISTS sp_del;
|
||||
DROP PROCEDURE IF EXISTS sp_with_rowcount;
|
||||
CREATE TABLE temp(f1 CHAR(20),f2 CHAR(25),f3 DATE,f4 INT,f5 CHAR(25),f6 INT);
|
||||
INSERT INTO temp SELECT * FROM t10;
|
||||
CREATE PROCEDURE sp_ins_1()
|
||||
BEGIN
|
||||
INSERT INTO temp VALUES ('abc', 'abc', '20051003', 100, 'uvw', 1000);
|
||||
END//
|
||||
CREATE PROCEDURE sp_ins_3()
|
||||
BEGIN
|
||||
INSERT INTO temp VALUES ('abc', 'xyz', '19490523', 100, 'uvw', 1000);
|
||||
INSERT INTO temp VALUES ('abc', 'xyz', '1989-11-09', 100, 'uvw', 1000);
|
||||
INSERT INTO temp VALUES ('abc', 'xyz', '2005-10-24', 100, 'uvw', 1000);
|
||||
END//
|
||||
CREATE PROCEDURE sp_upd()
|
||||
BEGIN
|
||||
UPDATE temp SET temp.f1 = 'updated' WHERE temp.f1 ='abc';
|
||||
END//
|
||||
CREATE PROCEDURE sp_ins_upd()
|
||||
BEGIN
|
||||
BEGIN
|
||||
INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000);
|
||||
INSERT INTO temp VALUES ('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000);
|
||||
INSERT INTO temp VALUES ('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000);
|
||||
INSERT INTO temp VALUES ('qwe', 'abc', '2005-11-07', 100, 'uvw', 1000);
|
||||
END;
|
||||
SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1;
|
||||
UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc';
|
||||
END//
|
||||
CREATE PROCEDURE sp_del()
|
||||
BEGIN
|
||||
DELETE FROM temp WHERE temp.f1 ='qwe' OR temp.f1 = 'updated_2';
|
||||
END//
|
||||
CREATE PROCEDURE sp_with_rowcount()
|
||||
BEGIN
|
||||
BEGIN
|
||||
INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000),
|
||||
('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000),
|
||||
('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000),
|
||||
('qwe', 'xyz', '2005-11-07', 100, 'uvw', 1000);
|
||||
END;
|
||||
SELECT row_count() AS 'row_count() after insert';
|
||||
SELECT row_count() AS 'row_count() after select row_count()';
|
||||
SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3;
|
||||
UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f2 = 'abc';
|
||||
SELECT row_count() AS 'row_count() after update';
|
||||
SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3;
|
||||
DELETE FROM temp WHERE temp.f1 = 'updated_2';
|
||||
SELECT row_count() AS 'row_count() after delete';
|
||||
END//
|
||||
CALL sp_ins_1();
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
1
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
|
||||
a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
aaa aaa 1000-01-02 -4999 aaa -4999
|
||||
abaa abaa 1000-01-03 -4998 abaa -4998
|
||||
abc abc 2005-10-03 100 uvw 1000
|
||||
acaaa acaaa 1000-01-04 -4997 acaaa -4997
|
||||
adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996
|
||||
aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995
|
||||
afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994
|
||||
agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
|
||||
CALL sp_ins_3();
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
1
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
|
||||
a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
aaa aaa 1000-01-02 -4999 aaa -4999
|
||||
abaa abaa 1000-01-03 -4998 abaa -4998
|
||||
abc abc 2005-10-03 100 uvw 1000
|
||||
abc xyz 1949-05-23 100 uvw 1000
|
||||
abc xyz 1989-11-09 100 uvw 1000
|
||||
abc xyz 2005-10-24 100 uvw 1000
|
||||
acaaa acaaa 1000-01-04 -4997 acaaa -4997
|
||||
adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996
|
||||
aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995
|
||||
afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994
|
||||
agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
|
||||
CALL sp_upd();
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
4
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
|
||||
a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
aaa aaa 1000-01-02 -4999 aaa -4999
|
||||
abaa abaa 1000-01-03 -4998 abaa -4998
|
||||
acaaa acaaa 1000-01-04 -4997 acaaa -4997
|
||||
adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996
|
||||
aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995
|
||||
afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994
|
||||
agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
|
||||
updated abc 2005-10-03 100 uvw 1000
|
||||
updated xyz 1949-05-23 100 uvw 1000
|
||||
updated xyz 1989-11-09 100 uvw 1000
|
||||
updated xyz 2005-10-24 100 uvw 1000
|
||||
CALL sp_ins_upd();
|
||||
COUNT( f1 ) f1
|
||||
1 aaa
|
||||
1 abaa
|
||||
1 acaaa
|
||||
1 adaaaa
|
||||
1 aeaaaaa
|
||||
1 afaaaaaa
|
||||
1 agaaaaaaa
|
||||
1 a^aaaaaaaa
|
||||
1 a_aaaaaaaaa
|
||||
1 a`
|
||||
4 qwe
|
||||
4 updated
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
3
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
|
||||
a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
aaa aaa 1000-01-02 -4999 aaa -4999
|
||||
abaa abaa 1000-01-03 -4998 abaa -4998
|
||||
acaaa acaaa 1000-01-04 -4997 acaaa -4997
|
||||
adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996
|
||||
aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995
|
||||
afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994
|
||||
agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
|
||||
qwe xyz 1998-03-26 100 uvw 1000
|
||||
updated abc 2005-10-03 100 uvw 1000
|
||||
updated xyz 1949-05-23 100 uvw 1000
|
||||
updated xyz 1989-11-09 100 uvw 1000
|
||||
updated xyz 2005-10-24 100 uvw 1000
|
||||
updated_2 abc 1989-11-09 100 uvw 1000
|
||||
updated_2 abc 2000-11-09 100 uvw 1000
|
||||
updated_2 abc 2005-11-07 100 uvw 1000
|
||||
CALL sp_del();
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
4
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
|
||||
a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
aaa aaa 1000-01-02 -4999 aaa -4999
|
||||
abaa abaa 1000-01-03 -4998 abaa -4998
|
||||
acaaa acaaa 1000-01-04 -4997 acaaa -4997
|
||||
adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996
|
||||
aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995
|
||||
afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994
|
||||
agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
|
||||
updated abc 2005-10-03 100 uvw 1000
|
||||
updated xyz 1949-05-23 100 uvw 1000
|
||||
updated xyz 1989-11-09 100 uvw 1000
|
||||
updated xyz 2005-10-24 100 uvw 1000
|
||||
DELETE FROM temp;
|
||||
CALL sp_with_rowcount();
|
||||
row_count() after insert
|
||||
4
|
||||
row_count() after select row_count()
|
||||
-1
|
||||
f1 f2 f3
|
||||
qwe abc 1989-11-09
|
||||
qwe abc 2000-11-09
|
||||
qwe xyz 1998-03-26
|
||||
qwe xyz 2005-11-07
|
||||
row_count() after update
|
||||
2
|
||||
f1 f2 f3
|
||||
qwe xyz 1998-03-26
|
||||
qwe xyz 2005-11-07
|
||||
updated_2 abc 1989-11-09
|
||||
updated_2 abc 2000-11-09
|
||||
row_count() after delete
|
||||
2
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
-1
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
qwe xyz 1998-03-26 100 uvw 1000
|
||||
qwe xyz 2005-11-07 100 uvw 1000
|
||||
DROP PROCEDURE sp_ins_1;
|
||||
DROP PROCEDURE sp_ins_3;
|
||||
DROP PROCEDURE sp_upd;
|
||||
DROP PROCEDURE sp_ins_upd;
|
||||
DROP PROCEDURE sp_del;
|
||||
DROP PROCEDURE sp_with_rowcount;
|
||||
DROP TABLE temp;
|
||||
|
||||
Testcase 3.1.10.8:
|
||||
------------------
|
||||
|
||||
Ensure that the mysql_affected_rows() C API function always returns the correct
|
||||
number of rows affected by the execution of a stored procedure.
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
|
||||
. +++ END OF SCRIPT +++
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,366 @@
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
|
||||
Testcase: 3.5.1.1:
|
||||
------------------
|
||||
use test;
|
||||
Create trigger trg1_1 BEFORE INSERT
|
||||
on tb3 for each row set @test_before = 2, new.f142 = @test_before;
|
||||
Create trigger trg1_2 AFTER INSERT
|
||||
on tb3 for each row set @test_after = 6;
|
||||
Create trigger trg1_4 BEFORE UPDATE
|
||||
on tb3 for each row set @test_before = 27,
|
||||
new.f142 = @test_before,
|
||||
new.f122 = 'Before Update Trigger';
|
||||
Create trigger trg1_3 AFTER UPDATE
|
||||
on tb3 for each row set @test_after = '15';
|
||||
Create trigger trg1_5 BEFORE DELETE on tb3 for each row
|
||||
select count(*) into @test_before from tb3 as tr_tb3
|
||||
where f121 = 'Test 3.5.1.1';
|
||||
Create trigger trg1_6 AFTER DELETE on tb3 for each row
|
||||
select count(*) into @test_after from tb3 as tr_tb3
|
||||
where f121 = 'Test 3.5.1.1';
|
||||
set @test_before = 1;
|
||||
set @test_after = 5;
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
1 5
|
||||
Insert into tb3 (f121, f122, f142, f144, f134)
|
||||
values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1);
|
||||
select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1';
|
||||
f121 f122 f142 f144 f134
|
||||
Test 3.5.1.1 First Row 2 0000000005 1
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
2 6
|
||||
set @test_before = 18;
|
||||
set @test_after = 8;
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
18 8
|
||||
Update tb3 set tb3.f122 = 'Update',
|
||||
tb3.f142 = @test_before,
|
||||
tb3.f144 = @test_after
|
||||
where tb3.f121 = 'Test 3.5.1.1';
|
||||
select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1';
|
||||
f121 f122 f142 f144 f134
|
||||
Test 3.5.1.1 Before Update Trigger 27 0000000008 1
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
27 15
|
||||
Insert into tb3 (f121, f122, f142, f144, f134)
|
||||
values ('Test 3.5.1.1', 'Second Row', 5, 6, 2);
|
||||
set @test_before = 0;
|
||||
set @test_after = 0;
|
||||
select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1';
|
||||
f121 f122 f142 f144 f134
|
||||
Test 3.5.1.1 Before Update Trigger 27 0000000008 1
|
||||
Test 3.5.1.1 Second Row 2 0000000006 2
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
0 0
|
||||
Delete from tb3 where f121 = 'Test 3.5.1.1' and f134 = 2;
|
||||
select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1';
|
||||
f121 f122 f142 f144 f134
|
||||
Test 3.5.1.1 Before Update Trigger 27 0000000008 1
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
2 1
|
||||
drop trigger trg1_1;
|
||||
drop trigger trg1_2;
|
||||
drop trigger trg1_3;
|
||||
drop trigger trg1_4;
|
||||
drop trigger trg1_5;
|
||||
drop trigger trg1_6;
|
||||
delete from tb3 where f121='Test 3.5.1.1';
|
||||
|
||||
Testcase: 3.5.1.2:
|
||||
------------------
|
||||
Create trigger trg_1 after insert
|
||||
on tb3 for each statement set @x= 1;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'statement set @x= 1' at line 2
|
||||
drop trigger trg_1;
|
||||
|
||||
Testcase 3.5.1.3:
|
||||
-----------------
|
||||
CREATE TRIGGER trg3_1 on tb3 BEFORE INSERT for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on tb3 BEFORE INSERT for each row set new.f120 = 't'' at line 1
|
||||
CREATE trg3_2 TRIGGER AFTER INSERT on tb3 for each row set new.f120 = 's';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'trg3_2 TRIGGER AFTER INSERT on tb3 for each row set new.f120 = 's'' at line 1
|
||||
CREATE TRIGGER trg3_3 Before DELETE on tb3 set @ret1 = 'test' for each row;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set @ret1 = 'test' for each row' at line 1
|
||||
CREATE TRIGGER trg3_4 DELETE AFTER on tb3 set @ret1 = 'test' for each row;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE AFTER on tb3 set @ret1 = 'test' for each row' at line 1
|
||||
CREATE for each row TRIGGER trg3_5 AFTER UPDATE on tb3 set @ret1 = 'test';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'for each row TRIGGER trg3_5 AFTER UPDATE on tb3 set @ret1 = 'test'' at line 1
|
||||
drop trigger trg3_1;
|
||||
drop trigger trg3_2;
|
||||
drop trigger trg3_3;
|
||||
drop trigger trg3_4;
|
||||
drop trigger trg3_5;
|
||||
|
||||
Testcase: 3.5.1.5:
|
||||
------------------
|
||||
CREATE TRIGGER trg4_1 AFTER on tb3 for each row set new.f120 = 'e';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on tb3 for each row set new.f120 = 'e'' at line 1
|
||||
CREATE TRIGGER trg4_2 INSERT on tb3 for each set row new.f120 = 'f';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT on tb3 for each set row new.f120 = 'f'' at line 1
|
||||
CREATE TRIGGER trg4_3 BEFORE INSERT tb3 for each row set new.f120 = 'g';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tb3 for each row set new.f120 = 'g'' at line 1
|
||||
CREATE TRIGGER trg4_4 AFTER UPDATE on tb3 for each set new.f120 = 'g';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set new.f120 = 'g'' at line 1
|
||||
CREATE trg4_5 AFTER DELETE on tb3 for each set new.f120 = 'g';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'trg4_5 AFTER DELETE on tb3 for each set new.f120 = 'g'' at line 1
|
||||
CREATE TRIGGER trg4_6 BEFORE DELETE for each row set new.f120 = 'g';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'for each row set new.f120 = 'g'' at line 1
|
||||
drop trigger trg4_1;
|
||||
drop trigger trg4_2;
|
||||
drop trigger trg4_3;
|
||||
drop trigger trg4_4;
|
||||
drop trigger trg4_5;
|
||||
drop trigger trg4_6;
|
||||
|
||||
Testcase 3.5.1.6: - Need to fix
|
||||
-------------------------------
|
||||
|
||||
Testcase 3.5.1.7: - need to fix
|
||||
-------------------------------
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
create table t1 (f1 int, f2 char(25),f3 int) engine = <engine_to_be_used>;
|
||||
CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1
|
||||
for each row set new.f3 = '14';
|
||||
CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
BEFORE UPDATE on test.t1 for each row set new.f3 = '42';
|
||||
ERROR 42000: Identifier name 'trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ' is too long
|
||||
CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX
|
||||
BEFORE UPDATE on test.t1 for each row set new.f3 = '42';
|
||||
insert into t1 (f2) values ('insert 3.5.1.7');
|
||||
select * from t1;
|
||||
f1 f2 f3
|
||||
NULL insert 3.5.1.7 14
|
||||
update t1 set f2='update 3.5.1.7';
|
||||
select * from t1;
|
||||
f1 f2 f3
|
||||
NULL update 3.5.1.7 42
|
||||
select trigger_name from information_schema.triggers order by trigger_name;
|
||||
trigger_name
|
||||
gs_insert
|
||||
trg5_1
|
||||
trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX
|
||||
ts_insert
|
||||
drop trigger trg5_1;
|
||||
drop trigger trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ;
|
||||
ERROR 42000: Identifier name 'trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ' is too long
|
||||
drop trigger trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX;
|
||||
drop table t1;
|
||||
|
||||
Testcase 3.5.1.8:
|
||||
-----------------
|
||||
CREATE TRIGGER trg12* before insert on tb3 for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* before insert on tb3 for each row set new.f120 = 't'' at line 1
|
||||
CREATE TRIGGER trigger before insert on tb3 for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'trigger before insert on tb3 for each row set new.f120 = 't'' at line 1
|
||||
CREATE TRIGGER 100 before insert on tb3 for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '100 before insert on tb3 for each row set new.f120 = 't'' at line 1
|
||||
CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@@view before insert on tb3 for each row set new.f120 = 't'' at line 1
|
||||
CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@name before insert on tb3 for each row set new.f120 = 't'' at line 1
|
||||
CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3
|
||||
for each row set new.f120 ='X';
|
||||
ERROR HY000: Trigger in wrong schema
|
||||
drop database if exists trig_db;
|
||||
create database trig_db;
|
||||
use trig_db;
|
||||
create table t1 (f1 integer) engine = <engine_to_be_used>;
|
||||
use test;
|
||||
CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3
|
||||
for each row set @ret_trg6_2 = 5;
|
||||
ERROR 42S02: Table 'trig_db.tb3' doesn't exist
|
||||
use trig_db;
|
||||
CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3
|
||||
for each row set @ret_trg6_3 = 18;
|
||||
ERROR HY000: Trigger in wrong schema
|
||||
use test;
|
||||
drop database trig_db;
|
||||
drop trigger trg6_1;
|
||||
drop trigger trg6_3;
|
||||
|
||||
Testcase 3.5.1.9:(cannot be inplemented at this point)
|
||||
------------------------------------------------------
|
||||
|
||||
Testcase 3.5.1.10:
|
||||
------------------
|
||||
CREATE TRIGGER trg7_1 BEFORE UPDATE on tb3 for each row set new.f120 ='X';
|
||||
CREATE TRIGGER trg7_1 AFTER INSERT on tb3 for each row set @x ='Y';
|
||||
ERROR HY000: Trigger already exists
|
||||
drop trigger trg7_1;
|
||||
|
||||
Testcase 3.5.1.?:
|
||||
-----------------
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
create table t1 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create table t2 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create trigger trig before insert on t1
|
||||
for each row set new.f1 ='trig t1';
|
||||
create trigger trig before update on t2
|
||||
for each row set new.f1 ='trig t2';
|
||||
ERROR HY000: Trigger already exists
|
||||
insert into t1 value ('insert to t1',1);
|
||||
select * from t1;
|
||||
f1 f2
|
||||
trig t1 1
|
||||
update t1 set f1='update to t1';
|
||||
select * from t1;
|
||||
f1 f2
|
||||
update to t1 1
|
||||
insert into t2 value ('insert to t2',2);
|
||||
update t2 set f1='update to t1';
|
||||
select * from t2;
|
||||
f1 f2
|
||||
update to t1 2
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop trigger trig;
|
||||
|
||||
Testcase 3.5.1.11:
|
||||
------------------
|
||||
drop database if exists trig_db1;
|
||||
drop database if exists trig_db2;
|
||||
drop database if exists trig_db3;
|
||||
create database trig_db1;
|
||||
create database trig_db2;
|
||||
create database trig_db3;
|
||||
use trig_db1;
|
||||
create table t1 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create trigger trig before insert on t1
|
||||
for each row set new.f1 ='trig1', @test_var1='trig1';
|
||||
use trig_db2;
|
||||
create table t2 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create trigger trig before insert on t2
|
||||
for each row set new.f1 ='trig2', @test_var2='trig2';
|
||||
use trig_db3;
|
||||
create table t1 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create trigger trig before insert on t1
|
||||
for each row set new.f1 ='trig3', @test_var3='trig3';
|
||||
set @test_var1= '', @test_var2= '', @test_var3= '';
|
||||
use trig_db1;
|
||||
insert into t1 (f1,f2) values ('insert to db1 t1',1);
|
||||
insert into trig_db1.t1 (f1,f2) values ('insert to db1 t1 from db1',2);
|
||||
insert into trig_db2.t2 (f1,f2) values ('insert to db2 t2 from db1',3);
|
||||
insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4);
|
||||
select @test_var1, @test_var2, @test_var3;
|
||||
@test_var1 @test_var2 @test_var3
|
||||
trig1 trig2 trig3
|
||||
select * from t1 order by f2;
|
||||
f1 f2
|
||||
trig1 1
|
||||
trig1 2
|
||||
select * from trig_db2.t2;
|
||||
f1 f2
|
||||
trig2 3
|
||||
select * from trig_db3.t1;
|
||||
f1 f2
|
||||
trig3 4
|
||||
select * from t1 order by f2;
|
||||
f1 f2
|
||||
trig1 1
|
||||
trig1 2
|
||||
use test;
|
||||
drop database trig_db1;
|
||||
drop database trig_db2;
|
||||
drop database trig_db3;
|
||||
|
||||
Testcase 3.5.2.1/2/3:
|
||||
---------------------
|
||||
drop database if exists trig_db1;
|
||||
drop database if exists trig_db2;
|
||||
create database trig_db1;
|
||||
create database trig_db2;
|
||||
use trig_db1;
|
||||
create table t1 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create table trig_db2.t1 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create trigger trig1_b before insert on t1
|
||||
for each row set @test_var1='trig1_b';
|
||||
create trigger trig_db1.trig1_a after insert on t1
|
||||
for each row set @test_var2='trig1_a';
|
||||
create trigger trig_db2.trig2 before insert on trig_db2.t1
|
||||
for each row set @test_var3='trig2';
|
||||
select trigger_schema, trigger_name, event_object_table
|
||||
from information_schema.triggers
|
||||
where trigger_schema like 'trig_db%'
|
||||
order by trigger_name;
|
||||
trigger_schema trigger_name event_object_table
|
||||
trig_db1 trig1_a t1
|
||||
trig_db1 trig1_b t1
|
||||
trig_db2 trig2 t1
|
||||
set @test_var1= '', @test_var2= '', @test_var3= '';
|
||||
insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352);
|
||||
insert into trig_db2.t1 (f1,f2) values ('insert to db2 t1 from db1',352);
|
||||
select @test_var1, @test_var2, @test_var3;
|
||||
@test_var1 @test_var2 @test_var3
|
||||
trig1_b trig1_a trig2
|
||||
drop database trig_db1;
|
||||
drop database trig_db2;
|
||||
DROP TABLE test.tb3;
|
||||
675
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_trig_03.result
Normal file
675
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_trig_03.result
Normal file
@@ -0,0 +1,675 @@
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
|
||||
Testcase 3.5.3:
|
||||
---------------
|
||||
drop database if exists priv_db;
|
||||
create database priv_db;
|
||||
use priv_db;
|
||||
create table t1 (f1 char(20)) engine= <engine_to_be_used>;
|
||||
create User test_noprivs@localhost;
|
||||
set password for test_noprivs@localhost = password('PWD');
|
||||
create User test_yesprivs@localhost;
|
||||
set password for test_yesprivs@localhost = password('PWD');
|
||||
|
||||
Testcase 3.5.3.2/6:
|
||||
-------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke TRIGGER on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
|
||||
Testcase 3.5.3.2:
|
||||
-----------------
|
||||
select current_user;
|
||||
current_user
|
||||
test_noprivs@localhost
|
||||
use priv_db;
|
||||
create trigger trg1_1 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.2_1-no';
|
||||
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1'
|
||||
use priv_db;
|
||||
insert into t1 (f1) values ('insert 3.5.3.2-no');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
select current_user;
|
||||
current_user
|
||||
test_yesprivs@localhost
|
||||
use priv_db;
|
||||
create trigger trg1_2 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.2_2-yes';
|
||||
select current_user;
|
||||
current_user
|
||||
root@localhost
|
||||
use priv_db;
|
||||
insert into t1 (f1) values ('insert 3.5.3.2-yes');
|
||||
ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
grant UPDATE on priv_db.t1 to test_yesprivs@localhost;
|
||||
insert into t1 (f1) values ('insert 3.5.3.2-yes');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
trig 3.5.3.2_2-yes
|
||||
|
||||
Testcase 3.5.3.6:
|
||||
-----------------
|
||||
use priv_db;
|
||||
drop trigger trg1_2;
|
||||
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1'
|
||||
use priv_db;
|
||||
insert into t1 (f1) values ('insert 3.5.3.6-yes');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
use priv_db;
|
||||
drop trigger trg1_2;
|
||||
use priv_db;
|
||||
insert into t1 (f1) values ('insert 3.5.3.6-no');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
drop trigger trg1_2;
|
||||
|
||||
Testcase 3.5.3.7a:
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke UPDATE on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
select current_user;
|
||||
current_user
|
||||
test_noprivs@localhost
|
||||
use priv_db;
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
create trigger trg4a_1 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-1a';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-1a');
|
||||
ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
drop trigger trg4a_1;
|
||||
use priv_db;
|
||||
select current_user;
|
||||
current_user
|
||||
test_yesprivs@localhost
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
create trigger trg4a_2 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-2a';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-2b');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
drop trigger trg4a_2;
|
||||
|
||||
Testcase 3.5.3.7b:
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs;
|
||||
grant ALL on priv_db.* to test_noprivs@localhost;
|
||||
revoke UPDATE on priv_db.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs;
|
||||
Grants for test_noprivs@%
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant UPDATE on priv_db.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4b_1 before UPDATE on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-1b';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-1b');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b';
|
||||
ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
drop trigger trg4b_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4b_2 before UPDATE on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-2b';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-2b');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
insert 3.5.3.7-2b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b';
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
trig 3.5.3.7-2b
|
||||
drop trigger trg4b_2;
|
||||
|
||||
Testcase 3.5.3.7c
|
||||
-----------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs@localhost;
|
||||
grant ALL on priv_db.t1 to test_noprivs@localhost;
|
||||
revoke UPDATE on priv_db.t1 from test_noprivs@localhost;
|
||||
show grants for test_noprivs;
|
||||
Grants for test_noprivs@%
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant UPDATE on priv_db.t1 to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4c_1 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-1c';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-1c');
|
||||
ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
trig 3.5.3.7-2b
|
||||
drop trigger trg4c_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4c_2 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-2c';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-2c');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
trig 3.5.3.7-2b
|
||||
trig 3.5.3.7-2c
|
||||
drop trigger trg4c_2;
|
||||
|
||||
Testcase 3.5.3.7d:
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs@localhost;
|
||||
grant SELECT (f1), INSERT (f1) on priv_db.t1 to test_noprivs@localhost;
|
||||
show grants for test_noprivs;
|
||||
Grants for test_noprivs@%
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost;
|
||||
show grants for test_noprivs;
|
||||
Grants for test_noprivs@%
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT (f1), INSERT (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4d_1 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-1d';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-1d');
|
||||
ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
trig 3.5.3.7-2b
|
||||
trig 3.5.3.7-2c
|
||||
drop trigger trg4d_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT UPDATE (f1) ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4d_2 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-2d';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-2d');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
trig 3.5.3.7-2b
|
||||
trig 3.5.3.7-2c
|
||||
trig 3.5.3.7-2d
|
||||
drop trigger trg4d_2;
|
||||
|
||||
Testcase 3.5.3.8a:
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke SELECT on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
select current_user;
|
||||
current_user
|
||||
test_noprivs@localhost
|
||||
use priv_db;
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
create trigger trg5a_1 before INSERT on t1 for each row
|
||||
set @test_var = new.f1;
|
||||
set @test_var = 'before trig 3.5.3.8-1a';
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1a
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-1a');
|
||||
ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1a
|
||||
drop trigger trg5a_1;
|
||||
use priv_db;
|
||||
select current_user;
|
||||
current_user
|
||||
test_yesprivs@localhost
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
create trigger trg5a_2 before INSERT on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var= 'before trig 3.5.3.8-2a';
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-2a
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-2a');
|
||||
select @test_var;
|
||||
@test_var
|
||||
insert 3.5.3.8-2a
|
||||
drop trigger trg5a_2;
|
||||
|
||||
Testcase: 3.5.3.8b
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs@localhost;
|
||||
grant ALL on priv_db.* to test_noprivs@localhost;
|
||||
revoke SELECT on priv_db.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5b_1 before UPDATE on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var= 'before trig 3.5.3.8-1b';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-1b');
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1b
|
||||
update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b';
|
||||
ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1b
|
||||
drop trigger trg5b_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5b_2 before UPDATE on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var= 'before trig 3.5.3.8-2b';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-2b');
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-2b
|
||||
update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b';
|
||||
select @test_var;
|
||||
@test_var
|
||||
update 3.5.3.8-2b
|
||||
drop trigger trg5b_2;
|
||||
|
||||
Testcase 3.5.3.8c:
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs@localhost;
|
||||
grant ALL on priv_db.t1 to test_noprivs@localhost;
|
||||
revoke SELECT on priv_db.t1 from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5c_1 before INSERT on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var= 'before trig 3.5.3.8-1c';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-1c');
|
||||
ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1c
|
||||
drop trigger trg5c_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5c_2 before INSERT on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var='before trig 3.5.3.8-2c';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-2c');
|
||||
select @test_var;
|
||||
@test_var
|
||||
insert 3.5.3.8-2c
|
||||
drop trigger trg5c_2;
|
||||
|
||||
Testcase: 3.5.3.8d:
|
||||
-------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs@localhost;
|
||||
grant UPDATE (f1), INSERT (f1) on priv_db.t1 to test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5d_1 before INSERT on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var='before trig 3.5.3.8-1d';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-1d');
|
||||
ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1d
|
||||
drop trigger trg5d_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT (f1) ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5d_2 before INSERT on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var='before trig 3.5.3.8-2d';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-2d');
|
||||
select @test_var;
|
||||
@test_var
|
||||
insert 3.5.3.8-2d
|
||||
drop trigger trg5d_2;
|
||||
|
||||
Testcase: 3.5.3.x:
|
||||
------------------
|
||||
use priv_db;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
create table t1 (f1 int) engine= <engine_to_be_used>;
|
||||
create table t2 (f2 int) engine= <engine_to_be_used>;
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT, UPDATE on priv_db.t1 to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.`t2` TO 'test_yesprivs'@'localhost'
|
||||
GRANT SELECT, UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
select current_user;
|
||||
current_user
|
||||
test_yesprivs@localhost
|
||||
use priv_db;
|
||||
create trigger trg1 before insert on t1 for each row
|
||||
insert into t2 values (new.f1);
|
||||
use priv_db;
|
||||
insert into t1 (f1) values (4);
|
||||
ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
||||
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
|
||||
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
|
||||
insert into t1 (f1) values (4);
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
4
|
||||
select f2 from t2 order by f2;
|
||||
f2
|
||||
4
|
||||
use priv_db;
|
||||
drop trigger trg1;
|
||||
create trigger trg2 before insert on t1 for each row
|
||||
update t2 set f2=new.f1-1;
|
||||
use priv_db;
|
||||
insert into t1 (f1) values (2);
|
||||
ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
||||
revoke INSERT on priv_db.t2 from test_yesprivs@localhost;
|
||||
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
|
||||
insert into t1 (f1) values (2);
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
2
|
||||
4
|
||||
select f2 from t2 order by f2;
|
||||
f2
|
||||
1
|
||||
use priv_db;
|
||||
drop trigger trg2;
|
||||
create trigger trg3 before insert on t1 for each row
|
||||
select f2 into @aaa from t2 where f2=new.f1;
|
||||
use priv_db;
|
||||
insert into t1 (f1) values (1);
|
||||
ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
||||
revoke UPDATE on priv_db.t2 from test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
||||
insert into t1 (f1) values (1);
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
1
|
||||
2
|
||||
4
|
||||
select f2 from t2 order by f2;
|
||||
f2
|
||||
1
|
||||
select @aaa;
|
||||
@aaa
|
||||
1
|
||||
use priv_db;
|
||||
drop trigger trg3;
|
||||
create trigger trg4 before insert on t1 for each row
|
||||
delete from t2;
|
||||
use priv_db;
|
||||
insert into t1 (f1) values (1);
|
||||
ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
||||
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
|
||||
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
|
||||
insert into t1 (f1) values (1);
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
1
|
||||
1
|
||||
2
|
||||
4
|
||||
select f2 from t2 order by f2;
|
||||
f2
|
||||
drop database if exists priv_db;
|
||||
drop user test_yesprivs@localhost;
|
||||
drop user test_noprivs@localhost;
|
||||
drop user test_noprivs;
|
||||
use test;
|
||||
drop table tb3;
|
||||
1620
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
Normal file
1620
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,470 @@
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
|
||||
Testcase: 3.5:
|
||||
--------------
|
||||
create User test_general@localhost;
|
||||
set password for test_general@localhost = password('PWD');
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
||||
create User test_super@localhost;
|
||||
set password for test_super@localhost = password('PWD');
|
||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||
|
||||
Testcase 3.5.4:
|
||||
---------------
|
||||
use test;
|
||||
|
||||
Testcase 3.5.4.1:
|
||||
-----------------
|
||||
create database db_drop;
|
||||
Use db_drop;
|
||||
create table t1 (f1 char(30)) engine = <engine_to_be_used>;
|
||||
grant INSERT, SELECT on db_drop.t1 to test_general;
|
||||
Use db_drop;
|
||||
Create trigger trg1 BEFORE INSERT on t1
|
||||
for each row set new.f1='Trigger 3.5.4.1';
|
||||
Use db_drop;
|
||||
Insert into t1 values ('Insert error 3.5.4.1');
|
||||
Select * from t1 order by f1;
|
||||
f1
|
||||
Trigger 3.5.4.1
|
||||
drop trigger trg1;
|
||||
select trigger_schema, trigger_name, event_object_table
|
||||
from information_schema.triggers
|
||||
where trigger_schema = 'db_drop'
|
||||
order by trigger_name;
|
||||
trigger_schema trigger_name event_object_table
|
||||
Insert into t1 values ('Insert no trigger 3.5.4.1');
|
||||
Select * from t1 order by f1;
|
||||
f1
|
||||
Insert no trigger 3.5.4.1
|
||||
Trigger 3.5.4.1
|
||||
drop trigger trg1;
|
||||
drop database if exists db_drop;
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
|
||||
|
||||
Testcase 3.5.4.2:
|
||||
-----------------
|
||||
create database db_drop2;
|
||||
Use db_drop2;
|
||||
drop table if exists t1_432 ;
|
||||
create table t1_432 (f1 char (30)) engine = <engine_to_be_used>;
|
||||
Drop trigger tr_does_not_exit;
|
||||
ERROR HY000: Trigger does not exist
|
||||
drop table if exists t1_432 ;
|
||||
drop database if exists db_drop2;
|
||||
|
||||
Testcase 3.5.4.3:
|
||||
-----------------
|
||||
create database db_drop3;
|
||||
Use db_drop3;
|
||||
drop table if exists t1_433 ;
|
||||
drop table if exists t1_433a ;
|
||||
create table t1_433 (f1 char (30)) engine = <engine_to_be_used>;
|
||||
create table t1_433a (f1a char (5)) engine = <engine_to_be_used>;
|
||||
CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row
|
||||
set new.f1 = 'Trigger 3.5.4.3';
|
||||
Drop trigger t1.433.trg3;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.trg3' at line 1
|
||||
Drop trigger db_drop3.t1.433.trg3;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.433.trg3' at line 1
|
||||
Drop trigger mysql.trg3;
|
||||
ERROR HY000: Trigger does not exist
|
||||
Drop trigger tbx.trg3;
|
||||
ERROR HY000: Trigger does not exist
|
||||
Drop trigger db_drop3.trg3;
|
||||
drop table if exists t1_433;
|
||||
drop table if exists t1_433a;
|
||||
drop database if exists db_drop3;
|
||||
|
||||
Testcase 3.5.4.4:
|
||||
-----------------
|
||||
create database db_drop4;
|
||||
Use db_drop4;
|
||||
create table t1 (f1 char(30)) engine = <engine_to_be_used>;
|
||||
grant INSERT, SELECT on db_drop4.t1 to test_general;
|
||||
Create trigger trg4 BEFORE INSERT on t1
|
||||
for each row set new.f1='Trigger 3.5.4.4';
|
||||
Use db_drop4;
|
||||
Insert into t1 values ('Insert 3.5.4.4');
|
||||
Select * from t1;
|
||||
f1
|
||||
Trigger 3.5.4.4
|
||||
Drop database db_drop4;
|
||||
Show databases like 'db_drop4';
|
||||
Database (db_drop4)
|
||||
select trigger_schema, trigger_name, event_object_table
|
||||
from information_schema.triggers
|
||||
where information_schema.triggers.trigger_name='trg4';
|
||||
trigger_schema trigger_name event_object_table
|
||||
create database db_drop4;
|
||||
Use db_drop4;
|
||||
create table t1 (f1 char(30)) engine = <engine_to_be_used>;
|
||||
grant INSERT, SELECT on db_drop4.t1 to test_general;
|
||||
Insert into t1 values ('2nd Insert 3.5.4.4');
|
||||
Select * from t1;
|
||||
f1
|
||||
2nd Insert 3.5.4.4
|
||||
drop trigger trg4;
|
||||
ERROR HY000: Trigger does not exist
|
||||
drop database if exists db_drop4;
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
|
||||
|
||||
Testcase 3.5.4.5:
|
||||
-----------------
|
||||
create database db_drop5;
|
||||
Use db_drop5;
|
||||
create table t1 (f1 char(50)) engine = <engine_to_be_used>;
|
||||
grant INSERT, SELECT on t1 to test_general;
|
||||
Create trigger trg5 BEFORE INSERT on t1
|
||||
for each row set new.f1='Trigger 3.5.4.5';
|
||||
Use db_drop5;
|
||||
Insert into t1 values ('Insert 3.5.4.5');
|
||||
Select * from t1;
|
||||
f1
|
||||
Trigger 3.5.4.5
|
||||
Drop table t1;
|
||||
Show tables;
|
||||
Tables_in_db_drop5
|
||||
select trigger_schema, trigger_name, event_object_table
|
||||
from information_schema.triggers
|
||||
where information_schema.triggers.trigger_name='trg5';
|
||||
trigger_schema trigger_name event_object_table
|
||||
create table t1 (f1 char(50)) engine = <engine_to_be_used>;
|
||||
grant INSERT, SELECT on t1 to test_general;
|
||||
Insert into t1 values ('2nd Insert 3.5.4.5');
|
||||
Select * from t1;
|
||||
f1
|
||||
2nd Insert 3.5.4.5
|
||||
drop trigger trg5;
|
||||
ERROR HY000: Trigger does not exist
|
||||
drop database if exists db_drop5;
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
|
||||
|
||||
Testcase 3.5.5:
|
||||
---------------
|
||||
use test;
|
||||
|
||||
Testcase 3.5.5.1:
|
||||
-----------------
|
||||
Create trigger trg1 before INSERT on t100 for each row set new.f2=1000;
|
||||
ERROR 42S02: Table 'test.t100' doesn't exist
|
||||
|
||||
Testcase 3.5.5.2:
|
||||
-----------------
|
||||
Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned);
|
||||
Create trigger trg2 before INSERT
|
||||
on t1_temp for each row set new.f2=9999;
|
||||
ERROR HY000: Trigger's 't1_temp' is view or temporary table
|
||||
drop table t1_temp;
|
||||
|
||||
Testcase 3.5.5.3:
|
||||
-----------------
|
||||
Create view vw3 as select f118 from tb3;
|
||||
Create trigger trg3 before INSERT
|
||||
on vw3 for each row set new.f118='s';
|
||||
ERROR HY000: 'test.vw3' is not BASE TABLE
|
||||
drop view vw3;
|
||||
|
||||
Testcase 3.5.5.4:
|
||||
-----------------
|
||||
create database dbtest_one;
|
||||
create database dbtest_two;
|
||||
use dbtest_two;
|
||||
create table t2 (f1 char(15)) engine = <engine_to_be_used>;
|
||||
use dbtest_one;
|
||||
create trigger trg4 before INSERT
|
||||
on dbtest_two.t2 for each row set new.f1='trig 3.5.5.4';
|
||||
ERROR HY000: Trigger in wrong schema
|
||||
grant INSERT, SELECT on dbtest_two.t2 to test_general;
|
||||
grant SELECT on dbtest_one.* to test_general;
|
||||
use dbtest_two;
|
||||
Insert into t2 values ('1st Insert 3.5.5.4');
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Select * from t2;
|
||||
f1
|
||||
1st Insert 3.5.
|
||||
use dbtest_one;
|
||||
Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4');
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Select * from dbtest_two.t2 order by f1;
|
||||
f1
|
||||
1st Insert 3.5.
|
||||
2nd Insert 3.5.
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
|
||||
DROP DATABASE if exists dbtest_one;
|
||||
drop database if EXISTS dbtest_two;
|
||||
|
||||
Testcase 3.5.6:
|
||||
---------------
|
||||
use test;
|
||||
|
||||
Testcase 3.5.6.1 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.6.2 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.6.3:
|
||||
-----------------
|
||||
Create trigger trg3_1 DURING UPDATE on tb3 for each row set new.f132=25;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DURING UPDATE on tb3 for each row set new.f132=25' at line 1
|
||||
Create trigger trg3_2 TIME INSERT on tb3 for each row set new.f132=15;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TIME INSERT on tb3 for each row set new.f132=15' at line 1
|
||||
drop trigger tb3.trg3_1;
|
||||
drop trigger tb3.trg3_2;
|
||||
|
||||
Testcase 3.5.6.4 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.6.5 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.7.1 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.7.2 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.7.3 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.7.4:
|
||||
-----------------
|
||||
Create trigger trg4_1 BEFORE SELECT on tb3 for each row set new.f132=5;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT on tb3 for each row set new.f132=5' at line 1
|
||||
Create trigger trg4_2 AFTER VALUE on tb3 for each row set new.f132=1;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUE on tb3 for each row set new.f132=1' at line 1
|
||||
drop trigger tb3.trg4_1;
|
||||
drop trigger tb3.trg4_2;
|
||||
|
||||
Testcase 3.5.7.5 / 3.5.7.6:
|
||||
---------------------------
|
||||
Create trigger trg5_1 BEFORE INSERT
|
||||
on tb3 for each row set new.f122='Trigger1 3.5.7.5/6';
|
||||
Create trigger trg5_2 BEFORE INSERT
|
||||
on tb3 for each row set new.f122='Trigger2 3.5.7.5';
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5');
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.5/6';
|
||||
f121 f122
|
||||
Test 3.5.7.5/6 Trigger1 3.5.7.5/6
|
||||
update tb3 set f122='Update 3.5.7.6' where f121= 'Test 3.5.7.5/6';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.5/6';
|
||||
f121 f122
|
||||
Test 3.5.7.5/6 Update 3.5.7.6
|
||||
drop trigger trg5_1;
|
||||
drop trigger trg5_2;
|
||||
delete from tb3 where f121='Test 3.5.7.5/6';
|
||||
|
||||
Testcase 3.5.7.7 / 3.5.7.8:
|
||||
---------------------------
|
||||
set @test_var='Before trig 3.5.7.7';
|
||||
Create trigger trg6_1 AFTER INSERT
|
||||
on tb3 for each row set @test_var='Trigger1 3.5.7.7/8';
|
||||
Create trigger trg6_2 AFTER INSERT
|
||||
on tb3 for each row set @test_var='Trigger2 3.5.7.7';
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
select @test_var;
|
||||
@test_var
|
||||
Before trig 3.5.7.7
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.7/8','Insert 3.5.7.7');
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.7/8';
|
||||
f121 f122
|
||||
Test 3.5.7.7/8 Insert 3.5.7.7
|
||||
select @test_var;
|
||||
@test_var
|
||||
Trigger1 3.5.7.7/8
|
||||
update tb3 set f122='Update 3.5.7.8' where f121= 'Test 3.5.7.7/8';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.7/8';
|
||||
f121 f122
|
||||
Test 3.5.7.7/8 Update 3.5.7.8
|
||||
select @test_var;
|
||||
@test_var
|
||||
Trigger1 3.5.7.7/8
|
||||
drop trigger trg6_1;
|
||||
drop trigger trg6_2;
|
||||
delete from tb3 where f121='Test 3.5.7.7/8';
|
||||
|
||||
Testcase 3.5.7.9/10:
|
||||
--------------------
|
||||
Create trigger trg7_1 BEFORE UPDATE
|
||||
on tb3 for each row set new.f122='Trigger1 3.5.7.9/10';
|
||||
Create trigger trg7_2 BEFORE UPDATE
|
||||
on tb3 for each row set new.f122='Trigger2 3.5.7.9';
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9');
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.9/10';
|
||||
f121 f122
|
||||
Test 3.5.7.9/10 Insert 3.5.7.9
|
||||
update tb3 set f122='update 3.5.7.10' where f121='Test 3.5.7.9/10';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.9/10';
|
||||
f121 f122
|
||||
Test 3.5.7.9/10 Trigger1 3.5.7.9/10
|
||||
drop trigger trg7_1;
|
||||
drop trigger trg7_2;
|
||||
delete from tb3 where f121='Test 3.5.7.9/10';
|
||||
|
||||
Testcase 3.5.7.11/12:
|
||||
---------------------
|
||||
set @test_var='Before trig 3.5.7.11';
|
||||
Create trigger trg8_1 AFTER UPDATE
|
||||
on tb3 for each row set @test_var='Trigger 3.5.7.11/12';
|
||||
Create trigger trg8_2 AFTER UPDATE
|
||||
on tb3 for each row set @test_var='Trigger2 3.5.7.11';
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
select @test_var;
|
||||
@test_var
|
||||
Before trig 3.5.7.11
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.11/12','Insert 3.5.7.11/12');
|
||||
select @test_var;
|
||||
@test_var
|
||||
Before trig 3.5.7.11
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.11/12';
|
||||
f121 f122
|
||||
Test 3.5.7.11/12 Insert 3.5.7.11/12
|
||||
update tb3 set f122='update 3.5.7.12' where f121='Test 3.5.7.11/12';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.11/12';
|
||||
f121 f122
|
||||
Test 3.5.7.11/12 update 3.5.7.12
|
||||
select @test_var;
|
||||
@test_var
|
||||
Trigger 3.5.7.11/12
|
||||
delete from tb3 where f121='Test 3.5.7.11/12';
|
||||
drop trigger trg8_1;
|
||||
drop trigger trg8_2;
|
||||
delete from tb3 where f121='Test 3.5.7.11/12';
|
||||
|
||||
Testcase 3.5.7.13/14:
|
||||
---------------------
|
||||
set @test_var=1;
|
||||
Create trigger trg9_1 BEFORE DELETE
|
||||
on tb3 for each row set @test_var=@test_var+1;
|
||||
Create trigger trg9_2 BEFORE DELETE
|
||||
on tb3 for each row set @test_var=@test_var+10;
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
select @test_var;
|
||||
@test_var
|
||||
1
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.13/14','Insert 3.5.7.13');
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.13/14';
|
||||
f121 f122
|
||||
Test 3.5.7.13/14 Insert 3.5.7.13
|
||||
select @test_var;
|
||||
@test_var
|
||||
1
|
||||
delete from tb3 where f121='Test 3.5.7.13/14';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.13/14';
|
||||
f121 f122
|
||||
select @test_var;
|
||||
@test_var
|
||||
2
|
||||
delete from tb3 where f121='Test 3.5.7.13/14';
|
||||
select @test_var;
|
||||
@test_var
|
||||
2
|
||||
drop trigger trg9_1;
|
||||
drop trigger trg9_2;
|
||||
delete from tb3 where f121='Test 3.5.7.13/14';
|
||||
|
||||
Testcase 3.5.7.15/16:
|
||||
---------------------
|
||||
set @test_var=1;
|
||||
Create trigger trg_3_406010_1 AFTER DELETE
|
||||
on tb3 for each row set @test_var=@test_var+5;
|
||||
Create trigger trg_3_406010_2 AFTER DELETE
|
||||
on tb3 for each row set @test_var=@test_var+50;
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
Create trigger trg_3_406010_1 AFTER INSERT
|
||||
on tb3 for each row set @test_var=@test_var+1;
|
||||
ERROR HY000: Trigger already exists
|
||||
select @test_var;
|
||||
@test_var
|
||||
1
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.15/16','Insert 3.5.7.15/16');
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.15/16';
|
||||
f121 f122
|
||||
Test 3.5.7.15/16 Insert 3.5.7.15/16
|
||||
select @test_var;
|
||||
@test_var
|
||||
1
|
||||
delete from tb3 where f121='Test 3.5.7.15/16';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.15/16';
|
||||
f121 f122
|
||||
select @test_var;
|
||||
@test_var
|
||||
6
|
||||
delete from tb3 where f121='Test 3.5.7.15/16';
|
||||
select @test_var;
|
||||
@test_var
|
||||
6
|
||||
drop trigger trg_3_406010_1;
|
||||
drop trigger trg_3_406010_2;
|
||||
delete from tb3 where f121='Test 3.5.7.15/16';
|
||||
|
||||
Testcase 3.5.7.17 (see Testcase 3.5.1.1)
|
||||
----------------------------------------
|
||||
drop user test_general@localhost;
|
||||
drop user test_general;
|
||||
drop user test_super@localhost;
|
||||
DROP TABLE test.tb3;
|
||||
527
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_trig_08.result
Normal file
527
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_trig_08.result
Normal file
@@ -0,0 +1,527 @@
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
|
||||
Testcase: 3.5:
|
||||
--------------
|
||||
create User test_general@localhost;
|
||||
set password for test_general@localhost = password('PWD');
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
||||
create User test_super@localhost;
|
||||
set password for test_super@localhost = password('PWD');
|
||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||
|
||||
Testcase 3.5.8.1: (implied in previous tests)
|
||||
---------------------------------------------
|
||||
|
||||
Testcase 3.5.8.2: (implied in previous tests)
|
||||
---------------------------------------------
|
||||
|
||||
Testcase 3.5.8.3/4:
|
||||
-------------------
|
||||
create database db_test;
|
||||
grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general;
|
||||
grant LOCK TABLES on db_test.* to test_general;
|
||||
Use db_test;
|
||||
create table t1_i (
|
||||
i120 char ascii not null DEFAULT b'101',
|
||||
i136 smallint zerofill not null DEFAULT 999,
|
||||
i144 int zerofill not null DEFAULT 99999,
|
||||
i163 decimal (63,30)) engine=<engine_to_be_used>;
|
||||
create table t1_u (
|
||||
u120 char ascii not null DEFAULT b'101',
|
||||
u136 smallint zerofill not null DEFAULT 999,
|
||||
u144 int zerofill not null DEFAULT 99999,
|
||||
u163 decimal (63,30)) engine=<engine_to_be_used>;
|
||||
create table t1_d (
|
||||
d120 char ascii not null DEFAULT b'101',
|
||||
d136 smallint zerofill not null DEFAULT 999,
|
||||
d144 int zerofill not null DEFAULT 99999,
|
||||
d163 decimal (63,30)) engine=<engine_to_be_used>;
|
||||
Insert into t1_u values ('a',111,99999,999.99);
|
||||
Insert into t1_u values ('b',222,99999,999.99);
|
||||
Insert into t1_u values ('c',333,99999,999.99);
|
||||
Insert into t1_u values ('d',222,99999,999.99);
|
||||
Insert into t1_u values ('e',222,99999,999.99);
|
||||
Insert into t1_u values ('f',333,99999,999.99);
|
||||
Insert into t1_d values ('a',111,99999,999.99);
|
||||
Insert into t1_d values ('b',222,99999,999.99);
|
||||
Insert into t1_d values ('c',333,99999,999.99);
|
||||
Insert into t1_d values ('d',444,99999,999.99);
|
||||
Insert into t1_d values ('e',222,99999,999.99);
|
||||
Insert into t1_d values ('f',222,99999,999.99);
|
||||
|
||||
3.5.8.4 - multiple SQL
|
||||
----------------------
|
||||
use test;
|
||||
Create trigger trg1 AFTER INSERT on tb3 for each row
|
||||
BEGIN
|
||||
insert into db_test.t1_i
|
||||
values (new.f120, new.f136, new.f144, new.f163);
|
||||
update db_test.t1_u
|
||||
set u144=new.f144, u163=new.f163
|
||||
where u136=new.f136;
|
||||
delete from db_test.t1_d where d136= new.f136;
|
||||
select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u
|
||||
where u136= new.f136;
|
||||
END//
|
||||
Use test;
|
||||
set @test_var=0;
|
||||
Insert into tb3 (f120, f122, f136, f144, f163)
|
||||
values ('1', 'Test 3.5.8.4', 222, 23456, 1.05);
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4';
|
||||
f120 f122 f136 f144 f163
|
||||
1 Test 3.5.8.4 00222 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_i;
|
||||
i120 i136 i144 i163
|
||||
1 00222 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_u;
|
||||
u120 u136 u144 u163
|
||||
a 00111 0000099999 999.990000000000000000000000000000
|
||||
b 00222 0000023456 1.050000000000000000000000000000
|
||||
c 00333 0000099999 999.990000000000000000000000000000
|
||||
d 00222 0000023456 1.050000000000000000000000000000
|
||||
e 00222 0000023456 1.050000000000000000000000000000
|
||||
f 00333 0000099999 999.990000000000000000000000000000
|
||||
select * from db_test.t1_d;
|
||||
d120 d136 d144 d163
|
||||
a 00111 0000099999 999.990000000000000000000000000000
|
||||
c 00333 0000099999 999.990000000000000000000000000000
|
||||
d 00444 0000099999 999.990000000000000000000000000000
|
||||
select @test_var;
|
||||
@test_var
|
||||
3.150000000000000000000000000000
|
||||
|
||||
3.5.8.4 - single SQL - insert
|
||||
-----------------------------
|
||||
Create trigger trg2 BEFORE UPDATE on tb3 for each row
|
||||
BEGIN
|
||||
insert into db_test.t1_i
|
||||
values (new.f120, new.f136, new.f144, new.f163);
|
||||
END//
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
f120 f122 f136 f144 f163
|
||||
1 Test 3.5.8.4 00222 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_i order by i120;
|
||||
i120 i136 i144 i163
|
||||
1 00222 0000023456 1.050000000000000000000000000000
|
||||
update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert'
|
||||
where f122='Test 3.5.8.4';
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
f120 f122 f136 f144 f163
|
||||
I Test 3.5.8.4-Single Insert 00222 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_i order by i120;
|
||||
i120 i136 i144 i163
|
||||
1 00222 0000023456 1.050000000000000000000000000000
|
||||
I 00222 0000023456 1.050000000000000000000000000000
|
||||
|
||||
3.5.8.4 - single SQL - update
|
||||
-----------------------------
|
||||
drop trigger trg2;
|
||||
Create trigger trg3 BEFORE UPDATE on tb3 for each row
|
||||
update db_test.t1_u
|
||||
set u120=new.f120
|
||||
where u136=new.f136;
|
||||
update tb3 set f120='U', f122='Test 3.5.8.4-Single Update'
|
||||
where f122='Test 3.5.8.4-Single Insert';
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
f120 f122 f136 f144 f163
|
||||
U Test 3.5.8.4-Single Update 00222 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_u order by u120;
|
||||
u120 u136 u144 u163
|
||||
a 00111 0000099999 999.990000000000000000000000000000
|
||||
c 00333 0000099999 999.990000000000000000000000000000
|
||||
f 00333 0000099999 999.990000000000000000000000000000
|
||||
U 00222 0000023456 1.050000000000000000000000000000
|
||||
U 00222 0000023456 1.050000000000000000000000000000
|
||||
U 00222 0000023456 1.050000000000000000000000000000
|
||||
|
||||
3.5.8.3/4 - single SQL - delete
|
||||
-------------------------------
|
||||
drop trigger trg3;
|
||||
Create trigger trg4 AFTER UPDATE on tb3 for each row
|
||||
delete from db_test.t1_d where d136= new.f136;
|
||||
update tb3 set f120='D', f136=444,
|
||||
f122='Test 3.5.8.4-Single Delete'
|
||||
where f122='Test 3.5.8.4-Single Update';
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
f120 f122 f136 f144 f163
|
||||
D Test 3.5.8.4-Single Delete 00444 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_d order by d120;
|
||||
d120 d136 d144 d163
|
||||
a 00111 0000099999 999.990000000000000000000000000000
|
||||
c 00333 0000099999 999.990000000000000000000000000000
|
||||
|
||||
3.5.8.3/4 - single SQL - select
|
||||
-------------------------------
|
||||
drop trigger trg4;
|
||||
Create trigger trg5 AFTER UPDATE on tb3 for each row
|
||||
select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u
|
||||
where u136= new.f136;
|
||||
set @test_var=0;
|
||||
update tb3 set f120='S', f136=111,
|
||||
f122='Test 3.5.8.4-Single Select'
|
||||
where f122='Test 3.5.8.4-Single Delete';
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
f120 f122 f136 f144 f163
|
||||
S Test 3.5.8.4-Single Select 00111 0000023456 1.050000000000000000000000000000
|
||||
select @test_var;
|
||||
@test_var
|
||||
999.990000000000000000000000000000
|
||||
drop trigger trg1;
|
||||
drop trigger trg5;
|
||||
drop database if exists db_test;
|
||||
delete from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
|
||||
|
||||
Testcase 3.5.8.5 (IF):
|
||||
----------------------
|
||||
create trigger trg2 before insert on tb3 for each row
|
||||
BEGIN
|
||||
IF new.f120='1' then
|
||||
set @test_var='one', new.f120='2';
|
||||
ELSEIF new.f120='2' then
|
||||
set @test_var='two', new.f120='3';
|
||||
ELSEIF new.f120='3' then
|
||||
set @test_var='three', new.f120='4';
|
||||
END IF;
|
||||
IF (new.f120='4') and (new.f136=10) then
|
||||
set @test_var2='2nd if', new.f120='d';
|
||||
ELSE
|
||||
set @test_var2='2nd else', new.f120='D';
|
||||
END IF;
|
||||
END//
|
||||
set @test_var='Empty', @test_var2=0;
|
||||
Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101);
|
||||
select f120, f122, f136, @test_var, @test_var2
|
||||
from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
|
||||
f120 f122 f136 @test_var @test_var2
|
||||
D Test 3.5.8.5-if 00101 one 2nd else
|
||||
Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102);
|
||||
select f120, f122, f136, @test_var, @test_var2
|
||||
from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
|
||||
f120 f122 f136 @test_var @test_var2
|
||||
D Test 3.5.8.5-if 00101 two 2nd else
|
||||
D Test 3.5.8.5-if 00102 two 2nd else
|
||||
Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10);
|
||||
select f120, f122, f136, @test_var, @test_var2
|
||||
from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
|
||||
f120 f122 f136 @test_var @test_var2
|
||||
d Test 3.5.8.5-if 00010 three 2nd if
|
||||
D Test 3.5.8.5-if 00101 three 2nd if
|
||||
D Test 3.5.8.5-if 00102 three 2nd if
|
||||
Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103);
|
||||
select f120, f122, f136, @test_var, @test_var2
|
||||
from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
|
||||
f120 f122 f136 @test_var @test_var2
|
||||
d Test 3.5.8.5-if 00010 three 2nd else
|
||||
D Test 3.5.8.5-if 00101 three 2nd else
|
||||
D Test 3.5.8.5-if 00102 three 2nd else
|
||||
D Test 3.5.8.5-if 00103 three 2nd else
|
||||
create trigger trg3 before update on tb3 for each row
|
||||
BEGIN
|
||||
ELSEIF new.f120='2' then
|
||||
END IF;
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ELSEIF new.f120='2' then
|
||||
END IF;
|
||||
END' at line 3
|
||||
drop trigger trg3//
|
||||
create trigger trg4 before update on tb3 for each row
|
||||
BEGIN
|
||||
IF (new.f120='4') and (new.f136=10) then
|
||||
set @test_var2='2nd if', new.f120='d';
|
||||
ELSE
|
||||
set @test_var2='2nd else', new.f120='D';
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7
|
||||
drop trigger trg4;
|
||||
drop trigger trg2;
|
||||
delete from tb3 where f121='Test 3.5.8.5-if';
|
||||
|
||||
Testcase 3.5.8.5-case:
|
||||
----------------------
|
||||
create trigger trg3 before insert on tb3 for each row
|
||||
BEGIN
|
||||
SET new.f120=char(ascii(new.f120)-32);
|
||||
CASE
|
||||
when new.f136<100 then set new.f136=new.f136+120;
|
||||
when new.f136<10 then set new.f144=777;
|
||||
when new.f136>100 then set new.f120=new.f136-1;
|
||||
END case;
|
||||
CASE
|
||||
when new.f136=200 then set @test_var=CONCAT(new.f120, '=');
|
||||
ELSE set @test_var=concat(new.f120, '*');
|
||||
END case;
|
||||
CASE new.f144
|
||||
when 1 then set @test_var=concat(@test_var, 'one');
|
||||
when 2 then set @test_var=concat(@test_var, 'two');
|
||||
when 3 then set @test_var=concat(@test_var, 'three');
|
||||
when 4 then set @test_var=concat(@test_var, 'four');
|
||||
when 5 then set @test_var=concat(@test_var, 'five');
|
||||
when 6 then set @test_var=concat(@test_var, 'six');
|
||||
when 7 then set @test_var=concat(@test_var, 'seven');
|
||||
when 8 then set @test_var=concat(@test_var, 'eight');
|
||||
when 9 then set @test_var=concat(@test_var, 'nine');
|
||||
when 10 then set @test_var=concat(@test_var, 'ten');
|
||||
when 11 then set @test_var=concat(@test_var, 'eleven');
|
||||
when 12 then set @test_var=concat(@test_var, 'twelve');
|
||||
when 13 then set @test_var=concat(@test_var, 'thirteen');
|
||||
when 14 then set @test_var=concat(@test_var, 'fourteen');
|
||||
when 15 then set @test_var=concat(@test_var, 'fifteen');
|
||||
ELSE set @test_var=CONCAT(new.f120, '*', new.f144);
|
||||
END case;
|
||||
END//
|
||||
set @test_var='Empty';
|
||||
Insert into tb3 (f120, f122, f136, f144)
|
||||
values ('a', 'Test 3.5.8.5-case', 5, 7);
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
A Test 3.5.8.5-case 00125 0000000007 A*seven
|
||||
Insert into tb3 (f120, f122, f136, f144)
|
||||
values ('b', 'Test 3.5.8.5-case', 71,16);
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
A Test 3.5.8.5-case 00125 0000000007 B*0000000016
|
||||
B Test 3.5.8.5-case 00191 0000000016 B*0000000016
|
||||
Insert into tb3 (f120, f122, f136, f144)
|
||||
values ('c', 'Test 3.5.8.5-case', 80,1);
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
A Test 3.5.8.5-case 00125 0000000007 C=one
|
||||
B Test 3.5.8.5-case 00191 0000000016 C=one
|
||||
C Test 3.5.8.5-case 00200 0000000001 C=one
|
||||
Insert into tb3 (f120, f122, f136)
|
||||
values ('d', 'Test 3.5.8.5-case', 152);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f120' at row 1
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
1 Test 3.5.8.5-case 00152 0000099999 1*0000099999
|
||||
A Test 3.5.8.5-case 00125 0000000007 1*0000099999
|
||||
B Test 3.5.8.5-case 00191 0000000016 1*0000099999
|
||||
C Test 3.5.8.5-case 00200 0000000001 1*0000099999
|
||||
Insert into tb3 (f120, f122, f136, f144)
|
||||
values ('e', 'Test 3.5.8.5-case', 200, 8);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f120' at row 1
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
1 Test 3.5.8.5-case 00152 0000099999 1=eight
|
||||
1 Test 3.5.8.5-case 00200 0000000008 1=eight
|
||||
A Test 3.5.8.5-case 00125 0000000007 1=eight
|
||||
B Test 3.5.8.5-case 00191 0000000016 1=eight
|
||||
C Test 3.5.8.5-case 00200 0000000001 1=eight
|
||||
Insert into tb3 (f120, f122, f136, f144)
|
||||
values ('f', 'Test 3.5.8.5-case', 100, 8);
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
1 Test 3.5.8.5-case 00152 0000099999 1=eight
|
||||
1 Test 3.5.8.5-case 00200 0000000008 1=eight
|
||||
A Test 3.5.8.5-case 00125 0000000007 1=eight
|
||||
B Test 3.5.8.5-case 00191 0000000016 1=eight
|
||||
C Test 3.5.8.5-case 00200 0000000001 1=eight
|
||||
create trigger trg3a before update on tb3 for each row
|
||||
BEGIN
|
||||
CASE
|
||||
when new.f136<100 then set new.f120='p';
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5
|
||||
drop trigger trg3a;
|
||||
drop trigger trg3;
|
||||
delete from tb3 where f121='Test 3.5.8.5-case';
|
||||
|
||||
Testcase 3.5.8.5-loop/leave:
|
||||
----------------------------
|
||||
Create trigger trg4 after insert on tb3 for each row
|
||||
BEGIN
|
||||
set @counter=0, @flag='Initial';
|
||||
Label1: loop
|
||||
if new.f136<new.f144 then
|
||||
set @counter='Nothing to loop';
|
||||
leave Label1;
|
||||
else
|
||||
set @counter=@counter+1;
|
||||
if new.f136=new.f144+@counter then
|
||||
set @counter=concat(@counter, ' loops');
|
||||
leave Label1;
|
||||
end if;
|
||||
end if;
|
||||
iterate label1;
|
||||
set @flag='Final';
|
||||
END loop Label1;
|
||||
END//
|
||||
Insert into tb3 (f122, f136, f144)
|
||||
values ('Test 3.5.8.5-loop', 2, 8);
|
||||
select @counter, @flag;
|
||||
@counter @flag
|
||||
Nothing to loop Initial
|
||||
Insert into tb3 (f122, f136, f144)
|
||||
values ('Test 3.5.8.5-loop', 11, 8);
|
||||
select @counter, @flag;
|
||||
@counter @flag
|
||||
3 loops Initial
|
||||
Create trigger trg4_2 after update on tb3 for each row
|
||||
BEGIN
|
||||
Label1: loop
|
||||
set @counter=@counter+1;
|
||||
END;
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';
|
||||
END' at line 5
|
||||
drop trigger trg4_2;
|
||||
drop trigger trg4;
|
||||
delete from tb3 where f122='Test 3.5.8.5-loop';
|
||||
|
||||
Testcase 3.5.8.5-repeat:
|
||||
------------------------
|
||||
Create trigger trg6 after insert on tb3 for each row
|
||||
BEGIN
|
||||
rp_label: REPEAT
|
||||
SET @counter1 = @counter1 + 1;
|
||||
IF (@counter1 MOD 2 = 0) THEN ITERATE rp_label;
|
||||
END IF;
|
||||
SET @counter2 = @counter2 + 1;
|
||||
UNTIL @counter1> new.f136 END REPEAT rp_label;
|
||||
END//
|
||||
set @counter1= 0, @counter2= 0;
|
||||
Insert into tb3 (f122, f136)
|
||||
values ('Test 3.5.8.5-repeat', 13);
|
||||
select @counter1, @counter2;
|
||||
@counter1 @counter2
|
||||
15 8
|
||||
Create trigger trg6_2 after update on tb3 for each row
|
||||
BEGIN
|
||||
REPEAT
|
||||
SET @counter2 = @counter2 + 1;
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 5
|
||||
drop trigger trg6;
|
||||
delete from tb3 where f122='Test 3.5.8.5-repeat';
|
||||
|
||||
Testcase 3.5.8.5-while:
|
||||
-----------------------
|
||||
Create trigger trg7 after insert on tb3 for each row
|
||||
wl_label: WHILE @counter1 < new.f136 DO
|
||||
SET @counter1 = @counter1 + 1;
|
||||
IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label;
|
||||
END IF;
|
||||
SET @counter2 = @counter2 + 1;
|
||||
END WHILE wl_label//
|
||||
set @counter1= 0, @counter2= 0;
|
||||
Insert into tb3 (f122, f136)
|
||||
values ('Test 3.5.8.5-while', 7);
|
||||
select @counter1, @counter2;
|
||||
@counter1 @counter2
|
||||
7 4
|
||||
Create trigger trg7_2 after update on tb3 for each row
|
||||
BEGIN
|
||||
WHILE @counter1 < new.f136
|
||||
SET @counter1 = @counter1 + 1;
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @counter1 = @counter1 + 1;
|
||||
END' at line 4
|
||||
delete from tb3 where f122='Test 3.5.8.5-while';
|
||||
drop trigger trg7;
|
||||
|
||||
Testcase 3.5.8.6: (requirement void)
|
||||
------------------------------------
|
||||
CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END//
|
||||
CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW
|
||||
BEGIN
|
||||
CALL sp_01 ();
|
||||
END//
|
||||
Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101);
|
||||
update tb3 set f120='S', f136=111,
|
||||
f122='Test 3.5.8.6-tr8_1'
|
||||
where f122='Test 3.5.8.6-insert';
|
||||
select f120, f122
|
||||
from tb3 where f122 like 'Test 3.5.8.6%' order by f120;
|
||||
f120 f122
|
||||
S Test 3.5.8.6-tr8_1
|
||||
DROP TRIGGER trg8_1;
|
||||
DROP PROCEDURE sp_01;
|
||||
|
||||
Testcase 3.5.8.7
|
||||
----------------
|
||||
Create trigger trg9_1 before update on tb3 for each row
|
||||
BEGIN
|
||||
Start transaction;
|
||||
Set new.f120='U';
|
||||
Commit;
|
||||
END//
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
Create trigger trg9_2 before delete on tb3 for each row
|
||||
BEGIN
|
||||
Start transaction;
|
||||
Set @var2=old.f120;
|
||||
Rollback;
|
||||
END//
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
drop user test_general@localhost;
|
||||
drop user test_general;
|
||||
drop user test_super@localhost;
|
||||
DROP TABLE test.tb3;
|
||||
269
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_trig_09.result
Normal file
269
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_trig_09.result
Normal file
@@ -0,0 +1,269 @@
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/memory_tb3.txt'
|
||||
into table tb3;
|
||||
|
||||
Testcase 3.5.9.1/2:
|
||||
-------------------
|
||||
Create trigger trg1 BEFORE UPDATE on tb3 for each row
|
||||
set new.f142 = 94087, @counter=@counter+1;
|
||||
TotalRows
|
||||
10
|
||||
Affected
|
||||
9
|
||||
NotAffected
|
||||
1
|
||||
NewValuew
|
||||
0
|
||||
set @counter=0;
|
||||
Update tb3 Set f142='1' where f130<100;
|
||||
select count(*) as ExpectedChanged, @counter as TrigCounter
|
||||
from tb3 where f142=94087;
|
||||
ExpectedChanged TrigCounter
|
||||
9 9
|
||||
select count(*) as ExpectedNotChange from tb3
|
||||
where f130<100 and f142<>94087;
|
||||
ExpectedNotChange
|
||||
0
|
||||
select count(*) as NonExpectedChanged from tb3
|
||||
where f130>=130 and f142=94087;
|
||||
NonExpectedChanged
|
||||
0
|
||||
drop trigger trg1;
|
||||
|
||||
Testcase 3.5.9.3:
|
||||
-----------------
|
||||
Create trigger trg2_a before update on tb3 for each row
|
||||
set @tr_var_b4_118=old.f118, @tr_var_b4_121=old.f121,
|
||||
@tr_var_b4_122=old.f122, @tr_var_b4_136=old.f136,
|
||||
@tr_var_b4_163=old.f163;
|
||||
Create trigger trg2_b after update on tb3 for each row
|
||||
set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121,
|
||||
@tr_var_af_122=old.f122, @tr_var_af_136=old.f136,
|
||||
@tr_var_af_163=old.f163;
|
||||
Create trigger trg2_c before delete on tb3 for each row
|
||||
set @tr_var_b4_118=old.f118, @tr_var_b4_121=old.f121,
|
||||
@tr_var_b4_122=old.f122, @tr_var_b4_136=old.f136,
|
||||
@tr_var_b4_163=old.f163;
|
||||
Create trigger trg2_d after delete on tb3 for each row
|
||||
set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121,
|
||||
@tr_var_af_122=old.f122, @tr_var_af_136=old.f136,
|
||||
@tr_var_af_163=old.f163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163
|
||||
0 0 0 0 0
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163
|
||||
0 0 0 0 0
|
||||
Insert into tb3 (f122, f136, f163)
|
||||
values ('Test 3.5.9.3', 7, 123.17);
|
||||
Update tb3 Set f136=8 where f122='Test 3.5.9.3';
|
||||
select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136;
|
||||
f118 f121 f122 f136 f163
|
||||
a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000
|
||||
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
|
||||
@tr_var_b4_136, @tr_var_b4_163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163
|
||||
a NULL Test 3.5.9.3 7 123.170000000000000000000000000000
|
||||
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
|
||||
@tr_var_af_136, @tr_var_af_163;
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163
|
||||
a NULL Test 3.5.9.3 7 123.170000000000000000000000000000
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163
|
||||
0 0 0 0 0
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163
|
||||
0 0 0 0 0
|
||||
delete from tb3 where f122='Test 3.5.9.3';
|
||||
select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136;
|
||||
f118 f121 f122 f136 f163
|
||||
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
|
||||
@tr_var_b4_136, @tr_var_b4_163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163
|
||||
a NULL Test 3.5.9.3 8 123.170000000000000000000000000000
|
||||
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
|
||||
@tr_var_af_136, @tr_var_af_163;
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163
|
||||
a NULL Test 3.5.9.3 8 123.170000000000000000000000000000
|
||||
drop trigger trg2_a;
|
||||
drop trigger trg2_b;
|
||||
drop trigger trg2_c;
|
||||
drop trigger trg2_d;
|
||||
|
||||
Testcase 3.5.9.4:
|
||||
-----------------
|
||||
Create trigger trg3_a before insert on tb3 for each row
|
||||
set @tr_var_b4_118=new.f118, @tr_var_b4_121=new.f121,
|
||||
@tr_var_b4_122=new.f122, @tr_var_b4_136=new.f136,
|
||||
@tr_var_b4_151=new.f151, @tr_var_b4_163=new.f163;
|
||||
Create trigger trg3_b after insert on tb3 for each row
|
||||
set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121,
|
||||
@tr_var_af_122=new.f122, @tr_var_af_136=new.f136,
|
||||
@tr_var_af_151=new.f151, @tr_var_af_163=new.f163;
|
||||
Create trigger trg3_c before update on tb3 for each row
|
||||
set @tr_var_b4_118=new.f118, @tr_var_b4_121=new.f121,
|
||||
@tr_var_b4_122=new.f122, @tr_var_b4_136=new.f136,
|
||||
@tr_var_b4_151=new.f151, @tr_var_b4_163=new.f163;
|
||||
Create trigger trg3_d after update on tb3 for each row
|
||||
set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121,
|
||||
@tr_var_af_122=new.f122, @tr_var_af_136=new.f136,
|
||||
@tr_var_af_151=new.f151, @tr_var_af_163=new.f163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163
|
||||
0 0 0 0 0 0
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163
|
||||
0 0 0 0 0 0
|
||||
Insert into tb3 (f122, f136, f151, f163)
|
||||
values ('Test 3.5.9.4', 7, DEFAULT, 995.24);
|
||||
select f118, f121, f122, f136, f151, f163 from tb3
|
||||
where f122 like 'Test 3.5.9.4%' order by f163;
|
||||
f118 f121 f122 f136 f151 f163
|
||||
a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000
|
||||
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
|
||||
@tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163
|
||||
a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000
|
||||
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
|
||||
@tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163
|
||||
a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163
|
||||
0 0 0 0 0 0
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163
|
||||
0 0 0 0 0 0
|
||||
Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL
|
||||
where f122='Test 3.5.9.4';
|
||||
Warnings:
|
||||
Warning 1048 Column 'f136' cannot be null
|
||||
Update tb3 Set f122='Test 3.5.9.4-trig', f136=0, f151=DEFAULT, f163=NULL
|
||||
where f122='Test 3.5.9.4';
|
||||
select f118, f121, f122, f136, f151, f163 from tb3
|
||||
where f122 like 'Test 3.5.9.4-trig' order by f163;
|
||||
f118 f121 f122 f136 f151 f163
|
||||
a NULL Test 3.5.9.4-trig 00000 999 NULL
|
||||
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
|
||||
@tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163
|
||||
a NULL Test 3.5.9.4-trig 0 999 NULL
|
||||
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
|
||||
@tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163
|
||||
a NULL Test 3.5.9.4-trig 0 999 NULL
|
||||
drop trigger trg3_a;
|
||||
drop trigger trg3_b;
|
||||
drop trigger trg3_c;
|
||||
drop trigger trg3_d;
|
||||
delete from tb3 where f122='Test 3.5.9.4-trig';
|
||||
|
||||
Testcase 3.5.9.5: (implied in previous tests)
|
||||
---------------------------------------------
|
||||
|
||||
Testcase 3.5.9.6:
|
||||
-----------------
|
||||
create trigger trg4a before insert on tb3 for each row
|
||||
set @temp1= old.f120;
|
||||
ERROR HY000: There is no OLD row in on INSERT trigger
|
||||
create trigger trg4b after insert on tb3 for each row
|
||||
set old.f120= 'test';
|
||||
ERROR HY000: Updating of OLD row is not allowed in trigger
|
||||
drop trigger trg4a;
|
||||
drop trigger trg4b;
|
||||
|
||||
Testcase 3.5.9.7: (implied in previous tests)
|
||||
---------------------------------------------
|
||||
|
||||
Testcase 3.5.9.8: (implied in previous tests)
|
||||
---------------------------------------------
|
||||
|
||||
Testcase 3.5.9.9:
|
||||
-----------------
|
||||
create trigger trg5a before DELETE on tb3 for each row
|
||||
set @temp1=new.f122;
|
||||
ERROR HY000: There is no NEW row in on DELETE trigger
|
||||
create trigger trg5b after DELETE on tb3 for each row
|
||||
set new.f122='test';
|
||||
ERROR HY000: There is no NEW row in on DELETE trigger
|
||||
drop trigger trg5a;
|
||||
drop trigger trg5b;
|
||||
|
||||
Testcase 3.5.9.10: (implied in previous tests)
|
||||
----------------------------------------------
|
||||
|
||||
Testcase 3.5.9.11: covered by 3.5.9.9
|
||||
-------------------------------------
|
||||
|
||||
Testcase 3.5.9.12: covered by 3.5.9.6
|
||||
-------------------------------------
|
||||
|
||||
Testcase 3.5.9.13:
|
||||
------------------
|
||||
create trigger trg6a before UPDATE on tb3 for each row
|
||||
set old.f118='C', new.f118='U';
|
||||
ERROR HY000: Updating of OLD row is not allowed in trigger
|
||||
create trigger trg6b after INSERT on tb3 for each row
|
||||
set old.f136=163, new.f118='U';
|
||||
ERROR HY000: Updating of OLD row is not allowed in trigger
|
||||
create trigger trg6c after UPDATE on tb3 for each row
|
||||
set old.f136=NULL;
|
||||
ERROR HY000: Updating of OLD row is not allowed in trigger
|
||||
drop trigger trg6a;
|
||||
drop trigger trg6b;
|
||||
drop trigger trg6c;
|
||||
|
||||
Testcase 3.5.9.14: (implied in previous tests)
|
||||
----------------------------------------------
|
||||
DROP TABLE test.tb3;
|
||||
@@ -0,0 +1,394 @@
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/memory_tb3.txt'
|
||||
into table tb3;
|
||||
|
||||
Testcase 3.5.10.1/2/3:
|
||||
----------------------
|
||||
Create view vw11 as select * from tb3
|
||||
where f122 like 'Test 3.5.10.1/2/3%';
|
||||
Create trigger trg1a before insert on tb3
|
||||
for each row set new.f163=111.11;
|
||||
Create trigger trg1b after insert on tb3
|
||||
for each row set @test_var='After Insert';
|
||||
Create trigger trg1c before update on tb3
|
||||
for each row set new.f121='Y', new.f122='Test 3.5.10.1/2/3-Update';
|
||||
Create trigger trg1d after update on tb3
|
||||
for each row set @test_var='After Update';
|
||||
Create trigger trg1e before delete on tb3
|
||||
for each row set @test_var=5;
|
||||
Create trigger trg1f after delete on tb3
|
||||
for each row set @test_var= 2* @test_var+7;
|
||||
Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 1);
|
||||
Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2);
|
||||
Insert into vw11 (f122, f151) values ('Not in View', 3);
|
||||
select f121, f122, f151, f163
|
||||
from tb3 where f122 like 'Test 3.5.10.1/2/3%' order by f151;
|
||||
f121 f122 f151 f163
|
||||
NULL Test 3.5.10.1/2/3 1 111.110000000000000000000000000000
|
||||
NULL Test 3.5.10.1/2/3 2 111.110000000000000000000000000000
|
||||
select f121, f122, f151, f163 from vw11;
|
||||
f121 f122 f151 f163
|
||||
NULL Test 3.5.10.1/2/3 1 111.110000000000000000000000000000
|
||||
NULL Test 3.5.10.1/2/3 2 111.110000000000000000000000000000
|
||||
select f121, f122, f151, f163
|
||||
from tb3 where f122 like 'Not in View';
|
||||
f121 f122 f151 f163
|
||||
NULL Not in View 3 111.110000000000000000000000000000
|
||||
Update vw11 set f163=1;
|
||||
select f121, f122, f151, f163 from tb3
|
||||
where f122 like 'Test 3.5.10.1/2/3%' order by f151;
|
||||
f121 f122 f151 f163
|
||||
Y Test 3.5.10.1/2/3-Update 1 1.000000000000000000000000000000
|
||||
Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000
|
||||
select f121, f122, f151, f163 from vw11;
|
||||
f121 f122 f151 f163
|
||||
Y Test 3.5.10.1/2/3-Update 1 1.000000000000000000000000000000
|
||||
Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000
|
||||
set @test_var=0;
|
||||
Select @test_var as 'before delete';
|
||||
before delete
|
||||
0
|
||||
delete from vw11 where f151=1;
|
||||
select f121, f122, f151, f163 from tb3
|
||||
where f122 like 'Test 3.5.10.1/2/3%' order by f151;
|
||||
f121 f122 f151 f163
|
||||
Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000
|
||||
select f121, f122, f151, f163 from vw11;
|
||||
f121 f122 f151 f163
|
||||
Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000
|
||||
Select @test_var as 'after delete';
|
||||
after delete
|
||||
17
|
||||
drop view vw11;
|
||||
drop trigger trg1a;
|
||||
drop trigger trg1b;
|
||||
drop trigger trg1c;
|
||||
drop trigger trg1d;
|
||||
drop trigger trg1e;
|
||||
drop trigger trg1f;
|
||||
delete from tb3 where f122 like 'Test 3.5.10.1/2/3%';
|
||||
|
||||
Testcase 3.5.10.4:
|
||||
------------------
|
||||
create table tb_load (f1 int, f2 char(25),f3 int) engine = <engine_to_be_used>;
|
||||
Create trigger trg4 before insert on tb_load
|
||||
for each row set new.f3=-(new.f1 div 5), @counter= @counter+1;
|
||||
set @counter= 0;
|
||||
select @counter as 'Rows Loaded Before';
|
||||
Rows Loaded Before
|
||||
0
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table tb_load;
|
||||
select @counter as 'Rows Loaded After';
|
||||
Rows Loaded After
|
||||
10
|
||||
Select * from tb_load order by f1 limit 10;
|
||||
f1 f2 f3
|
||||
-5000 a` 1000
|
||||
-4999 aaa 999
|
||||
-4998 abaa 999
|
||||
-4997 acaaa 999
|
||||
-4996 adaaaa 999
|
||||
-4995 aeaaaaa 999
|
||||
-4994 afaaaaaa 998
|
||||
-4993 agaaaaaaa 998
|
||||
-4992 a^aaaaaaaa 998
|
||||
-4991 a_aaaaaaaaa 998
|
||||
drop trigger trg4;
|
||||
drop table tb_load;
|
||||
|
||||
Testcase 3.5.10.5: (implemented in trig_frkey.test)
|
||||
---------------------------------------------------
|
||||
|
||||
Testcase 3.5.10.6: (implemented in trig_frkey.test)
|
||||
---------------------------------------------------
|
||||
|
||||
Testcase 3.5.10.extra:
|
||||
----------------------
|
||||
create table t1_sp (var136 tinyint, var151 decimal) engine = <engine_to_be_used>;
|
||||
create trigger trg before insert on t1_sp
|
||||
for each row set @counter=@counter+1;
|
||||
create procedure trig_sp()
|
||||
begin
|
||||
declare done int default 0;
|
||||
declare var151 decimal;
|
||||
declare var136 tinyint;
|
||||
declare cur1 cursor for select f136, f151 from tb3;
|
||||
declare continue handler for sqlstate '01000' set done = 1;
|
||||
open cur1;
|
||||
fetch cur1 into var136, var151;
|
||||
wl_loop: WHILE NOT done DO
|
||||
insert into t1_sp values (var136, var151);
|
||||
fetch cur1 into var136, var151;
|
||||
END WHILE wl_loop;
|
||||
close cur1;
|
||||
end//
|
||||
set @counter=0;
|
||||
select @counter;
|
||||
@counter
|
||||
0
|
||||
call trig_sp();
|
||||
ERROR 02000: No data - zero rows fetched, selected, or processed
|
||||
select @counter;
|
||||
@counter
|
||||
11
|
||||
select count(*) from tb3;
|
||||
count(*)
|
||||
11
|
||||
select count(*) from t1_sp;
|
||||
count(*)
|
||||
11
|
||||
drop procedure trig_sp;
|
||||
drop trigger trg;
|
||||
drop table t1_sp;
|
||||
|
||||
Testcase 3.5.11.1 (implemented in trig_perf.test)
|
||||
-------------------------------------------------
|
||||
|
||||
Testcase y.y.y.2: Check for triggers starting triggers
|
||||
------------------------------------------------------
|
||||
use test;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2_1;
|
||||
drop table if exists t2_2;
|
||||
drop table if exists t2_3;
|
||||
drop table if exists t2_4;
|
||||
drop table if exists t3;
|
||||
create table t1 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2_1 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2_2 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2_3 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2_4 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t3 (f1 integer) engine = <engine_to_be_used>;
|
||||
insert into t1 values (1);
|
||||
create trigger tr1 after insert on t1 for each row
|
||||
BEGIN
|
||||
insert into t2_1 (f1) values (new.f1+1);
|
||||
insert into t2_2 (f1) values (new.f1+1);
|
||||
insert into t2_3 (f1) values (new.f1+1);
|
||||
insert into t2_4 (f1) values (new.f1+1);
|
||||
END//
|
||||
create trigger tr2_1 after insert on t2_1 for each row
|
||||
insert into t3 (f1) values (new.f1+10);
|
||||
create trigger tr2_2 after insert on t2_2 for each row
|
||||
insert into t3 (f1) values (new.f1+100);
|
||||
create trigger tr2_3 after insert on t2_3 for each row
|
||||
insert into t3 (f1) values (new.f1+1000);
|
||||
create trigger tr2_4 after insert on t2_4 for each row
|
||||
insert into t3 (f1) values (new.f1+10000);
|
||||
insert into t1 values (1);
|
||||
select * from t3 order by f1;
|
||||
f1
|
||||
12
|
||||
102
|
||||
1002
|
||||
10002
|
||||
drop trigger tr1;
|
||||
drop trigger tr2_1;
|
||||
drop trigger tr2_2;
|
||||
drop trigger tr2_3;
|
||||
drop trigger tr2_4;
|
||||
drop table t1, t2_1, t2_2, t2_3, t2_4, t3;
|
||||
|
||||
Testcase y.y.y.3: Circular trigger reference
|
||||
--------------------------------------------
|
||||
use test;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
drop table if exists t3;
|
||||
drop table if exists t4;
|
||||
create table t1 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2 (f2 integer) engine = <engine_to_be_used>;
|
||||
create table t3 (f3 integer) engine = <engine_to_be_used>;
|
||||
create table t4 (f4 integer) engine = <engine_to_be_used>;
|
||||
insert into t1 values (0);
|
||||
create trigger tr1 after insert on t1
|
||||
for each row insert into t2 (f2) values (new.f1+1);
|
||||
create trigger tr2 after insert on t2
|
||||
for each row insert into t3 (f3) values (new.f2+1);
|
||||
create trigger tr3 after insert on t3
|
||||
for each row insert into t4 (f4) values (new.f3+1);
|
||||
create trigger tr4 after insert on t4
|
||||
for each row insert into t1 (f1) values (new.f4+1);
|
||||
insert into t1 values (1);
|
||||
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
select * from t1 order by f1;
|
||||
f1
|
||||
0
|
||||
select * from t2 order by f2;
|
||||
f2
|
||||
select * from t3 order by f3;
|
||||
f3
|
||||
select * from t4 order by f4;
|
||||
f4
|
||||
drop trigger tr1;
|
||||
drop trigger tr2;
|
||||
drop trigger tr3;
|
||||
drop trigger tr4;
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
drop table t4;
|
||||
|
||||
Testcase y.y.y.4: Recursive trigger/SP references
|
||||
-------------------------------------------------
|
||||
set @sql_mode='traditional';
|
||||
create table t1_sp (
|
||||
count integer,
|
||||
var136 tinyint,
|
||||
var151 decimal) engine = <engine_to_be_used>;
|
||||
create procedure trig_sp()
|
||||
begin
|
||||
declare done int default 0;
|
||||
declare var151 decimal;
|
||||
declare var136 tinyint;
|
||||
declare cur1 cursor for select f136, f151 from tb3;
|
||||
declare continue handler for sqlstate '01000' set done = 1;
|
||||
set @counter= @counter+1;
|
||||
open cur1;
|
||||
fetch cur1 into var136, var151;
|
||||
wl_loop: WHILE NOT done DO
|
||||
insert into t1_sp values (@counter, var136, var151);
|
||||
fetch cur1 into var136, var151;
|
||||
END WHILE wl_loop;
|
||||
close cur1;
|
||||
end//
|
||||
create trigger trg before insert on t1_sp
|
||||
for each row call trig_sp();
|
||||
set @counter=0;
|
||||
select @counter;
|
||||
@counter
|
||||
0
|
||||
call trig_sp();
|
||||
ERROR HY000: Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine trig_sp
|
||||
select @counter;
|
||||
@counter
|
||||
1
|
||||
select count(*) from tb3;
|
||||
count(*)
|
||||
11
|
||||
select count(*) from t1_sp;
|
||||
count(*)
|
||||
0
|
||||
set @@max_sp_recursion_depth= 10;
|
||||
set @counter=0;
|
||||
select @counter;
|
||||
@counter
|
||||
0
|
||||
call trig_sp();
|
||||
ERROR HY000: Can't update table 't1_sp' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
select @counter;
|
||||
@counter
|
||||
2
|
||||
select count(*) from tb3;
|
||||
count(*)
|
||||
11
|
||||
select count(*) from t1_sp;
|
||||
count(*)
|
||||
0
|
||||
drop procedure trig_sp;
|
||||
drop trigger trg;
|
||||
drop table t1_sp;
|
||||
|
||||
Testcase y.y.y.5: Rollback of nested trigger references
|
||||
-------------------------------------------------------
|
||||
set @@sql_mode='traditional';
|
||||
use test;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
drop table if exists t3;
|
||||
drop table if exists t4;
|
||||
create table t1 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2 (f2 integer) engine = <engine_to_be_used>;
|
||||
create table t3 (f3 integer) engine = <engine_to_be_used>;
|
||||
create table t4 (f4 tinyint) engine = <engine_to_be_used>;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
insert into t1 values (1);
|
||||
create trigger tr1 after insert on t1
|
||||
for each row insert into t2 (f2) values (new.f1+1);
|
||||
create trigger tr2 after insert on t2
|
||||
for each row insert into t3 (f3) values (new.f2+1);
|
||||
create trigger tr3 after insert on t3
|
||||
for each row insert into t4 (f4) values (new.f3+1000);
|
||||
set autocommit=0;
|
||||
start transaction;
|
||||
insert into t1 values (1);
|
||||
ERROR 22003: Out of range value for column 'f4' at row 1
|
||||
commit;
|
||||
select * from t1 order by f1;
|
||||
f1
|
||||
1
|
||||
select * from t2 order by f2;
|
||||
f2
|
||||
select * from t3 order by f3;
|
||||
f3
|
||||
drop trigger tr1;
|
||||
drop trigger tr2;
|
||||
drop trigger tr3;
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
drop table t4;
|
||||
DROP TABLE test.tb3;
|
||||
@@ -0,0 +1,73 @@
|
||||
|
||||
Testcase x.x.x.1:
|
||||
-----------------
|
||||
DROP TABLE IF EXISTS t0, t1, t2;
|
||||
CREATE TABLE t0 (col1 CHAR(50))
|
||||
ENGINE = <engine_to_be_tested>;
|
||||
CREATE TABLE t1 (id INT NOT NULL, col1 CHAR(50), PRIMARY KEY (id))
|
||||
ENGINE = <engine_to_be_tested>;
|
||||
CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,
|
||||
INDEX par_ind (f_id), col1 CHAR(50),
|
||||
FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL)
|
||||
ENGINE = <engine_to_be_tested>;
|
||||
INSERT INTO t1 VALUES (1,'Department A');
|
||||
INSERT INTO t1 VALUES (2,'Department B');
|
||||
INSERT INTO t1 VALUES (3,'Department C');
|
||||
INSERT INTO t2 VALUES (1,2,'Emp 1');
|
||||
INSERT INTO t2 VALUES (2,2,'Emp 2');
|
||||
INSERT INTO t2 VALUES (3,2,'Emp 3');
|
||||
CREATE TRIGGER trig AFTER INSERT ON t0 FOR EACH ROW
|
||||
DELETE FROM t1 WHERE col1 = new.col1;
|
||||
SELECT * FROM t2;
|
||||
id f_id col1
|
||||
1 2 Emp 1
|
||||
2 2 Emp 2
|
||||
3 2 Emp 3
|
||||
LOCK TABLES t0 WRITE, t1 WRITE;
|
||||
INSERT INTO t0 VALUES ('Department B');
|
||||
UNLOCK TABLES;
|
||||
SELECT * FROM t2;
|
||||
id f_id col1
|
||||
1 NULL Emp 1
|
||||
2 NULL Emp 2
|
||||
3 NULL Emp 3
|
||||
DROP TRIGGER trig;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
Testcase x.x.x.2:
|
||||
-----------------
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
CREATE TABLE t1 (id INT NOT NULL, col1 CHAR(50), PRIMARY KEY (id))
|
||||
ENGINE = <engine_to_be_tested>;
|
||||
CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,
|
||||
INDEX par_ind (f_id), col1 CHAR(50),
|
||||
FOREIGN KEY (f_id) REFERENCES t1(id) ON UPDATE CASCADE)
|
||||
ENGINE = <engine_to_be_tested>;
|
||||
INSERT INTO t1 VALUES (1,'Department A');
|
||||
INSERT INTO t1 VALUES (2,'Department B');
|
||||
INSERT INTO t1 VALUES (3,'Department C');
|
||||
INSERT INTO t2 VALUES (1,2,'Emp 1');
|
||||
INSERT INTO t2 VALUES (2,3,'Emp 2');
|
||||
insert into t2 VALUES (3,4,'Emp 3');
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`f_id`) REFERENCES `t1` (`id`) ON UPDATE CASCADE)
|
||||
CREATE TRIGGER tr_t2 BEFORE INSERT ON t2 FOR EACH ROW
|
||||
INSERT INTO t1 VALUES(new.f_id, CONCAT('New Department ', new.f_id));
|
||||
LOCK TABLES t1 WRITE, t2 WRITE;
|
||||
INSERT INTO t2 VALUES (3,4,'Emp 3');
|
||||
UNLOCK TABLES;
|
||||
SELECT * FROM t1;
|
||||
id col1
|
||||
1 Department A
|
||||
2 Department B
|
||||
3 Department C
|
||||
4 New Department 4
|
||||
SELECT * FROM t2;
|
||||
id f_id col1
|
||||
1 2 Emp 1
|
||||
2 3 Emp 2
|
||||
3 4 Emp 3
|
||||
DROP TRIGGER tr_t2;
|
||||
DROP TABLE t2, t1, t0;
|
||||
|
||||
Foreign Key tests disabled (bug 11472 - stored in trig_frkey2.test)
|
||||
-------------------------------------------------------------------
|
||||
22905
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_views.result
Normal file
22905
build/lib/mysql/mysql-test/suite/funcs_1/r/innodb_views.result
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,602 @@
|
||||
SHOW DATABASES LIKE 'information_schema';
|
||||
Database (information_schema)
|
||||
information_schema
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.20: USE INFORMATION_SCHEMA is supported
|
||||
#######################################################################
|
||||
# Switch to connection default
|
||||
USE test;
|
||||
SELECT DATABASE();
|
||||
DATABASE()
|
||||
test
|
||||
USE information_schema;
|
||||
SELECT DATABASE();
|
||||
DATABASE()
|
||||
information_schema
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT DATABASE();
|
||||
DATABASE()
|
||||
test
|
||||
USE information_schema;
|
||||
SELECT DATABASE();
|
||||
DATABASE()
|
||||
information_schema
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
#######################################################################
|
||||
# Testcase TBD1: The INFORMATION_SCHEMA cannot be dropped.
|
||||
#######################################################################
|
||||
DROP DATABASE information_schema;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
#######################################################################
|
||||
# Testcase TBD2: There cannot be a second database INFORMATION_SCHEMA.
|
||||
#######################################################################
|
||||
CREATE DATABASE information_schema;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
##################################################################################
|
||||
# Testcase 3.2.1.6+3.2.1.7: No user may create an INFORMATION_SCHEMA table or view
|
||||
##################################################################################
|
||||
# Switch to connection default (user=root)
|
||||
USE information_schema;
|
||||
CREATE TABLE schemata ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE tables ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE columns ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE character_sets ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE collations ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE collation_character_set_applicability ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE routines ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE statistics ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE views ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE user_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE schema_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE table_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE column_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE table_constraints ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE key_column_usage ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE triggers ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT);
|
||||
ERROR 42S02: Unknown table 't1' in information_schema
|
||||
CREATE VIEW tables AS SELECT 'garbage';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE VIEW tables AS SELECT * FROM information_schema.tables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE VIEW v1 AS SELECT 'garbage';
|
||||
ERROR 42S02: Unknown table 'v1' in information_schema
|
||||
USE test;
|
||||
CREATE TABLE information_schema. schemata ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. tables ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. columns ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. character_sets ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. collations ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. collation_character_set_applicability ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. routines ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. statistics ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. views ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. user_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. schema_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. table_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. column_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. table_constraints ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. key_column_usage ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. triggers ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema.t1 (f1 INT, f2 INT, f3 INT);
|
||||
ERROR 42S02: Unknown table 't1' in information_schema
|
||||
CREATE VIEW information_schema.tables AS SELECT 'garbage';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE VIEW information_schema.tables AS
|
||||
SELECT * FROM information_schema.tables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE VIEW information_schema.v1 AS SELECT 'garbage';
|
||||
ERROR 42S02: Unknown table 'v1' in information_schema
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT ALL ON *.* TO testuser1@localhost;
|
||||
SHOW GRANTS FOR testuser1@localhost;
|
||||
Grants for testuser1@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'testuser1'@'localhost'
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
USE information_schema;
|
||||
CREATE TABLE schemata ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE tables ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE columns ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE character_sets ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE collations ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE collation_character_set_applicability ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE routines ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE statistics ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE views ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE user_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE schema_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE table_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE column_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE table_constraints ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE key_column_usage ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE triggers ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT);
|
||||
ERROR 42S02: Unknown table 't1' in information_schema
|
||||
CREATE VIEW tables AS SELECT 'garbage';
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE VIEW tables AS SELECT * FROM information_schema.tables;
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE VIEW v1 AS SELECT 'garbage';
|
||||
ERROR 42S02: Unknown table 'v1' in information_schema
|
||||
USE test;
|
||||
CREATE TABLE information_schema. schemata ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. tables ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. columns ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. character_sets ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. collations ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. collation_character_set_applicability ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. routines ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. statistics ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. views ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. user_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. schema_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. table_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. column_privileges ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. table_constraints ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. key_column_usage ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema. triggers ( c1 INT );
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE TABLE information_schema.t1 (f1 INT, f2 INT, f3 INT);
|
||||
ERROR 42S02: Unknown table 't1' in information_schema
|
||||
CREATE VIEW information_schema.tables AS SELECT 'garbage';
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE VIEW information_schema.tables AS
|
||||
SELECT * FROM information_schema.tables;
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
||||
CREATE VIEW information_schema.v1 AS SELECT 'garbage';
|
||||
ERROR 42S02: Unknown table 'v1' in information_schema
|
||||
# Switch to connection default (user=root) and close connection testuser1
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
###############################################################################
|
||||
# Testcase 3.2.1.1+3.2.1.2: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
###############################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1_first (f1 BIGINT UNIQUE, f2 BIGINT)
|
||||
ENGINE = <some_engine>;
|
||||
CREATE TABLE db_datadict.t1_second (f1 BIGINT UNIQUE, f2 BIGINT)
|
||||
ENGINE = <some_engine>;
|
||||
# Attention: The protocolling of the next result set is disabled.
|
||||
SELECT * FROM information_schema.tables;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict';
|
||||
table_name
|
||||
t1_first
|
||||
t1_second
|
||||
SELECT LENGTH(table_name) FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
LENGTH(table_name)
|
||||
8
|
||||
9
|
||||
SELECT count(table_name) FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'db_datadic%';
|
||||
count(table_name)
|
||||
2
|
||||
SELECT CAST((LENGTH(table_schema) + LENGTH(table_name)) AS DECIMAL(15,1))
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict';
|
||||
CAST((LENGTH(table_schema) + LENGTH(table_name)) AS DECIMAL(15,1))
|
||||
19.0
|
||||
20.0
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name IN ('t1_first','t1_second') ORDER BY table_name LIMIT 1;
|
||||
table_name
|
||||
t1_first
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name IN ('t1_first','t1_second') ORDER BY table_name LIMIT 1,1;
|
||||
table_name
|
||||
t1_second
|
||||
SELECT table_name,table_schema AS my_col FROM information_schema.tables
|
||||
WHERE table_name = 't1_first' AND table_schema = 'db_datadict';
|
||||
table_name my_col
|
||||
t1_first db_datadict
|
||||
SELECT HIGH_PRIORITY table_name AS my_col FROM information_schema.tables
|
||||
WHERE table_name = 't1_first' OR table_name = 't1_second';
|
||||
my_col
|
||||
t1_first
|
||||
t1_second
|
||||
SELECT 1 AS my_col FROM information_schema.tables
|
||||
WHERE table_name = 't1_third';
|
||||
my_col
|
||||
SELECT table_name,table_schema INTO @table_name,@table_schema
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name LIMIT 1;
|
||||
SELECT @table_name,@table_schema;
|
||||
@table_name @table_schema
|
||||
t1_first db_datadict
|
||||
SELECT table_name,table_schema
|
||||
INTO OUTFILE '<OUTFILE>'
|
||||
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
|
||||
LINES TERMINATED BY '\n'
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
"t1_first","db_datadict"
|
||||
"t1_second","db_datadict"
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_first'
|
||||
UNION ALL
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_second';
|
||||
table_name
|
||||
t1_first
|
||||
t1_second
|
||||
SELECT DISTINCT table_schema FROM information_schema.tables
|
||||
WHERE table_name IN (SELECT table_name FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict')
|
||||
ORDER BY table_name;
|
||||
table_schema
|
||||
db_datadict
|
||||
SELECT table_name FROM information_schema.tables t1
|
||||
LEFT JOIN information_schema.tables t2 USING(table_name,table_schema)
|
||||
WHERE t2.table_schema = 'db_datadict'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_first
|
||||
t1_second
|
||||
USE test;
|
||||
SELECT * FROM tables;
|
||||
ERROR 42S02: Table 'test.tables' doesn't exist
|
||||
#########################################################################
|
||||
# Testcase 3.2.1.17+3.2.1.18
|
||||
#########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT UNIQUE, f2 BIGINT)
|
||||
ENGINE = <some_engine>;
|
||||
SELECT * FROM db_datadict.t1;
|
||||
f1 f2
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
GRANT CREATE VIEW,SELECT ON db_datadict.* TO testuser1@localhost
|
||||
WITH GRANT OPTION;
|
||||
GRANT USAGE ON db_datadict.* TO testuser2@localhost;
|
||||
FLUSH PRIVILEGES;
|
||||
GRANT SELECT on information_schema.* TO testuser1@localhost;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT CREATE VIEW ON information_schema.* TO 'u_6_401018'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT table_schema,table_name FROM information_schema.tables
|
||||
WHERE table_schema = 'information_schema' AND table_name = 'tables';
|
||||
table_schema table_name
|
||||
information_schema TABLES
|
||||
SELECT * FROM information_schema.table_privileges
|
||||
WHERE table_schema = 'information_schema';
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'information_schema';
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
CREATE VIEW db_datadict.v2 AS
|
||||
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
|
||||
FROM information_schema.tables WHERE table_schema = 'db_datadict';
|
||||
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
|
||||
FROM db_datadict.v2;
|
||||
TABLE_SCHEMA TABLE_NAME TABLE_TYPE
|
||||
db_datadict t1 BASE TABLE
|
||||
db_datadict v2 VIEW
|
||||
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
|
||||
FROM information_schema.tables WHERE table_schema = 'db_datadict';
|
||||
TABLE_SCHEMA TABLE_NAME TABLE_TYPE
|
||||
db_datadict t1 BASE TABLE
|
||||
db_datadict v2 VIEW
|
||||
GRANT SELECT ON db_datadict.v2 to testuser2@localhost;
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
|
||||
FROM db_datadict.v2;
|
||||
TABLE_SCHEMA TABLE_NAME TABLE_TYPE
|
||||
db_datadict v2 VIEW
|
||||
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
|
||||
FROM information_schema.tables WHERE table_schema = 'db_datadict';
|
||||
TABLE_SCHEMA TABLE_NAME TABLE_TYPE
|
||||
db_datadict v2 VIEW
|
||||
# Switch to connection default and close connections testuser1 and testuser2
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
#########################################################################
|
||||
# Testcase 3.2.1.19
|
||||
#########################################################################
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
SELECT 'empty result set was expected' AS my_col
|
||||
FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'information_schema';
|
||||
my_col
|
||||
SELECT 'empty result set was expected' AS my_col
|
||||
FROM information_schema.table_privileges
|
||||
WHERE table_schema = 'information_schema';
|
||||
my_col
|
||||
SELECT 'empty result set was expected' AS my_col
|
||||
FROM information_schema.column_privileges
|
||||
WHERE table_schema = 'information_schema';
|
||||
my_col
|
||||
GRANT ALTER ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT ALTER ROUTINE ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT CREATE ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT CREATE ROUTINE ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT CREATE TEMPORARY TABLES ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT DELETE ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT DROP ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT EXECUTE ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT INDEX ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT INSERT ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT LOCK TABLES ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
GRANT UPDATE ON information_schema.*
|
||||
TO 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
SELECT 'empty result set was expected' AS my_col
|
||||
FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'information_schema';
|
||||
my_col
|
||||
SELECT 'empty result set was expected' AS my_col
|
||||
FROM information_schema.table_privileges
|
||||
WHERE table_schema = 'information_schema';
|
||||
my_col
|
||||
SELECT 'empty result set was expected' AS my_col
|
||||
FROM information_schema.column_privileges
|
||||
WHERE table_schema = 'information_schema';
|
||||
my_col
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
#########################################################################
|
||||
# Testcase 3.2.1.16
|
||||
#########################################################################
|
||||
SELECT DISTINCT table_schema FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT table_schema FROM information_schema.column_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT constraint_schema,table_schema
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
||||
constraint_schema table_schema
|
||||
SELECT DISTINCT routine_schema FROM information_schema.routines
|
||||
WHERE routine_schema LIKE 'db_data%';
|
||||
routine_schema
|
||||
SELECT DISTINCT schema_name FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_data%';
|
||||
schema_name
|
||||
SELECT DISTINCT table_schema FROM information_schema.schema_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT table_schema,index_schema FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_data%' OR index_schema LIKE 'db_data%';
|
||||
table_schema index_schema
|
||||
SELECT DISTINCT table_schema FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT constraint_schema,table_schema
|
||||
FROM information_schema.table_constraints
|
||||
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
||||
constraint_schema table_schema
|
||||
SELECT DISTINCT table_schema FROM information_schema.table_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT trigger_schema,event_object_schema
|
||||
FROM information_schema.triggers
|
||||
WHERE trigger_schema LIKE 'db_data%' OR event_object_schema LIKE 'db_data%';
|
||||
trigger_schema event_object_schema
|
||||
SELECT DISTINCT table_schema FROM information_schema.views
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT, f2 BIGINT NOT NULL, f3 BIGINT,
|
||||
PRIMARY KEY(f1))
|
||||
ENGINE = <some_engine>;
|
||||
CREATE UNIQUE INDEX UIDX ON db_datadict.t1(f3);
|
||||
CREATE PROCEDURE db_datadict.sproc1() SELECT 'db_datadict';
|
||||
CREATE FUNCTION db_datadict.func1() RETURNS INT RETURN 0;
|
||||
CREATE TRIGGER db_datadict.trig1 BEFORE INSERT ON db_datadict.t1
|
||||
FOR EACH ROW SET @aux = 1;
|
||||
CREATE VIEW db_datadict.v1 AS SELECT * FROM db_datadict.t1;
|
||||
CREATE VIEW db_datadict.v2 AS SELECT * FROM information_schema.tables;
|
||||
SELECT DISTINCT table_schema FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
db_datadict
|
||||
SELECT DISTINCT table_schema FROM information_schema.column_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT constraint_schema,table_schema
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
||||
constraint_schema table_schema
|
||||
db_datadict db_datadict
|
||||
SELECT DISTINCT routine_schema FROM information_schema.routines
|
||||
WHERE routine_schema LIKE 'db_data%';
|
||||
routine_schema
|
||||
db_datadict
|
||||
SELECT DISTINCT schema_name FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_data%';
|
||||
schema_name
|
||||
db_datadict
|
||||
SELECT DISTINCT table_schema FROM information_schema.schema_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT table_schema,index_schema FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_data%' OR index_schema LIKE 'db_data%';
|
||||
table_schema index_schema
|
||||
db_datadict db_datadict
|
||||
SELECT DISTINCT table_schema FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
db_datadict
|
||||
SELECT DISTINCT constraint_schema,table_schema
|
||||
FROM information_schema.table_constraints
|
||||
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
||||
constraint_schema table_schema
|
||||
db_datadict db_datadict
|
||||
SELECT DISTINCT table_schema FROM information_schema.table_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT trigger_schema,event_object_schema
|
||||
FROM information_schema.triggers
|
||||
WHERE trigger_schema LIKE 'db_data%' OR event_object_schema LIKE 'db_data%';
|
||||
trigger_schema event_object_schema
|
||||
db_datadict db_datadict
|
||||
SELECT DISTINCT table_schema FROM information_schema.views
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
db_datadict
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT ALL ON test.* TO 'testuser1'@'localhost';
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT DISTINCT table_schema FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT table_schema FROM information_schema.column_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT constraint_schema,table_schema
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
||||
constraint_schema table_schema
|
||||
SELECT DISTINCT routine_schema FROM information_schema.routines
|
||||
WHERE routine_schema LIKE 'db_data%';
|
||||
routine_schema
|
||||
SELECT DISTINCT schema_name FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_data%';
|
||||
schema_name
|
||||
SELECT DISTINCT table_schema FROM information_schema.schema_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT table_schema,index_schema FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_data%' OR index_schema LIKE 'db_data%';
|
||||
table_schema index_schema
|
||||
SELECT DISTINCT table_schema FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT constraint_schema,table_schema
|
||||
FROM information_schema.table_constraints
|
||||
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
||||
constraint_schema table_schema
|
||||
SELECT DISTINCT table_schema FROM information_schema.table_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
SELECT DISTINCT trigger_schema,event_object_schema
|
||||
FROM information_schema.triggers
|
||||
WHERE trigger_schema LIKE 'db_data%' OR event_object_schema LIKE 'db_data%';
|
||||
trigger_schema event_object_schema
|
||||
SELECT DISTINCT table_schema FROM information_schema.views
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
table_schema
|
||||
# Switch to connection default and close connections testuser1 and testuser2
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
CREATE PROCEDURE test.p1()
|
||||
INSERT INTO information_schema.tables
|
||||
SELECT * FROM information_schema.tables LIMIT 1;
|
||||
CALL test.p1();
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP PROCEDURE test.p1;
|
||||
CREATE PROCEDURE test.p1()
|
||||
UPDATE information_schema.columns SET table_schema = 'garbage';
|
||||
CALL test.p1();
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP PROCEDURE test.p1;
|
||||
CREATE PROCEDURE test.p1()
|
||||
DELETE FROM information_schema.schemata;
|
||||
CALL test.p1();
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP PROCEDURE test.p1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.17.1+3.2.17.2: To be implemented outside of this script
|
||||
#########################################################################
|
||||
@@ -0,0 +1,78 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'CHARACTER_SETS';
|
||||
Tables_in_information_schema (CHARACTER_SETS)
|
||||
CHARACTER_SETS
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.CHARACTER_SETS;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.CHARACTER_SETS;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.CHARACTER_SETS;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.CHARACTER_SETS;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.2.1: INFORMATION_SCHEMA.CHARACTER_SETS layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.CHARACTER_SETS;
|
||||
Field Type Null Key Default Extra
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
DEFAULT_COLLATE_NAME varchar(32) NO
|
||||
DESCRIPTION varchar(60) NO
|
||||
MAXLEN bigint(3) NO 0
|
||||
SHOW CREATE TABLE information_schema.CHARACTER_SETS;
|
||||
Table Create Table
|
||||
CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` (
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT '0'
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.CHARACTER_SETS;
|
||||
Field Type Null Key Default Extra
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
DEFAULT_COLLATE_NAME varchar(32) NO
|
||||
DESCRIPTION varchar(60) NO
|
||||
MAXLEN bigint(3) NO 0
|
||||
# Testcases 3.2.2.2 and 3.2.2.3 are checked in suite/funcs_1/t/charset_collation*.test
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
INSERT INTO information_schema.character_sets
|
||||
SELECT * FROM information_schema.character_sets;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.character_sets SET description = 'just updated';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.character_sets WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.character_sets;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx ON information_schema.character_sets(character_set_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.character_sets DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.character_sets ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.character_sets;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.character_sets RENAME db_datadict.character_sets;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.character_sets
|
||||
RENAME information_schema.xcharacter_sets;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,97 @@
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1
|
||||
(
|
||||
f1 CHAR UNICODE,
|
||||
f2 CHAR(0) UNICODE,
|
||||
f3 CHAR(10) UNICODE,
|
||||
f5 VARCHAR(0) UNICODE,
|
||||
f6 VARCHAR(255) UNICODE,
|
||||
f7 VARCHAR(260) UNICODE,
|
||||
f8 TEXT UNICODE,
|
||||
f9 TINYTEXT UNICODE,
|
||||
f10 MEDIUMTEXT UNICODE,
|
||||
f11 LONGTEXT UNICODE
|
||||
) ENGINE = InnoDB;
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
|
||||
NULL test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
|
||||
NULL test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
|
||||
NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
|
||||
NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
|
||||
NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
|
||||
NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
|
||||
NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
|
||||
NULL test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
|
||||
NULL test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
|
||||
##########################################################################
|
||||
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
|
||||
##########################################################################
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
2.0000 char ucs2 ucs2_general_ci
|
||||
2.0000 longtext ucs2 ucs2_general_ci
|
||||
2.0000 mediumtext ucs2 ucs2_general_ci
|
||||
2.0000 text ucs2 ucs2_general_ci
|
||||
2.0000 varchar ucs2 ucs2_general_ci
|
||||
2.0079 tinytext ucs2 ucs2_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
NULL char ucs2 ucs2_general_ci
|
||||
NULL varchar ucs2 ucs2_general_ci
|
||||
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
|
||||
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
|
||||
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
CHARACTER_MAXIMUM_LENGTH,
|
||||
CHARACTER_OCTET_LENGTH,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME,
|
||||
COLUMN_TYPE
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
|
||||
2.0000 test t1 f1 char 1 2 ucs2 ucs2_general_ci char(1)
|
||||
NULL test t1 f2 char 0 0 ucs2 ucs2_general_ci char(0)
|
||||
2.0000 test t1 f3 char 10 20 ucs2 ucs2_general_ci char(10)
|
||||
NULL test t1 f5 varchar 0 0 ucs2 ucs2_general_ci varchar(0)
|
||||
2.0000 test t1 f6 varchar 255 510 ucs2 ucs2_general_ci varchar(255)
|
||||
2.0000 test t1 f7 varchar 260 520 ucs2 ucs2_general_ci varchar(260)
|
||||
2.0000 test t1 f8 text 32767 65535 ucs2 ucs2_general_ci text
|
||||
2.0079 test t1 f9 tinytext 127 255 ucs2 ucs2_general_ci tinytext
|
||||
2.0000 test t1 f10 mediumtext 8388607 16777215 ucs2 ucs2_general_ci mediumtext
|
||||
2.0000 test t1 f11 longtext 2147483647 4294967295 ucs2 ucs2_general_ci longtext
|
||||
DROP TABLE t1;
|
||||
@@ -0,0 +1,82 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1
|
||||
(
|
||||
f1 CHAR UNICODE,
|
||||
f2 CHAR(0) UNICODE,
|
||||
f3 CHAR(10) UNICODE,
|
||||
f5 VARCHAR(0) UNICODE,
|
||||
f6 VARCHAR(255) UNICODE,
|
||||
f7 VARCHAR(260) UNICODE
|
||||
) ENGINE = MEMORY;
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
|
||||
NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
|
||||
NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
|
||||
NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
|
||||
NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
|
||||
NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
|
||||
##########################################################################
|
||||
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
|
||||
##########################################################################
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
2.0000 char ucs2 ucs2_general_ci
|
||||
2.0000 varchar ucs2 ucs2_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
NULL char ucs2 ucs2_general_ci
|
||||
NULL varchar ucs2 ucs2_general_ci
|
||||
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
|
||||
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
|
||||
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
CHARACTER_MAXIMUM_LENGTH,
|
||||
CHARACTER_OCTET_LENGTH,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME,
|
||||
COLUMN_TYPE
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
|
||||
2.0000 test t1 f1 char 1 2 ucs2 ucs2_general_ci char(1)
|
||||
NULL test t1 f2 char 0 0 ucs2 ucs2_general_ci char(0)
|
||||
2.0000 test t1 f3 char 10 20 ucs2 ucs2_general_ci char(10)
|
||||
NULL test t1 f5 varchar 0 0 ucs2 ucs2_general_ci varchar(0)
|
||||
2.0000 test t1 f6 varchar 255 510 ucs2 ucs2_general_ci varchar(255)
|
||||
2.0000 test t1 f7 varchar 260 520 ucs2 ucs2_general_ci varchar(260)
|
||||
DROP TABLE t1;
|
||||
@@ -0,0 +1,98 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1
|
||||
(
|
||||
f1 CHAR UNICODE,
|
||||
f2 CHAR(0) UNICODE,
|
||||
f3 CHAR(10) UNICODE,
|
||||
f5 VARCHAR(0) UNICODE,
|
||||
f6 VARCHAR(255) UNICODE,
|
||||
f7 VARCHAR(260) UNICODE,
|
||||
f8 TEXT UNICODE,
|
||||
f9 TINYTEXT UNICODE,
|
||||
f10 MEDIUMTEXT UNICODE,
|
||||
f11 LONGTEXT UNICODE
|
||||
) ENGINE = MyISAM;
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
|
||||
NULL test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
|
||||
NULL test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
|
||||
NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
|
||||
NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
|
||||
NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
|
||||
NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
|
||||
NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
|
||||
NULL test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
|
||||
NULL test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
|
||||
##########################################################################
|
||||
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
|
||||
##########################################################################
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
2.0000 char ucs2 ucs2_general_ci
|
||||
2.0000 longtext ucs2 ucs2_general_ci
|
||||
2.0000 mediumtext ucs2 ucs2_general_ci
|
||||
2.0000 text ucs2 ucs2_general_ci
|
||||
2.0000 varchar ucs2 ucs2_general_ci
|
||||
2.0079 tinytext ucs2 ucs2_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
NULL char ucs2 ucs2_general_ci
|
||||
NULL varchar ucs2 ucs2_general_ci
|
||||
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
|
||||
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
|
||||
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
CHARACTER_MAXIMUM_LENGTH,
|
||||
CHARACTER_OCTET_LENGTH,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME,
|
||||
COLUMN_TYPE
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
|
||||
2.0000 test t1 f1 char 1 2 ucs2 ucs2_general_ci char(1)
|
||||
NULL test t1 f2 char 0 0 ucs2 ucs2_general_ci char(0)
|
||||
2.0000 test t1 f3 char 10 20 ucs2 ucs2_general_ci char(10)
|
||||
NULL test t1 f5 varchar 0 0 ucs2 ucs2_general_ci varchar(0)
|
||||
2.0000 test t1 f6 varchar 255 510 ucs2 ucs2_general_ci varchar(255)
|
||||
2.0000 test t1 f7 varchar 260 520 ucs2 ucs2_general_ci varchar(260)
|
||||
2.0000 test t1 f8 text 32767 65535 ucs2 ucs2_general_ci text
|
||||
2.0079 test t1 f9 tinytext 127 255 ucs2 ucs2_general_ci tinytext
|
||||
2.0000 test t1 f10 mediumtext 8388607 16777215 ucs2 ucs2_general_ci mediumtext
|
||||
2.0000 test t1 f11 longtext 2147483647 4294967295 ucs2 ucs2_general_ci longtext
|
||||
DROP TABLE t1;
|
||||
98
build/lib/mysql/mysql-test/suite/funcs_1/r/is_cml_ndb.result
Normal file
98
build/lib/mysql/mysql-test/suite/funcs_1/r/is_cml_ndb.result
Normal file
@@ -0,0 +1,98 @@
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1
|
||||
(
|
||||
f1 CHAR UNICODE,
|
||||
f2 CHAR(0) UNICODE,
|
||||
f3 CHAR(10) UNICODE,
|
||||
f5 VARCHAR(0) UNICODE,
|
||||
f6 VARCHAR(255) UNICODE,
|
||||
f7 VARCHAR(260) UNICODE,
|
||||
f8 TEXT UNICODE,
|
||||
f9 TINYTEXT UNICODE,
|
||||
f10 MEDIUMTEXT UNICODE,
|
||||
f11 LONGTEXT UNICODE,
|
||||
PRIMARY KEY(f1)
|
||||
) ENGINE = NDB;
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL test t1 f1 1 NO char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) PRI select,insert,update,references
|
||||
NULL test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
|
||||
NULL test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
|
||||
NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
|
||||
NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
|
||||
NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
|
||||
NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
|
||||
NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
|
||||
NULL test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
|
||||
NULL test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
|
||||
##########################################################################
|
||||
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
|
||||
##########################################################################
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
2.0000 char ucs2 ucs2_general_ci
|
||||
2.0000 longtext ucs2 ucs2_general_ci
|
||||
2.0000 mediumtext ucs2 ucs2_general_ci
|
||||
2.0000 text ucs2 ucs2_general_ci
|
||||
2.0000 varchar ucs2 ucs2_general_ci
|
||||
2.0079 tinytext ucs2 ucs2_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
NULL char ucs2 ucs2_general_ci
|
||||
NULL varchar ucs2 ucs2_general_ci
|
||||
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
|
||||
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
|
||||
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
CHARACTER_MAXIMUM_LENGTH,
|
||||
CHARACTER_OCTET_LENGTH,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME,
|
||||
COLUMN_TYPE
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
|
||||
2.0000 test t1 f1 char 1 2 ucs2 ucs2_general_ci char(1)
|
||||
NULL test t1 f2 char 0 0 ucs2 ucs2_general_ci char(0)
|
||||
2.0000 test t1 f3 char 10 20 ucs2 ucs2_general_ci char(10)
|
||||
NULL test t1 f5 varchar 0 0 ucs2 ucs2_general_ci varchar(0)
|
||||
2.0000 test t1 f6 varchar 255 510 ucs2 ucs2_general_ci varchar(255)
|
||||
2.0000 test t1 f7 varchar 260 520 ucs2 ucs2_general_ci varchar(260)
|
||||
2.0000 test t1 f8 text 32767 65535 ucs2 ucs2_general_ci text
|
||||
2.0079 test t1 f9 tinytext 127 255 ucs2 ucs2_general_ci tinytext
|
||||
2.0000 test t1 f10 mediumtext 8388607 16777215 ucs2 ucs2_general_ci mediumtext
|
||||
2.0000 test t1 f11 longtext 2147483647 4294967295 ucs2 ucs2_general_ci longtext
|
||||
DROP TABLE t1;
|
||||
@@ -0,0 +1,76 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'COLLATION_CHARACTER_SET_APPLICABILITY';
|
||||
Tables_in_information_schema (COLLATION_CHARACTER_SET_APPLICABILITY)
|
||||
COLLATION_CHARACTER_SET_APPLICABILITY
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.4.1: INFORMATION_SCHEMA.CHARACTER_SET_APPLICABILITY layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||
Field Type Null Key Default Extra
|
||||
COLLATION_NAME varchar(32) NO
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
SHOW CREATE TABLE information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||
Table Create Table
|
||||
COLLATION_CHARACTER_SET_APPLICABILITY CREATE TEMPORARY TABLE `COLLATION_CHARACTER_SET_APPLICABILITY` (
|
||||
`COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT ''
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||
Field Type Null Key Default Extra
|
||||
COLLATION_NAME varchar(32) NO
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
# Testcases 3.2.4.2 and 3.2.4.3 are checked in suite/funcs_1/t/charset_collation*.test
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
INSERT INTO information_schema.collation_character_set_applicability
|
||||
SELECT * FROM information_schema.collation_character_set_applicability;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.collation_character_set_applicability
|
||||
SET collation_name = 'big6_chinese_ci' WHERE character_set_name = 'big6';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.collation_character_set_applicability
|
||||
SET character_set_name = 't_4711';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.collation_character_set_applicability;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.collation_character_set_applicability;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx
|
||||
ON information_schema.collation_character_set_applicability(collation_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.collation_character_set_applicability ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.collation_character_set_applicability;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.collation_character_set_applicability
|
||||
RENAME db_datadict.collation_character_set_applicability;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.collation_character_set_applicability
|
||||
RENAME information_schema.xcollation_character_set_applicability;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,90 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'COLLATIONS';
|
||||
Tables_in_information_schema (COLLATIONS)
|
||||
COLLATIONS
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.COLLATIONS;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.COLLATIONS;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.COLLATIONS;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.COLLATIONS;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.3.1: INFORMATION_SCHEMA.COLLATIONS layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.COLLATIONS;
|
||||
Field Type Null Key Default Extra
|
||||
COLLATION_NAME varchar(32) NO
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
ID bigint(11) NO 0
|
||||
IS_DEFAULT varchar(3) NO
|
||||
IS_COMPILED varchar(3) NO
|
||||
SORTLEN bigint(3) NO 0
|
||||
SHOW CREATE TABLE information_schema.COLLATIONS;
|
||||
Table Create Table
|
||||
COLLATIONS CREATE TEMPORARY TABLE `COLLATIONS` (
|
||||
`COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`ID` bigint(11) NOT NULL DEFAULT '0',
|
||||
`IS_DEFAULT` varchar(3) NOT NULL DEFAULT '',
|
||||
`IS_COMPILED` varchar(3) NOT NULL DEFAULT '',
|
||||
`SORTLEN` bigint(3) NOT NULL DEFAULT '0'
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.COLLATIONS;
|
||||
Field Type Null Key Default Extra
|
||||
COLLATION_NAME varchar(32) NO
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
ID bigint(11) NO 0
|
||||
IS_DEFAULT varchar(3) NO
|
||||
IS_COMPILED varchar(3) NO
|
||||
SORTLEN bigint(3) NO 0
|
||||
# Testcases 3.2.3.2 and 3.2.3.3 are checked in suite/funcs_1/t/charset_collation*.test
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
INSERT INTO information_schema.collations
|
||||
SELECT * FROM information_schema.collations;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
INSERT INTO information_schema.collations
|
||||
(collation_name,character_set_name,id,is_default,is_compiled,sortlen)
|
||||
VALUES ( 'cp1251_bin', 'cp1251',50, '', '',0);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.collations SET description = 'just updated';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.collations WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.collations;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx ON information_schema.collations(character_set_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.collations DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.collations ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.collations ENABLE KEYS;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.collations;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.collations RENAME db_datadict.collations;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.collations
|
||||
RENAME information_schema.xcollations;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,372 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'COLUMN_PRIVILEGES';
|
||||
Tables_in_information_schema (COLUMN_PRIVILEGES)
|
||||
COLUMN_PRIVILEGES
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.COLUMN_PRIVILEGES;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.COLUMN_PRIVILEGES;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.COLUMN_PRIVILEGES;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.COLUMN_PRIVILEGES;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.5.1: INFORMATION_SCHEMA.COLUMN_PRIVILEGES layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.COLUMN_PRIVILEGES;
|
||||
Field Type Null Key Default Extra
|
||||
GRANTEE varchar(81) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
COLUMN_NAME varchar(64) NO
|
||||
PRIVILEGE_TYPE varchar(64) NO
|
||||
IS_GRANTABLE varchar(3) NO
|
||||
SHOW CREATE TABLE information_schema.COLUMN_PRIVILEGES;
|
||||
Table Create Table
|
||||
COLUMN_PRIVILEGES CREATE TEMPORARY TABLE `COLUMN_PRIVILEGES` (
|
||||
`GRANTEE` varchar(81) NOT NULL DEFAULT '',
|
||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '',
|
||||
`IS_GRANTABLE` varchar(3) NOT NULL DEFAULT ''
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.COLUMN_PRIVILEGES;
|
||||
Field Type Null Key Default Extra
|
||||
GRANTEE varchar(81) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
COLUMN_NAME varchar(64) NO
|
||||
PRIVILEGE_TYPE varchar(64) NO
|
||||
IS_GRANTABLE varchar(3) NO
|
||||
SELECT table_catalog, table_schema, table_name, column_name, privilege_type
|
||||
FROM information_schema.column_privileges WHERE table_catalog IS NOT NULL;
|
||||
table_catalog table_schema table_name column_name privilege_type
|
||||
######################################################################
|
||||
# Testcase 3.2.5.2+3.2.5.3+3.2.5.4:
|
||||
# INFORMATION_SCHEMA.COLUMN_PRIVILEGES accessible information
|
||||
######################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 INT, f2 DECIMAL, f3 TEXT)
|
||||
ENGINE = <other_engine_type>;
|
||||
USE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
GRANT SELECT(f1, f3) ON db_datadict.t1 TO 'testuser1'@'localhost';
|
||||
GRANT INSERT(f1) ON db_datadict.t1 TO 'testuser1'@'localhost';
|
||||
GRANT UPDATE(f2) ON db_datadict.t1 TO 'testuser1'@'localhost';
|
||||
GRANT SELECT(f2) ON db_datadict.t1 TO 'testuser2'@'localhost';
|
||||
GRANT INSERT, SELECT ON db_datadict.t1 TO 'testuser3'@'localhost';
|
||||
GRANT SELECT(f3) ON db_datadict.t1 TO 'testuser3'@'localhost';
|
||||
GRANT INSERT, SELECT ON db_datadict.t1 TO 'testuser3'@'localhost'
|
||||
WITH GRANT OPTION;
|
||||
GRANT ALL ON db_datadict.* TO 'testuser3'@'localhost';
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f1 INSERT NO
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f1 SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f2 UPDATE NO
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f3 SELECT NO
|
||||
'testuser2'@'localhost' NULL db_datadict t1 f2 SELECT NO
|
||||
'testuser3'@'localhost' NULL db_datadict t1 f3 SELECT YES
|
||||
GRANT UPDATE(f3) ON db_datadict.t1 TO 'testuser1'@'localhost'
|
||||
WITH GRANT OPTION;
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f1 INSERT YES
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f1 SELECT YES
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f2 UPDATE YES
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f3 SELECT YES
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f3 UPDATE YES
|
||||
'testuser2'@'localhost' NULL db_datadict t1 f2 SELECT NO
|
||||
'testuser3'@'localhost' NULL db_datadict t1 f3 SELECT YES
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f1 INSERT YES
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f1 SELECT YES
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f2 UPDATE YES
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f3 SELECT YES
|
||||
'testuser1'@'localhost' NULL db_datadict t1 f3 UPDATE YES
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser2'@'localhost' NULL db_datadict t1 f2 SELECT NO
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
# FIXME: Is it correct that granted TABLES do not occur in COLUMN_PRIVILEGES?
|
||||
SELECT * FROM information_schema.table_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee,table_schema,table_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser3'@'localhost' NULL db_datadict t1 INSERT YES
|
||||
'testuser3'@'localhost' NULL db_datadict t1 SELECT YES
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser3'@'localhost' NULL db_datadict ALTER NO
|
||||
'testuser3'@'localhost' NULL db_datadict ALTER ROUTINE NO
|
||||
'testuser3'@'localhost' NULL db_datadict CREATE NO
|
||||
'testuser3'@'localhost' NULL db_datadict CREATE ROUTINE NO
|
||||
'testuser3'@'localhost' NULL db_datadict CREATE TEMPORARY TABLES NO
|
||||
'testuser3'@'localhost' NULL db_datadict CREATE VIEW NO
|
||||
'testuser3'@'localhost' NULL db_datadict DELETE NO
|
||||
'testuser3'@'localhost' NULL db_datadict DROP NO
|
||||
'testuser3'@'localhost' NULL db_datadict EVENT NO
|
||||
'testuser3'@'localhost' NULL db_datadict EXECUTE NO
|
||||
'testuser3'@'localhost' NULL db_datadict INDEX NO
|
||||
'testuser3'@'localhost' NULL db_datadict INSERT NO
|
||||
'testuser3'@'localhost' NULL db_datadict LOCK TABLES NO
|
||||
'testuser3'@'localhost' NULL db_datadict REFERENCES NO
|
||||
'testuser3'@'localhost' NULL db_datadict SELECT NO
|
||||
'testuser3'@'localhost' NULL db_datadict SHOW VIEW NO
|
||||
'testuser3'@'localhost' NULL db_datadict TRIGGER NO
|
||||
'testuser3'@'localhost' NULL db_datadict UPDATE NO
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser3'@'localhost' NULL db_datadict t1 f3 SELECT YES
|
||||
GRANT SELECT(f1, f3) ON db_datadict.t1 TO 'testuser2'@'localhost';
|
||||
# FIXME: Is it intended that *my* grants to others are *NOT* shown here?
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser3'@'localhost' NULL db_datadict t1 f3 SELECT YES
|
||||
# Switch to connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser2'@'localhost' NULL db_datadict t1 f1 SELECT NO
|
||||
'testuser2'@'localhost' NULL db_datadict t1 f2 SELECT NO
|
||||
'testuser2'@'localhost' NULL db_datadict t1 f3 SELECT NO
|
||||
# Switch to connection default and close connections testuser1,testuser2,testuser3
|
||||
DROP DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
################################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.COLUMN_PRIVILEGES modifications
|
||||
################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.my_table (f1 BIGINT, f2 CHAR(10), f3 DATE)
|
||||
ENGINE = <engine_type>;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT ALL ON test.* TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
# Switch to connection default
|
||||
GRANT SELECT (f1,f3) ON db_datadict.my_table TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f3, f1) ON `db_datadict`.`my_table` TO 'testuser1'@'localhost'
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f3, f1) ON `db_datadict`.`my_table` TO 'testuser1'@'localhost'
|
||||
# Switch to connection default
|
||||
ALTER TABLE db_datadict.my_table DROP COLUMN f3;
|
||||
GRANT UPDATE (f1) ON db_datadict.my_table TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f3, f1), UPDATE (f1) ON `db_datadict`.`my_table` TO 'testuser1'@'localhost'
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f3, f1), UPDATE (f1) ON `db_datadict`.`my_table` TO 'testuser1'@'localhost'
|
||||
SELECT f1, f3 FROM db_datadict.my_table;
|
||||
ERROR 42S22: Unknown column 'f3' in 'field list'
|
||||
# Switch to connection default
|
||||
ALTER TABLE db_datadict.my_table CHANGE COLUMN f1 my_col BIGINT;
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f3, f1), UPDATE (f1) ON `db_datadict`.`my_table` TO 'testuser1'@'localhost'
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f3, f1), UPDATE (f1) ON `db_datadict`.`my_table` TO 'testuser1'@'localhost'
|
||||
# Switch to connection default
|
||||
DROP TABLE db_datadict.my_table;
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f3, f1), UPDATE (f1) ON `db_datadict`.`my_table` TO 'testuser1'@'localhost'
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f1 UPDATE NO
|
||||
'testuser1'@'localhost' NULL db_datadict my_table f3 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f3, f1), UPDATE (f1) ON `db_datadict`.`my_table` TO 'testuser1'@'localhost'
|
||||
# Switch to connection default
|
||||
REVOKE ALL ON db_datadict.my_table FROM 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_name = 'my_table'
|
||||
ORDER BY grantee, table_schema,table_name,column_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'testuser1'@'localhost'
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA table are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT, f2 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT SELECT (f1) ON db_datadict.t1 TO 'testuser1'@'localhost';
|
||||
INSERT INTO information_schema.column_privileges
|
||||
SELECT * FROM information_schema.column_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.column_privileges SET table_schema = 'test'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.column_privileges WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.column_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_tables
|
||||
ON information_schema.column_privileges(table_schema);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.column_privileges ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.column_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.column_privileges
|
||||
RENAME db_datadict.column_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.column_privileges
|
||||
RENAME information_schema.xcolumn_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
@@ -0,0 +1,37 @@
|
||||
##############################################################################
|
||||
# Testcases 3.2.9.2+3.2.9.3 INFORMATION_SCHEMA.SCHEMATA accessible information
|
||||
##############################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict.* TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_schema IN ('information_schema','mysql','test')
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
SHOW DATABASES LIKE 'information_schema';
|
||||
Database (information_schema)
|
||||
information_schema
|
||||
SHOW DATABASES LIKE 'mysql';
|
||||
Database (mysql)
|
||||
mysql
|
||||
SHOW DATABASES LIKE 'test';
|
||||
Database (test)
|
||||
test
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.column_privileges
|
||||
WHERE table_schema IN ('information_schema','mysql','test')
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
SHOW DATABASES LIKE 'information_schema';
|
||||
Database (information_schema)
|
||||
information_schema
|
||||
SHOW DATABASES LIKE 'mysql';
|
||||
Database (mysql)
|
||||
SHOW DATABASES LIKE 'test';
|
||||
Database (test)
|
||||
test
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
486
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns.result
Normal file
486
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns.result
Normal file
@@ -0,0 +1,486 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'COLUMNS';
|
||||
Tables_in_information_schema (COLUMNS)
|
||||
COLUMNS
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.COLUMNS;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.COLUMNS;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.COLUMNS;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.COLUMNS;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.6.1: INFORMATION_SCHEMA.COLUMNS layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.COLUMNS;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
COLUMN_NAME varchar(64) NO
|
||||
ORDINAL_POSITION bigint(21) unsigned NO 0
|
||||
COLUMN_DEFAULT longtext YES NULL
|
||||
IS_NULLABLE varchar(3) NO
|
||||
DATA_TYPE varchar(64) NO
|
||||
CHARACTER_MAXIMUM_LENGTH bigint(21) unsigned YES NULL
|
||||
CHARACTER_OCTET_LENGTH bigint(21) unsigned YES NULL
|
||||
NUMERIC_PRECISION bigint(21) unsigned YES NULL
|
||||
NUMERIC_SCALE bigint(21) unsigned YES NULL
|
||||
CHARACTER_SET_NAME varchar(32) YES NULL
|
||||
COLLATION_NAME varchar(32) YES NULL
|
||||
COLUMN_TYPE longtext NO NULL
|
||||
COLUMN_KEY varchar(3) NO
|
||||
EXTRA varchar(27) NO
|
||||
PRIVILEGES varchar(80) NO
|
||||
COLUMN_COMMENT varchar(255) NO
|
||||
SHOW CREATE TABLE information_schema.COLUMNS;
|
||||
Table Create Table
|
||||
COLUMNS CREATE TEMPORARY TABLE `COLUMNS` (
|
||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`ORDINAL_POSITION` bigint(21) unsigned NOT NULL DEFAULT '0',
|
||||
`COLUMN_DEFAULT` longtext,
|
||||
`IS_NULLABLE` varchar(3) NOT NULL DEFAULT '',
|
||||
`DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
|
||||
`CHARACTER_MAXIMUM_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||
`CHARACTER_OCTET_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||
`NUMERIC_PRECISION` bigint(21) unsigned DEFAULT NULL,
|
||||
`NUMERIC_SCALE` bigint(21) unsigned DEFAULT NULL,
|
||||
`CHARACTER_SET_NAME` varchar(32) DEFAULT NULL,
|
||||
`COLLATION_NAME` varchar(32) DEFAULT NULL,
|
||||
`COLUMN_TYPE` longtext NOT NULL,
|
||||
`COLUMN_KEY` varchar(3) NOT NULL DEFAULT '',
|
||||
`EXTRA` varchar(27) NOT NULL DEFAULT '',
|
||||
`PRIVILEGES` varchar(80) NOT NULL DEFAULT '',
|
||||
`COLUMN_COMMENT` varchar(255) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.COLUMNS;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
COLUMN_NAME varchar(64) NO
|
||||
ORDINAL_POSITION bigint(21) unsigned NO 0
|
||||
COLUMN_DEFAULT longtext YES NULL
|
||||
IS_NULLABLE varchar(3) NO
|
||||
DATA_TYPE varchar(64) NO
|
||||
CHARACTER_MAXIMUM_LENGTH bigint(21) unsigned YES NULL
|
||||
CHARACTER_OCTET_LENGTH bigint(21) unsigned YES NULL
|
||||
NUMERIC_PRECISION bigint(21) unsigned YES NULL
|
||||
NUMERIC_SCALE bigint(21) unsigned YES NULL
|
||||
CHARACTER_SET_NAME varchar(32) YES NULL
|
||||
COLLATION_NAME varchar(32) YES NULL
|
||||
COLUMN_TYPE longtext NO NULL
|
||||
COLUMN_KEY varchar(3) NO
|
||||
EXTRA varchar(27) NO
|
||||
PRIVILEGES varchar(80) NO
|
||||
COLUMN_COMMENT varchar(255) NO
|
||||
SELECT table_catalog, table_schema, table_name, column_name
|
||||
FROM information_schema.columns WHERE table_catalog IS NOT NULL;
|
||||
table_catalog table_schema table_name column_name
|
||||
###############################################################################
|
||||
# Testcase 3.2.6.2 + 3.2.6.3: INFORMATION_SCHEMA.COLUMNS accessible information
|
||||
###############################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
CREATE TABLE db_datadict.t1
|
||||
(f1 CHAR(10), f2 TEXT, f3 DATE, f4 INT AUTO_INCREMENT,
|
||||
UNIQUE INDEX MUL_IDX(f1,f3), PRIMARY KEY (f4))
|
||||
ENGINE = <other_engine_type>;
|
||||
CREATE VIEW db_datadict.v1 AS SELECT 1 AS f1, 1 AS f2;
|
||||
GRANT SELECT(f1, f2) ON db_datadict.t1 TO 'testuser1'@'localhost';
|
||||
GRANT SELECT(f2) ON db_datadict.v1 TO 'testuser1'@'localhost';
|
||||
CREATE TABLE db_datadict.t2
|
||||
(f1 CHAR(10), f2 TEXT, f3 DATE, f4 INT, PRIMARY KEY (f1,f4))
|
||||
ENGINE = <other_engine_type>;
|
||||
GRANT INSERT(f1, f2) ON db_datadict.t2 TO 'testuser2'@'localhost';
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY table_schema, table_name, ordinal_position;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL db_datadict t1 f1 1 NULL YES char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) MUL select,insert,update,references
|
||||
NULL db_datadict t1 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
|
||||
NULL db_datadict t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
||||
NULL db_datadict t1 f4 4 NULL NO int NULL NULL 10 0 NULL NULL int(11) PRI auto_increment select,insert,update,references
|
||||
NULL db_datadict t2 f1 1 NO char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) PRI select,insert,update,references
|
||||
NULL db_datadict t2 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
|
||||
NULL db_datadict t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
||||
NULL db_datadict t2 f4 4 0 NO int NULL NULL 10 0 NULL NULL int(11) PRI select,insert,update,references
|
||||
NULL db_datadict v1 f1 1 0 NO int NULL NULL 10 0 NULL NULL int(1) select,insert,update,references
|
||||
NULL db_datadict v1 f2 2 0 NO int NULL NULL 10 0 NULL NULL int(1) select,insert,update,references
|
||||
SHOW COLUMNS FROM db_datadict.t1;
|
||||
Field Type Null Key Default Extra
|
||||
f1 char(10) YES MUL NULL
|
||||
f2 text YES NULL
|
||||
f3 date YES NULL
|
||||
f4 int(11) NO PRI NULL auto_increment
|
||||
SHOW COLUMNS FROM db_datadict.t2;
|
||||
Field Type Null Key Default Extra
|
||||
f1 char(10) NO PRI
|
||||
f2 text YES NULL
|
||||
f3 date YES NULL
|
||||
f4 int(11) NO PRI 0
|
||||
SHOW COLUMNS FROM db_datadict.v1;
|
||||
Field Type Null Key Default Extra
|
||||
f1 int(1) NO 0
|
||||
f2 int(1) NO 0
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY table_schema, table_name, ordinal_position;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL db_datadict t1 f1 1 NULL YES char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) MUL select
|
||||
NULL db_datadict t1 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select
|
||||
NULL db_datadict v1 f2 2 0 NO int NULL NULL 10 0 NULL NULL int(1) select
|
||||
SHOW COLUMNS FROM db_datadict.t1;
|
||||
Field Type Null Key Default Extra
|
||||
f1 char(10) YES MUL NULL
|
||||
f2 text YES NULL
|
||||
SHOW COLUMNS FROM db_datadict.t2;
|
||||
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 't2'
|
||||
SHOW COLUMNS FROM db_datadict.v1;
|
||||
Field Type Null Key Default Extra
|
||||
f2 int(1) NO 0
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY table_schema, table_name, ordinal_position;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL db_datadict t2 f1 1 NO char 10 10 NULL NULL latin1 latin1_swedish_ci char(10) PRI insert
|
||||
NULL db_datadict t2 f2 2 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text insert
|
||||
SHOW COLUMNS FROM db_datadict.t1;
|
||||
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table 't1'
|
||||
SHOW COLUMNS FROM db_datadict.t2;
|
||||
Field Type Null Key Default Extra
|
||||
f1 char(10) NO PRI
|
||||
f2 text YES NULL
|
||||
SHOW COLUMNS FROM db_datadict.v1;
|
||||
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table 'v1'
|
||||
# Switch to connection default and close connections testuser1, testuser2
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
###############################################################################
|
||||
# Testcase 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.COLUMNS modifications
|
||||
###############################################################################
|
||||
DROP TABLE IF EXISTS test.t1_my_table;
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.columns
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
CREATE TABLE test.t1_my_table (f1 CHAR(12))
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
ENGINE = <engine_type>;
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_table';
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_table
|
||||
COLUMN_NAME f1
|
||||
ORDINAL_POSITION 1
|
||||
COLUMN_DEFAULT NULL
|
||||
IS_NULLABLE YES
|
||||
DATA_TYPE char
|
||||
CHARACTER_MAXIMUM_LENGTH 12
|
||||
CHARACTER_OCTET_LENGTH 12
|
||||
NUMERIC_PRECISION NULL
|
||||
NUMERIC_SCALE NULL
|
||||
CHARACTER_SET_NAME latin1
|
||||
COLLATION_NAME latin1_swedish_ci
|
||||
COLUMN_TYPE char(12)
|
||||
COLUMN_KEY
|
||||
EXTRA
|
||||
PRIVILEGES select,insert,update,references
|
||||
COLUMN_COMMENT
|
||||
SELECT table_name FROM information_schema.columns
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_table
|
||||
RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
|
||||
SELECT table_name FROM information_schema.columns
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
SELECT table_schema,table_name FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
test t1_my_tablex
|
||||
RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
|
||||
SELECT table_schema,table_name FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
db_datadict t1_my_tablex
|
||||
SELECT table_name, column_name FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name
|
||||
t1_my_tablex f1
|
||||
ALTER TABLE db_datadict.t1_my_tablex CHANGE COLUMN f1 first_col CHAR(12);
|
||||
SELECT table_name, column_name FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name
|
||||
t1_my_tablex first_col
|
||||
SELECT table_name, column_name, character_maximum_length,
|
||||
character_octet_length, column_type
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name character_maximum_length character_octet_length column_type
|
||||
t1_my_tablex first_col 12 12 char(12)
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
MODIFY COLUMN first_col CHAR(20);
|
||||
SELECT table_name, column_name, character_maximum_length,
|
||||
character_octet_length, column_type
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name character_maximum_length character_octet_length column_type
|
||||
t1_my_tablex first_col 20 20 char(20)
|
||||
SELECT table_name, column_name, character_maximum_length,
|
||||
character_octet_length, column_type
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name character_maximum_length character_octet_length column_type
|
||||
t1_my_tablex first_col 20 20 char(20)
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
MODIFY COLUMN first_col VARCHAR(20);
|
||||
SELECT table_name, column_name, character_maximum_length,
|
||||
character_octet_length, column_type
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name character_maximum_length character_octet_length column_type
|
||||
t1_my_tablex first_col 20 20 varchar(20)
|
||||
SELECT table_name, column_name, column_default
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name column_default
|
||||
t1_my_tablex first_col NULL
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
MODIFY COLUMN first_col CHAR(10) DEFAULT 'hello';
|
||||
SELECT table_name, column_name, column_default
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name column_default
|
||||
t1_my_tablex first_col hello
|
||||
SELECT table_name, column_name, is_nullable
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name is_nullable
|
||||
t1_my_tablex first_col YES
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
MODIFY COLUMN first_col CHAR(10) NOT NULL;
|
||||
SELECT table_name, column_name, is_nullable
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name is_nullable
|
||||
t1_my_tablex first_col NO
|
||||
SELECT table_name, column_name, collation_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name collation_name
|
||||
t1_my_tablex first_col latin1_swedish_ci
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
MODIFY COLUMN first_col CHAR(10) COLLATE 'latin1_general_cs';
|
||||
SELECT table_name, column_name, collation_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name collation_name
|
||||
t1_my_tablex first_col latin1_general_cs
|
||||
SELECT table_name, column_name, character_maximum_length,
|
||||
character_octet_length, character_set_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name character_maximum_length character_octet_length character_set_name
|
||||
t1_my_tablex first_col 10 10 latin1
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
MODIFY COLUMN first_col CHAR(10) CHARACTER SET utf8;
|
||||
SELECT table_name, column_name, character_maximum_length,
|
||||
character_octet_length, character_set_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name character_maximum_length character_octet_length character_set_name
|
||||
t1_my_tablex first_col 10 30 utf8
|
||||
SELECT table_name, column_name, column_comment
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name column_comment
|
||||
t1_my_tablex first_col
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
MODIFY COLUMN first_col CHAR(10) COMMENT 'Hello';
|
||||
SELECT table_name, column_name, column_comment
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name column_comment
|
||||
t1_my_tablex first_col Hello
|
||||
SELECT table_name, column_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name
|
||||
t1_my_tablex first_col
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
ADD COLUMN second_col CHAR(10);
|
||||
SELECT table_name, column_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name
|
||||
t1_my_tablex first_col
|
||||
t1_my_tablex second_col
|
||||
SELECT table_name, column_name, ordinal_position
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_name, column_name;
|
||||
table_name column_name ordinal_position
|
||||
t1_my_tablex first_col 1
|
||||
t1_my_tablex second_col 2
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
MODIFY COLUMN second_col CHAR(10) FIRST;
|
||||
SELECT table_name, column_name, ordinal_position
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_name, column_name;
|
||||
table_name column_name ordinal_position
|
||||
t1_my_tablex first_col 2
|
||||
t1_my_tablex second_col 1
|
||||
SELECT table_name, column_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name
|
||||
t1_my_tablex second_col
|
||||
t1_my_tablex first_col
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
DROP COLUMN first_col;
|
||||
SELECT table_name, column_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name
|
||||
t1_my_tablex second_col
|
||||
SELECT table_name, column_name, column_key
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name column_key
|
||||
t1_my_tablex second_col
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
ADD UNIQUE INDEX IDX(second_col);
|
||||
SELECT table_name, column_name, column_key
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name column_key
|
||||
t1_my_tablex second_col UNI
|
||||
SELECT table_name, column_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name
|
||||
t1_my_tablex second_col
|
||||
DROP TABLE db_datadict.t1_my_tablex;
|
||||
SELECT table_name, column_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name
|
||||
CREATE VIEW test.t1_my_tablex
|
||||
AS SELECT 1 AS "col1", 'A' collate latin1_german1_ci AS "col2";
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_name, column_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_tablex
|
||||
COLUMN_NAME col1
|
||||
ORDINAL_POSITION 1
|
||||
COLUMN_DEFAULT 0
|
||||
IS_NULLABLE NO
|
||||
DATA_TYPE int
|
||||
CHARACTER_MAXIMUM_LENGTH NULL
|
||||
CHARACTER_OCTET_LENGTH NULL
|
||||
NUMERIC_PRECISION 10
|
||||
NUMERIC_SCALE 0
|
||||
CHARACTER_SET_NAME NULL
|
||||
COLLATION_NAME NULL
|
||||
COLUMN_TYPE int(1)
|
||||
COLUMN_KEY
|
||||
EXTRA
|
||||
PRIVILEGES select,insert,update,references
|
||||
COLUMN_COMMENT
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_tablex
|
||||
COLUMN_NAME col2
|
||||
ORDINAL_POSITION 2
|
||||
COLUMN_DEFAULT
|
||||
IS_NULLABLE NO
|
||||
DATA_TYPE varchar
|
||||
CHARACTER_MAXIMUM_LENGTH 1
|
||||
CHARACTER_OCTET_LENGTH 1
|
||||
NUMERIC_PRECISION NULL
|
||||
NUMERIC_SCALE NULL
|
||||
CHARACTER_SET_NAME latin1
|
||||
COLLATION_NAME latin1_german1_ci
|
||||
COLUMN_TYPE varchar(1)
|
||||
COLUMN_KEY
|
||||
EXTRA
|
||||
PRIVILEGES select,insert,update,references
|
||||
COLUMN_COMMENT
|
||||
DROP VIEW test.t1_my_tablex;
|
||||
SELECT table_name FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
CREATE TABLE db_datadict.t1_my_tablex
|
||||
ENGINE = <engine_type> AS
|
||||
SELECT 1;
|
||||
SELECT table_name FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.columns
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA table are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
DROP TABLE IF EXISTS test.t1;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE test.t1 (f1 BIGINT);
|
||||
INSERT INTO information_schema.columns (table_schema,table_name,column_name)
|
||||
VALUES('test','t1', 'f2');
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
INSERT INTO information_schema.columns (table_schema,table_name,column_name)
|
||||
VALUES('test','t2', 'f1');
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.columns SET table_name = 't4' WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.columns WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.columns;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX i3 ON information_schema.columns(table_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.columns ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.columns;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.columns RENAME db_datadict.columns;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.columns RENAME information_schema.xcolumns;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE test.t1;
|
||||
DROP DATABASE db_datadict;
|
||||
1138
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns_innodb.result
Normal file
1138
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns_innodb.result
Normal file
File diff suppressed because it is too large
Load Diff
657
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns_is.result
Normal file
657
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns_is.result
Normal file
@@ -0,0 +1,657 @@
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name <> 'profiling'
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema CHARACTER_SETS DESCRIPTION 3 NO varchar 60 180 NULL NULL utf8 utf8_general_ci varchar(60) select
|
||||
NULL information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3) select
|
||||
NULL information_schema COLLATIONS CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLLATIONS COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLLATIONS ID 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(11) select
|
||||
NULL information_schema COLLATIONS IS_COMPILED 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema COLLATIONS IS_DEFAULT 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema COLLATIONS SORTLEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3) select
|
||||
NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema COLUMNS CHARACTER_SET_NAME 13 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLUMNS COLLATION_NAME 14 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLUMNS COLUMN_COMMENT 19 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
|
||||
NULL information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema COLUMNS COLUMN_KEY 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema COLUMNS COLUMN_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLUMNS COLUMN_TYPE 15 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema COLUMNS DATA_TYPE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLUMNS EXTRA 17 NO varchar 27 81 NULL NULL utf8 utf8_general_ci varchar(27) select
|
||||
NULL information_schema COLUMNS IS_NULLABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema COLUMNS ORDINAL_POSITION 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema COLUMNS PRIVILEGES 18 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||
NULL information_schema COLUMNS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema COLUMNS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLUMNS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLUMN_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
|
||||
NULL information_schema COLUMN_PRIVILEGES IS_GRANTABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ENGINES COMMENT 3 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||
NULL information_schema ENGINES ENGINE 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ENGINES SAVEPOINTS 6 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema ENGINES SUPPORT 2 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
|
||||
NULL information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema EVENTS CHARACTER_SET_CLIENT 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema EVENTS COLLATION_CONNECTION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema EVENTS CREATED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema EVENTS DATABASE_COLLATION 24 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema EVENTS DEFINER 4 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
|
||||
NULL information_schema EVENTS ENDS 14 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema EVENTS EVENT_BODY 6 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
|
||||
NULL information_schema EVENTS EVENT_CATALOG 1 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema EVENTS EVENT_COMMENT 20 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema EVENTS EVENT_DEFINITION 7 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema EVENTS EVENT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema EVENTS EVENT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema EVENTS EVENT_TYPE 8 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select
|
||||
NULL information_schema EVENTS EXECUTE_AT 9 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema EVENTS INTERVAL_FIELD 11 NULL YES varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
|
||||
NULL information_schema EVENTS INTERVAL_VALUE 10 NULL YES varchar 256 768 NULL NULL utf8 utf8_general_ci varchar(256) select
|
||||
NULL information_schema EVENTS LAST_ALTERED 18 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema EVENTS LAST_EXECUTED 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema EVENTS ON_COMPLETION 16 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
|
||||
NULL information_schema EVENTS ORIGINATOR 21 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10) select
|
||||
NULL information_schema EVENTS SQL_MODE 12 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
|
||||
NULL information_schema EVENTS STARTS 13 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema EVENTS STATUS 15 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
|
||||
NULL information_schema EVENTS TIME_ZONE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema FILES CHECK_TIME 35 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema FILES CREATE_TIME 33 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema FILES CREATION_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema FILES DELETED_ROWS 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema FILES ENGINE 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema FILES EXTENT_SIZE 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema FILES EXTRA 38 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
|
||||
NULL information_schema FILES FILE_ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema FILES FILE_NAME 2 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema FILES FILE_TYPE 3 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
|
||||
NULL information_schema FILES FREE_EXTENTS 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema FILES FULLTEXT_KEYS 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema FILES LAST_ACCESS_TIME 22 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema FILES LAST_UPDATE_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema FILES LOGFILE_GROUP_NUMBER 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema FILES RECOVER_TIME 23 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema FILES ROW_FORMAT 26 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
|
||||
NULL information_schema FILES STATUS 37 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
|
||||
NULL information_schema FILES TABLESPACE_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema FILES TABLE_CATALOG 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema FILES TABLE_NAME 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema FILES TABLE_SCHEMA 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema FILES TOTAL_EXTENTS 15 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema FILES TRANSACTION_COUNTER 24 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema FILES UPDATE_COUNT 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema FILES UPDATE_TIME 34 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema FILES VERSION 25 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema GLOBAL_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
|
||||
NULL information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
|
||||
NULL information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema KEY_COLUMN_USAGE ORDINAL_POSITION 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10) select
|
||||
NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(10) select
|
||||
NULL information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema PARTITIONS CREATE_TIME 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema PARTITIONS DATA_FREE 18 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema PARTITIONS DATA_LENGTH 15 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema PARTITIONS INDEX_LENGTH 17 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema PARTITIONS NODEGROUP 24 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
|
||||
NULL information_schema PARTITIONS PARTITION_COMMENT 23 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||
NULL information_schema PARTITIONS PARTITION_DESCRIPTION 12 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema PARTITIONS PARTITION_EXPRESSION 10 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
|
||||
NULL information_schema PARTITIONS PARTITION_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema PARTITIONS SUBPARTITION_EXPRESSION 11 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
|
||||
NULL information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PARTITIONS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema PARTITIONS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PARTITIONS TABLE_ROWS 13 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema PARTITIONS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PARTITIONS UPDATE_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
|
||||
NULL information_schema PLUGINS PLUGIN_LICENSE 10 NULL YES varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||
NULL information_schema PLUGINS PLUGIN_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PLUGINS PLUGIN_STATUS 3 NO varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
|
||||
NULL information_schema PLUGINS PLUGIN_TYPE 4 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||
NULL information_schema PLUGINS PLUGIN_TYPE_VERSION 5 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
|
||||
NULL information_schema PLUGINS PLUGIN_VERSION 2 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
|
||||
NULL information_schema PROCESSLIST COMMAND 5 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
|
||||
NULL information_schema PROCESSLIST DB 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PROCESSLIST HOST 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PROCESSLIST ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema PROCESSLIST INFO 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PROCESSLIST TIME 6 0 NO int NULL NULL 10 0 NULL NULL int(7) select
|
||||
NULL information_schema PROCESSLIST USER 2 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE 9 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES CHARACTER_SET_CLIENT 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema ROUTINES COLLATION_CONNECTION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema ROUTINES CREATED 16 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema ROUTINES DATABASE_COLLATION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema ROUTINES DEFINER 20 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
|
||||
NULL information_schema ROUTINES DTD_IDENTIFIER 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES EXTERNAL_LANGUAGE 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES EXTERNAL_NAME 9 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES IS_DETERMINISTIC 12 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema ROUTINES LAST_ALTERED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema ROUTINES PARAMETER_STYLE 11 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
|
||||
NULL information_schema ROUTINES ROUTINE_BODY 7 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
|
||||
NULL information_schema ROUTINES ROUTINE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema ROUTINES ROUTINE_COMMENT 19 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES ROUTINE_DEFINITION 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema ROUTINES ROUTINE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES ROUTINE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES ROUTINE_TYPE 5 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select
|
||||
NULL information_schema ROUTINES SECURITY_TYPE 15 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) select
|
||||
NULL information_schema ROUTINES SPECIFIC_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES SQL_DATA_ACCESS 13 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
|
||||
NULL information_schema ROUTINES SQL_PATH 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SCHEMATA CATALOG_NAME 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema SCHEMATA SCHEMA_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema SCHEMA_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
|
||||
NULL information_schema SCHEMA_PRIVILEGES IS_GRANTABLE 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SESSION_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
|
||||
NULL information_schema SESSION_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
|
||||
NULL information_schema STATISTICS CARDINALITY 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) select
|
||||
NULL information_schema STATISTICS COLLATION 9 NULL YES varchar 1 3 NULL NULL utf8 utf8_general_ci varchar(1) select
|
||||
NULL information_schema STATISTICS COLUMN_NAME 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema STATISTICS COMMENT 15 NULL YES varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
|
||||
NULL information_schema STATISTICS INDEX_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema STATISTICS INDEX_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema STATISTICS INDEX_TYPE 14 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
|
||||
NULL information_schema STATISTICS NON_UNIQUE 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(1) select
|
||||
NULL information_schema STATISTICS NULLABLE 13 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema STATISTICS PACKED 12 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
|
||||
NULL information_schema STATISTICS SEQ_IN_INDEX 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(2) select
|
||||
NULL information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(3) select
|
||||
NULL information_schema STATISTICS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema STATISTICS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema STATISTICS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema TABLES CHECK_TIME 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema TABLES CREATE_OPTIONS 20 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
|
||||
NULL information_schema TABLES CREATE_TIME 15 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema TABLES ENGINE 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
|
||||
NULL information_schema TABLES TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema TABLES TABLE_COMMENT 21 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||
NULL information_schema TABLES TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema TABLES TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLES TABLE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLE_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
|
||||
NULL information_schema TABLE_PRIVILEGES IS_GRANTABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema TABLE_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema TRIGGERS ACTION_ORDER 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
|
||||
NULL information_schema TRIGGERS ACTION_ORIENTATION 11 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select
|
||||
NULL information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW 15 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TRIGGERS ACTION_STATEMENT 10 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema TRIGGERS ACTION_TIMING 12 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6) select
|
||||
NULL information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema TRIGGERS COLLATION_CONNECTION 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema TRIGGERS DATABASE_COLLATION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema TRIGGERS DEFINER 19 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
|
||||
NULL information_schema TRIGGERS EVENT_MANIPULATION 4 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6) select
|
||||
NULL information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TRIGGERS SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
|
||||
NULL information_schema TRIGGERS TRIGGER_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema TRIGGERS TRIGGER_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TRIGGERS TRIGGER_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema USER_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
|
||||
NULL information_schema USER_PRIVILEGES IS_GRANTABLE 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema USER_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema VIEWS CHARACTER_SET_CLIENT 9 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema VIEWS CHECK_OPTION 5 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
|
||||
NULL information_schema VIEWS COLLATION_CONNECTION 10 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema VIEWS DEFINER 7 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select
|
||||
NULL information_schema VIEWS IS_UPDATABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema VIEWS SECURITY_TYPE 8 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) select
|
||||
NULL information_schema VIEWS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema VIEWS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema VIEWS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema VIEWS VIEW_DEFINITION 4 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
##########################################################################
|
||||
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
|
||||
##########################################################################
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name <> 'profiling'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
1.0000 longtext utf8 utf8_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name <> 'profiling'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
3.0000 varchar utf8 utf8_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name <> 'profiling'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
NULL bigint NULL NULL
|
||||
NULL datetime NULL NULL
|
||||
NULL int NULL NULL
|
||||
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
|
||||
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
|
||||
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
CHARACTER_MAXIMUM_LENGTH,
|
||||
CHARACTER_OCTET_LENGTH,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME,
|
||||
COLUMN_TYPE
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name <> 'profiling'
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
|
||||
3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8 utf8_general_ci varchar(60)
|
||||
NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(3)
|
||||
3.0000 information_schema COLLATIONS COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema COLLATIONS ID bigint NULL NULL NULL NULL bigint(11)
|
||||
3.0000 information_schema COLLATIONS IS_DEFAULT varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema COLLATIONS IS_COMPILED varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema COLLATIONS SORTLEN bigint NULL NULL NULL NULL bigint(3)
|
||||
3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLUMNS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema COLUMNS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMNS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMNS COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMNS ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
1.0000 information_schema COLUMNS COLUMN_DEFAULT longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema COLUMNS IS_NULLABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema COLUMNS DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS NUMERIC_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS NUMERIC_SCALE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema COLUMNS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLUMNS COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
1.0000 information_schema COLUMNS COLUMN_TYPE longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema COLUMNS COLUMN_KEY varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema COLUMNS EXTRA varchar 27 81 utf8 utf8_general_ci varchar(27)
|
||||
3.0000 information_schema COLUMNS PRIVILEGES varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema COLUMNS COLUMN_COMMENT varchar 255 765 utf8 utf8_general_ci varchar(255)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema ENGINES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ENGINES SUPPORT varchar 8 24 utf8 utf8_general_ci varchar(8)
|
||||
3.0000 information_schema ENGINES COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema ENGINES TRANSACTIONS varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema ENGINES XA varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema ENGINES SAVEPOINTS varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema EVENTS EVENT_CATALOG varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema EVENTS EVENT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema EVENTS EVENT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema EVENTS DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
|
||||
3.0000 information_schema EVENTS TIME_ZONE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema EVENTS EVENT_BODY varchar 8 24 utf8 utf8_general_ci varchar(8)
|
||||
1.0000 information_schema EVENTS EVENT_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema EVENTS EVENT_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9)
|
||||
NULL information_schema EVENTS EXECUTE_AT datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema EVENTS INTERVAL_VALUE varchar 256 768 utf8 utf8_general_ci varchar(256)
|
||||
3.0000 information_schema EVENTS INTERVAL_FIELD varchar 18 54 utf8 utf8_general_ci varchar(18)
|
||||
3.0000 information_schema EVENTS SQL_MODE varchar 8192 24576 utf8 utf8_general_ci varchar(8192)
|
||||
NULL information_schema EVENTS STARTS datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS ENDS datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema EVENTS STATUS varchar 18 54 utf8 utf8_general_ci varchar(18)
|
||||
3.0000 information_schema EVENTS ON_COMPLETION varchar 12 36 utf8 utf8_general_ci varchar(12)
|
||||
NULL information_schema EVENTS CREATED datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS LAST_ALTERED datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS LAST_EXECUTED datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema EVENTS EVENT_COMMENT varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema EVENTS ORIGINATOR bigint NULL NULL NULL NULL bigint(10)
|
||||
3.0000 information_schema EVENTS CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema EVENTS COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema EVENTS DATABASE_COLLATION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema FILES FILE_ID bigint NULL NULL NULL NULL bigint(4)
|
||||
3.0000 information_schema FILES FILE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES FILE_TYPE varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema FILES TABLESPACE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES TABLE_CATALOG varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES LOGFILE_GROUP_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES LOGFILE_GROUP_NUMBER bigint NULL NULL NULL NULL bigint(4)
|
||||
3.0000 information_schema FILES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES FULLTEXT_KEYS varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES DELETED_ROWS bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES UPDATE_COUNT bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES FREE_EXTENTS bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES TOTAL_EXTENTS bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES EXTENT_SIZE bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES INITIAL_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES MAXIMUM_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES AUTOEXTEND_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES CREATION_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES LAST_UPDATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES LAST_ACCESS_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES RECOVER_TIME bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES TRANSACTION_COUNTER bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES VERSION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema FILES ROW_FORMAT varchar 10 30 utf8 utf8_general_ci varchar(10)
|
||||
NULL information_schema FILES TABLE_ROWS bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES AVG_ROW_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES MAX_DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES INDEX_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES DATA_FREE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES CREATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES UPDATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES CHECK_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema FILES STATUS varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema FILES EXTRA varchar 255 765 utf8 utf8_general_ci varchar(255)
|
||||
3.0000 information_schema GLOBAL_STATUS VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema GLOBAL_STATUS VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema GLOBAL_VARIABLES VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema GLOBAL_VARIABLES VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema KEY_COLUMN_USAGE ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(10)
|
||||
NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NULL NULL NULL NULL bigint(10)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PARTITIONS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema PARTITIONS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PARTITIONS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PARTITIONS PARTITION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PARTITIONS SUBPARTITION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema PARTITIONS PARTITION_METHOD varchar 12 36 utf8 utf8_general_ci varchar(12)
|
||||
3.0000 information_schema PARTITIONS SUBPARTITION_METHOD varchar 12 36 utf8 utf8_general_ci varchar(12)
|
||||
1.0000 information_schema PARTITIONS PARTITION_EXPRESSION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
1.0000 information_schema PARTITIONS SUBPARTITION_EXPRESSION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
1.0000 information_schema PARTITIONS PARTITION_DESCRIPTION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
NULL information_schema PARTITIONS TABLE_ROWS bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS AVG_ROW_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS MAX_DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS INDEX_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS DATA_FREE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS CREATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema PARTITIONS UPDATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema PARTITIONS CHECK_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema PARTITIONS CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema PARTITIONS PARTITION_COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema PARTITIONS NODEGROUP varchar 12 36 utf8 utf8_general_ci varchar(12)
|
||||
3.0000 information_schema PARTITIONS TABLESPACE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PLUGINS PLUGIN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PLUGINS PLUGIN_VERSION varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema PLUGINS PLUGIN_STATUS varchar 10 30 utf8 utf8_general_ci varchar(10)
|
||||
3.0000 information_schema PLUGINS PLUGIN_TYPE varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema PLUGINS PLUGIN_TYPE_VERSION varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema PLUGINS PLUGIN_LIBRARY varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PLUGINS PLUGIN_LIBRARY_VERSION varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema PLUGINS PLUGIN_AUTHOR varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
1.0000 information_schema PLUGINS PLUGIN_DESCRIPTION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema PLUGINS PLUGIN_LICENSE varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
NULL information_schema PROCESSLIST ID bigint NULL NULL NULL NULL bigint(4)
|
||||
3.0000 information_schema PROCESSLIST USER varchar 16 48 utf8 utf8_general_ci varchar(16)
|
||||
3.0000 information_schema PROCESSLIST HOST varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PROCESSLIST DB varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PROCESSLIST COMMAND varchar 16 48 utf8 utf8_general_ci varchar(16)
|
||||
NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7)
|
||||
3.0000 information_schema PROCESSLIST STATE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
1.0000 information_schema PROCESSLIST INFO longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES SPECIFIC_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES ROUTINE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema ROUTINES ROUTINE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES ROUTINE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9)
|
||||
3.0000 information_schema ROUTINES DTD_IDENTIFIER varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES ROUTINE_BODY varchar 8 24 utf8 utf8_general_ci varchar(8)
|
||||
1.0000 information_schema ROUTINES ROUTINE_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema ROUTINES EXTERNAL_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES EXTERNAL_LANGUAGE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES PARAMETER_STYLE varchar 8 24 utf8 utf8_general_ci varchar(8)
|
||||
3.0000 information_schema ROUTINES IS_DETERMINISTIC varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema ROUTINES SQL_DATA_ACCESS varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES SQL_PATH varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES SECURITY_TYPE varchar 7 21 utf8 utf8_general_ci varchar(7)
|
||||
NULL information_schema ROUTINES CREATED datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema ROUTINES SQL_MODE varchar 8192 24576 utf8 utf8_general_ci varchar(8192)
|
||||
3.0000 information_schema ROUTINES ROUTINE_COMMENT varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
|
||||
3.0000 information_schema ROUTINES CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema ROUTINES DATABASE_COLLATION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema SCHEMATA CATALOG_NAME varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema SCHEMATA SCHEMA_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
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 SQL_PATH varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema SCHEMA_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
|
||||
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 PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SCHEMA_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema SESSION_STATUS VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SESSION_STATUS VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema SESSION_VARIABLES VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SESSION_VARIABLES VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema STATISTICS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema STATISTICS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema STATISTICS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema STATISTICS NON_UNIQUE bigint NULL NULL NULL NULL bigint(1)
|
||||
3.0000 information_schema STATISTICS INDEX_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema STATISTICS INDEX_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema STATISTICS SEQ_IN_INDEX bigint NULL NULL NULL NULL bigint(2)
|
||||
3.0000 information_schema STATISTICS COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema STATISTICS COLLATION varchar 1 3 utf8 utf8_general_ci varchar(1)
|
||||
NULL information_schema STATISTICS CARDINALITY bigint NULL NULL NULL NULL bigint(21)
|
||||
NULL information_schema STATISTICS SUB_PART bigint NULL NULL NULL NULL bigint(3)
|
||||
3.0000 information_schema STATISTICS PACKED varchar 10 30 utf8 utf8_general_ci varchar(10)
|
||||
3.0000 information_schema STATISTICS NULLABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema STATISTICS INDEX_TYPE varchar 16 48 utf8 utf8_general_ci varchar(16)
|
||||
3.0000 information_schema STATISTICS COMMENT varchar 16 48 utf8 utf8_general_ci varchar(16)
|
||||
3.0000 information_schema TABLES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema TABLES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLES TABLE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLES VERSION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema TABLES ROW_FORMAT varchar 10 30 utf8 utf8_general_ci varchar(10)
|
||||
NULL information_schema TABLES TABLE_ROWS bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES AVG_ROW_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES MAX_DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES INDEX_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES DATA_FREE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES AUTO_INCREMENT bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES CREATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema TABLES UPDATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema TABLES TABLE_COLLATION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema TABLES CREATE_OPTIONS varchar 255 765 utf8 utf8_general_ci varchar(255)
|
||||
3.0000 information_schema TABLES TABLE_COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
|
||||
3.0000 information_schema TABLE_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema TABLE_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_PRIVILEGES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema TRIGGERS TRIGGER_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema TRIGGERS TRIGGER_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TRIGGERS TRIGGER_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TRIGGERS EVENT_MANIPULATION varchar 6 18 utf8 utf8_general_ci varchar(6)
|
||||
3.0000 information_schema TRIGGERS EVENT_OBJECT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema TRIGGERS EVENT_OBJECT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TRIGGERS EVENT_OBJECT_TABLE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TRIGGERS ACTION_ORDER bigint NULL NULL NULL NULL bigint(4)
|
||||
1.0000 information_schema TRIGGERS ACTION_CONDITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
1.0000 information_schema TRIGGERS ACTION_STATEMENT longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema TRIGGERS ACTION_ORIENTATION varchar 9 27 utf8 utf8_general_ci varchar(9)
|
||||
3.0000 information_schema TRIGGERS ACTION_TIMING varchar 6 18 utf8 utf8_general_ci varchar(6)
|
||||
3.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema TRIGGERS CREATED datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema TRIGGERS SQL_MODE varchar 8192 24576 utf8 utf8_general_ci varchar(8192)
|
||||
3.0000 information_schema TRIGGERS DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
|
||||
3.0000 information_schema TRIGGERS CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema TRIGGERS COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema TRIGGERS DATABASE_COLLATION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema USER_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
|
||||
3.0000 information_schema USER_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema USER_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema VIEWS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema VIEWS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema VIEWS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
1.0000 information_schema VIEWS VIEW_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema VIEWS CHECK_OPTION varchar 8 24 utf8 utf8_general_ci varchar(8)
|
||||
3.0000 information_schema VIEWS IS_UPDATABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema VIEWS DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
|
||||
3.0000 information_schema VIEWS SECURITY_TYPE varchar 7 21 utf8 utf8_general_ci varchar(7)
|
||||
3.0000 information_schema VIEWS CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema VIEWS COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
@@ -0,0 +1,657 @@
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name <> 'profiling'
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema CHARACTER_SETS DESCRIPTION 3 NO varchar 60 180 NULL NULL utf8 utf8_general_ci varchar(60)
|
||||
NULL information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3)
|
||||
NULL information_schema COLLATIONS CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema COLLATIONS COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema COLLATIONS ID 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(11)
|
||||
NULL information_schema COLLATIONS IS_COMPILED 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema COLLATIONS IS_DEFAULT 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema COLLATIONS SORTLEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3)
|
||||
NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS CHARACTER_SET_NAME 13 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema COLUMNS COLLATION_NAME 14 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema COLUMNS COLUMN_COMMENT 19 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
|
||||
NULL information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema COLUMNS COLUMN_KEY 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema COLUMNS COLUMN_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMNS COLUMN_TYPE 15 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema COLUMNS DATA_TYPE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMNS EXTRA 17 NO varchar 27 81 NULL NULL utf8 utf8_general_ci varchar(27)
|
||||
NULL information_schema COLUMNS IS_NULLABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS ORDINAL_POSITION 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS PRIVILEGES 18 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
|
||||
NULL information_schema COLUMNS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema COLUMNS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMNS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMN_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
|
||||
NULL information_schema COLUMN_PRIVILEGES IS_GRANTABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ENGINES COMMENT 3 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
|
||||
NULL information_schema ENGINES ENGINE 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ENGINES SAVEPOINTS 6 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema ENGINES SUPPORT 2 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
|
||||
NULL information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema EVENTS CHARACTER_SET_CLIENT 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema EVENTS COLLATION_CONNECTION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema EVENTS CREATED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS DATABASE_COLLATION 24 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema EVENTS DEFINER 4 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
|
||||
NULL information_schema EVENTS ENDS 14 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS EVENT_BODY 6 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
|
||||
NULL information_schema EVENTS EVENT_CATALOG 1 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema EVENTS EVENT_COMMENT 20 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema EVENTS EVENT_DEFINITION 7 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema EVENTS EVENT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema EVENTS EVENT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema EVENTS EVENT_TYPE 8 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
|
||||
NULL information_schema EVENTS EXECUTE_AT 9 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS INTERVAL_FIELD 11 NULL YES varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18)
|
||||
NULL information_schema EVENTS INTERVAL_VALUE 10 NULL YES varchar 256 768 NULL NULL utf8 utf8_general_ci varchar(256)
|
||||
NULL information_schema EVENTS LAST_ALTERED 18 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS LAST_EXECUTED 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS ON_COMPLETION 16 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
|
||||
NULL information_schema EVENTS ORIGINATOR 21 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10)
|
||||
NULL information_schema EVENTS SQL_MODE 12 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192)
|
||||
NULL information_schema EVENTS STARTS 13 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS STATUS 15 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18)
|
||||
NULL information_schema EVENTS TIME_ZONE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES CHECK_TIME 35 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES CREATE_TIME 33 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES CREATION_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES DELETED_ROWS 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema FILES ENGINE 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES EXTENT_SIZE 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema FILES EXTRA 38 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
|
||||
NULL information_schema FILES FILE_ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema FILES FILE_NAME 2 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES FILE_TYPE 3 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
|
||||
NULL information_schema FILES FREE_EXTENTS 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema FILES FULLTEXT_KEYS 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES LAST_ACCESS_TIME 22 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES LAST_UPDATE_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES LOGFILE_GROUP_NUMBER 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES RECOVER_TIME 23 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema FILES ROW_FORMAT 26 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
|
||||
NULL information_schema FILES STATUS 37 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
|
||||
NULL information_schema FILES TABLESPACE_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES TABLE_CATALOG 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES TABLE_NAME 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES TABLE_SCHEMA 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES TOTAL_EXTENTS 15 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema FILES TRANSACTION_COUNTER 24 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema FILES UPDATE_COUNT 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema FILES UPDATE_TIME 34 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES VERSION 25 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema GLOBAL_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
|
||||
NULL information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
|
||||
NULL information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema KEY_COLUMN_USAGE ORDINAL_POSITION 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10)
|
||||
NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(10)
|
||||
NULL information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema PARTITIONS CREATE_TIME 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema PARTITIONS DATA_FREE 18 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS DATA_LENGTH 15 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS INDEX_LENGTH 17 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS NODEGROUP 24 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
|
||||
NULL information_schema PARTITIONS PARTITION_COMMENT 23 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
|
||||
NULL information_schema PARTITIONS PARTITION_DESCRIPTION 12 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema PARTITIONS PARTITION_EXPRESSION 10 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
|
||||
NULL information_schema PARTITIONS PARTITION_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS SUBPARTITION_EXPRESSION 11 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12)
|
||||
NULL information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PARTITIONS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema PARTITIONS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PARTITIONS TABLE_ROWS 13 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PARTITIONS UPDATE_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
|
||||
NULL information_schema PLUGINS PLUGIN_LICENSE 10 NULL YES varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
|
||||
NULL information_schema PLUGINS PLUGIN_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PLUGINS PLUGIN_STATUS 3 NO varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
|
||||
NULL information_schema PLUGINS PLUGIN_TYPE 4 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
|
||||
NULL information_schema PLUGINS PLUGIN_TYPE_VERSION 5 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
|
||||
NULL information_schema PLUGINS PLUGIN_VERSION 2 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
|
||||
NULL information_schema PROCESSLIST COMMAND 5 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
|
||||
NULL information_schema PROCESSLIST DB 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PROCESSLIST HOST 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PROCESSLIST ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema PROCESSLIST INFO 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PROCESSLIST TIME 6 0 NO int NULL NULL 10 0 NULL NULL int(7)
|
||||
NULL information_schema PROCESSLIST USER 2 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE 9 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ROUTINES CHARACTER_SET_CLIENT 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema ROUTINES COLLATION_CONNECTION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema ROUTINES CREATED 16 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema ROUTINES DATABASE_COLLATION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema ROUTINES DEFINER 20 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
|
||||
NULL information_schema ROUTINES DTD_IDENTIFIER 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ROUTINES EXTERNAL_LANGUAGE 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ROUTINES EXTERNAL_NAME 9 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ROUTINES IS_DETERMINISTIC 12 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema ROUTINES LAST_ALTERED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema ROUTINES PARAMETER_STYLE 11 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
|
||||
NULL information_schema ROUTINES ROUTINE_BODY 7 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
|
||||
NULL information_schema ROUTINES ROUTINE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema ROUTINES ROUTINE_COMMENT 19 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ROUTINES ROUTINE_DEFINITION 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema ROUTINES ROUTINE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ROUTINES ROUTINE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ROUTINES ROUTINE_TYPE 5 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
|
||||
NULL information_schema ROUTINES SECURITY_TYPE 15 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7)
|
||||
NULL information_schema ROUTINES SPECIFIC_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ROUTINES SQL_DATA_ACCESS 13 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema ROUTINES SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192)
|
||||
NULL information_schema ROUTINES SQL_PATH 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema SCHEMATA CATALOG_NAME 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema SCHEMATA SCHEMA_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema SCHEMA_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
|
||||
NULL information_schema SCHEMA_PRIVILEGES IS_GRANTABLE 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema SESSION_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
|
||||
NULL information_schema SESSION_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024)
|
||||
NULL information_schema STATISTICS CARDINALITY 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
|
||||
NULL information_schema STATISTICS COLLATION 9 NULL YES varchar 1 3 NULL NULL utf8 utf8_general_ci varchar(1)
|
||||
NULL information_schema STATISTICS COLUMN_NAME 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema STATISTICS COMMENT 15 NULL YES varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
|
||||
NULL information_schema STATISTICS INDEX_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema STATISTICS INDEX_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema STATISTICS INDEX_TYPE 14 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
|
||||
NULL information_schema STATISTICS NON_UNIQUE 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(1)
|
||||
NULL information_schema STATISTICS NULLABLE 13 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema STATISTICS PACKED 12 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
|
||||
NULL information_schema STATISTICS SEQ_IN_INDEX 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(2)
|
||||
NULL information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(3)
|
||||
NULL information_schema STATISTICS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema STATISTICS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema STATISTICS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES CHECK_TIME 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema TABLES CREATE_OPTIONS 20 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
|
||||
NULL information_schema TABLES CREATE_TIME 15 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES ENGINE 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
|
||||
NULL information_schema TABLES TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema TABLES TABLE_COMMENT 21 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
|
||||
NULL information_schema TABLES TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLES TABLE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLE_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
|
||||
NULL information_schema TABLE_PRIVILEGES IS_GRANTABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema TABLE_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema TRIGGERS ACTION_ORDER 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
|
||||
NULL information_schema TRIGGERS ACTION_ORIENTATION 11 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
|
||||
NULL information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW 15 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TRIGGERS ACTION_STATEMENT 10 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
NULL information_schema TRIGGERS ACTION_TIMING 12 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6)
|
||||
NULL information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema TRIGGERS COLLATION_CONNECTION 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL information_schema TRIGGERS DATABASE_COLLATION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema TRIGGERS DEFINER 19 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
|
||||
NULL information_schema TRIGGERS EVENT_MANIPULATION 4 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6)
|
||||
NULL information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TRIGGERS SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192)
|
||||
NULL information_schema TRIGGERS TRIGGER_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema TRIGGERS TRIGGER_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TRIGGERS TRIGGER_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema USER_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
|
||||
NULL information_schema USER_PRIVILEGES IS_GRANTABLE 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema USER_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema VIEWS CHARACTER_SET_CLIENT 9 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema VIEWS CHECK_OPTION 5 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
|
||||
NULL information_schema VIEWS COLLATION_CONNECTION 10 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema VIEWS DEFINER 7 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
|
||||
NULL information_schema VIEWS IS_UPDATABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema VIEWS SECURITY_TYPE 8 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7)
|
||||
NULL information_schema VIEWS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL information_schema VIEWS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema VIEWS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema VIEWS VIEW_DEFINITION 4 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
|
||||
##########################################################################
|
||||
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
|
||||
##########################################################################
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name <> 'profiling'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
1.0000 longtext utf8 utf8_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name <> 'profiling'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
3.0000 varchar utf8 utf8_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name <> 'profiling'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
NULL bigint NULL NULL
|
||||
NULL datetime NULL NULL
|
||||
NULL int NULL NULL
|
||||
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
|
||||
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
|
||||
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
CHARACTER_MAXIMUM_LENGTH,
|
||||
CHARACTER_OCTET_LENGTH,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME,
|
||||
COLUMN_TYPE
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name <> 'profiling'
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
|
||||
3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8 utf8_general_ci varchar(60)
|
||||
NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(3)
|
||||
3.0000 information_schema COLLATIONS COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema COLLATIONS ID bigint NULL NULL NULL NULL bigint(11)
|
||||
3.0000 information_schema COLLATIONS IS_DEFAULT varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema COLLATIONS IS_COMPILED varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema COLLATIONS SORTLEN bigint NULL NULL NULL NULL bigint(3)
|
||||
3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLUMNS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema COLUMNS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMNS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMNS COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMNS ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
1.0000 information_schema COLUMNS COLUMN_DEFAULT longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema COLUMNS IS_NULLABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema COLUMNS DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS NUMERIC_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS NUMERIC_SCALE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema COLUMNS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLUMNS COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
1.0000 information_schema COLUMNS COLUMN_TYPE longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema COLUMNS COLUMN_KEY varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema COLUMNS EXTRA varchar 27 81 utf8 utf8_general_ci varchar(27)
|
||||
3.0000 information_schema COLUMNS PRIVILEGES varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema COLUMNS COLUMN_COMMENT varchar 255 765 utf8 utf8_general_ci varchar(255)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMN_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema ENGINES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ENGINES SUPPORT varchar 8 24 utf8 utf8_general_ci varchar(8)
|
||||
3.0000 information_schema ENGINES COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema ENGINES TRANSACTIONS varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema ENGINES XA varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema ENGINES SAVEPOINTS varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema EVENTS EVENT_CATALOG varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema EVENTS EVENT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema EVENTS EVENT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema EVENTS DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
|
||||
3.0000 information_schema EVENTS TIME_ZONE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema EVENTS EVENT_BODY varchar 8 24 utf8 utf8_general_ci varchar(8)
|
||||
1.0000 information_schema EVENTS EVENT_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema EVENTS EVENT_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9)
|
||||
NULL information_schema EVENTS EXECUTE_AT datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema EVENTS INTERVAL_VALUE varchar 256 768 utf8 utf8_general_ci varchar(256)
|
||||
3.0000 information_schema EVENTS INTERVAL_FIELD varchar 18 54 utf8 utf8_general_ci varchar(18)
|
||||
3.0000 information_schema EVENTS SQL_MODE varchar 8192 24576 utf8 utf8_general_ci varchar(8192)
|
||||
NULL information_schema EVENTS STARTS datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS ENDS datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema EVENTS STATUS varchar 18 54 utf8 utf8_general_ci varchar(18)
|
||||
3.0000 information_schema EVENTS ON_COMPLETION varchar 12 36 utf8 utf8_general_ci varchar(12)
|
||||
NULL information_schema EVENTS CREATED datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS LAST_ALTERED datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema EVENTS LAST_EXECUTED datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema EVENTS EVENT_COMMENT varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema EVENTS ORIGINATOR bigint NULL NULL NULL NULL bigint(10)
|
||||
3.0000 information_schema EVENTS CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema EVENTS COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema EVENTS DATABASE_COLLATION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema FILES FILE_ID bigint NULL NULL NULL NULL bigint(4)
|
||||
3.0000 information_schema FILES FILE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES FILE_TYPE varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema FILES TABLESPACE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES TABLE_CATALOG varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES LOGFILE_GROUP_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES LOGFILE_GROUP_NUMBER bigint NULL NULL NULL NULL bigint(4)
|
||||
3.0000 information_schema FILES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema FILES FULLTEXT_KEYS varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema FILES DELETED_ROWS bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES UPDATE_COUNT bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES FREE_EXTENTS bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES TOTAL_EXTENTS bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES EXTENT_SIZE bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES INITIAL_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES MAXIMUM_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES AUTOEXTEND_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES CREATION_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES LAST_UPDATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES LAST_ACCESS_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES RECOVER_TIME bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES TRANSACTION_COUNTER bigint NULL NULL NULL NULL bigint(4)
|
||||
NULL information_schema FILES VERSION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema FILES ROW_FORMAT varchar 10 30 utf8 utf8_general_ci varchar(10)
|
||||
NULL information_schema FILES TABLE_ROWS bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES AVG_ROW_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES MAX_DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES INDEX_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES DATA_FREE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema FILES CREATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES UPDATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES CHECK_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema FILES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema FILES STATUS varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema FILES EXTRA varchar 255 765 utf8 utf8_general_ci varchar(255)
|
||||
3.0000 information_schema GLOBAL_STATUS VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema GLOBAL_STATUS VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema GLOBAL_VARIABLES VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema GLOBAL_VARIABLES VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema KEY_COLUMN_USAGE ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(10)
|
||||
NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NULL NULL NULL NULL bigint(10)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PARTITIONS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema PARTITIONS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PARTITIONS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PARTITIONS PARTITION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PARTITIONS SUBPARTITION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema PARTITIONS PARTITION_METHOD varchar 12 36 utf8 utf8_general_ci varchar(12)
|
||||
3.0000 information_schema PARTITIONS SUBPARTITION_METHOD varchar 12 36 utf8 utf8_general_ci varchar(12)
|
||||
1.0000 information_schema PARTITIONS PARTITION_EXPRESSION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
1.0000 information_schema PARTITIONS SUBPARTITION_EXPRESSION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
1.0000 information_schema PARTITIONS PARTITION_DESCRIPTION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
NULL information_schema PARTITIONS TABLE_ROWS bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS AVG_ROW_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS MAX_DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS INDEX_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS DATA_FREE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema PARTITIONS CREATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema PARTITIONS UPDATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema PARTITIONS CHECK_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema PARTITIONS CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema PARTITIONS PARTITION_COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema PARTITIONS NODEGROUP varchar 12 36 utf8 utf8_general_ci varchar(12)
|
||||
3.0000 information_schema PARTITIONS TABLESPACE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PLUGINS PLUGIN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PLUGINS PLUGIN_VERSION varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema PLUGINS PLUGIN_STATUS varchar 10 30 utf8 utf8_general_ci varchar(10)
|
||||
3.0000 information_schema PLUGINS PLUGIN_TYPE varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema PLUGINS PLUGIN_TYPE_VERSION varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema PLUGINS PLUGIN_LIBRARY varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PLUGINS PLUGIN_LIBRARY_VERSION varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema PLUGINS PLUGIN_AUTHOR varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
1.0000 information_schema PLUGINS PLUGIN_DESCRIPTION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema PLUGINS PLUGIN_LICENSE varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
NULL information_schema PROCESSLIST ID bigint NULL NULL NULL NULL bigint(4)
|
||||
3.0000 information_schema PROCESSLIST USER varchar 16 48 utf8 utf8_general_ci varchar(16)
|
||||
3.0000 information_schema PROCESSLIST HOST varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PROCESSLIST DB varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema PROCESSLIST COMMAND varchar 16 48 utf8 utf8_general_ci varchar(16)
|
||||
NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7)
|
||||
3.0000 information_schema PROCESSLIST STATE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
1.0000 information_schema PROCESSLIST INFO longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES SPECIFIC_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES ROUTINE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema ROUTINES ROUTINE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES ROUTINE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9)
|
||||
3.0000 information_schema ROUTINES DTD_IDENTIFIER varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES ROUTINE_BODY varchar 8 24 utf8 utf8_general_ci varchar(8)
|
||||
1.0000 information_schema ROUTINES ROUTINE_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema ROUTINES EXTERNAL_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES EXTERNAL_LANGUAGE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES PARAMETER_STYLE varchar 8 24 utf8 utf8_general_ci varchar(8)
|
||||
3.0000 information_schema ROUTINES IS_DETERMINISTIC varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema ROUTINES SQL_DATA_ACCESS varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES SQL_PATH varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES SECURITY_TYPE varchar 7 21 utf8 utf8_general_ci varchar(7)
|
||||
NULL information_schema ROUTINES CREATED datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema ROUTINES SQL_MODE varchar 8192 24576 utf8 utf8_general_ci varchar(8192)
|
||||
3.0000 information_schema ROUTINES ROUTINE_COMMENT varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
|
||||
3.0000 information_schema ROUTINES CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema ROUTINES DATABASE_COLLATION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema SCHEMATA CATALOG_NAME varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema SCHEMATA SCHEMA_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
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 SQL_PATH varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema SCHEMA_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
|
||||
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 PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SCHEMA_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema SESSION_STATUS VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SESSION_STATUS VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema SESSION_VARIABLES VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SESSION_VARIABLES VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema STATISTICS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema STATISTICS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema STATISTICS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema STATISTICS NON_UNIQUE bigint NULL NULL NULL NULL bigint(1)
|
||||
3.0000 information_schema STATISTICS INDEX_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema STATISTICS INDEX_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema STATISTICS SEQ_IN_INDEX bigint NULL NULL NULL NULL bigint(2)
|
||||
3.0000 information_schema STATISTICS COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema STATISTICS COLLATION varchar 1 3 utf8 utf8_general_ci varchar(1)
|
||||
NULL information_schema STATISTICS CARDINALITY bigint NULL NULL NULL NULL bigint(21)
|
||||
NULL information_schema STATISTICS SUB_PART bigint NULL NULL NULL NULL bigint(3)
|
||||
3.0000 information_schema STATISTICS PACKED varchar 10 30 utf8 utf8_general_ci varchar(10)
|
||||
3.0000 information_schema STATISTICS NULLABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema STATISTICS INDEX_TYPE varchar 16 48 utf8 utf8_general_ci varchar(16)
|
||||
3.0000 information_schema STATISTICS COMMENT varchar 16 48 utf8 utf8_general_ci varchar(16)
|
||||
3.0000 information_schema TABLES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema TABLES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLES TABLE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TABLES VERSION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema TABLES ROW_FORMAT varchar 10 30 utf8 utf8_general_ci varchar(10)
|
||||
NULL information_schema TABLES TABLE_ROWS bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES AVG_ROW_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES MAX_DATA_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES INDEX_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES DATA_FREE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES AUTO_INCREMENT bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema TABLES CREATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema TABLES UPDATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema TABLES TABLE_COLLATION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema TABLES CREATE_OPTIONS varchar 255 765 utf8 utf8_general_ci varchar(255)
|
||||
3.0000 information_schema TABLES TABLE_COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
|
||||
3.0000 information_schema TABLE_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema TABLE_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_PRIVILEGES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLE_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema TRIGGERS TRIGGER_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema TRIGGERS TRIGGER_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TRIGGERS TRIGGER_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TRIGGERS EVENT_MANIPULATION varchar 6 18 utf8 utf8_general_ci varchar(6)
|
||||
3.0000 information_schema TRIGGERS EVENT_OBJECT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema TRIGGERS EVENT_OBJECT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TRIGGERS EVENT_OBJECT_TABLE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
NULL information_schema TRIGGERS ACTION_ORDER bigint NULL NULL NULL NULL bigint(4)
|
||||
1.0000 information_schema TRIGGERS ACTION_CONDITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
1.0000 information_schema TRIGGERS ACTION_STATEMENT longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema TRIGGERS ACTION_ORIENTATION varchar 9 27 utf8 utf8_general_ci varchar(9)
|
||||
3.0000 information_schema TRIGGERS ACTION_TIMING varchar 6 18 utf8 utf8_general_ci varchar(6)
|
||||
3.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema TRIGGERS CREATED datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema TRIGGERS SQL_MODE varchar 8192 24576 utf8 utf8_general_ci varchar(8192)
|
||||
3.0000 information_schema TRIGGERS DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
|
||||
3.0000 information_schema TRIGGERS CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema TRIGGERS COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema TRIGGERS DATABASE_COLLATION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema USER_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
|
||||
3.0000 information_schema USER_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema USER_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema VIEWS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema VIEWS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema VIEWS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
1.0000 information_schema VIEWS VIEW_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema VIEWS CHECK_OPTION varchar 8 24 utf8 utf8_general_ci varchar(8)
|
||||
3.0000 information_schema VIEWS IS_UPDATABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema VIEWS DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
|
||||
3.0000 information_schema VIEWS SECURITY_TYPE varchar 7 21 utf8 utf8_general_ci varchar(7)
|
||||
3.0000 information_schema VIEWS CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema VIEWS COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
1087
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns_memory.result
Normal file
1087
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns_memory.result
Normal file
File diff suppressed because it is too large
Load Diff
1216
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns_myisam.result
Normal file
1216
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns_myisam.result
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,499 @@
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL mysql columns_priv Column_name 5 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql columns_priv Column_priv 7 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References') select,insert,update,references
|
||||
NULL mysql columns_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql columns_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
|
||||
NULL mysql columns_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql columns_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
NULL mysql columns_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
|
||||
NULL mysql db Alter_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Alter_routine_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Create_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Create_tmp_table_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Create_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql db Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Event_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Execute_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Grant_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
|
||||
NULL mysql db Index_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Lock_tables_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db References_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Show_view_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Trigger_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql db User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
|
||||
NULL mysql event body 3 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
|
||||
NULL mysql event body_utf8 22 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
|
||||
NULL mysql event character_set_client 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
|
||||
NULL mysql event collation_connection 20 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
|
||||
NULL mysql event comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64) select,insert,update,references
|
||||
NULL mysql event created 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
NULL mysql event db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql event db_collation 21 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
|
||||
NULL mysql event definer 4 NO char 77 231 NULL NULL utf8 utf8_bin char(77) select,insert,update,references
|
||||
NULL mysql event ends 12 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
|
||||
NULL mysql event execute_at 5 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
|
||||
NULL mysql event interval_field 7 NULL YES enum 18 54 NULL NULL utf8 utf8_general_ci enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') select,insert,update,references
|
||||
NULL mysql event interval_value 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL mysql event last_executed 10 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
|
||||
NULL mysql event modified 9 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
|
||||
NULL mysql event name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
|
||||
NULL mysql event on_completion 14 DROP NO enum 8 24 NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE') select,insert,update,references
|
||||
NULL mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
|
||||
NULL mysql event sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci 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','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') select,insert,update,references
|
||||
NULL mysql event starts 11 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references
|
||||
NULL mysql event status 13 ENABLED NO enum 18 54 NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') select,insert,update,references
|
||||
NULL mysql event time_zone 18 SYSTEM NO char 64 64 NULL NULL latin1 latin1_swedish_ci char(64) select,insert,update,references
|
||||
NULL mysql func dl 3 NO char 128 384 NULL NULL utf8 utf8_bin char(128) select,insert,update,references
|
||||
NULL mysql func name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(1) select,insert,update,references
|
||||
NULL mysql func type 4 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('function','aggregate') select,insert,update,references
|
||||
NULL mysql general_log argument 6 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||
NULL mysql general_log command_type 5 NULL NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select,insert,update,references
|
||||
NULL mysql general_log event_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
NULL mysql general_log server_id 4 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
|
||||
NULL mysql general_log thread_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL mysql general_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||
NULL mysql help_category help_category_id 1 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned PRI select,insert,update,references
|
||||
NULL mysql help_category name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI select,insert,update,references
|
||||
NULL mysql help_category parent_category_id 3 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
|
||||
NULL mysql help_category url 4 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text select,insert,update,references
|
||||
NULL mysql help_keyword help_keyword_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
|
||||
NULL mysql help_keyword name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI select,insert,update,references
|
||||
NULL mysql help_relation help_keyword_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
|
||||
NULL mysql help_relation help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
|
||||
NULL mysql help_topic description 4 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text select,insert,update,references
|
||||
NULL mysql help_topic example 5 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text select,insert,update,references
|
||||
NULL mysql help_topic help_category_id 3 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned select,insert,update,references
|
||||
NULL mysql help_topic help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
|
||||
NULL mysql help_topic name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI select,insert,update,references
|
||||
NULL mysql help_topic url 6 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text select,insert,update,references
|
||||
NULL mysql host Alter_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Alter_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Create_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Create_routine_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Create_tmp_table_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Create_view_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql host Delete_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Drop_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Execute_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Grant_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
|
||||
NULL mysql host Index_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Insert_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Lock_tables_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host References_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Select_priv 3 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Show_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Trigger_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql host Update_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql ndb_binlog_index deletes 6 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
|
||||
NULL mysql ndb_binlog_index epoch 3 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned PRI select,insert,update,references
|
||||
NULL mysql ndb_binlog_index File 2 NULL NO varchar 255 255 NULL NULL latin1 latin1_swedish_ci varchar(255) select,insert,update,references
|
||||
NULL mysql ndb_binlog_index inserts 4 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
|
||||
NULL mysql ndb_binlog_index Position 1 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
|
||||
NULL mysql ndb_binlog_index schemaops 7 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
|
||||
NULL mysql ndb_binlog_index updates 5 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
|
||||
NULL mysql plugin dl 2 NO char 128 384 NULL NULL utf8 utf8_bin char(128) select,insert,update,references
|
||||
NULL mysql plugin name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
|
||||
NULL mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
|
||||
NULL mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
|
||||
NULL mysql proc collation_connection 18 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
|
||||
NULL mysql proc comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64) select,insert,update,references
|
||||
NULL mysql proc created 13 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
NULL mysql proc db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql proc db_collation 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) select,insert,update,references
|
||||
NULL mysql proc definer 12 NO char 77 231 NULL NULL utf8 utf8_bin char(77) select,insert,update,references
|
||||
NULL mysql proc is_deterministic 7 NO NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('YES','NO') select,insert,update,references
|
||||
NULL mysql proc language 5 SQL NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('SQL') select,insert,update,references
|
||||
NULL mysql proc modified 14 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp select,insert,update,references
|
||||
NULL mysql proc name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
|
||||
NULL mysql proc param_list 9 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
|
||||
NULL mysql proc returns 10 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
|
||||
NULL mysql proc security_type 8 DEFINER NO enum 7 21 NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER') select,insert,update,references
|
||||
NULL mysql proc specific_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
|
||||
NULL mysql proc sql_data_access 6 CONTAINS_SQL NO enum 17 51 NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') select,insert,update,references
|
||||
NULL mysql proc sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci 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','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') select,insert,update,references
|
||||
NULL mysql proc type 3 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI select,insert,update,references
|
||||
NULL mysql procs_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql procs_priv Grantor 6 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL select,insert,update,references
|
||||
NULL mysql procs_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
|
||||
NULL mysql procs_priv Proc_priv 7 NO set 27 81 NULL NULL utf8 utf8_general_ci set('Execute','Alter Routine','Grant') select,insert,update,references
|
||||
NULL mysql procs_priv Routine_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
|
||||
NULL mysql procs_priv Routine_type 5 NULL NO enum 9 27 NULL NULL utf8 utf8_bin enum('FUNCTION','PROCEDURE') PRI select,insert,update,references
|
||||
NULL mysql procs_priv Timestamp 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
NULL mysql procs_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
|
||||
NULL mysql servers Db 3 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
|
||||
NULL mysql servers Host 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
|
||||
NULL mysql servers Owner 9 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
|
||||
NULL mysql servers Password 5 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
|
||||
NULL mysql servers Port 6 0 NO int NULL NULL 10 0 NULL NULL int(4) select,insert,update,references
|
||||
NULL mysql servers Server_name 1 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
|
||||
NULL mysql servers Socket 7 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
|
||||
NULL mysql servers Username 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
|
||||
NULL mysql servers Wrapper 8 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
|
||||
NULL mysql slow_log db 7 NULL NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select,insert,update,references
|
||||
NULL mysql slow_log insert_id 9 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL mysql slow_log last_insert_id 8 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL mysql slow_log lock_time 4 NULL NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
|
||||
NULL mysql slow_log query_time 3 NULL NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
|
||||
NULL mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
|
||||
NULL mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||
NULL mysql slow_log start_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
NULL mysql slow_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||
NULL mysql tables_priv Column_priv 8 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References') select,insert,update,references
|
||||
NULL mysql tables_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql tables_priv Grantor 5 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL select,insert,update,references
|
||||
NULL mysql tables_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
|
||||
NULL mysql tables_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
NULL mysql tables_priv Table_priv 7 NO set 98 294 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') select,insert,update,references
|
||||
NULL mysql tables_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
NULL mysql tables_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
|
||||
NULL mysql time_zone Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI auto_increment select,insert,update,references
|
||||
NULL mysql time_zone Use_leap_seconds 2 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('Y','N') select,insert,update,references
|
||||
NULL mysql time_zone_leap_second Correction 2 NULL NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL mysql time_zone_leap_second Transition_time 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI select,insert,update,references
|
||||
NULL mysql time_zone_name Name 1 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references
|
||||
NULL mysql time_zone_name Time_zone_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
|
||||
NULL mysql time_zone_transition Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
|
||||
NULL mysql time_zone_transition Transition_time 2 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI select,insert,update,references
|
||||
NULL mysql time_zone_transition Transition_type_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned select,insert,update,references
|
||||
NULL mysql time_zone_transition_type Abbreviation 5 NO char 8 24 NULL NULL utf8 utf8_general_ci char(8) select,insert,update,references
|
||||
NULL mysql time_zone_transition_type Is_DST 4 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned select,insert,update,references
|
||||
NULL mysql time_zone_transition_type Offset 3 0 NO int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL mysql time_zone_transition_type Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
|
||||
NULL mysql time_zone_transition_type Transition_type_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI select,insert,update,references
|
||||
NULL mysql user Alter_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Alter_routine_priv 28 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Create_routine_priv 27 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Create_tmp_table_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Create_user_priv 29 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Create_view_priv 25 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Event_priv 30 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Execute_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user File_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Grant_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
|
||||
NULL mysql user Index_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Lock_tables_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user max_connections 38 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
|
||||
NULL mysql user max_questions 36 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
|
||||
NULL mysql user max_updates 37 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
|
||||
NULL mysql user max_user_connections 39 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned select,insert,update,references
|
||||
NULL mysql user Password 3 NO char 41 41 NULL NULL latin1 latin1_bin char(41) select,insert,update,references
|
||||
NULL mysql user Process_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user References_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Reload_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Repl_client_priv 24 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Repl_slave_priv 23 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Show_db_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Show_view_priv 26 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Shutdown_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user ssl_cipher 33 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
|
||||
NULL mysql user ssl_type 32 NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED') select,insert,update,references
|
||||
NULL mysql user Super_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Trigger_priv 31 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
|
||||
NULL mysql user User 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
|
||||
NULL mysql user x509_issuer 34 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
|
||||
NULL mysql user x509_subject 35 NULL NO blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
|
||||
##########################################################################
|
||||
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
|
||||
##########################################################################
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'mysql'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
1.0000 blob NULL NULL
|
||||
1.0000 longblob NULL NULL
|
||||
1.0000 char latin1 latin1_bin
|
||||
1.0000 char latin1 latin1_swedish_ci
|
||||
1.0000 varchar latin1 latin1_swedish_ci
|
||||
1.0000 mediumtext utf8 utf8_general_ci
|
||||
1.0000 text utf8 utf8_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'mysql'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
3.0000 char utf8 utf8_bin
|
||||
3.0000 enum utf8 utf8_bin
|
||||
3.0000 char utf8 utf8_general_ci
|
||||
3.0000 enum utf8 utf8_general_ci
|
||||
3.0000 set utf8 utf8_general_ci
|
||||
3.0000 varchar utf8 utf8_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'mysql'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
NULL bigint NULL NULL
|
||||
NULL datetime NULL NULL
|
||||
NULL int NULL NULL
|
||||
NULL smallint NULL NULL
|
||||
NULL time NULL NULL
|
||||
NULL timestamp NULL NULL
|
||||
NULL tinyint NULL NULL
|
||||
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
|
||||
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
|
||||
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
CHARACTER_MAXIMUM_LENGTH,
|
||||
CHARACTER_OCTET_LENGTH,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME,
|
||||
COLUMN_TYPE
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
|
||||
3.0000 mysql columns_priv Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql columns_priv Db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql columns_priv User char 16 48 utf8 utf8_bin char(16)
|
||||
3.0000 mysql columns_priv Table_name char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql columns_priv Column_name char 64 192 utf8 utf8_bin char(64)
|
||||
NULL mysql columns_priv Timestamp timestamp NULL NULL NULL NULL timestamp
|
||||
3.0000 mysql columns_priv Column_priv set 31 93 utf8 utf8_general_ci set('Select','Insert','Update','References')
|
||||
3.0000 mysql db Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql db Db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql db User char 16 48 utf8 utf8_bin char(16)
|
||||
3.0000 mysql db Select_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Insert_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Update_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Delete_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Create_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Drop_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Grant_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db References_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Index_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Alter_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Create_tmp_table_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Lock_tables_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Create_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Show_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Create_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Alter_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql event db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql event name char 64 192 utf8 utf8_general_ci char(64)
|
||||
1.0000 mysql event body longblob 4294967295 4294967295 NULL NULL longblob
|
||||
3.0000 mysql event definer char 77 231 utf8 utf8_bin char(77)
|
||||
NULL mysql event execute_at datetime NULL NULL NULL NULL datetime
|
||||
NULL mysql event interval_value int NULL NULL NULL NULL int(11)
|
||||
3.0000 mysql event interval_field enum 18 54 utf8 utf8_general_ci enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND')
|
||||
NULL mysql event created timestamp NULL NULL NULL NULL timestamp
|
||||
NULL mysql event modified timestamp NULL NULL NULL NULL timestamp
|
||||
NULL mysql event last_executed datetime NULL NULL NULL NULL datetime
|
||||
NULL mysql event starts datetime NULL NULL NULL NULL datetime
|
||||
NULL mysql event ends datetime NULL NULL NULL NULL datetime
|
||||
3.0000 mysql event status enum 18 54 utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED')
|
||||
3.0000 mysql event on_completion enum 8 24 utf8 utf8_general_ci enum('DROP','PRESERVE')
|
||||
3.0000 mysql event sql_mode set 478 1434 utf8 utf8_general_ci 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','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
|
||||
3.0000 mysql event comment char 64 192 utf8 utf8_bin char(64)
|
||||
NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned
|
||||
1.0000 mysql event time_zone char 64 64 latin1 latin1_swedish_ci char(64)
|
||||
3.0000 mysql event character_set_client char 32 96 utf8 utf8_bin char(32)
|
||||
3.0000 mysql event collation_connection char 32 96 utf8 utf8_bin char(32)
|
||||
3.0000 mysql event db_collation char 32 96 utf8 utf8_bin char(32)
|
||||
1.0000 mysql event body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
|
||||
3.0000 mysql func name char 64 192 utf8 utf8_bin char(64)
|
||||
NULL mysql func ret tinyint NULL NULL NULL NULL tinyint(1)
|
||||
3.0000 mysql func dl char 128 384 utf8 utf8_bin char(128)
|
||||
3.0000 mysql func type enum 9 27 utf8 utf8_general_ci enum('function','aggregate')
|
||||
NULL mysql general_log event_time timestamp NULL NULL NULL NULL timestamp
|
||||
1.0000 mysql general_log user_host mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||
NULL mysql general_log thread_id int NULL NULL NULL NULL int(11)
|
||||
NULL mysql general_log server_id int NULL NULL NULL NULL int(10) unsigned
|
||||
3.0000 mysql general_log command_type varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
1.0000 mysql general_log argument mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||
NULL mysql help_category help_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
|
||||
3.0000 mysql help_category name char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql help_category parent_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
|
||||
1.0000 mysql help_category url text 65535 65535 utf8 utf8_general_ci text
|
||||
NULL mysql help_keyword help_keyword_id int NULL NULL NULL NULL int(10) unsigned
|
||||
3.0000 mysql help_keyword name char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql help_relation help_topic_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql help_relation help_keyword_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql help_topic help_topic_id int NULL NULL NULL NULL int(10) unsigned
|
||||
3.0000 mysql help_topic name char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql help_topic help_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
|
||||
1.0000 mysql help_topic description text 65535 65535 utf8 utf8_general_ci text
|
||||
1.0000 mysql help_topic example text 65535 65535 utf8 utf8_general_ci text
|
||||
1.0000 mysql help_topic url text 65535 65535 utf8 utf8_general_ci text
|
||||
3.0000 mysql host Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql host Db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql host Select_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Insert_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Update_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Delete_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Create_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Drop_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Grant_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host References_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Index_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Alter_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Create_tmp_table_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Lock_tables_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Create_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Show_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Create_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Alter_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql ndb_binlog_index Position bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
1.0000 mysql ndb_binlog_index File varchar 255 255 latin1 latin1_swedish_ci varchar(255)
|
||||
NULL mysql ndb_binlog_index epoch bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index inserts bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index updates bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index deletes bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index schemaops bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
3.0000 mysql plugin name char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql plugin dl char 128 384 utf8 utf8_bin char(128)
|
||||
3.0000 mysql proc db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql proc name char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql proc type enum 9 27 utf8 utf8_general_ci enum('FUNCTION','PROCEDURE')
|
||||
3.0000 mysql proc specific_name char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql proc language enum 3 9 utf8 utf8_general_ci enum('SQL')
|
||||
3.0000 mysql proc sql_data_access enum 17 51 utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA')
|
||||
3.0000 mysql proc is_deterministic enum 3 9 utf8 utf8_general_ci enum('YES','NO')
|
||||
3.0000 mysql proc security_type enum 7 21 utf8 utf8_general_ci enum('INVOKER','DEFINER')
|
||||
1.0000 mysql proc param_list blob 65535 65535 NULL NULL blob
|
||||
1.0000 mysql proc returns longblob 4294967295 4294967295 NULL NULL longblob
|
||||
1.0000 mysql proc body longblob 4294967295 4294967295 NULL NULL longblob
|
||||
3.0000 mysql proc definer char 77 231 utf8 utf8_bin char(77)
|
||||
NULL mysql proc created timestamp NULL NULL NULL NULL timestamp
|
||||
NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp
|
||||
3.0000 mysql proc sql_mode set 478 1434 utf8 utf8_general_ci 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','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
|
||||
3.0000 mysql proc comment char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql proc character_set_client char 32 96 utf8 utf8_bin char(32)
|
||||
3.0000 mysql proc collation_connection char 32 96 utf8 utf8_bin char(32)
|
||||
3.0000 mysql proc db_collation char 32 96 utf8 utf8_bin char(32)
|
||||
1.0000 mysql proc body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
|
||||
3.0000 mysql procs_priv Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql procs_priv Db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql procs_priv User char 16 48 utf8 utf8_bin char(16)
|
||||
3.0000 mysql procs_priv Routine_name char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql procs_priv Routine_type enum 9 27 utf8 utf8_bin enum('FUNCTION','PROCEDURE')
|
||||
3.0000 mysql procs_priv Grantor char 77 231 utf8 utf8_bin char(77)
|
||||
3.0000 mysql procs_priv Proc_priv set 27 81 utf8 utf8_general_ci set('Execute','Alter Routine','Grant')
|
||||
NULL mysql procs_priv Timestamp timestamp NULL NULL NULL NULL timestamp
|
||||
3.0000 mysql servers Server_name char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Host char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Db char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Username char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Password char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql servers Port int NULL NULL NULL NULL int(4)
|
||||
3.0000 mysql servers Socket char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Wrapper char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Owner char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql slow_log start_time timestamp NULL NULL NULL NULL timestamp
|
||||
1.0000 mysql slow_log user_host mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||
NULL mysql slow_log query_time time NULL NULL NULL NULL time
|
||||
NULL mysql slow_log lock_time time NULL NULL NULL NULL time
|
||||
NULL mysql slow_log rows_sent int NULL NULL NULL NULL int(11)
|
||||
NULL mysql slow_log rows_examined int NULL NULL NULL NULL int(11)
|
||||
3.0000 mysql slow_log db varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
NULL mysql slow_log last_insert_id int NULL NULL NULL NULL int(11)
|
||||
NULL mysql slow_log insert_id int NULL NULL NULL NULL int(11)
|
||||
NULL mysql slow_log server_id int NULL NULL NULL NULL int(10) unsigned
|
||||
1.0000 mysql slow_log sql_text mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||
3.0000 mysql tables_priv Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql tables_priv Db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql tables_priv User char 16 48 utf8 utf8_bin char(16)
|
||||
3.0000 mysql tables_priv Table_name char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql tables_priv Grantor char 77 231 utf8 utf8_bin char(77)
|
||||
NULL mysql tables_priv Timestamp timestamp NULL NULL NULL NULL timestamp
|
||||
3.0000 mysql tables_priv Table_priv set 98 294 utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger')
|
||||
3.0000 mysql tables_priv Column_priv set 31 93 utf8 utf8_general_ci set('Select','Insert','Update','References')
|
||||
NULL mysql time_zone Time_zone_id int NULL NULL NULL NULL int(10) unsigned
|
||||
3.0000 mysql time_zone Use_leap_seconds enum 1 3 utf8 utf8_general_ci enum('Y','N')
|
||||
NULL mysql time_zone_leap_second Transition_time bigint NULL NULL NULL NULL bigint(20)
|
||||
NULL mysql time_zone_leap_second Correction int NULL NULL NULL NULL int(11)
|
||||
3.0000 mysql time_zone_name Name char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql time_zone_name Time_zone_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition Time_zone_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition Transition_time bigint NULL NULL NULL NULL bigint(20)
|
||||
NULL mysql time_zone_transition Transition_type_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition_type Time_zone_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition_type Transition_type_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition_type Offset int NULL NULL NULL NULL int(11)
|
||||
NULL mysql time_zone_transition_type Is_DST tinyint NULL NULL NULL NULL tinyint(3) unsigned
|
||||
3.0000 mysql time_zone_transition_type Abbreviation char 8 24 utf8 utf8_general_ci char(8)
|
||||
3.0000 mysql user Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql user User char 16 48 utf8 utf8_bin char(16)
|
||||
1.0000 mysql user Password char 41 41 latin1 latin1_bin char(41)
|
||||
3.0000 mysql user Select_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Insert_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Update_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Delete_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Create_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Drop_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Reload_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Shutdown_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Process_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user File_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Grant_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user References_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Index_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Alter_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Show_db_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Super_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Create_tmp_table_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Lock_tables_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Repl_slave_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Repl_client_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Create_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Show_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Create_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Alter_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Create_user_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user ssl_type enum 9 27 utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
|
||||
1.0000 mysql user ssl_cipher blob 65535 65535 NULL NULL blob
|
||||
1.0000 mysql user x509_issuer blob 65535 65535 NULL NULL blob
|
||||
1.0000 mysql user x509_subject blob 65535 65535 NULL NULL blob
|
||||
NULL mysql user max_questions int NULL NULL NULL NULL int(11) unsigned
|
||||
NULL mysql user max_updates int NULL NULL NULL NULL int(11) unsigned
|
||||
NULL mysql user max_connections int NULL NULL NULL NULL int(11) unsigned
|
||||
NULL mysql user max_user_connections int NULL NULL NULL NULL int(11) unsigned
|
||||
@@ -0,0 +1,499 @@
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL mysql columns_priv Column_name 5 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql columns_priv Column_priv 7 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References')
|
||||
NULL mysql columns_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql columns_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
|
||||
NULL mysql columns_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql columns_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
|
||||
NULL mysql columns_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
|
||||
NULL mysql db Alter_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Alter_routine_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Create_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Create_tmp_table_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Create_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql db Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Event_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Execute_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Grant_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
|
||||
NULL mysql db Index_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Lock_tables_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db References_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Show_view_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Trigger_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql db User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
|
||||
NULL mysql event body 3 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
|
||||
NULL mysql event body_utf8 22 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
|
||||
NULL mysql event character_set_client 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
|
||||
NULL mysql event collation_connection 20 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
|
||||
NULL mysql event comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64)
|
||||
NULL mysql event created 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
|
||||
NULL mysql event db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql event db_collation 21 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
|
||||
NULL mysql event definer 4 NO char 77 231 NULL NULL utf8 utf8_bin char(77)
|
||||
NULL mysql event ends 12 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL mysql event execute_at 5 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL mysql event interval_field 7 NULL YES enum 18 54 NULL NULL utf8 utf8_general_ci enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND')
|
||||
NULL mysql event interval_value 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
|
||||
NULL mysql event last_executed 10 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL mysql event modified 9 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
|
||||
NULL mysql event name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
|
||||
NULL mysql event on_completion 14 DROP NO enum 8 24 NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE')
|
||||
NULL mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
|
||||
NULL mysql event sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci 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','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
|
||||
NULL mysql event starts 11 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
|
||||
NULL mysql event status 13 ENABLED NO enum 18 54 NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED')
|
||||
NULL mysql event time_zone 18 SYSTEM NO char 64 64 NULL NULL latin1 latin1_swedish_ci char(64)
|
||||
NULL mysql func dl 3 NO char 128 384 NULL NULL utf8 utf8_bin char(128)
|
||||
NULL mysql func name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(1)
|
||||
NULL mysql func type 4 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('function','aggregate')
|
||||
NULL mysql general_log argument 6 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
|
||||
NULL mysql general_log command_type 5 NULL NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
NULL mysql general_log event_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
|
||||
NULL mysql general_log server_id 4 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
|
||||
NULL mysql general_log thread_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(11)
|
||||
NULL mysql general_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
|
||||
NULL mysql help_category help_category_id 1 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned PRI
|
||||
NULL mysql help_category name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
|
||||
NULL mysql help_category parent_category_id 3 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
|
||||
NULL mysql help_category url 4 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text
|
||||
NULL mysql help_keyword help_keyword_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
|
||||
NULL mysql help_keyword name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
|
||||
NULL mysql help_relation help_keyword_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
|
||||
NULL mysql help_relation help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
|
||||
NULL mysql help_topic description 4 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text
|
||||
NULL mysql help_topic example 5 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text
|
||||
NULL mysql help_topic help_category_id 3 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
|
||||
NULL mysql help_topic help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
|
||||
NULL mysql help_topic name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
|
||||
NULL mysql help_topic url 6 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text
|
||||
NULL mysql host Alter_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Alter_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Create_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Create_routine_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Create_tmp_table_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Create_view_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql host Delete_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Drop_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Execute_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Grant_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
|
||||
NULL mysql host Index_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Insert_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Lock_tables_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host References_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Select_priv 3 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Show_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Trigger_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql host Update_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql ndb_binlog_index deletes 6 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index epoch 3 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned PRI
|
||||
NULL mysql ndb_binlog_index File 2 NULL NO varchar 255 255 NULL NULL latin1 latin1_swedish_ci varchar(255)
|
||||
NULL mysql ndb_binlog_index inserts 4 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index Position 1 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index schemaops 7 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index updates 5 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned
|
||||
NULL mysql plugin dl 2 NO char 128 384 NULL NULL utf8 utf8_bin char(128)
|
||||
NULL mysql plugin name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
|
||||
NULL mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
|
||||
NULL mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
|
||||
NULL mysql proc collation_connection 18 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
|
||||
NULL mysql proc comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64)
|
||||
NULL mysql proc created 13 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
|
||||
NULL mysql proc db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql proc db_collation 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32)
|
||||
NULL mysql proc definer 12 NO char 77 231 NULL NULL utf8 utf8_bin char(77)
|
||||
NULL mysql proc is_deterministic 7 NO NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('YES','NO')
|
||||
NULL mysql proc language 5 SQL NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('SQL')
|
||||
NULL mysql proc modified 14 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
|
||||
NULL mysql proc name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
|
||||
NULL mysql proc param_list 9 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
|
||||
NULL mysql proc returns 10 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
|
||||
NULL mysql proc security_type 8 DEFINER NO enum 7 21 NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER')
|
||||
NULL mysql proc specific_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
|
||||
NULL mysql proc sql_data_access 6 CONTAINS_SQL NO enum 17 51 NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA')
|
||||
NULL mysql proc sql_mode 15 NO set 478 1434 NULL NULL utf8 utf8_general_ci 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','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
|
||||
NULL mysql proc type 3 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI
|
||||
NULL mysql procs_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql procs_priv Grantor 6 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL
|
||||
NULL mysql procs_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
|
||||
NULL mysql procs_priv Proc_priv 7 NO set 27 81 NULL NULL utf8 utf8_general_ci set('Execute','Alter Routine','Grant')
|
||||
NULL mysql procs_priv Routine_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
|
||||
NULL mysql procs_priv Routine_type 5 NULL NO enum 9 27 NULL NULL utf8 utf8_bin enum('FUNCTION','PROCEDURE') PRI
|
||||
NULL mysql procs_priv Timestamp 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
|
||||
NULL mysql procs_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
|
||||
NULL mysql servers Db 3 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
|
||||
NULL mysql servers Host 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
|
||||
NULL mysql servers Owner 9 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
|
||||
NULL mysql servers Password 5 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
|
||||
NULL mysql servers Port 6 0 NO int NULL NULL 10 0 NULL NULL int(4)
|
||||
NULL mysql servers Server_name 1 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
|
||||
NULL mysql servers Socket 7 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
|
||||
NULL mysql servers Username 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
|
||||
NULL mysql servers Wrapper 8 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
|
||||
NULL mysql slow_log db 7 NULL NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
|
||||
NULL mysql slow_log insert_id 9 NULL NO int NULL NULL 10 0 NULL NULL int(11)
|
||||
NULL mysql slow_log last_insert_id 8 NULL NO int NULL NULL 10 0 NULL NULL int(11)
|
||||
NULL mysql slow_log lock_time 4 NULL NO time NULL NULL NULL NULL NULL NULL time
|
||||
NULL mysql slow_log query_time 3 NULL NO time NULL NULL NULL NULL NULL NULL time
|
||||
NULL mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL int(11)
|
||||
NULL mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL int(11)
|
||||
NULL mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
|
||||
NULL mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
|
||||
NULL mysql slow_log start_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
|
||||
NULL mysql slow_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL utf8 utf8_general_ci mediumtext
|
||||
NULL mysql tables_priv Column_priv 8 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References')
|
||||
NULL mysql tables_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql tables_priv Grantor 5 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL
|
||||
NULL mysql tables_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
|
||||
NULL mysql tables_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
|
||||
NULL mysql tables_priv Table_priv 7 NO set 98 294 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger')
|
||||
NULL mysql tables_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP
|
||||
NULL mysql tables_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
|
||||
NULL mysql time_zone Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI auto_increment
|
||||
NULL mysql time_zone Use_leap_seconds 2 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('Y','N')
|
||||
NULL mysql time_zone_leap_second Correction 2 NULL NO int NULL NULL 10 0 NULL NULL int(11)
|
||||
NULL mysql time_zone_leap_second Transition_time 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI
|
||||
NULL mysql time_zone_name Name 1 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
|
||||
NULL mysql time_zone_name Time_zone_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
|
||||
NULL mysql time_zone_transition Transition_time 2 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI
|
||||
NULL mysql time_zone_transition Transition_type_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition_type Abbreviation 5 NO char 8 24 NULL NULL utf8 utf8_general_ci char(8)
|
||||
NULL mysql time_zone_transition_type Is_DST 4 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned
|
||||
NULL mysql time_zone_transition_type Offset 3 0 NO int NULL NULL 10 0 NULL NULL int(11)
|
||||
NULL mysql time_zone_transition_type Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
|
||||
NULL mysql time_zone_transition_type Transition_type_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
|
||||
NULL mysql user Alter_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Alter_routine_priv 28 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Create_routine_priv 27 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Create_tmp_table_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Create_user_priv 29 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Create_view_priv 25 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Event_priv 30 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Execute_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user File_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Grant_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
|
||||
NULL mysql user Index_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Lock_tables_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user max_connections 38 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
|
||||
NULL mysql user max_questions 36 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
|
||||
NULL mysql user max_updates 37 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
|
||||
NULL mysql user max_user_connections 39 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
|
||||
NULL mysql user Password 3 NO char 41 41 NULL NULL latin1 latin1_bin char(41)
|
||||
NULL mysql user Process_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user References_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Reload_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Repl_client_priv 24 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Repl_slave_priv 23 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Show_db_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Show_view_priv 26 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Shutdown_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user ssl_cipher 33 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
|
||||
NULL mysql user ssl_type 32 NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
|
||||
NULL mysql user Super_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Trigger_priv 31 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql user User 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
|
||||
NULL mysql user x509_issuer 34 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
|
||||
NULL mysql user x509_subject 35 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
|
||||
##########################################################################
|
||||
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
|
||||
##########################################################################
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'mysql'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
1.0000 blob NULL NULL
|
||||
1.0000 longblob NULL NULL
|
||||
1.0000 char latin1 latin1_bin
|
||||
1.0000 char latin1 latin1_swedish_ci
|
||||
1.0000 varchar latin1 latin1_swedish_ci
|
||||
1.0000 mediumtext utf8 utf8_general_ci
|
||||
1.0000 text utf8 utf8_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'mysql'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
3.0000 char utf8 utf8_bin
|
||||
3.0000 enum utf8 utf8_bin
|
||||
3.0000 char utf8 utf8_general_ci
|
||||
3.0000 enum utf8 utf8_general_ci
|
||||
3.0000 set utf8 utf8_general_ci
|
||||
3.0000 varchar utf8 utf8_general_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'mysql'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
NULL bigint NULL NULL
|
||||
NULL datetime NULL NULL
|
||||
NULL int NULL NULL
|
||||
NULL smallint NULL NULL
|
||||
NULL time NULL NULL
|
||||
NULL timestamp NULL NULL
|
||||
NULL tinyint NULL NULL
|
||||
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
|
||||
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
|
||||
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
CHARACTER_MAXIMUM_LENGTH,
|
||||
CHARACTER_OCTET_LENGTH,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME,
|
||||
COLUMN_TYPE
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
|
||||
3.0000 mysql columns_priv Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql columns_priv Db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql columns_priv User char 16 48 utf8 utf8_bin char(16)
|
||||
3.0000 mysql columns_priv Table_name char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql columns_priv Column_name char 64 192 utf8 utf8_bin char(64)
|
||||
NULL mysql columns_priv Timestamp timestamp NULL NULL NULL NULL timestamp
|
||||
3.0000 mysql columns_priv Column_priv set 31 93 utf8 utf8_general_ci set('Select','Insert','Update','References')
|
||||
3.0000 mysql db Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql db Db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql db User char 16 48 utf8 utf8_bin char(16)
|
||||
3.0000 mysql db Select_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Insert_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Update_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Delete_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Create_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Drop_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Grant_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db References_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Index_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Alter_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Create_tmp_table_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Lock_tables_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Create_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Show_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Create_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Alter_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql db Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql event db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql event name char 64 192 utf8 utf8_general_ci char(64)
|
||||
1.0000 mysql event body longblob 4294967295 4294967295 NULL NULL longblob
|
||||
3.0000 mysql event definer char 77 231 utf8 utf8_bin char(77)
|
||||
NULL mysql event execute_at datetime NULL NULL NULL NULL datetime
|
||||
NULL mysql event interval_value int NULL NULL NULL NULL int(11)
|
||||
3.0000 mysql event interval_field enum 18 54 utf8 utf8_general_ci enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND')
|
||||
NULL mysql event created timestamp NULL NULL NULL NULL timestamp
|
||||
NULL mysql event modified timestamp NULL NULL NULL NULL timestamp
|
||||
NULL mysql event last_executed datetime NULL NULL NULL NULL datetime
|
||||
NULL mysql event starts datetime NULL NULL NULL NULL datetime
|
||||
NULL mysql event ends datetime NULL NULL NULL NULL datetime
|
||||
3.0000 mysql event status enum 18 54 utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED')
|
||||
3.0000 mysql event on_completion enum 8 24 utf8 utf8_general_ci enum('DROP','PRESERVE')
|
||||
3.0000 mysql event sql_mode set 478 1434 utf8 utf8_general_ci 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','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
|
||||
3.0000 mysql event comment char 64 192 utf8 utf8_bin char(64)
|
||||
NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned
|
||||
1.0000 mysql event time_zone char 64 64 latin1 latin1_swedish_ci char(64)
|
||||
3.0000 mysql event character_set_client char 32 96 utf8 utf8_bin char(32)
|
||||
3.0000 mysql event collation_connection char 32 96 utf8 utf8_bin char(32)
|
||||
3.0000 mysql event db_collation char 32 96 utf8 utf8_bin char(32)
|
||||
1.0000 mysql event body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
|
||||
3.0000 mysql func name char 64 192 utf8 utf8_bin char(64)
|
||||
NULL mysql func ret tinyint NULL NULL NULL NULL tinyint(1)
|
||||
3.0000 mysql func dl char 128 384 utf8 utf8_bin char(128)
|
||||
3.0000 mysql func type enum 9 27 utf8 utf8_general_ci enum('function','aggregate')
|
||||
NULL mysql general_log event_time timestamp NULL NULL NULL NULL timestamp
|
||||
1.0000 mysql general_log user_host mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||
NULL mysql general_log thread_id int NULL NULL NULL NULL int(11)
|
||||
NULL mysql general_log server_id int NULL NULL NULL NULL int(10) unsigned
|
||||
3.0000 mysql general_log command_type varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
1.0000 mysql general_log argument mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||
NULL mysql help_category help_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
|
||||
3.0000 mysql help_category name char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql help_category parent_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
|
||||
1.0000 mysql help_category url text 65535 65535 utf8 utf8_general_ci text
|
||||
NULL mysql help_keyword help_keyword_id int NULL NULL NULL NULL int(10) unsigned
|
||||
3.0000 mysql help_keyword name char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql help_relation help_topic_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql help_relation help_keyword_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql help_topic help_topic_id int NULL NULL NULL NULL int(10) unsigned
|
||||
3.0000 mysql help_topic name char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql help_topic help_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
|
||||
1.0000 mysql help_topic description text 65535 65535 utf8 utf8_general_ci text
|
||||
1.0000 mysql help_topic example text 65535 65535 utf8 utf8_general_ci text
|
||||
1.0000 mysql help_topic url text 65535 65535 utf8 utf8_general_ci text
|
||||
3.0000 mysql host Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql host Db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql host Select_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Insert_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Update_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Delete_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Create_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Drop_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Grant_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host References_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Index_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Alter_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Create_tmp_table_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Lock_tables_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Create_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Show_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Create_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Alter_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql host Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
NULL mysql ndb_binlog_index Position bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
1.0000 mysql ndb_binlog_index File varchar 255 255 latin1 latin1_swedish_ci varchar(255)
|
||||
NULL mysql ndb_binlog_index epoch bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index inserts bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index updates bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index deletes bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
NULL mysql ndb_binlog_index schemaops bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||
3.0000 mysql plugin name char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql plugin dl char 128 384 utf8 utf8_bin char(128)
|
||||
3.0000 mysql proc db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql proc name char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql proc type enum 9 27 utf8 utf8_general_ci enum('FUNCTION','PROCEDURE')
|
||||
3.0000 mysql proc specific_name char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql proc language enum 3 9 utf8 utf8_general_ci enum('SQL')
|
||||
3.0000 mysql proc sql_data_access enum 17 51 utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA')
|
||||
3.0000 mysql proc is_deterministic enum 3 9 utf8 utf8_general_ci enum('YES','NO')
|
||||
3.0000 mysql proc security_type enum 7 21 utf8 utf8_general_ci enum('INVOKER','DEFINER')
|
||||
1.0000 mysql proc param_list blob 65535 65535 NULL NULL blob
|
||||
1.0000 mysql proc returns longblob 4294967295 4294967295 NULL NULL longblob
|
||||
1.0000 mysql proc body longblob 4294967295 4294967295 NULL NULL longblob
|
||||
3.0000 mysql proc definer char 77 231 utf8 utf8_bin char(77)
|
||||
NULL mysql proc created timestamp NULL NULL NULL NULL timestamp
|
||||
NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp
|
||||
3.0000 mysql proc sql_mode set 478 1434 utf8 utf8_general_ci 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','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
|
||||
3.0000 mysql proc comment char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql proc character_set_client char 32 96 utf8 utf8_bin char(32)
|
||||
3.0000 mysql proc collation_connection char 32 96 utf8 utf8_bin char(32)
|
||||
3.0000 mysql proc db_collation char 32 96 utf8 utf8_bin char(32)
|
||||
1.0000 mysql proc body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
|
||||
3.0000 mysql procs_priv Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql procs_priv Db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql procs_priv User char 16 48 utf8 utf8_bin char(16)
|
||||
3.0000 mysql procs_priv Routine_name char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql procs_priv Routine_type enum 9 27 utf8 utf8_bin enum('FUNCTION','PROCEDURE')
|
||||
3.0000 mysql procs_priv Grantor char 77 231 utf8 utf8_bin char(77)
|
||||
3.0000 mysql procs_priv Proc_priv set 27 81 utf8 utf8_general_ci set('Execute','Alter Routine','Grant')
|
||||
NULL mysql procs_priv Timestamp timestamp NULL NULL NULL NULL timestamp
|
||||
3.0000 mysql servers Server_name char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Host char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Db char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Username char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Password char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql servers Port int NULL NULL NULL NULL int(4)
|
||||
3.0000 mysql servers Socket char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Wrapper char 64 192 utf8 utf8_general_ci char(64)
|
||||
3.0000 mysql servers Owner char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql slow_log start_time timestamp NULL NULL NULL NULL timestamp
|
||||
1.0000 mysql slow_log user_host mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||
NULL mysql slow_log query_time time NULL NULL NULL NULL time
|
||||
NULL mysql slow_log lock_time time NULL NULL NULL NULL time
|
||||
NULL mysql slow_log rows_sent int NULL NULL NULL NULL int(11)
|
||||
NULL mysql slow_log rows_examined int NULL NULL NULL NULL int(11)
|
||||
3.0000 mysql slow_log db varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
NULL mysql slow_log last_insert_id int NULL NULL NULL NULL int(11)
|
||||
NULL mysql slow_log insert_id int NULL NULL NULL NULL int(11)
|
||||
NULL mysql slow_log server_id int NULL NULL NULL NULL int(10) unsigned
|
||||
1.0000 mysql slow_log sql_text mediumtext 16777215 16777215 utf8 utf8_general_ci mediumtext
|
||||
3.0000 mysql tables_priv Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql tables_priv Db char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql tables_priv User char 16 48 utf8 utf8_bin char(16)
|
||||
3.0000 mysql tables_priv Table_name char 64 192 utf8 utf8_bin char(64)
|
||||
3.0000 mysql tables_priv Grantor char 77 231 utf8 utf8_bin char(77)
|
||||
NULL mysql tables_priv Timestamp timestamp NULL NULL NULL NULL timestamp
|
||||
3.0000 mysql tables_priv Table_priv set 98 294 utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger')
|
||||
3.0000 mysql tables_priv Column_priv set 31 93 utf8 utf8_general_ci set('Select','Insert','Update','References')
|
||||
NULL mysql time_zone Time_zone_id int NULL NULL NULL NULL int(10) unsigned
|
||||
3.0000 mysql time_zone Use_leap_seconds enum 1 3 utf8 utf8_general_ci enum('Y','N')
|
||||
NULL mysql time_zone_leap_second Transition_time bigint NULL NULL NULL NULL bigint(20)
|
||||
NULL mysql time_zone_leap_second Correction int NULL NULL NULL NULL int(11)
|
||||
3.0000 mysql time_zone_name Name char 64 192 utf8 utf8_general_ci char(64)
|
||||
NULL mysql time_zone_name Time_zone_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition Time_zone_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition Transition_time bigint NULL NULL NULL NULL bigint(20)
|
||||
NULL mysql time_zone_transition Transition_type_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition_type Time_zone_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition_type Transition_type_id int NULL NULL NULL NULL int(10) unsigned
|
||||
NULL mysql time_zone_transition_type Offset int NULL NULL NULL NULL int(11)
|
||||
NULL mysql time_zone_transition_type Is_DST tinyint NULL NULL NULL NULL tinyint(3) unsigned
|
||||
3.0000 mysql time_zone_transition_type Abbreviation char 8 24 utf8 utf8_general_ci char(8)
|
||||
3.0000 mysql user Host char 60 180 utf8 utf8_bin char(60)
|
||||
3.0000 mysql user User char 16 48 utf8 utf8_bin char(16)
|
||||
1.0000 mysql user Password char 41 41 latin1 latin1_bin char(41)
|
||||
3.0000 mysql user Select_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Insert_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Update_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Delete_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Create_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Drop_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Reload_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Shutdown_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Process_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user File_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Grant_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user References_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Index_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Alter_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Show_db_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Super_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Create_tmp_table_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Lock_tables_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Repl_slave_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Repl_client_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Create_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Show_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Create_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Alter_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Create_user_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
|
||||
3.0000 mysql user ssl_type enum 9 27 utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
|
||||
1.0000 mysql user ssl_cipher blob 65535 65535 NULL NULL blob
|
||||
1.0000 mysql user x509_issuer blob 65535 65535 NULL NULL blob
|
||||
1.0000 mysql user x509_subject blob 65535 65535 NULL NULL blob
|
||||
NULL mysql user max_questions int NULL NULL NULL NULL int(11) unsigned
|
||||
NULL mysql user max_updates int NULL NULL NULL NULL int(11) unsigned
|
||||
NULL mysql user max_connections int NULL NULL NULL NULL int(11) unsigned
|
||||
NULL mysql user max_user_connections int NULL NULL NULL NULL int(11) unsigned
|
||||
228
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns_ndb.result
Normal file
228
build/lib/mysql/mysql-test/suite/funcs_1/r/is_columns_ndb.result
Normal file
@@ -0,0 +1,228 @@
|
||||
DROP DATABASE IF EXISTS test1;
|
||||
CREATE DATABASE test1;
|
||||
USE test;
|
||||
USE test;
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS t1, t2, t4, t10, t11;
|
||||
CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
ENGINE = ndb;
|
||||
CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
ENGINE = ndb;
|
||||
CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
ENGINE = ndb;
|
||||
CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
ENGINE = ndb;
|
||||
CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
ENGINE = ndb;
|
||||
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' INTO TABLE t1;
|
||||
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' INTO TABLE t2;
|
||||
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' INTO TABLE t4;
|
||||
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' INTO TABLE t10;
|
||||
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' INTO TABLE t11;
|
||||
drop TABLE if exists t3;
|
||||
CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = ndb;
|
||||
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' INTO TABLE t3;
|
||||
drop database if exists test4;
|
||||
CREATE database test4;
|
||||
use test4;
|
||||
CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int)
|
||||
ENGINE = ndb;
|
||||
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' INTO TABLE t6;
|
||||
use test;
|
||||
drop TABLE if exists t7, t8;
|
||||
CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = ndb;
|
||||
CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = ndb;
|
||||
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' INTO TABLE t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' INTO TABLE t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
drop TABLE if exists t9;
|
||||
CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = ndb;
|
||||
LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' INTO TABLE t9;
|
||||
SELECT * FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
|
||||
NULL test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
||||
NULL test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
|
||||
NULL test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
||||
NULL test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
|
||||
NULL test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
||||
NULL test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
|
||||
NULL test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
||||
NULL test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
|
||||
NULL test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
|
||||
NULL test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
|
||||
NULL test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
||||
NULL test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
|
||||
NULL test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
||||
NULL test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
|
||||
NULL test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
||||
NULL test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) select,insert,update,references
|
||||
NULL test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
||||
NULL test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
NULL test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25) select,insert,update,references
|
||||
NULL test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
##########################################################################
|
||||
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
|
||||
##########################################################################
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
1.0000 char latin1 latin1_swedish_ci
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
|
||||
NULL date NULL NULL
|
||||
NULL int NULL NULL
|
||||
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
|
||||
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
|
||||
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
CHARACTER_MAXIMUM_LENGTH,
|
||||
CHARACTER_OCTET_LENGTH,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME,
|
||||
COLUMN_TYPE
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'test%'
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
|
||||
1.0000 test t1 f1 char 20 20 latin1 latin1_swedish_ci char(20)
|
||||
1.0000 test t1 f2 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t1 f3 date NULL NULL NULL NULL date
|
||||
NULL test t1 f4 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t1 f5 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t1 f6 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t10 f1 char 20 20 latin1 latin1_swedish_ci char(20)
|
||||
1.0000 test t10 f2 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t10 f3 date NULL NULL NULL NULL date
|
||||
NULL test t10 f4 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t10 f5 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t10 f6 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t11 f1 char 20 20 latin1 latin1_swedish_ci char(20)
|
||||
1.0000 test t11 f2 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t11 f3 date NULL NULL NULL NULL date
|
||||
NULL test t11 f4 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t11 f5 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t11 f6 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t2 f1 char 20 20 latin1 latin1_swedish_ci char(20)
|
||||
1.0000 test t2 f2 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t2 f3 date NULL NULL NULL NULL date
|
||||
NULL test t2 f4 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t2 f5 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t2 f6 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t3 f1 char 20 20 latin1 latin1_swedish_ci char(20)
|
||||
1.0000 test t3 f2 char 20 20 latin1 latin1_swedish_ci char(20)
|
||||
NULL test t3 f3 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t4 f1 char 20 20 latin1 latin1_swedish_ci char(20)
|
||||
1.0000 test t4 f2 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t4 f3 date NULL NULL NULL NULL date
|
||||
NULL test t4 f4 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t4 f5 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t4 f6 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t7 f1 char 20 20 latin1 latin1_swedish_ci char(20)
|
||||
1.0000 test t7 f2 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t7 f3 date NULL NULL NULL NULL date
|
||||
NULL test t7 f4 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t8 f1 char 20 20 latin1 latin1_swedish_ci char(20)
|
||||
1.0000 test t8 f2 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t8 f3 date NULL NULL NULL NULL date
|
||||
NULL test t8 f4 int NULL NULL NULL NULL int(11)
|
||||
NULL test t9 f1 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test t9 f2 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test t9 f3 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test4 t6 f1 char 20 20 latin1 latin1_swedish_ci char(20)
|
||||
1.0000 test4 t6 f2 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test4 t6 f3 date NULL NULL NULL NULL date
|
||||
NULL test4 t6 f4 int NULL NULL NULL NULL int(11)
|
||||
1.0000 test4 t6 f5 char 25 25 latin1 latin1_swedish_ci char(25)
|
||||
NULL test4 t6 f6 int NULL NULL NULL NULL int(11)
|
||||
DROP DATABASE test1;
|
||||
DROP DATABASE test4;
|
||||
DROP TABLE test.t1;
|
||||
DROP TABLE test.t2;
|
||||
DROP TABLE test.t3;
|
||||
DROP TABLE test.t4;
|
||||
DROP TABLE test.t7;
|
||||
DROP TABLE test.t8;
|
||||
DROP TABLE test.t9;
|
||||
DROP TABLE test.t10;
|
||||
DROP TABLE test.t11;
|
||||
84
build/lib/mysql/mysql-test/suite/funcs_1/r/is_engines.result
Normal file
84
build/lib/mysql/mysql-test/suite/funcs_1/r/is_engines.result
Normal file
@@ -0,0 +1,84 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'ENGINES';
|
||||
Tables_in_information_schema (ENGINES)
|
||||
ENGINES
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.ENGINES;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.ENGINES;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.ENGINES;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.ENGINES;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.12.1: INFORMATION_SCHEMA.ENGINES layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.ENGINES;
|
||||
Field Type Null Key Default Extra
|
||||
ENGINE varchar(64) NO
|
||||
SUPPORT varchar(8) NO
|
||||
COMMENT varchar(80) NO
|
||||
TRANSACTIONS varchar(3) YES NULL
|
||||
XA varchar(3) YES NULL
|
||||
SAVEPOINTS varchar(3) YES NULL
|
||||
SHOW CREATE TABLE information_schema.ENGINES;
|
||||
Table Create Table
|
||||
ENGINES CREATE TEMPORARY TABLE `ENGINES` (
|
||||
`ENGINE` varchar(64) NOT NULL DEFAULT '',
|
||||
`SUPPORT` varchar(8) NOT NULL DEFAULT '',
|
||||
`COMMENT` varchar(80) NOT NULL DEFAULT '',
|
||||
`TRANSACTIONS` varchar(3) DEFAULT NULL,
|
||||
`XA` varchar(3) DEFAULT NULL,
|
||||
`SAVEPOINTS` varchar(3) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.ENGINES;
|
||||
Field Type Null Key Default Extra
|
||||
ENGINE varchar(64) NO
|
||||
SUPPORT varchar(8) NO
|
||||
COMMENT varchar(80) NO
|
||||
TRANSACTIONS varchar(3) YES NULL
|
||||
XA varchar(3) YES NULL
|
||||
SAVEPOINTS varchar(3) YES NULL
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
INSERT INTO information_schema.engines
|
||||
SELECT * FROM information_schema.engines;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.engines SET engine = '1234567';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.engines WHERE support IN ('DEFAULT','YES');
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.engines;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_engines ON information_schema.engines(engine);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.engines DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.engines ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.engines;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.engines RENAME db_datadict.engines;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.engines RENAME information_schema.xengines;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,8 @@
|
||||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'ARCHIVE';
|
||||
ENGINE ARCHIVE
|
||||
SUPPORT YES
|
||||
COMMENT Archive storage engine
|
||||
TRANSACTIONS NO
|
||||
XA NO
|
||||
SAVEPOINTS NO
|
||||
@@ -0,0 +1,8 @@
|
||||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'BLACKHOLE';
|
||||
ENGINE BLACKHOLE
|
||||
SUPPORT YES
|
||||
COMMENT /dev/null storage engine (anything you write to it disappears)
|
||||
TRANSACTIONS NO
|
||||
XA NO
|
||||
SAVEPOINTS NO
|
||||
@@ -0,0 +1,8 @@
|
||||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'CSV';
|
||||
ENGINE CSV
|
||||
SUPPORT YES
|
||||
COMMENT CSV storage engine
|
||||
TRANSACTIONS NO
|
||||
XA NO
|
||||
SAVEPOINTS NO
|
||||
@@ -0,0 +1,8 @@
|
||||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'FEDERATED';
|
||||
ENGINE FEDERATED
|
||||
SUPPORT YES
|
||||
COMMENT Federated MySQL storage engine
|
||||
TRANSACTIONS NO
|
||||
XA NO
|
||||
SAVEPOINTS NO
|
||||
@@ -0,0 +1,8 @@
|
||||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'InnoDB';
|
||||
ENGINE InnoDB
|
||||
SUPPORT YES
|
||||
COMMENT Supports transactions, row-level locking, and foreign keys
|
||||
TRANSACTIONS YES
|
||||
XA YES
|
||||
SAVEPOINTS YES
|
||||
@@ -0,0 +1,8 @@
|
||||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'MEMORY';
|
||||
ENGINE MEMORY
|
||||
SUPPORT YES
|
||||
COMMENT Hash based, stored in memory, useful for temporary tables
|
||||
TRANSACTIONS NO
|
||||
XA NO
|
||||
SAVEPOINTS NO
|
||||
@@ -0,0 +1,8 @@
|
||||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'MRG_MYISAM';
|
||||
ENGINE MRG_MYISAM
|
||||
SUPPORT YES
|
||||
COMMENT Collection of identical MyISAM tables
|
||||
TRANSACTIONS NO
|
||||
XA NO
|
||||
SAVEPOINTS NO
|
||||
@@ -0,0 +1,8 @@
|
||||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'MyISAM';
|
||||
ENGINE MyISAM
|
||||
SUPPORT DEFAULT
|
||||
COMMENT Default engine as of MySQL 3.23 with great performance
|
||||
TRANSACTIONS NO
|
||||
XA NO
|
||||
SAVEPOINTS NO
|
||||
@@ -0,0 +1,8 @@
|
||||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'ndbcluster';
|
||||
ENGINE ndbcluster
|
||||
SUPPORT YES
|
||||
COMMENT Clustered, fault-tolerant tables
|
||||
TRANSACTIONS YES
|
||||
XA NO
|
||||
SAVEPOINTS NO
|
||||
148
build/lib/mysql/mysql-test/suite/funcs_1/r/is_events.result
Normal file
148
build/lib/mysql/mysql-test/suite/funcs_1/r/is_events.result
Normal file
@@ -0,0 +1,148 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'EVENTS';
|
||||
Tables_in_information_schema (EVENTS)
|
||||
EVENTS
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.EVENTS;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.EVENTS;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.EVENTS;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.EVENTS;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.12.1: INFORMATION_SCHEMA.EVENTS layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.EVENTS;
|
||||
Field Type Null Key Default Extra
|
||||
EVENT_CATALOG varchar(64) YES NULL
|
||||
EVENT_SCHEMA varchar(64) NO
|
||||
EVENT_NAME varchar(64) NO
|
||||
DEFINER varchar(77) NO
|
||||
TIME_ZONE varchar(64) NO
|
||||
EVENT_BODY varchar(8) NO
|
||||
EVENT_DEFINITION longtext NO NULL
|
||||
EVENT_TYPE varchar(9) NO
|
||||
EXECUTE_AT datetime YES NULL
|
||||
INTERVAL_VALUE varchar(256) YES NULL
|
||||
INTERVAL_FIELD varchar(18) YES NULL
|
||||
SQL_MODE varchar(8192) NO
|
||||
STARTS datetime YES NULL
|
||||
ENDS datetime YES NULL
|
||||
STATUS varchar(18) NO
|
||||
ON_COMPLETION varchar(12) NO
|
||||
CREATED datetime NO 0000-00-00 00:00:00
|
||||
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
||||
LAST_EXECUTED datetime YES NULL
|
||||
EVENT_COMMENT varchar(64) NO
|
||||
ORIGINATOR bigint(10) NO 0
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
COLLATION_CONNECTION varchar(32) NO
|
||||
DATABASE_COLLATION varchar(32) NO
|
||||
SHOW CREATE TABLE information_schema.EVENTS;
|
||||
Table Create Table
|
||||
EVENTS CREATE TEMPORARY TABLE `EVENTS` (
|
||||
`EVENT_CATALOG` varchar(64) DEFAULT NULL,
|
||||
`EVENT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`EVENT_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFINER` varchar(77) NOT NULL DEFAULT '',
|
||||
`TIME_ZONE` varchar(64) NOT NULL DEFAULT '',
|
||||
`EVENT_BODY` varchar(8) NOT NULL DEFAULT '',
|
||||
`EVENT_DEFINITION` longtext NOT NULL,
|
||||
`EVENT_TYPE` varchar(9) NOT NULL DEFAULT '',
|
||||
`EXECUTE_AT` datetime DEFAULT NULL,
|
||||
`INTERVAL_VALUE` varchar(256) DEFAULT NULL,
|
||||
`INTERVAL_FIELD` varchar(18) DEFAULT NULL,
|
||||
`SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
|
||||
`STARTS` datetime DEFAULT NULL,
|
||||
`ENDS` datetime DEFAULT NULL,
|
||||
`STATUS` varchar(18) NOT NULL DEFAULT '',
|
||||
`ON_COMPLETION` varchar(12) NOT NULL DEFAULT '',
|
||||
`CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`LAST_EXECUTED` datetime DEFAULT NULL,
|
||||
`EVENT_COMMENT` varchar(64) NOT NULL DEFAULT '',
|
||||
`ORIGINATOR` bigint(10) NOT NULL DEFAULT '0',
|
||||
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
|
||||
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
|
||||
`DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.EVENTS;
|
||||
Field Type Null Key Default Extra
|
||||
EVENT_CATALOG varchar(64) YES NULL
|
||||
EVENT_SCHEMA varchar(64) NO
|
||||
EVENT_NAME varchar(64) NO
|
||||
DEFINER varchar(77) NO
|
||||
TIME_ZONE varchar(64) NO
|
||||
EVENT_BODY varchar(8) NO
|
||||
EVENT_DEFINITION longtext NO NULL
|
||||
EVENT_TYPE varchar(9) NO
|
||||
EXECUTE_AT datetime YES NULL
|
||||
INTERVAL_VALUE varchar(256) YES NULL
|
||||
INTERVAL_FIELD varchar(18) YES NULL
|
||||
SQL_MODE varchar(8192) NO
|
||||
STARTS datetime YES NULL
|
||||
ENDS datetime YES NULL
|
||||
STATUS varchar(18) NO
|
||||
ON_COMPLETION varchar(12) NO
|
||||
CREATED datetime NO 0000-00-00 00:00:00
|
||||
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
||||
LAST_EXECUTED datetime YES NULL
|
||||
EVENT_COMMENT varchar(64) NO
|
||||
ORIGINATOR bigint(10) NO 0
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
COLLATION_CONNECTION varchar(32) NO
|
||||
DATABASE_COLLATION varchar(32) NO
|
||||
SELECT event_catalog, event_name, event_body, event_type, event_type,
|
||||
status, on_completion
|
||||
FROM information_schema.events
|
||||
WHERE event_catalog IS NOT NULL or
|
||||
event_body NOT IN ('SQL') or
|
||||
event_type NOT IN ('ONE TIME','RECURRING') or
|
||||
status NOT IN ('ENABLED','DISABLED','SLAVESIDE_DISABLED') or
|
||||
on_completion NOT IN ('PRESERVE','NOT PRESERVE');
|
||||
event_catalog event_name event_body event_type event_type status on_completion
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
INSERT INTO information_schema.events
|
||||
SELECT * FROM information_schema.events;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.events SET event_name = '1234567'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.events WHERE event_catalog IS NULL;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.events;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_events ON information_schema.events(event_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.events DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.events ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.events;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.events RENAME db_datadict.events;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.events RENAME information_schema.xevents;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,370 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'KEY_COLUMN_USAGE';
|
||||
Tables_in_information_schema (KEY_COLUMN_USAGE)
|
||||
KEY_COLUMN_USAGE
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.KEY_COLUMN_USAGE;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.KEY_COLUMN_USAGE;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.KEY_COLUMN_USAGE;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.KEY_COLUMN_USAGE;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.7.1: INFORMATION_SCHEMA.KEY_COLUMN_USAGE layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.KEY_COLUMN_USAGE;
|
||||
Field Type Null Key Default Extra
|
||||
CONSTRAINT_CATALOG varchar(512) YES NULL
|
||||
CONSTRAINT_SCHEMA varchar(64) NO
|
||||
CONSTRAINT_NAME varchar(64) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
COLUMN_NAME varchar(64) NO
|
||||
ORDINAL_POSITION bigint(10) NO 0
|
||||
POSITION_IN_UNIQUE_CONSTRAINT bigint(10) YES NULL
|
||||
REFERENCED_TABLE_SCHEMA varchar(64) YES NULL
|
||||
REFERENCED_TABLE_NAME varchar(64) YES NULL
|
||||
REFERENCED_COLUMN_NAME varchar(64) YES NULL
|
||||
SHOW CREATE TABLE information_schema.KEY_COLUMN_USAGE;
|
||||
Table Create Table
|
||||
KEY_COLUMN_USAGE CREATE TEMPORARY TABLE `KEY_COLUMN_USAGE` (
|
||||
`CONSTRAINT_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`CONSTRAINT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`CONSTRAINT_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`ORDINAL_POSITION` bigint(10) NOT NULL DEFAULT '0',
|
||||
`POSITION_IN_UNIQUE_CONSTRAINT` bigint(10) DEFAULT NULL,
|
||||
`REFERENCED_TABLE_SCHEMA` varchar(64) DEFAULT NULL,
|
||||
`REFERENCED_TABLE_NAME` varchar(64) DEFAULT NULL,
|
||||
`REFERENCED_COLUMN_NAME` varchar(64) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.KEY_COLUMN_USAGE;
|
||||
Field Type Null Key Default Extra
|
||||
CONSTRAINT_CATALOG varchar(512) YES NULL
|
||||
CONSTRAINT_SCHEMA varchar(64) NO
|
||||
CONSTRAINT_NAME varchar(64) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
COLUMN_NAME varchar(64) NO
|
||||
ORDINAL_POSITION bigint(10) NO 0
|
||||
POSITION_IN_UNIQUE_CONSTRAINT bigint(10) YES NULL
|
||||
REFERENCED_TABLE_SCHEMA varchar(64) YES NULL
|
||||
REFERENCED_TABLE_NAME varchar(64) YES NULL
|
||||
REFERENCED_COLUMN_NAME varchar(64) YES NULL
|
||||
SELECT constraint_catalog, constraint_schema, constraint_name, table_catalog,
|
||||
table_schema, table_name, column_name
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
|
||||
constraint_catalog constraint_schema constraint_name table_catalog table_schema table_name column_name
|
||||
########################################################################################
|
||||
# Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.KEY_COLUMN_USAGE accessible information
|
||||
########################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
USE db_datadict;
|
||||
CREATE TABLE t1_1
|
||||
(f1 INT NOT NULL, PRIMARY KEY(f1),
|
||||
f2 INT, INDEX f2_ind(f2))
|
||||
ENGINE = <engine_type>;
|
||||
GRANT SELECT ON t1_1 to 'testuser1'@'localhost';
|
||||
CREATE TABLE t1_2
|
||||
(f1 INT NOT NULL, PRIMARY KEY(f1),
|
||||
f2 INT, INDEX f2_ind(f2))
|
||||
ENGINE = <engine_type>;
|
||||
GRANT SELECT ON t1_2 to 'testuser2'@'localhost';
|
||||
SELECT * FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
||||
table_catalog, table_schema, table_name, ordinal_position;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||
NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
||||
NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
||||
table_catalog, table_schema, table_name, ordinal_position;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||
NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
||||
table_catalog, table_schema, table_name, ordinal_position;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||
NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
||||
# Switch to connection default and close connections testuser1, testuser2
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP TABLE t1_1;
|
||||
DROP TABLE t1_2;
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
########################################################################################
|
||||
# Testcase 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.KEY_COLUMN_USAGE modifications
|
||||
########################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
DROP TABLE IF EXISTS test.t1_my_table;
|
||||
CREATE DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
CREATE TABLE test.t1_my_table
|
||||
(f1 CHAR(12), f2 TIMESTAMP, f4 BIGINT, PRIMARY KEY(f1,f2))
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
ENGINE = <engine_type>;
|
||||
SELECT * FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_table';
|
||||
CONSTRAINT_CATALOG NULL
|
||||
CONSTRAINT_SCHEMA test
|
||||
CONSTRAINT_NAME PRIMARY
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_table
|
||||
COLUMN_NAME f1
|
||||
ORDINAL_POSITION 1
|
||||
POSITION_IN_UNIQUE_CONSTRAINT NULL
|
||||
REFERENCED_TABLE_SCHEMA NULL
|
||||
REFERENCED_TABLE_NAME NULL
|
||||
REFERENCED_COLUMN_NAME NULL
|
||||
CONSTRAINT_CATALOG NULL
|
||||
CONSTRAINT_SCHEMA test
|
||||
CONSTRAINT_NAME PRIMARY
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_table
|
||||
COLUMN_NAME f2
|
||||
ORDINAL_POSITION 2
|
||||
POSITION_IN_UNIQUE_CONSTRAINT NULL
|
||||
REFERENCED_TABLE_SCHEMA NULL
|
||||
REFERENCED_TABLE_NAME NULL
|
||||
REFERENCED_COLUMN_NAME NULL
|
||||
SELECT DISTINCT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_table
|
||||
RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
|
||||
SELECT DISTINCT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
SELECT DISTINCT table_schema,table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
test t1_my_tablex
|
||||
RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
|
||||
SELECT DISTINCT table_schema,table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
db_datadict t1_my_tablex
|
||||
SELECT DISTINCT table_name, column_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_name, column_name;
|
||||
table_name column_name
|
||||
t1_my_tablex f1
|
||||
t1_my_tablex f2
|
||||
ALTER TABLE db_datadict.t1_my_tablex CHANGE COLUMN f1 first_col CHAR(12);
|
||||
SELECT DISTINCT table_name, column_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_name, column_name;
|
||||
table_name column_name
|
||||
t1_my_tablex f2
|
||||
t1_my_tablex first_col
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
CREATE INDEX f2 ON db_datadict.t1_my_tablex(f2);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
DROP INDEX f2 ON db_datadict.t1_my_tablex;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE (f2);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict f2 db_datadict t1_my_tablex f2 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
DROP INDEX f2 ON db_datadict.t1_my_tablex;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f2);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict my_idx db_datadict t1_my_tablex f2 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
DROP INDEX my_idx ON db_datadict.t1_my_tablex;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f4,first_col);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict my_idx db_datadict t1_my_tablex f4 1
|
||||
db_datadict my_idx db_datadict t1_my_tablex first_col 2
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict my_idx db_datadict t1_my_tablex f4 1
|
||||
db_datadict my_idx db_datadict t1_my_tablex first_col 2
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
DROP COLUMN first_col;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict my_idx db_datadict t1_my_tablex f4 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 1
|
||||
SELECT table_name, column_name
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_name, column_name;
|
||||
table_name column_name
|
||||
t1_my_tablex f2
|
||||
t1_my_tablex f4
|
||||
DROP TABLE db_datadict.t1_my_tablex;
|
||||
SELECT table_name, column_name
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
CREATE TABLE db_datadict.t1_my_tablex
|
||||
ENGINE = <engine_type> AS
|
||||
SELECT 1 AS f1;
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD PRIMARY KEY(f1);
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA table are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
DROP TABLE IF EXISTS db_datadict.t1;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
INSERT INTO information_schema.key_column_usage
|
||||
(constraint_schema, constraint_name, table_name)
|
||||
VALUES ( 'mysql', 'primary', 'db');
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
INSERT INTO information_schema.key_column_usage
|
||||
SELECT * FROM information_schema.key_column_usage;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.key_column_usage
|
||||
SET table_name = 'db1' WHERE constraint_name = 'primary';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.key_column_usage WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.key_column_usage;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX i3 ON information_schema.key_column_usage(table_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.key_column_usage ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.key_column_usage;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.key_column_usage
|
||||
RENAME db_datadict.key_column_usage;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.key_column_usage
|
||||
RENAME information_schema.xkey_column_usage;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE db_datadict.t1;
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,372 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'KEY_COLUMN_USAGE';
|
||||
Tables_in_information_schema (KEY_COLUMN_USAGE)
|
||||
KEY_COLUMN_USAGE
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.KEY_COLUMN_USAGE;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.KEY_COLUMN_USAGE;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.KEY_COLUMN_USAGE;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.KEY_COLUMN_USAGE;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.7.1: INFORMATION_SCHEMA.KEY_COLUMN_USAGE layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.KEY_COLUMN_USAGE;
|
||||
Field Type Null Key Default Extra
|
||||
CONSTRAINT_CATALOG varchar(512) YES NULL
|
||||
CONSTRAINT_SCHEMA varchar(64) NO
|
||||
CONSTRAINT_NAME varchar(64) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
COLUMN_NAME varchar(64) NO
|
||||
ORDINAL_POSITION bigint(10) NO 0
|
||||
POSITION_IN_UNIQUE_CONSTRAINT bigint(10) YES NULL
|
||||
REFERENCED_TABLE_SCHEMA varchar(64) YES NULL
|
||||
REFERENCED_TABLE_NAME varchar(64) YES NULL
|
||||
REFERENCED_COLUMN_NAME varchar(64) YES NULL
|
||||
SHOW CREATE TABLE information_schema.KEY_COLUMN_USAGE;
|
||||
Table Create Table
|
||||
KEY_COLUMN_USAGE CREATE TEMPORARY TABLE `KEY_COLUMN_USAGE` (
|
||||
`CONSTRAINT_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`CONSTRAINT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`CONSTRAINT_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`ORDINAL_POSITION` bigint(10) NOT NULL DEFAULT '0',
|
||||
`POSITION_IN_UNIQUE_CONSTRAINT` bigint(10) DEFAULT NULL,
|
||||
`REFERENCED_TABLE_SCHEMA` varchar(64) DEFAULT NULL,
|
||||
`REFERENCED_TABLE_NAME` varchar(64) DEFAULT NULL,
|
||||
`REFERENCED_COLUMN_NAME` varchar(64) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.KEY_COLUMN_USAGE;
|
||||
Field Type Null Key Default Extra
|
||||
CONSTRAINT_CATALOG varchar(512) YES NULL
|
||||
CONSTRAINT_SCHEMA varchar(64) NO
|
||||
CONSTRAINT_NAME varchar(64) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
COLUMN_NAME varchar(64) NO
|
||||
ORDINAL_POSITION bigint(10) NO 0
|
||||
POSITION_IN_UNIQUE_CONSTRAINT bigint(10) YES NULL
|
||||
REFERENCED_TABLE_SCHEMA varchar(64) YES NULL
|
||||
REFERENCED_TABLE_NAME varchar(64) YES NULL
|
||||
REFERENCED_COLUMN_NAME varchar(64) YES NULL
|
||||
SELECT constraint_catalog, constraint_schema, constraint_name, table_catalog,
|
||||
table_schema, table_name, column_name
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
|
||||
constraint_catalog constraint_schema constraint_name table_catalog table_schema table_name column_name
|
||||
########################################################################################
|
||||
# Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.KEY_COLUMN_USAGE accessible information
|
||||
########################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
USE db_datadict;
|
||||
CREATE TABLE t1_1
|
||||
(f1 INT NOT NULL, PRIMARY KEY(f1),
|
||||
f2 INT, INDEX f2_ind(f2))
|
||||
ENGINE = <engine_type>;
|
||||
GRANT SELECT ON t1_1 to 'testuser1'@'localhost';
|
||||
CREATE TABLE t1_2
|
||||
(f1 INT NOT NULL, PRIMARY KEY(f1),
|
||||
f2 INT, INDEX f2_ind(f2))
|
||||
ENGINE = <engine_type>;
|
||||
GRANT SELECT ON t1_2 to 'testuser2'@'localhost';
|
||||
SELECT * FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
||||
table_catalog, table_schema, table_name, ordinal_position;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||
NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
||||
NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
||||
table_catalog, table_schema, table_name, ordinal_position;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||
NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
||||
NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
||||
table_catalog, table_schema, table_name, ordinal_position;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||
NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
||||
NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
||||
# Switch to connection default and close connections testuser1, testuser2
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP TABLE t1_1;
|
||||
DROP TABLE t1_2;
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
########################################################################################
|
||||
# Testcase 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.KEY_COLUMN_USAGE modifications
|
||||
########################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
DROP TABLE IF EXISTS test.t1_my_table;
|
||||
CREATE DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
CREATE TABLE test.t1_my_table
|
||||
(f1 CHAR(12), f2 TIMESTAMP, f4 BIGINT, PRIMARY KEY(f1,f2))
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
ENGINE = <engine_type>;
|
||||
SELECT * FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_table';
|
||||
CONSTRAINT_CATALOG NULL
|
||||
CONSTRAINT_SCHEMA test
|
||||
CONSTRAINT_NAME PRIMARY
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_table
|
||||
COLUMN_NAME f1
|
||||
ORDINAL_POSITION 1
|
||||
POSITION_IN_UNIQUE_CONSTRAINT NULL
|
||||
REFERENCED_TABLE_SCHEMA NULL
|
||||
REFERENCED_TABLE_NAME NULL
|
||||
REFERENCED_COLUMN_NAME NULL
|
||||
CONSTRAINT_CATALOG NULL
|
||||
CONSTRAINT_SCHEMA test
|
||||
CONSTRAINT_NAME PRIMARY
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_table
|
||||
COLUMN_NAME f2
|
||||
ORDINAL_POSITION 2
|
||||
POSITION_IN_UNIQUE_CONSTRAINT NULL
|
||||
REFERENCED_TABLE_SCHEMA NULL
|
||||
REFERENCED_TABLE_NAME NULL
|
||||
REFERENCED_COLUMN_NAME NULL
|
||||
SELECT DISTINCT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_table
|
||||
RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
|
||||
SELECT DISTINCT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
SELECT DISTINCT table_schema,table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
test t1_my_tablex
|
||||
RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
|
||||
SELECT DISTINCT table_schema,table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
db_datadict t1_my_tablex
|
||||
SELECT DISTINCT table_name, column_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_name, column_name;
|
||||
table_name column_name
|
||||
t1_my_tablex f1
|
||||
t1_my_tablex f2
|
||||
ALTER TABLE db_datadict.t1_my_tablex CHANGE COLUMN f1 first_col CHAR(12);
|
||||
SELECT DISTINCT table_name, column_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_name, column_name;
|
||||
table_name column_name
|
||||
t1_my_tablex f2
|
||||
t1_my_tablex first_col
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
CREATE INDEX f2 ON db_datadict.t1_my_tablex(f2);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
DROP INDEX f2 ON db_datadict.t1_my_tablex;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE (f2);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict f2 db_datadict t1_my_tablex f2 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
DROP INDEX f2 ON db_datadict.t1_my_tablex;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f2);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict my_idx db_datadict t1_my_tablex f2 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
DROP INDEX my_idx ON db_datadict.t1_my_tablex;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f4,first_col);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict my_idx db_datadict t1_my_tablex f4 1
|
||||
db_datadict my_idx db_datadict t1_my_tablex first_col 2
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict my_idx db_datadict t1_my_tablex f4 1
|
||||
db_datadict my_idx db_datadict t1_my_tablex first_col 2
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
DROP COLUMN first_col;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, column_name, ordinal_position
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
||||
table_name, ordinal_position;
|
||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
||||
db_datadict my_idx db_datadict t1_my_tablex f4 1
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 1
|
||||
SELECT table_name, column_name
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_name, column_name;
|
||||
table_name column_name
|
||||
t1_my_tablex f2
|
||||
t1_my_tablex f4
|
||||
DROP TABLE db_datadict.t1_my_tablex;
|
||||
SELECT table_name, column_name
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name column_name
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
CREATE TABLE db_datadict.t1_my_tablex
|
||||
ENGINE = <engine_type> AS
|
||||
SELECT 1 AS f1;
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD PRIMARY KEY(f1);
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.key_column_usage
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA table are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
DROP TABLE IF EXISTS db_datadict.t1;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
INSERT INTO information_schema.key_column_usage
|
||||
(constraint_schema, constraint_name, table_name)
|
||||
VALUES ( 'mysql', 'primary', 'db');
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
INSERT INTO information_schema.key_column_usage
|
||||
SELECT * FROM information_schema.key_column_usage;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.key_column_usage
|
||||
SET table_name = 'db1' WHERE constraint_name = 'primary';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.key_column_usage WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.key_column_usage;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX i3 ON information_schema.key_column_usage(table_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.key_column_usage ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.key_column_usage;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.key_column_usage
|
||||
RENAME db_datadict.key_column_usage;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.key_column_usage
|
||||
RENAME information_schema.xkey_column_usage;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE db_datadict.t1;
|
||||
DROP DATABASE db_datadict;
|
||||
636
build/lib/mysql/mysql-test/suite/funcs_1/r/is_routines.result
Normal file
636
build/lib/mysql/mysql-test/suite/funcs_1/r/is_routines.result
Normal file
@@ -0,0 +1,636 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'ROUTINES';
|
||||
Tables_in_information_schema (ROUTINES)
|
||||
ROUTINES
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.ROUTINES;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.ROUTINES;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.ROUTINES;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.ROUTINES;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.8.1: INFORMATION_SCHEMA.ROUTINES layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.ROUTINES;
|
||||
Field Type Null Key Default Extra
|
||||
SPECIFIC_NAME varchar(64) NO
|
||||
ROUTINE_CATALOG varchar(512) YES NULL
|
||||
ROUTINE_SCHEMA varchar(64) NO
|
||||
ROUTINE_NAME varchar(64) NO
|
||||
ROUTINE_TYPE varchar(9) NO
|
||||
DTD_IDENTIFIER varchar(64) YES NULL
|
||||
ROUTINE_BODY varchar(8) NO
|
||||
ROUTINE_DEFINITION longtext YES NULL
|
||||
EXTERNAL_NAME varchar(64) YES NULL
|
||||
EXTERNAL_LANGUAGE varchar(64) YES NULL
|
||||
PARAMETER_STYLE varchar(8) NO
|
||||
IS_DETERMINISTIC varchar(3) NO
|
||||
SQL_DATA_ACCESS varchar(64) NO
|
||||
SQL_PATH varchar(64) YES NULL
|
||||
SECURITY_TYPE varchar(7) NO
|
||||
CREATED datetime NO 0000-00-00 00:00:00
|
||||
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
||||
SQL_MODE varchar(8192) NO
|
||||
ROUTINE_COMMENT varchar(64) NO
|
||||
DEFINER varchar(77) NO
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
COLLATION_CONNECTION varchar(32) NO
|
||||
DATABASE_COLLATION varchar(32) NO
|
||||
SHOW CREATE TABLE information_schema.ROUTINES;
|
||||
Table Create Table
|
||||
ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
|
||||
`SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`ROUTINE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '',
|
||||
`DTD_IDENTIFIER` varchar(64) DEFAULT NULL,
|
||||
`ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '',
|
||||
`ROUTINE_DEFINITION` longtext,
|
||||
`EXTERNAL_NAME` varchar(64) DEFAULT NULL,
|
||||
`EXTERNAL_LANGUAGE` varchar(64) DEFAULT NULL,
|
||||
`PARAMETER_STYLE` varchar(8) NOT NULL DEFAULT '',
|
||||
`IS_DETERMINISTIC` varchar(3) NOT NULL DEFAULT '',
|
||||
`SQL_DATA_ACCESS` varchar(64) NOT NULL DEFAULT '',
|
||||
`SQL_PATH` varchar(64) DEFAULT NULL,
|
||||
`SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
|
||||
`CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
|
||||
`ROUTINE_COMMENT` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFINER` varchar(77) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
|
||||
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
|
||||
`DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.ROUTINES;
|
||||
Field Type Null Key Default Extra
|
||||
SPECIFIC_NAME varchar(64) NO
|
||||
ROUTINE_CATALOG varchar(512) YES NULL
|
||||
ROUTINE_SCHEMA varchar(64) NO
|
||||
ROUTINE_NAME varchar(64) NO
|
||||
ROUTINE_TYPE varchar(9) NO
|
||||
DTD_IDENTIFIER varchar(64) YES NULL
|
||||
ROUTINE_BODY varchar(8) NO
|
||||
ROUTINE_DEFINITION longtext YES NULL
|
||||
EXTERNAL_NAME varchar(64) YES NULL
|
||||
EXTERNAL_LANGUAGE varchar(64) YES NULL
|
||||
PARAMETER_STYLE varchar(8) NO
|
||||
IS_DETERMINISTIC varchar(3) NO
|
||||
SQL_DATA_ACCESS varchar(64) NO
|
||||
SQL_PATH varchar(64) YES NULL
|
||||
SECURITY_TYPE varchar(7) NO
|
||||
CREATED datetime NO 0000-00-00 00:00:00
|
||||
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
||||
SQL_MODE varchar(8192) NO
|
||||
ROUTINE_COMMENT varchar(64) NO
|
||||
DEFINER varchar(77) NO
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
COLLATION_CONNECTION varchar(32) NO
|
||||
DATABASE_COLLATION varchar(32) NO
|
||||
USE test;
|
||||
DROP PROCEDURE IF EXISTS sp_for_routines;
|
||||
DROP FUNCTION IF EXISTS function_for_routines;
|
||||
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
||||
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
||||
SELECT specific_name,routine_catalog,routine_schema,routine_name,routine_type,
|
||||
routine_body,external_name,external_language,parameter_style,sql_path
|
||||
FROM information_schema.routines
|
||||
WHERE routine_schema = 'test' AND
|
||||
(routine_catalog IS NOT NULL OR external_name IS NOT NULL
|
||||
OR external_language IS NOT NULL OR sql_path IS NOT NULL
|
||||
OR routine_body <> 'SQL' OR parameter_style <> 'SQL'
|
||||
OR specific_name <> routine_name);
|
||||
specific_name routine_catalog routine_schema routine_name routine_type routine_body external_name external_language parameter_style sql_path
|
||||
DROP PROCEDURE sp_for_routines;
|
||||
DROP FUNCTION function_for_routines;
|
||||
################################################################################
|
||||
# Testcase 3.2.8.2 + 3.2.8.3: INFORMATION_SCHEMA.ROUTINES accessible information
|
||||
################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
DROP DATABASE IF EXISTS db_datadict_2;
|
||||
CREATE DATABASE db_datadict;
|
||||
USE db_datadict;
|
||||
CREATE TABLE res_6_408002_1(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
|
||||
ENGINE = <other_engine_type>;
|
||||
INSERT INTO res_6_408002_1(f1, f2, f3, f4)
|
||||
VALUES('abc', 'xyz', '1989-11-09', 0815);
|
||||
DROP PROCEDURE IF EXISTS sp_6_408002_1;
|
||||
CREATE PROCEDURE sp_6_408002_1()
|
||||
BEGIN
|
||||
SELECT * FROM db_datadict.res_6_408002_1;
|
||||
END//
|
||||
CREATE DATABASE db_datadict_2;
|
||||
USE db_datadict_2;
|
||||
CREATE TABLE res_6_408002_2(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
|
||||
ENGINE = <other_engine_type>;
|
||||
INSERT INTO res_6_408002_2(f1, f2, f3, f4)
|
||||
VALUES('abc', 'xyz', '1990-10-03', 4711);
|
||||
DROP PROCEDURE IF EXISTS sp_6_408002_2;
|
||||
CREATE PROCEDURE sp_6_408002_2()
|
||||
BEGIN
|
||||
SELECT * FROM db_datadict_2.res_6_408002_2;
|
||||
END//
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
GRANT SELECT ON db_datadict_2.* TO 'testuser1'@'localhost';
|
||||
GRANT EXECUTE ON db_datadict_2.* TO 'testuser1'@'localhost';
|
||||
GRANT EXECUTE ON db_datadict.* TO 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict.* TO 'testuser2'@'localhost';
|
||||
GRANT EXECUTE ON PROCEDURE db_datadict_2.sp_6_408002_2
|
||||
TO 'testuser2'@'localhost';
|
||||
GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.routines;
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.routines;
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
SELECT * FROM information_schema.routines;
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
# Switch to connection default and close connections testuser1,testuser2,testuser3
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
USE test;
|
||||
DROP DATABASE db_datadict;
|
||||
DROP DATABASE db_datadict_2;
|
||||
#########################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.ROUTINES modifications
|
||||
#########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
USE db_datadict;
|
||||
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
||||
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
||||
ORDER BY routine_name;
|
||||
SPECIFIC_NAME function_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME function_for_routines
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER int(11)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION RETURN 0
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME sp_for_routines
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION SELECT 'db_datadict'
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
ALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER;
|
||||
ALTER FUNCTION function_for_routines COMMENT 'updated comments';
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
||||
ORDER BY routine_name;
|
||||
SPECIFIC_NAME function_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME function_for_routines
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER int(11)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION RETURN 0
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT updated comments
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME sp_for_routines
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION SELECT 'db_datadict'
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
DROP PROCEDURE sp_for_routines;
|
||||
DROP FUNCTION function_for_routines;
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
||||
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
||||
ORDER BY routine_name;
|
||||
SPECIFIC_NAME function_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME function_for_routines
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER int(11)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION RETURN 0
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME sp_for_routines
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION SELECT 'db_datadict'
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
use test;
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
#########################################################################
|
||||
# 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
|
||||
# ROUTINE_DEFINITION column
|
||||
#########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
USE db_datadict;
|
||||
CREATE TABLE db_datadict.res_6_408004_1
|
||||
(f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
|
||||
ENGINE = <other_engine_type>;
|
||||
INSERT INTO db_datadict.res_6_408004_1
|
||||
VALUES ('abc', 98765 , 99999999 , 98765, 10);
|
||||
CREATE TABLE db_datadict.res_6_408004_2
|
||||
(f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
|
||||
ENGINE = <other_engine_type>;
|
||||
INSERT INTO db_datadict.res_6_408004_2
|
||||
VALUES ('abc', 98765 , 99999999 , 98765, 10);
|
||||
# Checking the max. possible length of (currently) 4 GByte is not
|
||||
# in this environment here.
|
||||
CREATE PROCEDURE sp_6_408004 ()
|
||||
BEGIN
|
||||
DECLARE done INTEGER DEFAULt 0;
|
||||
DECLARE variable_number_1 LONGTEXT;
|
||||
DECLARE variable_number_2 MEDIUMINT;
|
||||
DECLARE variable_number_3 LONGBLOB;
|
||||
DECLARE variable_number_4 REAL;
|
||||
DECLARE variable_number_5 YEAR;
|
||||
DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
|
||||
BEGIN
|
||||
OPEN cursor_number_1;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_1
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
BEGIN
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_2;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_2
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES(variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
SET done = 0;
|
||||
OPEN cursor_number_3;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_3
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES(variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
END;
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_4;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_4
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
BEGIN
|
||||
SET @a='test row';
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
END;
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_5;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_5
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
BEGIN
|
||||
SET @a='test row';
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
END;
|
||||
END//
|
||||
CALL db_datadict.sp_6_408004 ();
|
||||
@a
|
||||
test row
|
||||
@a
|
||||
test row
|
||||
@a
|
||||
test row
|
||||
@a
|
||||
test row
|
||||
@a
|
||||
test row
|
||||
@a
|
||||
test row
|
||||
SELECT * FROM db_datadict.res_6_408004_2;
|
||||
f1 f2 f3 f4 f5
|
||||
abc 98765 99999999 98765 2010
|
||||
abc 98765 99999999 98765 2010
|
||||
abc 98765 99999999 98765 2010
|
||||
abc 98765 99999999 98765 2010
|
||||
abc 98765 99999999 98765 2010
|
||||
abc 98765 99999999 98765 2010
|
||||
SELECT *, LENGTH(routine_definition) FROM information_schema.routines
|
||||
WHERE routine_schema = 'db_datadict';
|
||||
SPECIFIC_NAME sp_6_408004
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME sp_6_408004
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
DECLARE done INTEGER DEFAULt 0;
|
||||
DECLARE variable_number_1 LONGTEXT;
|
||||
DECLARE variable_number_2 MEDIUMINT;
|
||||
DECLARE variable_number_3 LONGBLOB;
|
||||
DECLARE variable_number_4 REAL;
|
||||
DECLARE variable_number_5 YEAR;
|
||||
DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
|
||||
BEGIN
|
||||
OPEN cursor_number_1;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_1
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
BEGIN
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_2;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_2
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES(variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
SET done = 0;
|
||||
OPEN cursor_number_3;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_3
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES(variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
END;
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_4;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_4
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
BEGIN
|
||||
SET @a='test row';
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
END;
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_5;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_5
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
BEGIN
|
||||
SET @a='test row';
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
END;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED YYYY-MM-DD hh:mm:ss
|
||||
LAST_ALTERED YYYY-MM-DD hh:mm:ss
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
LENGTH(routine_definition) 2549
|
||||
DROP DATABASE db_datadict;
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA table are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
USE db_datadict;
|
||||
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
||||
USE test;
|
||||
INSERT INTO information_schema.routines (routine_name, routine_type )
|
||||
VALUES ('p2', 'procedure');
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.routines SET routine_name = 'p2'
|
||||
WHERE routine_body = 'sql';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.routines ;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.routines ;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX i7 ON information_schema.routines (routine_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.routines ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.routines DISCARD TABLESPACE;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.routines ;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.routines RENAME db_datadict.routines;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.routines RENAME information_schema.xroutines;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,650 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'ROUTINES';
|
||||
Tables_in_information_schema (ROUTINES)
|
||||
ROUTINES
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.ROUTINES;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.ROUTINES;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.ROUTINES;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.ROUTINES;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.8.1: INFORMATION_SCHEMA.ROUTINES layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.ROUTINES;
|
||||
Field Type Null Key Default Extra
|
||||
SPECIFIC_NAME varchar(64) NO
|
||||
ROUTINE_CATALOG varchar(512) YES NULL
|
||||
ROUTINE_SCHEMA varchar(64) NO
|
||||
ROUTINE_NAME varchar(64) NO
|
||||
ROUTINE_TYPE varchar(9) NO
|
||||
DTD_IDENTIFIER varchar(64) YES NULL
|
||||
ROUTINE_BODY varchar(8) NO
|
||||
ROUTINE_DEFINITION longtext YES NULL
|
||||
EXTERNAL_NAME varchar(64) YES NULL
|
||||
EXTERNAL_LANGUAGE varchar(64) YES NULL
|
||||
PARAMETER_STYLE varchar(8) NO
|
||||
IS_DETERMINISTIC varchar(3) NO
|
||||
SQL_DATA_ACCESS varchar(64) NO
|
||||
SQL_PATH varchar(64) YES NULL
|
||||
SECURITY_TYPE varchar(7) NO
|
||||
CREATED datetime NO 0000-00-00 00:00:00
|
||||
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
||||
SQL_MODE longtext NO NULL
|
||||
ROUTINE_COMMENT varchar(64) NO
|
||||
DEFINER varchar(77) NO
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
COLLATION_CONNECTION varchar(32) NO
|
||||
DATABASE_COLLATION varchar(32) NO
|
||||
SHOW CREATE TABLE information_schema.ROUTINES;
|
||||
Table Create Table
|
||||
ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
|
||||
`SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`ROUTINE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '',
|
||||
`DTD_IDENTIFIER` varchar(64) DEFAULT NULL,
|
||||
`ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '',
|
||||
`ROUTINE_DEFINITION` longtext,
|
||||
`EXTERNAL_NAME` varchar(64) DEFAULT NULL,
|
||||
`EXTERNAL_LANGUAGE` varchar(64) DEFAULT NULL,
|
||||
`PARAMETER_STYLE` varchar(8) NOT NULL DEFAULT '',
|
||||
`IS_DETERMINISTIC` varchar(3) NOT NULL DEFAULT '',
|
||||
`SQL_DATA_ACCESS` varchar(64) NOT NULL DEFAULT '',
|
||||
`SQL_PATH` varchar(64) DEFAULT NULL,
|
||||
`SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
|
||||
`CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`SQL_MODE` longtext NOT NULL,
|
||||
`ROUTINE_COMMENT` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFINER` varchar(77) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
|
||||
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
|
||||
`DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.ROUTINES;
|
||||
Field Type Null Key Default Extra
|
||||
SPECIFIC_NAME varchar(64) NO
|
||||
ROUTINE_CATALOG varchar(512) YES NULL
|
||||
ROUTINE_SCHEMA varchar(64) NO
|
||||
ROUTINE_NAME varchar(64) NO
|
||||
ROUTINE_TYPE varchar(9) NO
|
||||
DTD_IDENTIFIER varchar(64) YES NULL
|
||||
ROUTINE_BODY varchar(8) NO
|
||||
ROUTINE_DEFINITION longtext YES NULL
|
||||
EXTERNAL_NAME varchar(64) YES NULL
|
||||
EXTERNAL_LANGUAGE varchar(64) YES NULL
|
||||
PARAMETER_STYLE varchar(8) NO
|
||||
IS_DETERMINISTIC varchar(3) NO
|
||||
SQL_DATA_ACCESS varchar(64) NO
|
||||
SQL_PATH varchar(64) YES NULL
|
||||
SECURITY_TYPE varchar(7) NO
|
||||
CREATED datetime NO 0000-00-00 00:00:00
|
||||
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
||||
SQL_MODE longtext NO NULL
|
||||
ROUTINE_COMMENT varchar(64) NO
|
||||
DEFINER varchar(77) NO
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
COLLATION_CONNECTION varchar(32) NO
|
||||
DATABASE_COLLATION varchar(32) NO
|
||||
USE test;
|
||||
DROP PROCEDURE IF EXISTS sp_for_routines;
|
||||
DROP FUNCTION IF EXISTS function_for_routines;
|
||||
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
||||
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
||||
SELECT specific_name,routine_catalog,routine_schema,routine_name,routine_type,
|
||||
routine_body,external_name,external_language,parameter_style,sql_path
|
||||
FROM information_schema.routines
|
||||
WHERE routine_catalog IS NOT NULL OR external_name IS NOT NULL
|
||||
OR external_language IS NOT NULL OR sql_path IS NOT NULL
|
||||
OR routine_body <> 'SQL' OR parameter_style <> 'SQL'
|
||||
OR specific_name <> routine_name;
|
||||
specific_name routine_catalog routine_schema routine_name routine_type routine_body external_name external_language parameter_style sql_path
|
||||
DROP PROCEDURE sp_for_routines;
|
||||
DROP FUNCTION function_for_routines;
|
||||
################################################################################
|
||||
# Testcase 3.2.8.2 + 3.2.8.3: INFORMATION_SCHEMA.ROUTINES accessible information
|
||||
################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
DROP DATABASE IF EXISTS db_datadict_2;
|
||||
CREATE DATABASE db_datadict;
|
||||
USE db_datadict;
|
||||
CREATE TABLE res_6_408002_1(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
|
||||
ENGINE = <other_engine_type>;
|
||||
INSERT INTO res_6_408002_1(f1, f2, f3, f4)
|
||||
VALUES('abc', 'xyz', '1989-11-09', 0815);
|
||||
DROP PROCEDURE IF EXISTS sp_6_408002_1;
|
||||
CREATE PROCEDURE sp_6_408002_1()
|
||||
BEGIN
|
||||
SELECT * FROM db_datadict.res_6_408002_1;
|
||||
END//
|
||||
CREATE DATABASE db_datadict_2;
|
||||
USE db_datadict_2;
|
||||
CREATE TABLE res_6_408002_2(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
|
||||
ENGINE = <other_engine_type>;
|
||||
INSERT INTO res_6_408002_2(f1, f2, f3, f4)
|
||||
VALUES('abc', 'xyz', '1990-10-03', 4711);
|
||||
DROP PROCEDURE IF EXISTS sp_6_408002_2;
|
||||
CREATE PROCEDURE sp_6_408002_2()
|
||||
BEGIN
|
||||
SELECT * FROM db_datadict_2.res_6_408002_2;
|
||||
END//
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
GRANT SELECT ON db_datadict_2.* TO 'testuser1'@'localhost';
|
||||
GRANT EXECUTE ON db_datadict_2.* TO 'testuser1'@'localhost';
|
||||
GRANT EXECUTE ON db_datadict.* TO 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict.* TO 'testuser2'@'localhost';
|
||||
GRANT EXECUTE ON PROCEDURE db_datadict_2.sp_6_408002_2
|
||||
TO 'testuser2'@'localhost';
|
||||
GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.routines;
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL BEGIN
|
||||
SELECT * FROM db_datadict.res_6_408002_1;
|
||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL BEGIN
|
||||
SELECT * FROM db_datadict_2.res_6_408002_2;
|
||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.routines;
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL BEGIN
|
||||
SELECT * FROM db_datadict.res_6_408002_1;
|
||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL BEGIN
|
||||
SELECT * FROM db_datadict_2.res_6_408002_2;
|
||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
SELECT * FROM information_schema.routines;
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL BEGIN
|
||||
SELECT * FROM db_datadict.res_6_408002_1;
|
||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL BEGIN
|
||||
SELECT * FROM db_datadict_2.res_6_408002_2;
|
||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
# Switch to connection default and close connections testuser1,testuser2,testuser3
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
USE test;
|
||||
DROP DATABASE db_datadict;
|
||||
DROP DATABASE db_datadict_2;
|
||||
#########################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.ROUTINES modifications
|
||||
#########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
USE db_datadict;
|
||||
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
||||
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
||||
ORDER BY routine_name;
|
||||
SPECIFIC_NAME function_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME function_for_routines
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER int(11)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION RETURN 0
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME sp_for_routines
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION SELECT 'db_datadict'
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
ALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER;
|
||||
ALTER FUNCTION function_for_routines COMMENT 'updated comments';
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
||||
ORDER BY routine_name;
|
||||
SPECIFIC_NAME function_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME function_for_routines
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER int(11)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION RETURN 0
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT updated comments
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME sp_for_routines
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION SELECT 'db_datadict'
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
DROP PROCEDURE sp_for_routines;
|
||||
DROP FUNCTION function_for_routines;
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
||||
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
||||
ORDER BY routine_name;
|
||||
SPECIFIC_NAME function_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME function_for_routines
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER int(11)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION RETURN 0
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_for_routines
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME sp_for_routines
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION SELECT 'db_datadict'
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <created>
|
||||
LAST_ALTERED <modified>
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
use test;
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
#########################################################################
|
||||
# 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
|
||||
# ROUTINE_DEFINITION column
|
||||
#########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
USE db_datadict;
|
||||
CREATE TABLE db_datadict.res_6_408004_1
|
||||
(f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
|
||||
ENGINE = <other_engine_type>;
|
||||
INSERT INTO db_datadict.res_6_408004_1
|
||||
VALUES ('abc', 98765 , 99999999 , 98765, 10);
|
||||
CREATE TABLE db_datadict.res_6_408004_2
|
||||
(f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
|
||||
ENGINE = <other_engine_type>;
|
||||
INSERT INTO db_datadict.res_6_408004_2
|
||||
VALUES ('abc', 98765 , 99999999 , 98765, 10);
|
||||
# Checking the max. possible length of (currently) 4 GByte is not
|
||||
# in this environment here.
|
||||
CREATE PROCEDURE sp_6_408004 ()
|
||||
BEGIN
|
||||
DECLARE done INTEGER DEFAULt 0;
|
||||
DECLARE variable_number_1 LONGTEXT;
|
||||
DECLARE variable_number_2 MEDIUMINT;
|
||||
DECLARE variable_number_3 LONGBLOB;
|
||||
DECLARE variable_number_4 REAL;
|
||||
DECLARE variable_number_5 YEAR;
|
||||
DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
|
||||
BEGIN
|
||||
OPEN cursor_number_1;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_1
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
BEGIN
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_2;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_2
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES(variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
SET done = 0;
|
||||
OPEN cursor_number_3;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_3
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES(variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
END;
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_4;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_4
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
BEGIN
|
||||
SET @a='test row';
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
END;
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_5;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_5
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
BEGIN
|
||||
SET @a='test row';
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
END;
|
||||
END//
|
||||
CALL db_datadict.sp_6_408004 ();
|
||||
@a
|
||||
test row
|
||||
@a
|
||||
test row
|
||||
@a
|
||||
test row
|
||||
@a
|
||||
test row
|
||||
@a
|
||||
test row
|
||||
@a
|
||||
test row
|
||||
SELECT * FROM db_datadict.res_6_408004_2;
|
||||
f1 f2 f3 f4 f5
|
||||
abc 98765 99999999 98765 2010
|
||||
abc 98765 99999999 98765 2010
|
||||
abc 98765 99999999 98765 2010
|
||||
abc 98765 99999999 98765 2010
|
||||
abc 98765 99999999 98765 2010
|
||||
abc 98765 99999999 98765 2010
|
||||
SELECT *, LENGTH(routine_definition) FROM information_schema.routines
|
||||
WHERE routine_schema = 'db_datadict';
|
||||
SPECIFIC_NAME sp_6_408004
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_datadict
|
||||
ROUTINE_NAME sp_6_408004
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
DECLARE done INTEGER DEFAULt 0;
|
||||
DECLARE variable_number_1 LONGTEXT;
|
||||
DECLARE variable_number_2 MEDIUMINT;
|
||||
DECLARE variable_number_3 LONGBLOB;
|
||||
DECLARE variable_number_4 REAL;
|
||||
DECLARE variable_number_5 YEAR;
|
||||
DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
|
||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
|
||||
BEGIN
|
||||
OPEN cursor_number_1;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_1
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
BEGIN
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_2;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_2
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES(variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
SET done = 0;
|
||||
OPEN cursor_number_3;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_3
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES(variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
END;
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_4;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_4
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
BEGIN
|
||||
SET @a='test row';
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
END;
|
||||
BEGIN
|
||||
SET done = 0;
|
||||
OPEN cursor_number_5;
|
||||
WHILE done <> 1 DO
|
||||
FETCH cursor_number_5
|
||||
INTO variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5;
|
||||
IF done <> 0 THEN
|
||||
INSERT INTO res_6_408004_2
|
||||
VALUES (variable_number_1, variable_number_2, variable_number_3,
|
||||
variable_number_4, variable_number_5);
|
||||
END IF;
|
||||
END WHILE;
|
||||
END;
|
||||
BEGIN
|
||||
SET @a='test row';
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
SELECT @a;
|
||||
END;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED YYYY-MM-DD hh:mm:ss
|
||||
LAST_ALTERED YYYY-MM-DD hh:mm:ss
|
||||
SQL_MODE
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
LENGTH(routine_definition) 2549
|
||||
DROP DATABASE db_datadict;
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA table are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
USE db_datadict;
|
||||
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
||||
USE test;
|
||||
INSERT INTO information_schema.routines (routine_name, routine_type )
|
||||
VALUES ('p2', 'procedure');
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.routines SET routine_name = 'p2'
|
||||
WHERE routine_body = 'sql';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.routines ;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.routines ;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX i7 ON information_schema.routines (routine_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.routines ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.routines DISCARD TABLESPACE;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.routines ;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.routines RENAME db_datadict.routines;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.routines RENAME information_schema.xroutines;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,304 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'SCHEMA_PRIVILEGES';
|
||||
Tables_in_information_schema (SCHEMA_PRIVILEGES)
|
||||
SCHEMA_PRIVILEGES
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.SCHEMA_PRIVILEGES;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.SCHEMA_PRIVILEGES;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.SCHEMA_PRIVILEGES;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.SCHEMA_PRIVILEGES;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.15.1: INFORMATION_SCHEMA.SCHEMA_PRIVILEGES layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.SCHEMA_PRIVILEGES;
|
||||
Field Type Null Key Default Extra
|
||||
GRANTEE varchar(81) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
PRIVILEGE_TYPE varchar(64) NO
|
||||
IS_GRANTABLE varchar(3) NO
|
||||
SHOW CREATE TABLE information_schema.SCHEMA_PRIVILEGES;
|
||||
Table Create Table
|
||||
SCHEMA_PRIVILEGES CREATE TEMPORARY TABLE `SCHEMA_PRIVILEGES` (
|
||||
`GRANTEE` varchar(81) NOT NULL DEFAULT '',
|
||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '',
|
||||
`IS_GRANTABLE` varchar(3) NOT NULL DEFAULT ''
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.SCHEMA_PRIVILEGES;
|
||||
Field Type Null Key Default Extra
|
||||
GRANTEE varchar(81) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
PRIVILEGE_TYPE varchar(64) NO
|
||||
IS_GRANTABLE varchar(3) NO
|
||||
SELECT GRANTEE, TABLE_CATALOG, TABLE_SCHEMA, PRIVILEGE_TYPE
|
||||
FROM information_schema.schema_privileges WHERE table_catalog IS NOT NULL;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE
|
||||
###############################################################################
|
||||
# Testcase 3.2.15.2-3.2.15.4 INFORMATION_SCHEMA.SCHEMA_PRIVILEGES accessibility
|
||||
###############################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict_1;
|
||||
DROP DATABASE IF EXISTS db_datadict_2;
|
||||
DROP DATABASE IF EXISTS db_datadict_3;
|
||||
CREATE DATABASE db_datadict_1;
|
||||
CREATE DATABASE db_datadict_2;
|
||||
CREATE DATABASE db_datadict_3;
|
||||
CREATE TABLE db_datadict_2.t1(f1 INT, f2 INT, f3 INT)
|
||||
ENGINE = MEMORY;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
GRANT INSERT ON db_datadict_1.* TO 'testuser1'@'localhost';
|
||||
GRANT INSERT ON db_datadict_2.t1 TO 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict_4.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
GRANT SELECT ON db_datadict_3.* TO 'testuser2'@'localhost';
|
||||
GRANT SELECT ON db_datadict_1.* TO 'testuser2'@'localhost';
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
GRANT SELECT ON db_datadict_4.* TO 'testuser2'@'localhost';
|
||||
# Root granted INSERT db_datadict_1 to me -> visible
|
||||
# Root granted SELECT db_datadict_1 to testuser2 -> invisible
|
||||
# Root granted INSERT db_datadict_2.t1 (no schema-level priv!)
|
||||
# but not db_datadict_2 to me -> invisible
|
||||
# Root granted SELECT db_datadict_3. to testuser2 but not to me -> invisible
|
||||
# Root granted SELECT db_datadict_4. to me -> visible
|
||||
# I granted SELECT db_datadict_4. to testuser2 -> invisible (reality), visible(requirement)
|
||||
# FIXME
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema LIKE 'db_datadict%'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict_1 INSERT NO
|
||||
'testuser1'@'localhost' NULL db_datadict_4 SELECT YES
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT INSERT ON `db_datadict_1`.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT ON `db_datadict_4`.* TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT INSERT ON `db_datadict_2`.`t1` TO 'testuser1'@'localhost'
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'mysql'
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
# Root granted SELECT db_datadict_1 to me -> visible
|
||||
# Root granted INSERT db_datadict_1 to testuser1 -> invisible
|
||||
# Root granted INSERT db_datadict_2.t1 but not db_datadict_1 to testuser1 -> invisible
|
||||
# Root granted SELECT db_datadict_3. to me -> visible
|
||||
# testuser1 granted SELECT db_datadict_4. to me -> visible
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema LIKE 'db_datadict%'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser2'@'localhost' NULL db_datadict_1 SELECT NO
|
||||
'testuser2'@'localhost' NULL db_datadict_3 SELECT NO
|
||||
'testuser2'@'localhost' NULL db_datadict_4 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'testuser2'@'localhost' to database 'mysql'
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
Grants for testuser2@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
|
||||
GRANT SELECT ON `db_datadict_3`.* TO 'testuser2'@'localhost'
|
||||
GRANT SELECT ON `db_datadict_1`.* TO 'testuser2'@'localhost'
|
||||
GRANT SELECT ON `db_datadict_4`.* TO 'testuser2'@'localhost'
|
||||
# Switch to connection default and close connections testuser1 and testuser2
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema LIKE 'db_datadict%'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict_1 INSERT NO
|
||||
'testuser1'@'localhost' NULL db_datadict_4 SELECT YES
|
||||
'testuser2'@'localhost' NULL db_datadict_1 SELECT NO
|
||||
'testuser2'@'localhost' NULL db_datadict_3 SELECT NO
|
||||
'testuser2'@'localhost' NULL db_datadict_4 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT INSERT ON `db_datadict_1`.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT ON `db_datadict_4`.* TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT INSERT ON `db_datadict_2`.`t1` TO 'testuser1'@'localhost'
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
Grants for testuser2@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
|
||||
GRANT SELECT ON `db_datadict_3`.* TO 'testuser2'@'localhost'
|
||||
GRANT SELECT ON `db_datadict_1`.* TO 'testuser2'@'localhost'
|
||||
GRANT SELECT ON `db_datadict_4`.* TO 'testuser2'@'localhost'
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP DATABASE db_datadict_1;
|
||||
DROP DATABASE db_datadict_2;
|
||||
DROP DATABASE db_datadict_3;
|
||||
################################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.SCHEMA_PRIVILEGES modifications
|
||||
################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'the_user'@'localhost';
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT SELECT ON test.* TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
# Switch to connection default
|
||||
GRANT UPDATE ON db_datadict.* TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict UPDATE NO
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict UPDATE NO
|
||||
# Switch to connection default
|
||||
GRANT SELECT ON db_datadict.* TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict UPDATE NO
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict SELECT NO
|
||||
'testuser1'@'localhost' NULL db_datadict UPDATE NO
|
||||
# Switch to connection default
|
||||
GRANT SELECT ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict SELECT YES
|
||||
'testuser1'@'localhost' NULL db_datadict UPDATE YES
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict SELECT YES
|
||||
'testuser1'@'localhost' NULL db_datadict UPDATE YES
|
||||
# Switch to connection default
|
||||
DROP SCHEMA db_datadict;
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict SELECT YES
|
||||
'testuser1'@'localhost' NULL db_datadict UPDATE YES
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict SELECT YES
|
||||
'testuser1'@'localhost' NULL db_datadict UPDATE YES
|
||||
# Switch to connection default
|
||||
REVOKE UPDATE ON db_datadict.* FROM 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict SELECT YES
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict SELECT YES
|
||||
# Switch to connection default
|
||||
RENAME USER 'testuser1'@'localhost' TO 'the_user'@'localhost';
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'the_user'@'localhost' NULL db_datadict SELECT YES
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'the_user'@'localhost' NULL db_datadict SELECT YES
|
||||
# Close connection testuser1
|
||||
# Establish connection the_user (user=the_user)
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'the_user'@'localhost' NULL db_datadict SELECT YES
|
||||
# Close connection the_user
|
||||
# Switch to connection default
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'the_user'@'localhost' NULL db_datadict SELECT YES
|
||||
DROP USER 'the_user'@'localhost';
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY grantee,table_schema,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA table are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT, f2 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict.* TO 'testuser1'@'localhost';
|
||||
INSERT INTO information_schema.schema_privileges
|
||||
SELECT * FROM information_schema.schema_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.schema_privileges SET table_schema = 'test'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.schema_privileges
|
||||
WHERE table_schema = 'db_datadict';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.schema_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_tables
|
||||
ON information_schema.schema_privileges(table_schema);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.schema_privileges ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.schema_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.schema_privileges
|
||||
RENAME db_datadict.schema_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.schema_privileges
|
||||
RENAME information_schema.xschema_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
@@ -0,0 +1,53 @@
|
||||
##############################################################################
|
||||
# Testcases 3.2.9.2+3.2.9.3 INFORMATION_SCHEMA.SCHEMATA accessible information
|
||||
##############################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict.* TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema IN ('information_schema','mysql','test')
|
||||
ORDER BY grantee, table_schema, privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
''@'%' NULL test ALTER NO
|
||||
''@'%' NULL test CREATE NO
|
||||
''@'%' NULL test CREATE ROUTINE NO
|
||||
''@'%' NULL test CREATE TEMPORARY TABLES NO
|
||||
''@'%' NULL test CREATE VIEW NO
|
||||
''@'%' NULL test DELETE NO
|
||||
''@'%' NULL test DROP NO
|
||||
''@'%' NULL test EVENT NO
|
||||
''@'%' NULL test INDEX NO
|
||||
''@'%' NULL test INSERT NO
|
||||
''@'%' NULL test LOCK TABLES NO
|
||||
''@'%' NULL test REFERENCES NO
|
||||
''@'%' NULL test SELECT NO
|
||||
''@'%' NULL test SHOW VIEW NO
|
||||
''@'%' NULL test TRIGGER NO
|
||||
''@'%' NULL test UPDATE NO
|
||||
SHOW DATABASES LIKE 'information_schema';
|
||||
Database (information_schema)
|
||||
information_schema
|
||||
SHOW DATABASES LIKE 'mysql';
|
||||
Database (mysql)
|
||||
mysql
|
||||
SHOW DATABASES LIKE 'test';
|
||||
Database (test)
|
||||
test
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.schema_privileges
|
||||
WHERE table_schema IN ('information_schema','mysql','test')
|
||||
ORDER BY grantee, table_schema, privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
||||
SHOW DATABASES LIKE 'information_schema';
|
||||
Database (information_schema)
|
||||
information_schema
|
||||
SHOW DATABASES LIKE 'mysql';
|
||||
Database (mysql)
|
||||
SHOW DATABASES LIKE 'test';
|
||||
Database (test)
|
||||
test
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
181
build/lib/mysql/mysql-test/suite/funcs_1/r/is_schemata.result
Normal file
181
build/lib/mysql/mysql-test/suite/funcs_1/r/is_schemata.result
Normal file
@@ -0,0 +1,181 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'SCHEMATA';
|
||||
Tables_in_information_schema (SCHEMATA)
|
||||
SCHEMATA
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.SCHEMATA;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.SCHEMATA;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.SCHEMATA;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.SCHEMATA;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.9.1: INFORMATION_SCHEMA.SCHEMATA layout;
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.SCHEMATA;
|
||||
Field Type Null Key Default Extra
|
||||
CATALOG_NAME varchar(512) YES NULL
|
||||
SCHEMA_NAME varchar(64) NO
|
||||
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
|
||||
DEFAULT_COLLATION_NAME varchar(32) NO
|
||||
SQL_PATH varchar(512) YES NULL
|
||||
SHOW CREATE TABLE information_schema.SCHEMATA;
|
||||
Table Create Table
|
||||
SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
|
||||
`CATALOG_NAME` varchar(512) DEFAULT NULL,
|
||||
`SCHEMA_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`SQL_PATH` varchar(512) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.SCHEMATA;
|
||||
Field Type Null Key Default Extra
|
||||
CATALOG_NAME varchar(512) YES NULL
|
||||
SCHEMA_NAME varchar(64) NO
|
||||
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
|
||||
DEFAULT_COLLATION_NAME varchar(32) NO
|
||||
SQL_PATH varchar(512) YES NULL
|
||||
SELECT catalog_name, schema_name, sql_path
|
||||
FROM information_schema.schemata
|
||||
WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
|
||||
catalog_name schema_name sql_path
|
||||
###############################################################################
|
||||
# Testcases 3.2.9.2+3.2.9.3: INFORMATION_SCHEMA.SCHEMATA accessible information
|
||||
###############################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict_1;
|
||||
DROP DATABASE IF EXISTS db_datadict_2;
|
||||
CREATE DATABASE db_datadict_1;
|
||||
CREATE DATABASE db_datadict_2;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
GRANT SELECT ON db_datadict_1.* to 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict_1.* to 'testuser2'@'localhost';
|
||||
GRANT SELECT ON db_datadict_2.* to 'testuser2'@'localhost';
|
||||
SELECT * FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||
NULL db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||
SHOW DATABASES LIKE 'db_datadict_%';
|
||||
Database (db_datadict_%)
|
||||
db_datadict_1
|
||||
db_datadict_2
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||
SHOW DATABASES LIKE 'db_datadict_%';
|
||||
Database (db_datadict_%)
|
||||
db_datadict_1
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||
NULL db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||
SHOW DATABASES LIKE 'db_datadict_%';
|
||||
Database (db_datadict_%)
|
||||
db_datadict_1
|
||||
db_datadict_2
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
SELECT * FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
SHOW DATABASES LIKE 'db_datadict_%';
|
||||
Database (db_datadict_%)
|
||||
# Switch to connection default and close connections testuser1,testuser2,testuser3
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
DROP DATABASE db_datadict_1;
|
||||
DROP DATABASE db_datadict_2;
|
||||
#################################################################################
|
||||
# Testcases 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.SCHEMATA modifications
|
||||
#################################################################################
|
||||
DROP DATABASE IF EXISTS 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
|
||||
CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
|
||||
SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL db_datadict latin1 latin1_swedish_ci NULL
|
||||
SELECT schema_name, default_character_set_name
|
||||
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
schema_name default_character_set_name
|
||||
db_datadict latin1
|
||||
ALTER SCHEMA db_datadict CHARACTER SET 'utf8';
|
||||
SELECT schema_name, default_character_set_name
|
||||
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
schema_name default_character_set_name
|
||||
db_datadict utf8
|
||||
ALTER SCHEMA db_datadict CHARACTER SET 'latin1';
|
||||
SELECT schema_name, default_collation_name FROM information_schema.schemata
|
||||
WHERE schema_name = 'db_datadict';
|
||||
schema_name default_collation_name
|
||||
db_datadict latin1_swedish_ci
|
||||
ALTER SCHEMA db_datadict COLLATE 'latin1_general_cs';
|
||||
SELECT schema_name, default_collation_name FROM information_schema.schemata
|
||||
WHERE schema_name = 'db_datadict';
|
||||
schema_name default_collation_name
|
||||
db_datadict latin1_general_cs
|
||||
SELECT schema_name
|
||||
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
schema_name
|
||||
db_datadict
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT schema_name
|
||||
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
schema_name
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
|
||||
INSERT INTO information_schema.schemata
|
||||
(catalog_name, schema_name, default_character_set_name, sql_path)
|
||||
VALUES (NULL, 'db1', 'latin1', NULL);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
INSERT INTO information_schema.schemata
|
||||
SELECT * FROM information_schema.schemata;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.schemata
|
||||
SET default_character_set_name = 'utf8'
|
||||
WHERE schema_name = 'db_datadict';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.schemata SET catalog_name = 't_4711';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.schemata;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX i1 ON information_schema.schemata(schema_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.schemata ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.schemata;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.schemata RENAME db_datadict.schemata;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.schemata RENAME information_schema.xschemata;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,187 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'SCHEMATA';
|
||||
Tables_in_information_schema (SCHEMATA)
|
||||
SCHEMATA
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.SCHEMATA;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.SCHEMATA;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.SCHEMATA;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.SCHEMATA;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.9.1: INFORMATION_SCHEMA.SCHEMATA layout;
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.SCHEMATA;
|
||||
Field Type Null Key Default Extra
|
||||
CATALOG_NAME varchar(512) YES NULL
|
||||
SCHEMA_NAME varchar(64) NO
|
||||
DEFAULT_CHARACTER_SET_NAME varchar(64) NO
|
||||
DEFAULT_COLLATION_NAME varchar(64) NO
|
||||
SQL_PATH varchar(512) YES NULL
|
||||
SHOW CREATE TABLE information_schema.SCHEMATA;
|
||||
Table Create Table
|
||||
SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
|
||||
`CATALOG_NAME` varchar(512) DEFAULT NULL,
|
||||
`SCHEMA_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_CHARACTER_SET_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATION_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`SQL_PATH` varchar(512) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.SCHEMATA;
|
||||
Field Type Null Key Default Extra
|
||||
CATALOG_NAME varchar(512) YES NULL
|
||||
SCHEMA_NAME varchar(64) NO
|
||||
DEFAULT_CHARACTER_SET_NAME varchar(64) NO
|
||||
DEFAULT_COLLATION_NAME varchar(64) NO
|
||||
SQL_PATH varchar(512) YES NULL
|
||||
SELECT catalog_name, schema_name, sql_path
|
||||
FROM information_schema.schemata
|
||||
WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
|
||||
catalog_name schema_name sql_path
|
||||
###############################################################################
|
||||
# Testcases 3.2.9.2+3.2.9.3: INFORMATION_SCHEMA.SCHEMATA accessible information
|
||||
###############################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict_1;
|
||||
DROP DATABASE IF EXISTS db_datadict_2;
|
||||
CREATE DATABASE db_datadict_1;
|
||||
CREATE DATABASE db_datadict_2;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
GRANT SELECT ON db_datadict_1.* to 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict_1.* to 'testuser2'@'localhost';
|
||||
GRANT SELECT ON db_datadict_2.* to 'testuser2'@'localhost';
|
||||
SELECT * FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||
NULL db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||
SHOW DATABASES LIKE 'db_datadict_%';
|
||||
Database (db_datadict_%)
|
||||
db_datadict_1
|
||||
db_datadict_2
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||
NULL db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||
SHOW DATABASES LIKE 'db_datadict_%';
|
||||
Database (db_datadict_%)
|
||||
db_datadict_1
|
||||
db_datadict_2
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||
NULL db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||
SHOW DATABASES LIKE 'db_datadict_%';
|
||||
Database (db_datadict_%)
|
||||
db_datadict_1
|
||||
db_datadict_2
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
SELECT * FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||
NULL db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||
SHOW DATABASES LIKE 'db_datadict_%';
|
||||
Database (db_datadict_%)
|
||||
db_datadict_1
|
||||
db_datadict_2
|
||||
# Switch to connection default and close connections testuser1,testuser2,testuser3
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
DROP DATABASE db_datadict_1;
|
||||
DROP DATABASE db_datadict_2;
|
||||
#################################################################################
|
||||
# Testcases 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.SCHEMATA modifications
|
||||
#################################################################################
|
||||
DROP DATABASE IF EXISTS 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
|
||||
CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
|
||||
SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL db_datadict latin1 latin1_swedish_ci NULL
|
||||
SELECT schema_name, default_character_set_name
|
||||
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
schema_name default_character_set_name
|
||||
db_datadict latin1
|
||||
ALTER SCHEMA db_datadict CHARACTER SET 'utf8';
|
||||
SELECT schema_name, default_character_set_name
|
||||
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
schema_name default_character_set_name
|
||||
db_datadict utf8
|
||||
ALTER SCHEMA db_datadict CHARACTER SET 'latin1';
|
||||
SELECT schema_name, default_collation_name FROM information_schema.schemata
|
||||
WHERE schema_name = 'db_datadict';
|
||||
schema_name default_collation_name
|
||||
db_datadict latin1_swedish_ci
|
||||
ALTER SCHEMA db_datadict COLLATE 'latin1_general_cs';
|
||||
SELECT schema_name, default_collation_name FROM information_schema.schemata
|
||||
WHERE schema_name = 'db_datadict';
|
||||
schema_name default_collation_name
|
||||
db_datadict latin1_general_cs
|
||||
SELECT schema_name
|
||||
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
schema_name
|
||||
db_datadict
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT schema_name
|
||||
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
schema_name
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
|
||||
INSERT INTO information_schema.schemata
|
||||
(catalog_name, schema_name, default_character_set_name, sql_path)
|
||||
VALUES (NULL, 'db1', 'latin1', NULL);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
INSERT INTO information_schema.schemata
|
||||
SELECT * FROM information_schema.schemata;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.schemata
|
||||
SET default_character_set_name = 'utf8'
|
||||
WHERE schema_name = 'db_datadict';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.schemata SET catalog_name = 't_4711';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.schemata;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX i1 ON information_schema.schemata(schema_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.schemata ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.schemata;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.schemata RENAME db_datadict.schemata;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.schemata RENAME information_schema.xschemata;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,42 @@
|
||||
#################################################################################
|
||||
# Testcases 3.2.9.2 + 3.2.9.3: INFORMATION_SCHEMA.SCHEMATA accessible information
|
||||
#################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict.* TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.schemata
|
||||
WHERE schema_name IN ('information_schema','mysql','test')
|
||||
ORDER BY schema_name;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL information_schema utf8 utf8_general_ci NULL
|
||||
NULL mysql latin1 latin1_swedish_ci NULL
|
||||
NULL test latin1 latin1_swedish_ci NULL
|
||||
SHOW DATABASES LIKE 'information_schema';
|
||||
Database (information_schema)
|
||||
information_schema
|
||||
SHOW DATABASES LIKE 'mysql';
|
||||
Database (mysql)
|
||||
mysql
|
||||
SHOW DATABASES LIKE 'test';
|
||||
Database (test)
|
||||
test
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.schemata
|
||||
WHERE schema_name IN ('information_schema','mysql','test')
|
||||
ORDER BY schema_name;
|
||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||
NULL information_schema utf8 utf8_general_ci NULL
|
||||
NULL test latin1 latin1_swedish_ci NULL
|
||||
SHOW DATABASES LIKE 'information_schema';
|
||||
Database (information_schema)
|
||||
information_schema
|
||||
SHOW DATABASES LIKE 'mysql';
|
||||
Database (mysql)
|
||||
SHOW DATABASES LIKE 'test';
|
||||
Database (test)
|
||||
test
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
352
build/lib/mysql/mysql-test/suite/funcs_1/r/is_statistics.result
Normal file
352
build/lib/mysql/mysql-test/suite/funcs_1/r/is_statistics.result
Normal file
@@ -0,0 +1,352 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'STATISTICS';
|
||||
Tables_in_information_schema (STATISTICS)
|
||||
STATISTICS
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.STATISTICS;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.STATISTICS;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.STATISTICS;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.STATISTICS;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.14.1: INFORMATION_SCHEMA.STATISTICS layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.STATISTICS;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
NON_UNIQUE bigint(1) NO 0
|
||||
INDEX_SCHEMA varchar(64) NO
|
||||
INDEX_NAME varchar(64) NO
|
||||
SEQ_IN_INDEX bigint(2) NO 0
|
||||
COLUMN_NAME varchar(64) NO
|
||||
COLLATION varchar(1) YES NULL
|
||||
CARDINALITY bigint(21) YES NULL
|
||||
SUB_PART bigint(3) YES NULL
|
||||
PACKED varchar(10) YES NULL
|
||||
NULLABLE varchar(3) NO
|
||||
INDEX_TYPE varchar(16) NO
|
||||
COMMENT varchar(16) YES NULL
|
||||
SHOW CREATE TABLE information_schema.STATISTICS;
|
||||
Table Create Table
|
||||
STATISTICS CREATE TEMPORARY TABLE `STATISTICS` (
|
||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`NON_UNIQUE` bigint(1) NOT NULL DEFAULT '0',
|
||||
`INDEX_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`INDEX_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`SEQ_IN_INDEX` bigint(2) NOT NULL DEFAULT '0',
|
||||
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`COLLATION` varchar(1) DEFAULT NULL,
|
||||
`CARDINALITY` bigint(21) DEFAULT NULL,
|
||||
`SUB_PART` bigint(3) DEFAULT NULL,
|
||||
`PACKED` varchar(10) DEFAULT NULL,
|
||||
`NULLABLE` varchar(3) NOT NULL DEFAULT '',
|
||||
`INDEX_TYPE` varchar(16) NOT NULL DEFAULT '',
|
||||
`COMMENT` varchar(16) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.STATISTICS;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
NON_UNIQUE bigint(1) NO 0
|
||||
INDEX_SCHEMA varchar(64) NO
|
||||
INDEX_NAME varchar(64) NO
|
||||
SEQ_IN_INDEX bigint(2) NO 0
|
||||
COLUMN_NAME varchar(64) NO
|
||||
COLLATION varchar(1) YES NULL
|
||||
CARDINALITY bigint(21) YES NULL
|
||||
SUB_PART bigint(3) YES NULL
|
||||
PACKED varchar(10) YES NULL
|
||||
NULLABLE varchar(3) NO
|
||||
INDEX_TYPE varchar(16) NO
|
||||
COMMENT varchar(16) YES NULL
|
||||
SELECT table_catalog, table_schema, table_name, index_schema, index_name
|
||||
FROM information_schema.statistics WHERE table_catalog IS NOT NULL;
|
||||
table_catalog table_schema table_name index_schema index_name
|
||||
####################################################################################
|
||||
# Testcase 3.2.14.2 + 3.2.14.3: INFORMATION_SCHEMA.STATISTICS accessible information
|
||||
####################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
DROP DATABASE IF EXISTS db_datadict_2;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE DATABASE db_datadict_2;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
CREATE TABLE db_datadict.t1
|
||||
(f1 INT NOT NULL, PRIMARY KEY(f1), f2 INT, INDEX f2_ind(f2))
|
||||
ENGINE = <engine_type>;
|
||||
CREATE TABLE db_datadict.t2
|
||||
(f1 INT NOT NULL, PRIMARY KEY(f1), f2 INT, INDEX f2_ind(f2))
|
||||
ENGINE = <engine_type>;
|
||||
CREATE TABLE db_datadict_2.t3
|
||||
(f1 INT NOT NULL, f2 INT, f5 DATE,
|
||||
PRIMARY KEY(f1), INDEX f2f1_ind(f2,f1), UNIQUE(f5))
|
||||
ENGINE = MEMORY;
|
||||
CREATE TABLE db_datadict_2.t4
|
||||
(f1 INT NOT NULL, PRIMARY KEY(f1), f2 INT, INDEX f2_ind(f2))
|
||||
ENGINE = MEMORY;
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_datadict%'
|
||||
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
|
||||
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
|
||||
NULL db_datadict t1 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict t1 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict t2 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict t2 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
|
||||
NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict_2 t4 1 db_datadict_2 f2_ind 1 f2 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict_2 t4 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
Grants for testuser2@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_datadict%'
|
||||
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
|
||||
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
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'mysql'
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_datadict%'
|
||||
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
|
||||
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
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'testuser2'@'localhost' to database 'mysql'
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
Grants for testuser2@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
|
||||
# Switch to connection default
|
||||
GRANT SELECT ON db_datadict.t1 TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
GRANT SELECT(f1,f5) ON db_datadict_2.t3 TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_datadict%'
|
||||
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
|
||||
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
|
||||
NULL db_datadict t1 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict t1 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict t2 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict t2 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
|
||||
NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict_2 t4 1 db_datadict_2 f2_ind 1 f2 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict_2 t4 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT ON `db_datadict`.`t1` TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT SELECT (f5, f1) ON `db_datadict_2`.`t3` TO 'testuser1'@'localhost'
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
Grants for testuser2@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_datadict%'
|
||||
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
|
||||
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
|
||||
NULL db_datadict t1 1 db_datadict f2_ind 1 f2 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict t1 0 db_datadict PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
|
||||
NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT ON `db_datadict`.`t1` TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT SELECT (f5, f1) ON `db_datadict_2`.`t3` TO 'testuser1'@'localhost'
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'mysql'
|
||||
# Switch to connection testuser2
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_datadict%'
|
||||
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
|
||||
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
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
ERROR 42000: Access denied for user 'testuser2'@'localhost' to database 'mysql'
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
Grants for testuser2@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
|
||||
# Switch to connection default
|
||||
REVOKE SELECT,GRANT OPTION ON db_datadict.t1 FROM 'testuser1'@'localhost';
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f5, f1) ON `db_datadict_2`.`t3` TO 'testuser1'@'localhost'
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_datadict%'
|
||||
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
|
||||
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
|
||||
NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 1 f2 NULL NULL NULL NULL YES HASH
|
||||
NULL db_datadict_2 t3 1 db_datadict_2 f2f1_ind 2 f1 NULL 0 NULL NULL HASH
|
||||
NULL db_datadict_2 t3 0 db_datadict_2 f5 1 f5 NULL 0 NULL NULL YES HASH
|
||||
NULL db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f5, f1) ON `db_datadict_2`.`t3` TO 'testuser1'@'localhost'
|
||||
# Switch to connection default and close connections testuser1, testuser2
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
DROP DATABASE db_datadict_2;
|
||||
#########################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.STATISTICS modifications
|
||||
#########################################################################
|
||||
DROP TABLE IF EXISTS test.t1_my_table;
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE test.t1_1 (f1 BIGINT,
|
||||
f2 TEXT, f2x TEXT, f3 CHAR(10), f3x CHAR(10), f4 BIGINT, f4x BIGINT,
|
||||
f5 POINT, f5x POINT NOT NULL)
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
ENGINE = <other_engine_type>;
|
||||
CREATE TABLE test.t1_2 (f1 BIGINT, f2 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
SELECT table_name FROM information_schema.statistics
|
||||
WHERE table_name LIKE 't1_%';
|
||||
table_name
|
||||
ALTER TABLE test.t1_1 ADD PRIMARY KEY (f1,f3);
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
|
||||
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
|
||||
NULL test t1_1 0 test PRIMARY 1 f1 A NULL NULL NULL BTREE
|
||||
NULL test t1_1 0 test PRIMARY 2 f3 A 0 NULL NULL BTREE
|
||||
ALTER TABLE test.t1_1 DROP PRIMARY KEY;
|
||||
SELECT table_name FROM information_schema.statistics
|
||||
WHERE table_name LIKE 't1_%';
|
||||
table_name
|
||||
ALTER TABLE test.t1_1 ADD PRIMARY KEY (f1);
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_name LIKE 't1_%';
|
||||
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
|
||||
NULL test t1_1 0 test PRIMARY 1 f1 A 0 NULL NULL BTREE
|
||||
ALTER TABLE test.t1_1 ADD INDEX (f4);
|
||||
CREATE INDEX f3_f1 ON test.t1_1 (f3,f1);
|
||||
CREATE UNIQUE INDEX f4x_uni ON test.t1_1 (f4x);
|
||||
CREATE INDEX f2_hash USING HASH ON test.t1_2 (f2);
|
||||
CREATE INDEX f1_idx ON test.t1_2 (f1) COMMENT = 'COMMENT';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COMMENT = 'COMMENT'' at line 1
|
||||
CREATE INDEX not_null ON test.t1_1 (f3x);
|
||||
CREATE INDEX f2_prefix ON test.t1_1 (f2(20));
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_name LIKE 't1_%' AND index_name <> 'PRIMARY'
|
||||
ORDER BY table_schema,table_name,index_name,seq_in_index,column_name;
|
||||
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
|
||||
NULL test t1_1 1 test f2_prefix 1 f2 A NULL 20 NULL YES BTREE
|
||||
NULL test t1_1 1 test f3_f1 1 f3 A NULL NULL NULL BTREE
|
||||
NULL test t1_1 1 test f3_f1 2 f1 A NULL NULL NULL BTREE
|
||||
NULL test t1_1 1 test f4 1 f4 A NULL NULL NULL YES BTREE
|
||||
NULL test t1_1 0 test f4x_uni 1 f4x A NULL NULL NULL YES BTREE
|
||||
NULL test t1_1 1 test not_null 1 f3x A NULL NULL NULL YES BTREE
|
||||
NULL test t1_2 1 test f2_hash 1 f2 NULL 0 NULL NULL YES HASH
|
||||
DROP TABLE test.t1_2;
|
||||
SELECT DISTINCT table_name FROM information_schema.statistics
|
||||
WHERE table_name = 't1_1';
|
||||
table_name
|
||||
t1_1
|
||||
RENAME TABLE test.t1_1 TO test.t1_1x;
|
||||
SELECT DISTINCT table_name FROM information_schema.statistics
|
||||
WHERE table_name = 't1_1x';
|
||||
table_name
|
||||
t1_1x
|
||||
SELECT DISTINCT table_schema,table_name FROM information_schema.statistics
|
||||
WHERE table_name LIKE 't1_1%';
|
||||
table_schema table_name
|
||||
test t1_1x
|
||||
RENAME TABLE test.t1_1x TO db_datadict.t1_1x;
|
||||
SELECT DISTINCT table_schema,table_name FROM information_schema.statistics
|
||||
WHERE table_name LIKE 't1_1%';
|
||||
table_schema table_name
|
||||
db_datadict t1_1x
|
||||
SELECT DISTINCT table_name FROM information_schema.statistics
|
||||
WHERE table_name = 't1_1x';
|
||||
table_name
|
||||
t1_1x
|
||||
DROP TABLE db_datadict.t1_1x;
|
||||
SELECT DISTINCT table_name FROM information_schema.statistics
|
||||
WHERE table_name = 't1_1x';
|
||||
table_name
|
||||
CREATE TEMPORARY TABLE test.t1_1x (PRIMARY KEY(f1,f2))
|
||||
ENGINE = <engine_type>
|
||||
AS SELECT 1 AS f1, 2 AS f2;
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_name = 't1_1x';
|
||||
DROP TEMPORARY TABLE test.t1_1x;
|
||||
CREATE TABLE db_datadict.t1_1x (PRIMARY KEY(f1))
|
||||
ENGINE = <engine_type>
|
||||
AS SELECT 1 AS f1, 2 AS f2;
|
||||
SELECT table_name FROM information_schema.statistics
|
||||
WHERE table_name = 't1_1x';
|
||||
table_name
|
||||
t1_1x
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.statistics
|
||||
WHERE table_name = 't1_1x';
|
||||
table_name
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
INSERT INTO information_schema.statistics
|
||||
SELECT * FROM information_schema.statistics;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.statistics SET table_schema = 'test'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.statistics WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.statistics;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_statistics
|
||||
ON information_schema.statistics(table_schema);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.statistics DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.statistics ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.statistics;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.statistics RENAME db_datadict.statistics;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.statistics RENAME information_schema.xstatistics;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,17 @@
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON db_datadict.* TO testuser1@localhost;
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema = 'information_schema'
|
||||
ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
|
||||
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
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema = 'information_schema'
|
||||
ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
|
||||
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
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,65 @@
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON db_datadict.* TO testuser1@localhost;
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
|
||||
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
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql event 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
|
||||
NULL mysql event 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A #CARD# NULL NULL BTREE
|
||||
NULL mysql plugin 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
|
||||
NULL mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
|
||||
NULL mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
|
||||
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
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,113 @@
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON db_datadict.* TO testuser1@localhost;
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
|
||||
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
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql event 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
|
||||
NULL mysql event 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A #CARD# NULL NULL BTREE
|
||||
NULL mysql plugin 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
|
||||
NULL mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
|
||||
NULL mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.statistics
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
|
||||
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
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql event 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
|
||||
NULL mysql event 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A #CARD# NULL NULL BTREE
|
||||
NULL mysql plugin 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
|
||||
NULL mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
|
||||
NULL mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
|
||||
NULL mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
|
||||
NULL mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
|
||||
NULL mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
|
||||
NULL mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,310 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'TABLE_CONSTRAINTS';
|
||||
Tables_in_information_schema (TABLE_CONSTRAINTS)
|
||||
TABLE_CONSTRAINTS
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.TABLE_CONSTRAINTS;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.TABLE_CONSTRAINTS;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.TABLE_CONSTRAINTS;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.TABLE_CONSTRAINTS;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.10.1: INFORMATION_SCHEMA.TABLE_CONSTRAINTS layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.TABLE_CONSTRAINTS;
|
||||
Field Type Null Key Default Extra
|
||||
CONSTRAINT_CATALOG varchar(512) YES NULL
|
||||
CONSTRAINT_SCHEMA varchar(64) NO
|
||||
CONSTRAINT_NAME varchar(64) NO
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
CONSTRAINT_TYPE varchar(64) NO
|
||||
SHOW CREATE TABLE information_schema.TABLE_CONSTRAINTS;
|
||||
Table Create Table
|
||||
TABLE_CONSTRAINTS CREATE TEMPORARY TABLE `TABLE_CONSTRAINTS` (
|
||||
`CONSTRAINT_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`CONSTRAINT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`CONSTRAINT_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`CONSTRAINT_TYPE` varchar(64) NOT NULL DEFAULT ''
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.TABLE_CONSTRAINTS;
|
||||
Field Type Null Key Default Extra
|
||||
CONSTRAINT_CATALOG varchar(512) YES NULL
|
||||
CONSTRAINT_SCHEMA varchar(64) NO
|
||||
CONSTRAINT_NAME varchar(64) NO
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
CONSTRAINT_TYPE varchar(64) NO
|
||||
SELECT constraint_catalog, constraint_schema, constraint_name,
|
||||
table_schema, table_name
|
||||
FROM information_schema.table_constraints
|
||||
WHERE constraint_catalog IS NOT NULL;
|
||||
constraint_catalog constraint_schema constraint_name table_schema table_name
|
||||
#########################################################################################
|
||||
# Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.TABLE_CONSTRAINTS accessible information
|
||||
#########################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT, f2 BIGINT, f3 BIGINT, f4 BIGINT,
|
||||
f5 BIGINT, f6 BIGINT, PRIMARY KEY (f1,f2))
|
||||
ENGINE = <some_engine_type>;
|
||||
CREATE UNIQUE INDEX my_idx1 ON db_datadict.t1(f6,f1);
|
||||
CREATE UNIQUE INDEX my_idx2 ON db_datadict.t1(f3);
|
||||
CREATE TABLE db_datadict.t2 (f1 BIGINT, f2 BIGINT, f3 BIGINT, f4 BIGINT,
|
||||
f5 BIGINT, f6 BIGINT, PRIMARY KEY (f1,f2))
|
||||
ENGINE = <some_engine_type>;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT SELECT(f5) ON db_datadict.t1 TO 'testuser1'@'localhost';
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f5) ON `db_datadict`.`t1` TO 'testuser1'@'localhost'
|
||||
SELECT * FROM information_schema.table_constraints
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
|
||||
NULL db_datadict my_idx1 db_datadict t1 UNIQUE
|
||||
NULL db_datadict my_idx2 db_datadict t1 UNIQUE
|
||||
NULL db_datadict PRIMARY db_datadict t1 PRIMARY KEY
|
||||
NULL db_datadict PRIMARY db_datadict t2 PRIMARY KEY
|
||||
SHOW INDEXES FROM db_datadict.t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 0 PRIMARY 1 f1 ### ### ### ### ### ### ###
|
||||
t1 0 PRIMARY 2 f2 ### ### ### ### ### ### ###
|
||||
t1 0 my_idx1 1 f6 ### ### ### ### ### ### ###
|
||||
t1 0 my_idx1 2 f1 ### ### ### ### ### ### ###
|
||||
t1 0 my_idx2 1 f3 ### ### ### ### ### ### ###
|
||||
SHOW INDEXES FROM db_datadict.t2;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t2 0 PRIMARY 1 f1 ### ### ### ### ### ### ###
|
||||
t2 0 PRIMARY 2 f2 ### ### ### ### ### ### ###
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT (f5) ON `db_datadict`.`t1` TO 'testuser1'@'localhost'
|
||||
SELECT * FROM information_schema.table_constraints
|
||||
WHERE table_schema = 'db_datadict'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
|
||||
NULL db_datadict my_idx1 db_datadict t1 UNIQUE
|
||||
NULL db_datadict my_idx2 db_datadict t1 UNIQUE
|
||||
NULL db_datadict PRIMARY db_datadict t1 PRIMARY KEY
|
||||
SHOW INDEXES FROM db_datadict.t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 0 PRIMARY 1 f1 ### ### ### ### ### ### ###
|
||||
t1 0 PRIMARY 2 f2 ### ### ### ### ### ### ###
|
||||
t1 0 my_idx1 1 f6 ### ### ### ### ### ### ###
|
||||
t1 0 my_idx1 2 f1 ### ### ### ### ### ### ###
|
||||
t1 0 my_idx2 1 f3 ### ### ### ### ### ### ###
|
||||
SHOW INDEXES FROM db_datadict.t2;
|
||||
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 't2'
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
#########################################################################################
|
||||
# Testcase 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TABLE_CONSTRAINTS modifications
|
||||
#########################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
DROP TABLE IF EXISTS test.t1_my_table;
|
||||
CREATE DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.table_constraints
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
CREATE TABLE test.t1_my_table
|
||||
(f1 CHAR(12), f2 TIMESTAMP, f4 BIGINT, PRIMARY KEY(f1,f2))
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
ENGINE = <engine_type>;
|
||||
SELECT constraint_name, table_schema, table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_table';
|
||||
constraint_name table_schema table_name constraint_type
|
||||
PRIMARY test t1_my_table PRIMARY KEY
|
||||
SELECT table_name FROM information_schema.table_constraints
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_table
|
||||
RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
|
||||
SELECT table_name FROM information_schema.table_constraints
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
SELECT table_schema,table_name FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
test t1_my_tablex
|
||||
RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
|
||||
SELECT table_schema,table_name FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
db_datadict t1_my_tablex
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
constraint_schema constraint_name table_schema table_name constraint_type
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex PRIMARY KEY
|
||||
CREATE INDEX f2 ON db_datadict.t1_my_tablex(f2);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
constraint_schema constraint_name table_schema table_name constraint_type
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex PRIMARY KEY
|
||||
DROP INDEX f2 ON db_datadict.t1_my_tablex;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
constraint_schema constraint_name table_schema table_name constraint_type
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex PRIMARY KEY
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE (f2);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
constraint_schema constraint_name table_schema table_name constraint_type
|
||||
db_datadict f2 db_datadict t1_my_tablex UNIQUE
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex PRIMARY KEY
|
||||
DROP INDEX f2 ON db_datadict.t1_my_tablex;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
constraint_schema constraint_name table_schema table_name constraint_type
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex PRIMARY KEY
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f4,f1);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
constraint_schema constraint_name table_schema table_name constraint_type
|
||||
db_datadict my_idx db_datadict t1_my_tablex UNIQUE
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex PRIMARY KEY
|
||||
DROP INDEX my_idx ON db_datadict.t1_my_tablex;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
constraint_schema constraint_name table_schema table_name constraint_type
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex PRIMARY KEY
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f2);
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
constraint_schema constraint_name table_schema table_name constraint_type
|
||||
db_datadict my_idx db_datadict t1_my_tablex UNIQUE
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex PRIMARY KEY
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
constraint_schema constraint_name table_schema table_name constraint_type
|
||||
db_datadict my_idx db_datadict t1_my_tablex UNIQUE
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex PRIMARY KEY
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
DROP COLUMN f2;
|
||||
SELECT constraint_schema, constraint_name, table_schema,
|
||||
table_name, constraint_type
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex'
|
||||
ORDER BY table_schema,table_name, constraint_name;
|
||||
constraint_schema constraint_name table_schema table_name constraint_type
|
||||
db_datadict PRIMARY db_datadict t1_my_tablex PRIMARY KEY
|
||||
SELECT table_name
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
DROP TABLE db_datadict.t1_my_tablex;
|
||||
SELECT table_name
|
||||
FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
SELECT table_name FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
CREATE TABLE db_datadict.t1_my_tablex
|
||||
ENGINE = <engine_type> AS
|
||||
SELECT 1 AS f1;
|
||||
SELECT table_name FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
ALTER TABLE db_datadict.t1_my_tablex ADD PRIMARY KEY(f1);
|
||||
SELECT table_name FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
SELECT table_name FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.table_constraints
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
DROP TABLE IF EXISTS db_datadict.t1;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT, UNIQUE(f1))
|
||||
ENGINE = <engine_type>;
|
||||
INSERT INTO information_schema.table_constraints
|
||||
(constraint_schema, constraint_name, table_name)
|
||||
VALUES ( 'mysql', 'primary', 'db');
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
INSERT INTO information_schema.table_constraints
|
||||
SELECT * FROM information_schema.table_constraints;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.table_constraints
|
||||
SET table_name = 'db1' WHERE constraint_name = 'primary';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.table_constraints WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.table_constraints;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX i3 ON information_schema.table_constraints(table_name);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.table_constraints ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.table_constraints;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.table_constraints
|
||||
RENAME db_datadict.table_constraints;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.table_constraints
|
||||
RENAME information_schema.xtable_constraints;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE db_datadict.t1;
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,17 @@
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON db_datadict.* TO testuser1@localhost;
|
||||
SELECT * FROM information_schema.table_constraints
|
||||
WHERE table_schema = 'information_schema'
|
||||
ORDER BY table_schema,table_name,constraint_name;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.table_constraints
|
||||
WHERE table_schema = 'information_schema'
|
||||
ORDER BY table_schema,table_name,constraint_name;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,41 @@
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON db_datadict.* TO testuser1@localhost;
|
||||
SELECT * FROM information_schema.table_constraints
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema,table_name,constraint_name;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
|
||||
NULL mysql PRIMARY mysql columns_priv PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql db PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql event PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql func PRIMARY KEY
|
||||
NULL mysql name mysql help_category UNIQUE
|
||||
NULL mysql PRIMARY mysql help_category PRIMARY KEY
|
||||
NULL mysql name mysql help_keyword UNIQUE
|
||||
NULL mysql PRIMARY mysql help_keyword PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql help_relation PRIMARY KEY
|
||||
NULL mysql name mysql help_topic UNIQUE
|
||||
NULL mysql PRIMARY mysql help_topic PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql host PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql ndb_binlog_index PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql plugin PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql proc PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql procs_priv PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql servers PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql tables_priv PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_name PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_transition PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql user PRIMARY KEY
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.table_constraints
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema,table_name,constraint_name;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,65 @@
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON db_datadict.* TO testuser1@localhost;
|
||||
SELECT * FROM information_schema.table_constraints
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema,table_name,constraint_name;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
|
||||
NULL mysql PRIMARY mysql columns_priv PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql db PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql event PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql func PRIMARY KEY
|
||||
NULL mysql name mysql help_category UNIQUE
|
||||
NULL mysql PRIMARY mysql help_category PRIMARY KEY
|
||||
NULL mysql name mysql help_keyword UNIQUE
|
||||
NULL mysql PRIMARY mysql help_keyword PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql help_relation PRIMARY KEY
|
||||
NULL mysql name mysql help_topic UNIQUE
|
||||
NULL mysql PRIMARY mysql help_topic PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql host PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql ndb_binlog_index PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql plugin PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql proc PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql procs_priv PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql servers PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql tables_priv PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_name PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_transition PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql user PRIMARY KEY
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.table_constraints
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema,table_name,constraint_name;
|
||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
|
||||
NULL mysql PRIMARY mysql columns_priv PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql db PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql event PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql func PRIMARY KEY
|
||||
NULL mysql name mysql help_category UNIQUE
|
||||
NULL mysql PRIMARY mysql help_category PRIMARY KEY
|
||||
NULL mysql name mysql help_keyword UNIQUE
|
||||
NULL mysql PRIMARY mysql help_keyword PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql help_relation PRIMARY KEY
|
||||
NULL mysql name mysql help_topic UNIQUE
|
||||
NULL mysql PRIMARY mysql help_topic PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql host PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql ndb_binlog_index PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql plugin PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql proc PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql procs_priv PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql servers PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql tables_priv PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_name PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_transition PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
|
||||
NULL mysql PRIMARY mysql user PRIMARY KEY
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,336 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'TABLE_PRIVILEGES';
|
||||
Tables_in_information_schema (TABLE_PRIVILEGES)
|
||||
TABLE_PRIVILEGES
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.TABLE_PRIVILEGES;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.TABLE_PRIVILEGES;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.TABLE_PRIVILEGES;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.TABLE_PRIVILEGES;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.11.1: INFORMATION_SCHEMA.TABLE_PRIVILEGES layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.TABLE_PRIVILEGES;
|
||||
Field Type Null Key Default Extra
|
||||
GRANTEE varchar(81) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
PRIVILEGE_TYPE varchar(64) NO
|
||||
IS_GRANTABLE varchar(3) NO
|
||||
SHOW CREATE TABLE information_schema.TABLE_PRIVILEGES;
|
||||
Table Create Table
|
||||
TABLE_PRIVILEGES CREATE TEMPORARY TABLE `TABLE_PRIVILEGES` (
|
||||
`GRANTEE` varchar(81) NOT NULL DEFAULT '',
|
||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '',
|
||||
`IS_GRANTABLE` varchar(3) NOT NULL DEFAULT ''
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.TABLE_PRIVILEGES;
|
||||
Field Type Null Key Default Extra
|
||||
GRANTEE varchar(81) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
PRIVILEGE_TYPE varchar(64) NO
|
||||
IS_GRANTABLE varchar(3) NO
|
||||
SELECT table_catalog, table_schema, table_name, privilege_type
|
||||
FROM information_schema.table_privileges WHERE table_catalog IS NOT NULL;
|
||||
table_catalog table_schema table_name privilege_type
|
||||
######################################################################
|
||||
# Testcase 3.2.11.2+3.2.11.3+3.2.11.4:
|
||||
# INFORMATION_SCHEMA.TABLE_PRIVILEGES accessible information
|
||||
######################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.tb1(f1 INT, f2 INT, f3 INT)
|
||||
ENGINE = <engine_type>;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT CREATE, SELECT ON db_datadict.*
|
||||
TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
GRANT SELECT ON db_datadict.tb1 TO 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
GRANT ALL ON db_datadict.tb1 TO 'testuser2'@'localhost' WITH GRANT OPTION;
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
CREATE TABLE tb3 (f1 TEXT)
|
||||
ENGINE = <other_engine_type>;
|
||||
GRANT SELECT ON db_datadict.tb3 TO 'testuser3'@'localhost';
|
||||
SELECT * FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 'tb%'
|
||||
ORDER BY grantee,table_schema,table_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict tb1 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT, CREATE ON `db_datadict`.* TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT SELECT ON `db_datadict`.`tb1` TO 'testuser1'@'localhost'
|
||||
# Establish connection testuser2 (user=testuser3)
|
||||
SELECT * FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 'tb%'
|
||||
ORDER BY grantee,table_schema,table_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 ALTER YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 CREATE YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 CREATE VIEW YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 DELETE YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 DROP YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 INDEX YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 INSERT YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 REFERENCES YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 SELECT YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 SHOW VIEW YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 TRIGGER YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 UPDATE YES
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
Grants for testuser2@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `db_datadict`.`tb1` TO 'testuser2'@'localhost' WITH GRANT OPTION
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
SELECT * FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 'tb%'
|
||||
ORDER BY grantee,table_schema,table_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser3'@'localhost' NULL db_datadict tb3 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser3'@'localhost';
|
||||
Grants for testuser3@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser3'@'localhost'
|
||||
GRANT SELECT ON `db_datadict`.`tb3` TO 'testuser3'@'localhost'
|
||||
# Switch to connection default and close the other connections
|
||||
SELECT * FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 'tb%'
|
||||
ORDER BY grantee,table_schema,table_name,privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL db_datadict tb1 SELECT NO
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 ALTER YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 CREATE YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 CREATE VIEW YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 DELETE YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 DROP YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 INDEX YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 INSERT YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 REFERENCES YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 SELECT YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 SHOW VIEW YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 TRIGGER YES
|
||||
'testuser2'@'localhost' NULL db_datadict tb1 UPDATE YES
|
||||
'testuser3'@'localhost' NULL db_datadict tb3 SELECT NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT, CREATE ON `db_datadict`.* TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT SELECT ON `db_datadict`.`tb1` TO 'testuser1'@'localhost'
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
Grants for testuser2@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `db_datadict`.`tb1` TO 'testuser2'@'localhost' WITH GRANT OPTION
|
||||
SHOW GRANTS FOR 'testuser3'@'localhost';
|
||||
Grants for testuser3@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser3'@'localhost'
|
||||
GRANT SELECT ON `db_datadict`.`tb3` TO 'testuser3'@'localhost'
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
################################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TABLE_PRIVILEGES modifications
|
||||
################################################################################
|
||||
DROP TABLE IF EXISTS test.t1_table;
|
||||
DROP VIEW IF EXISTS test.t1_view;
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE test.t1_table (f1 BIGINT)
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
COMMENT = 'Initial Comment' ENGINE = <engine_type>;
|
||||
CREATE VIEW test.t1_view AS SELECT 1;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'the_user'@'localhost';
|
||||
SELECT table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%';
|
||||
table_name
|
||||
GRANT ALL ON test.t1_table TO 'testuser1'@'localhost';
|
||||
GRANT ALL ON test.t1_view TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY grantee, table_schema, table_name, privilege_type;
|
||||
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL test t1_table ALTER NO
|
||||
'testuser1'@'localhost' NULL test t1_table CREATE NO
|
||||
'testuser1'@'localhost' NULL test t1_table CREATE VIEW NO
|
||||
'testuser1'@'localhost' NULL test t1_table DELETE NO
|
||||
'testuser1'@'localhost' NULL test t1_table DROP NO
|
||||
'testuser1'@'localhost' NULL test t1_table INDEX NO
|
||||
'testuser1'@'localhost' NULL test t1_table INSERT NO
|
||||
'testuser1'@'localhost' NULL test t1_table REFERENCES NO
|
||||
'testuser1'@'localhost' NULL test t1_table SELECT NO
|
||||
'testuser1'@'localhost' NULL test t1_table SHOW VIEW NO
|
||||
'testuser1'@'localhost' NULL test t1_table TRIGGER NO
|
||||
'testuser1'@'localhost' NULL test t1_table UPDATE NO
|
||||
'testuser1'@'localhost' NULL test t1_view ALTER NO
|
||||
'testuser1'@'localhost' NULL test t1_view CREATE NO
|
||||
'testuser1'@'localhost' NULL test t1_view CREATE VIEW NO
|
||||
'testuser1'@'localhost' NULL test t1_view DELETE NO
|
||||
'testuser1'@'localhost' NULL test t1_view DROP NO
|
||||
'testuser1'@'localhost' NULL test t1_view INDEX NO
|
||||
'testuser1'@'localhost' NULL test t1_view INSERT NO
|
||||
'testuser1'@'localhost' NULL test t1_view REFERENCES NO
|
||||
'testuser1'@'localhost' NULL test t1_view SELECT NO
|
||||
'testuser1'@'localhost' NULL test t1_view SHOW VIEW NO
|
||||
'testuser1'@'localhost' NULL test t1_view TRIGGER NO
|
||||
'testuser1'@'localhost' NULL test t1_view UPDATE NO
|
||||
SELECT DISTINCT grantee, table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY grantee, table_name;
|
||||
grantee table_name
|
||||
'testuser1'@'localhost' t1_table
|
||||
'testuser1'@'localhost' t1_view
|
||||
RENAME USER 'testuser1'@'localhost' TO 'the_user'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
SELECT DISTINCT grantee, table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY grantee, table_name;
|
||||
grantee table_name
|
||||
'the_user'@'localhost' t1_table
|
||||
'the_user'@'localhost' t1_view
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
ERROR 42000: There is no such grant defined for user 'testuser1' on host 'localhost'
|
||||
SHOW GRANTS FOR 'the_user'@'localhost';
|
||||
Grants for the_user@localhost
|
||||
GRANT USAGE ON *.* TO 'the_user'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.`t1_view` TO 'the_user'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.`t1_table` TO 'the_user'@'localhost'
|
||||
SELECT DISTINCT table_schema,table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_schema,table_name;
|
||||
table_schema table_name
|
||||
test t1_table
|
||||
test t1_view
|
||||
RENAME TABLE test.t1_table TO db_datadict.t1_table;
|
||||
RENAME TABLE test.t1_view TO db_datadict.t1_view;
|
||||
ERROR HY000: Changing schema from 'test' to 'db_datadict' is not allowed.
|
||||
SELECT DISTINCT table_schema,table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_schema,table_name;
|
||||
table_schema table_name
|
||||
test t1_table
|
||||
test t1_view
|
||||
SHOW GRANTS FOR 'the_user'@'localhost';
|
||||
Grants for the_user@localhost
|
||||
GRANT USAGE ON *.* TO 'the_user'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.`t1_view` TO 'the_user'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `test`.`t1_table` TO 'the_user'@'localhost'
|
||||
REVOKE ALL PRIVILEGES ON test.t1_table FROM 'the_user'@'localhost';
|
||||
REVOKE ALL PRIVILEGES ON test.t1_view FROM 'the_user'@'localhost';
|
||||
DROP VIEW test.t1_view;
|
||||
CREATE VIEW db_datadict.t1_view AS SELECT 1;
|
||||
GRANT ALL ON db_datadict.t1_table TO 'the_user'@'localhost';
|
||||
GRANT ALL ON db_datadict.t1_view TO 'the_user'@'localhost';
|
||||
SELECT DISTINCT table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_table
|
||||
t1_view
|
||||
RENAME TABLE db_datadict.t1_table TO db_datadict.t1_tablex;
|
||||
RENAME TABLE db_datadict.t1_view TO db_datadict.t1_viewx;
|
||||
SELECT DISTINCT table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_table
|
||||
t1_view
|
||||
RENAME TABLE db_datadict.t1_tablex TO db_datadict.t1_table;
|
||||
RENAME TABLE db_datadict.t1_viewx TO db_datadict.t1_view;
|
||||
SELECT DISTINCT table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_table
|
||||
t1_view
|
||||
DROP TABLE db_datadict.t1_table;
|
||||
DROP VIEW db_datadict.t1_view;
|
||||
SELECT DISTINCT table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_table
|
||||
t1_view
|
||||
CREATE TABLE db_datadict.t1_table
|
||||
ENGINE = <engine_type> AS
|
||||
SELECT 1;
|
||||
CREATE VIEW db_datadict.t1_view AS SELECT 1;
|
||||
GRANT ALL ON db_datadict.t1_table TO 'the_user'@'localhost';
|
||||
GRANT ALL ON db_datadict.t1_view TO 'the_user'@'localhost';
|
||||
SELECT DISTINCT table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_table
|
||||
t1_view
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT DISTINCT table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_table
|
||||
t1_view
|
||||
DROP USER 'the_user'@'localhost';
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA table are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT, f2 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT SELECT (f1) ON db_datadict.t1 TO 'testuser1'@'localhost';
|
||||
INSERT INTO information_schema.table_privileges
|
||||
SELECT * FROM information_schema.table_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.table_privileges SET table_schema = 'test'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.table_privileges WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.table_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_tables
|
||||
ON information_schema.table_privileges(table_schema);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.table_privileges ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.table_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.table_privileges
|
||||
RENAME db_datadict.table_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.table_privileges
|
||||
RENAME information_schema.xtable_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
420
build/lib/mysql/mysql-test/suite/funcs_1/r/is_tables.result
Normal file
420
build/lib/mysql/mysql-test/suite/funcs_1/r/is_tables.result
Normal file
@@ -0,0 +1,420 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'TABLES';
|
||||
Tables_in_information_schema (TABLES)
|
||||
TABLES
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.TABLES;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.TABLES;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.TABLES;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.TABLES;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.12.1: INFORMATION_SCHEMA.TABLES layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.TABLES;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
TABLE_TYPE varchar(64) NO
|
||||
ENGINE varchar(64) YES NULL
|
||||
VERSION bigint(21) unsigned YES NULL
|
||||
ROW_FORMAT varchar(10) YES NULL
|
||||
TABLE_ROWS bigint(21) unsigned YES NULL
|
||||
AVG_ROW_LENGTH bigint(21) unsigned YES NULL
|
||||
DATA_LENGTH bigint(21) unsigned YES NULL
|
||||
MAX_DATA_LENGTH bigint(21) unsigned YES NULL
|
||||
INDEX_LENGTH bigint(21) unsigned YES NULL
|
||||
DATA_FREE bigint(21) unsigned YES NULL
|
||||
AUTO_INCREMENT bigint(21) unsigned YES NULL
|
||||
CREATE_TIME datetime YES NULL
|
||||
UPDATE_TIME datetime YES NULL
|
||||
CHECK_TIME datetime YES NULL
|
||||
TABLE_COLLATION varchar(32) YES NULL
|
||||
CHECKSUM bigint(21) unsigned YES NULL
|
||||
CREATE_OPTIONS varchar(255) YES NULL
|
||||
TABLE_COMMENT varchar(80) NO
|
||||
SHOW CREATE TABLE information_schema.TABLES;
|
||||
Table Create Table
|
||||
TABLES CREATE TEMPORARY TABLE `TABLES` (
|
||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_TYPE` varchar(64) NOT NULL DEFAULT '',
|
||||
`ENGINE` varchar(64) DEFAULT NULL,
|
||||
`VERSION` bigint(21) unsigned DEFAULT NULL,
|
||||
`ROW_FORMAT` varchar(10) DEFAULT NULL,
|
||||
`TABLE_ROWS` bigint(21) unsigned DEFAULT NULL,
|
||||
`AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||
`DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||
`MAX_DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||
`INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||
`DATA_FREE` bigint(21) unsigned DEFAULT NULL,
|
||||
`AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL,
|
||||
`CREATE_TIME` datetime DEFAULT NULL,
|
||||
`UPDATE_TIME` datetime DEFAULT NULL,
|
||||
`CHECK_TIME` datetime DEFAULT NULL,
|
||||
`TABLE_COLLATION` varchar(32) DEFAULT NULL,
|
||||
`CHECKSUM` bigint(21) unsigned DEFAULT NULL,
|
||||
`CREATE_OPTIONS` varchar(255) DEFAULT NULL,
|
||||
`TABLE_COMMENT` varchar(80) NOT NULL DEFAULT ''
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.TABLES;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
TABLE_TYPE varchar(64) NO
|
||||
ENGINE varchar(64) YES NULL
|
||||
VERSION bigint(21) unsigned YES NULL
|
||||
ROW_FORMAT varchar(10) YES NULL
|
||||
TABLE_ROWS bigint(21) unsigned YES NULL
|
||||
AVG_ROW_LENGTH bigint(21) unsigned YES NULL
|
||||
DATA_LENGTH bigint(21) unsigned YES NULL
|
||||
MAX_DATA_LENGTH bigint(21) unsigned YES NULL
|
||||
INDEX_LENGTH bigint(21) unsigned YES NULL
|
||||
DATA_FREE bigint(21) unsigned YES NULL
|
||||
AUTO_INCREMENT bigint(21) unsigned YES NULL
|
||||
CREATE_TIME datetime YES NULL
|
||||
UPDATE_TIME datetime YES NULL
|
||||
CHECK_TIME datetime YES NULL
|
||||
TABLE_COLLATION varchar(32) YES NULL
|
||||
CHECKSUM bigint(21) unsigned YES NULL
|
||||
CREATE_OPTIONS varchar(255) YES NULL
|
||||
TABLE_COMMENT varchar(80) NO
|
||||
SELECT table_catalog, table_schema, table_name
|
||||
FROM information_schema.tables WHERE table_catalog IS NOT NULL;
|
||||
table_catalog table_schema table_name
|
||||
################################################################################
|
||||
# Testcase 3.2.12.2 + 3.2.12.3: INFORMATION_SCHEMA.TABLES accessible information
|
||||
################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT CREATE, CREATE VIEW, INSERT, SELECT ON db_datadict.*
|
||||
TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
CREATE TABLE db_datadict.tb1 (f1 INT, f2 INT, f3 INT)
|
||||
ENGINE = <engine_type>;
|
||||
GRANT SELECT ON db_datadict.tb1 TO 'testuser1'@'localhost';
|
||||
GRANT ALL ON db_datadict.tb1 TO 'testuser2'@'localhost' WITH GRANT OPTION;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
CREATE TABLE tb2 (f1 DECIMAL)
|
||||
ENGINE = <engine_type>;
|
||||
CREATE TABLE tb3 (f1 VARCHAR(200))
|
||||
ENGINE = <engine_type>;
|
||||
GRANT SELECT ON db_datadict.tb3 to 'testuser3'@'localhost';
|
||||
GRANT INSERT ON db_datadict.tb3 to 'testuser2'@'localhost';
|
||||
CREATE VIEW v3 AS SELECT * FROM tb3;
|
||||
GRANT SELECT ON db_datadict.v3 to 'testuser3'@'localhost';
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||
SHOW TABLES FROM db_datadict;
|
||||
Tables_in_db_datadict
|
||||
tb1
|
||||
tb2
|
||||
tb3
|
||||
v3
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
SHOW TABLES FROM db_datadict;
|
||||
Tables_in_db_datadict
|
||||
tb1
|
||||
tb3
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||
SHOW TABLES FROM db_datadict;
|
||||
Tables_in_db_datadict
|
||||
tb3
|
||||
v3
|
||||
# Switch to connection default (user=root)
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||
SHOW TABLES FROM db_datadict;
|
||||
Tables_in_db_datadict
|
||||
tb1
|
||||
tb2
|
||||
tb3
|
||||
v3
|
||||
# Close connection testuser1, testuser2, testuser3
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
#########################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TABLES modifications
|
||||
#########################################################################
|
||||
DROP TABLE IF EXISTS test.t1_my_table;
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
CREATE TABLE test.t1_my_table (f1 BIGINT)
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
COMMENT = 'Initial Comment' ENGINE = <engine_type>;
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_table';
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_table
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE #ENG#
|
||||
VERSION 10
|
||||
ROW_FORMAT #RF#
|
||||
TABLE_ROWS 0
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM #CS#
|
||||
CREATE_OPTIONS
|
||||
TABLE_COMMENT Initial Comment
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_table
|
||||
RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
SELECT table_schema,table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
test t1_my_tablex
|
||||
RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
|
||||
SELECT table_schema,table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
db_datadict t1_my_tablex
|
||||
SELECT table_name, engine FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name engine
|
||||
t1_my_tablex <engine_type>
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
ENGINE = <other_engine_type>;
|
||||
SELECT table_name, engine FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name engine
|
||||
t1_my_tablex <other_engine_type>
|
||||
SELECT table_name, table_rows FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_rows
|
||||
t1_my_tablex 0
|
||||
INSERT INTO db_datadict.t1_my_tablex VALUES(1),(2);
|
||||
SELECT table_name, table_rows FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_rows
|
||||
t1_my_tablex 2
|
||||
SELECT table_name, table_collation FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_collation
|
||||
t1_my_tablex latin1_swedish_ci
|
||||
ALTER TABLE db_datadict.t1_my_tablex DEFAULT CHARACTER SET utf8;
|
||||
SELECT table_name, table_collation FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_collation
|
||||
t1_my_tablex utf8_general_ci
|
||||
SELECT table_name, table_collation FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_collation
|
||||
t1_my_tablex utf8_general_ci
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci;
|
||||
SELECT table_name, table_collation FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_collation
|
||||
t1_my_tablex latin1_german1_ci
|
||||
SELECT table_name, TABLE_COMMENT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name TABLE_COMMENT
|
||||
t1_my_tablex Initial Comment
|
||||
ALTER TABLE db_datadict.t1_my_tablex COMMENT 'Changed Comment';
|
||||
SELECT table_name, TABLE_COMMENT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name TABLE_COMMENT
|
||||
t1_my_tablex Changed Comment
|
||||
SELECT table_name, AUTO_INCREMENT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name AUTO_INCREMENT
|
||||
t1_my_tablex NULL
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
ADD f2 BIGINT AUTO_INCREMENT, ADD PRIMARY KEY (f2);
|
||||
SELECT table_name, AUTO_INCREMENT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name AUTO_INCREMENT
|
||||
t1_my_tablex 3
|
||||
SELECT table_name, ROW_FORMAT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name ROW_FORMAT
|
||||
t1_my_tablex Fixed
|
||||
ALTER TABLE db_datadict.t1_my_tablex ROW_FORMAT = dynamic;
|
||||
SELECT table_name, ROW_FORMAT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name ROW_FORMAT
|
||||
t1_my_tablex Dynamic
|
||||
SELECT table_name, checksum FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name checksum
|
||||
t1_my_tablex NULL
|
||||
ALTER TABLE db_datadict.t1_my_tablex CHECKSUM = 1;
|
||||
SELECT table_name, checksum IS NOT NULL FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name checksum IS NOT NULL
|
||||
t1_my_tablex 1
|
||||
SELECT UPDATE_TIME, checksum INTO @UPDATE_TIME, @checksum
|
||||
FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
|
||||
FLUSH TABLES;
|
||||
SELECT UPDATE_TIME > @UPDATE_TIME
|
||||
AS "Is current UPDATE_TIME bigger than before last INSERT?"
|
||||
FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
Is current UPDATE_TIME bigger than before last INSERT?
|
||||
1
|
||||
SELECT checksum <> @checksum
|
||||
AS "Is current CHECKSUM different than before last INSERT?"
|
||||
FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
Is current CHECKSUM different than before last INSERT?
|
||||
1
|
||||
SELECT CREATE_TIME INTO @CREATE_TIME FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
DROP TABLE db_datadict.t1_my_tablex;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
CREATE TABLE test.t1_my_tablex (f1 BIGINT)
|
||||
ENGINE = <other_engine_type>;
|
||||
SELECT CREATE_TIME > @CREATE_TIME
|
||||
AS "Is current CREATE_TIME bigger than for the old dropped table?"
|
||||
FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
Is current CREATE_TIME bigger than for the old dropped table?
|
||||
1
|
||||
DROP TABLE test.t1_my_tablex;
|
||||
CREATE VIEW test.t1_my_tablex AS SELECT 1;
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_tablex
|
||||
TABLE_TYPE VIEW
|
||||
ENGINE NULL
|
||||
VERSION NULL
|
||||
ROW_FORMAT NULL
|
||||
TABLE_ROWS NULL
|
||||
AVG_ROW_LENGTH NULL
|
||||
DATA_LENGTH NULL
|
||||
MAX_DATA_LENGTH NULL
|
||||
INDEX_LENGTH NULL
|
||||
DATA_FREE NULL
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME NULL
|
||||
UPDATE_TIME NULL
|
||||
CHECK_TIME NULL
|
||||
TABLE_COLLATION NULL
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS NULL
|
||||
TABLE_COMMENT VIEW
|
||||
DROP VIEW test.t1_my_tablex;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
CREATE TEMPORARY TABLE test.t1_my_tablex
|
||||
ENGINE = <other_engine_type>
|
||||
AS SELECT 1;
|
||||
SELECT table_name, table_type FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
DROP TEMPORARY TABLE test.t1_my_tablex;
|
||||
CREATE TABLE db_datadict.t1_my_tablex
|
||||
ENGINE = <engine_type> AS
|
||||
SELECT 1;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
INSERT INTO information_schema.tables
|
||||
SELECT * FROM information_schema.tables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.tables SET table_schema = 'test'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.tables WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.tables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_tables ON information_schema.tables(table_schema);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.tables DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.tables ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.tables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.tables RENAME db_datadict.tables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.tables RENAME information_schema.xtables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,427 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'TABLES';
|
||||
Tables_in_information_schema (TABLES)
|
||||
TABLES
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.TABLES;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.TABLES;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.TABLES;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.TABLES;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.12.1: INFORMATION_SCHEMA.TABLES layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.TABLES;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
TABLE_TYPE varchar(64) NO
|
||||
ENGINE varchar(64) YES NULL
|
||||
VERSION bigint(21) YES NULL
|
||||
ROW_FORMAT varchar(10) YES NULL
|
||||
TABLE_ROWS bigint(21) YES NULL
|
||||
AVG_ROW_LENGTH bigint(21) YES NULL
|
||||
DATA_LENGTH bigint(21) YES NULL
|
||||
MAX_DATA_LENGTH bigint(21) YES NULL
|
||||
INDEX_LENGTH bigint(21) YES NULL
|
||||
DATA_FREE bigint(21) YES NULL
|
||||
AUTO_INCREMENT bigint(21) YES NULL
|
||||
CREATE_TIME datetime YES NULL
|
||||
UPDATE_TIME datetime YES NULL
|
||||
CHECK_TIME datetime YES NULL
|
||||
TABLE_COLLATION varchar(64) YES NULL
|
||||
CHECKSUM bigint(21) YES NULL
|
||||
CREATE_OPTIONS varchar(255) YES NULL
|
||||
TABLE_COMMENT varchar(80) NO
|
||||
SHOW CREATE TABLE information_schema.TABLES;
|
||||
Table Create Table
|
||||
TABLES CREATE TEMPORARY TABLE `TABLES` (
|
||||
`TABLE_CATALOG` varchar(512) default NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL default '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL default '',
|
||||
`TABLE_TYPE` varchar(64) NOT NULL default '',
|
||||
`ENGINE` varchar(64) default NULL,
|
||||
`VERSION` bigint(21) default NULL,
|
||||
`ROW_FORMAT` varchar(10) default NULL,
|
||||
`TABLE_ROWS` bigint(21) default NULL,
|
||||
`AVG_ROW_LENGTH` bigint(21) default NULL,
|
||||
`DATA_LENGTH` bigint(21) default NULL,
|
||||
`MAX_DATA_LENGTH` bigint(21) default NULL,
|
||||
`INDEX_LENGTH` bigint(21) default NULL,
|
||||
`DATA_FREE` bigint(21) default NULL,
|
||||
`AUTO_INCREMENT` bigint(21) default NULL,
|
||||
`CREATE_TIME` datetime default NULL,
|
||||
`UPDATE_TIME` datetime default NULL,
|
||||
`CHECK_TIME` datetime default NULL,
|
||||
`TABLE_COLLATION` varchar(64) default NULL,
|
||||
`CHECKSUM` bigint(21) default NULL,
|
||||
`CREATE_OPTIONS` varchar(255) default NULL,
|
||||
`TABLE_COMMENT` varchar(80) NOT NULL default ''
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.TABLES;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
TABLE_TYPE varchar(64) NO
|
||||
ENGINE varchar(64) YES NULL
|
||||
VERSION bigint(21) YES NULL
|
||||
ROW_FORMAT varchar(10) YES NULL
|
||||
TABLE_ROWS bigint(21) YES NULL
|
||||
AVG_ROW_LENGTH bigint(21) YES NULL
|
||||
DATA_LENGTH bigint(21) YES NULL
|
||||
MAX_DATA_LENGTH bigint(21) YES NULL
|
||||
INDEX_LENGTH bigint(21) YES NULL
|
||||
DATA_FREE bigint(21) YES NULL
|
||||
AUTO_INCREMENT bigint(21) YES NULL
|
||||
CREATE_TIME datetime YES NULL
|
||||
UPDATE_TIME datetime YES NULL
|
||||
CHECK_TIME datetime YES NULL
|
||||
TABLE_COLLATION varchar(64) YES NULL
|
||||
CHECKSUM bigint(21) YES NULL
|
||||
CREATE_OPTIONS varchar(255) YES NULL
|
||||
TABLE_COMMENT varchar(80) NO
|
||||
SELECT table_catalog, table_schema, table_name
|
||||
FROM information_schema.tables WHERE table_catalog IS NOT NULL;
|
||||
table_catalog table_schema table_name
|
||||
################################################################################
|
||||
# Testcase 3.2.12.2 + 3.2.12.3: INFORMATION_SCHEMA.TABLES accessible information
|
||||
################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
GRANT CREATE, CREATE VIEW, INSERT, SELECT ON db_datadict.*
|
||||
TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
CREATE TABLE db_datadict.tb1 (f1 INT, f2 INT, f3 INT)
|
||||
ENGINE = <engine_type>;
|
||||
GRANT SELECT ON db_datadict.tb1 TO 'testuser1'@'localhost';
|
||||
GRANT ALL ON db_datadict.tb1 TO 'testuser2'@'localhost' WITH GRANT OPTION;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
CREATE TABLE tb2 (f1 DECIMAL)
|
||||
ENGINE = <engine_type>;
|
||||
CREATE TABLE tb3 (f1 VARCHAR(200))
|
||||
ENGINE = <engine_type>;
|
||||
GRANT SELECT ON db_datadict.tb3 to 'testuser3'@'localhost';
|
||||
GRANT INSERT ON db_datadict.tb3 to 'testuser2'@'localhost';
|
||||
CREATE VIEW v3 AS SELECT * FROM tb3;
|
||||
GRANT SELECT ON db_datadict.v3 to 'testuser3'@'localhost';
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||
SHOW TABLES FROM db_datadict;
|
||||
Tables_in_db_datadict
|
||||
tb1
|
||||
tb2
|
||||
tb3
|
||||
v3
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||
SHOW TABLES FROM db_datadict;
|
||||
Tables_in_db_datadict
|
||||
tb1
|
||||
tb2
|
||||
tb3
|
||||
v3
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||
SHOW TABLES FROM db_datadict;
|
||||
Tables_in_db_datadict
|
||||
tb1
|
||||
tb2
|
||||
tb3
|
||||
v3
|
||||
# Switch to connection default (user=root)
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||
SHOW TABLES FROM db_datadict;
|
||||
Tables_in_db_datadict
|
||||
tb1
|
||||
tb2
|
||||
tb3
|
||||
v3
|
||||
# Close connection testuser1, testuser2, testuser3
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
#########################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TABLES modifications
|
||||
#########################################################################
|
||||
DROP TABLE IF EXISTS test.t1_my_table;
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
CREATE TABLE test.t1_my_table (f1 BIGINT)
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
COMMENT = 'Initial Comment' ENGINE = <engine_type>;
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_table';
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_table
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE #ENG#
|
||||
VERSION 10
|
||||
ROW_FORMAT #RF#
|
||||
TABLE_ROWS 0
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM #CS#
|
||||
CREATE_OPTIONS
|
||||
TABLE_COMMENT Initial Comment
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_table
|
||||
RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
SELECT table_schema,table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
test t1_my_tablex
|
||||
RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
|
||||
SELECT table_schema,table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_schema table_name
|
||||
db_datadict t1_my_tablex
|
||||
SELECT table_name, engine FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name engine
|
||||
t1_my_tablex <engine_type>
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
ENGINE = <other_engine_type>;
|
||||
SELECT table_name, engine FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name engine
|
||||
t1_my_tablex <other_engine_type>
|
||||
SELECT table_name, table_rows FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_rows
|
||||
t1_my_tablex 0
|
||||
INSERT INTO db_datadict.t1_my_tablex VALUES(1),(2);
|
||||
SELECT table_name, table_rows FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_rows
|
||||
t1_my_tablex 2
|
||||
SELECT table_name, table_collation FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_collation
|
||||
t1_my_tablex latin1_swedish_ci
|
||||
ALTER TABLE db_datadict.t1_my_tablex DEFAULT CHARACTER SET utf8;
|
||||
SELECT table_name, table_collation FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_collation
|
||||
t1_my_tablex utf8_general_ci
|
||||
SELECT table_name, table_collation FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_collation
|
||||
t1_my_tablex utf8_general_ci
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci;
|
||||
SELECT table_name, table_collation FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name table_collation
|
||||
t1_my_tablex latin1_german1_ci
|
||||
SELECT table_name, TABLE_COMMENT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name TABLE_COMMENT
|
||||
t1_my_tablex Initial Comment
|
||||
ALTER TABLE db_datadict.t1_my_tablex COMMENT 'Changed Comment';
|
||||
SELECT table_name, TABLE_COMMENT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name TABLE_COMMENT
|
||||
t1_my_tablex Changed Comment
|
||||
SELECT table_name, AUTO_INCREMENT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name AUTO_INCREMENT
|
||||
t1_my_tablex NULL
|
||||
ALTER TABLE db_datadict.t1_my_tablex
|
||||
ADD f2 BIGINT AUTO_INCREMENT, ADD PRIMARY KEY (f2);
|
||||
SELECT table_name, AUTO_INCREMENT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name AUTO_INCREMENT
|
||||
t1_my_tablex 3
|
||||
SELECT table_name, ROW_FORMAT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name ROW_FORMAT
|
||||
t1_my_tablex Fixed
|
||||
ALTER TABLE db_datadict.t1_my_tablex ROW_FORMAT = dynamic;
|
||||
SELECT table_name, ROW_FORMAT FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name ROW_FORMAT
|
||||
t1_my_tablex Dynamic
|
||||
SELECT table_name, checksum FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name checksum
|
||||
t1_my_tablex NULL
|
||||
ALTER TABLE db_datadict.t1_my_tablex CHECKSUM = 1;
|
||||
SELECT table_name, checksum IS NOT NULL FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name checksum IS NOT NULL
|
||||
t1_my_tablex 1
|
||||
SELECT UPDATE_TIME, checksum INTO @UPDATE_TIME, @checksum
|
||||
FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
|
||||
SELECT UPDATE_TIME > @UPDATE_TIME
|
||||
AS "Is current UPDATE_TIME bigger than before last INSERT?"
|
||||
FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
Is current UPDATE_TIME bigger than before last INSERT?
|
||||
1
|
||||
SELECT checksum <> @checksum
|
||||
AS "Is current CHECKSUM different than before last INSERT?"
|
||||
FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
Is current CHECKSUM different than before last INSERT?
|
||||
1
|
||||
SELECT CREATE_TIME INTO @CREATE_TIME FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
DROP TABLE db_datadict.t1_my_tablex;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name LIKE 't1_my_table%';
|
||||
table_name
|
||||
CREATE TABLE test.t1_my_tablex (f1 BIGINT)
|
||||
ENGINE = <other_engine_type>;
|
||||
SELECT CREATE_TIME > @CREATE_TIME
|
||||
AS "Is current CREATE_TIME bigger than for the old dropped table?"
|
||||
FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
Is current CREATE_TIME bigger than for the old dropped table?
|
||||
1
|
||||
DROP TABLE test.t1_my_tablex;
|
||||
CREATE VIEW test.t1_my_tablex AS SELECT 1;
|
||||
SELECT * FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test
|
||||
TABLE_NAME t1_my_tablex
|
||||
TABLE_TYPE VIEW
|
||||
ENGINE NULL
|
||||
VERSION NULL
|
||||
ROW_FORMAT NULL
|
||||
TABLE_ROWS NULL
|
||||
AVG_ROW_LENGTH NULL
|
||||
DATA_LENGTH NULL
|
||||
MAX_DATA_LENGTH NULL
|
||||
INDEX_LENGTH NULL
|
||||
DATA_FREE NULL
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME NULL
|
||||
UPDATE_TIME NULL
|
||||
CHECK_TIME NULL
|
||||
TABLE_COLLATION NULL
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS NULL
|
||||
TABLE_COMMENT VIEW
|
||||
DROP VIEW test.t1_my_tablex;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
CREATE TEMPORARY TABLE test.t1_my_tablex
|
||||
ENGINE = <other_engine_type>
|
||||
AS SELECT 1;
|
||||
SELECT table_name, table_type FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
DROP TEMPORARY TABLE test.t1_my_tablex;
|
||||
CREATE TABLE db_datadict.t1_my_tablex
|
||||
ENGINE = <engine_type> AS
|
||||
SELECT 1;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
t1_my_tablex
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
table_name
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
INSERT INTO information_schema.tables
|
||||
SELECT * FROM information_schema.tables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.tables SET table_schema = 'test'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.tables WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.tables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_tables ON information_schema.tables(table_schema);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.tables DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.tables ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.tables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.tables RENAME db_datadict.tables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.tables RENAME information_schema.xtables;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,167 @@
|
||||
DROP DATABASE IF EXISTS test1;
|
||||
DROP DATABASE IF EXISTS test2;
|
||||
CREATE DATABASE test1;
|
||||
CREATE DATABASE test2;
|
||||
CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE InnoDB
|
||||
VERSION 10
|
||||
ROW_FORMAT Compact
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t2
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE InnoDB
|
||||
VERSION 10
|
||||
ROW_FORMAT Compact
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test2
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE InnoDB
|
||||
VERSION 10
|
||||
ROW_FORMAT Compact
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
SHOW TABLES FROM test1;
|
||||
Tables_in_test1
|
||||
t1
|
||||
t2
|
||||
SHOW TABLES FROM test2;
|
||||
Tables_in_test2
|
||||
t1
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON test1.* TO testuser1@localhost;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE InnoDB
|
||||
VERSION 10
|
||||
ROW_FORMAT Compact
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t2
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE InnoDB
|
||||
VERSION 10
|
||||
ROW_FORMAT Compact
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
SHOW TABLES FROM test1;
|
||||
Tables_in_test1
|
||||
t1
|
||||
t2
|
||||
SHOW TABLES FROM test2;
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'test2'
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE test1;
|
||||
DROP DATABASE test2;
|
||||
1277
build/lib/mysql/mysql-test/suite/funcs_1/r/is_tables_is.result
Normal file
1277
build/lib/mysql/mysql-test/suite/funcs_1/r/is_tables_is.result
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,168 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
DROP DATABASE IF EXISTS test1;
|
||||
DROP DATABASE IF EXISTS test2;
|
||||
CREATE DATABASE test1;
|
||||
CREATE DATABASE test2;
|
||||
CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MEMORY
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t2
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MEMORY
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test2
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MEMORY
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
SHOW TABLES FROM test1;
|
||||
Tables_in_test1
|
||||
t1
|
||||
t2
|
||||
SHOW TABLES FROM test2;
|
||||
Tables_in_test2
|
||||
t1
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON test1.* TO testuser1@localhost;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MEMORY
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t2
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MEMORY
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
SHOW TABLES FROM test1;
|
||||
Tables_in_test1
|
||||
t1
|
||||
t2
|
||||
SHOW TABLES FROM test2;
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'test2'
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE test1;
|
||||
DROP DATABASE test2;
|
||||
@@ -0,0 +1,168 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
DROP DATABASE IF EXISTS test1;
|
||||
DROP DATABASE IF EXISTS test2;
|
||||
CREATE DATABASE test1;
|
||||
CREATE DATABASE test2;
|
||||
CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t2
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test2
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
SHOW TABLES FROM test1;
|
||||
Tables_in_test1
|
||||
t1
|
||||
t2
|
||||
SHOW TABLES FROM test2;
|
||||
Tables_in_test2
|
||||
t1
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON test1.* TO testuser1@localhost;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t2
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
SHOW TABLES FROM test1;
|
||||
Tables_in_test1
|
||||
t1
|
||||
t2
|
||||
SHOW TABLES FROM test2;
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'test2'
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE test1;
|
||||
DROP DATABASE test2;
|
||||
@@ -0,0 +1,192 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
DROP DATABASE IF EXISTS test1;
|
||||
DROP DATABASE IF EXISTS test2;
|
||||
CREATE DATABASE test1;
|
||||
CREATE DATABASE test2;
|
||||
CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t2
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test2
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
SHOW TABLES FROM test1;
|
||||
Tables_in_test1
|
||||
t1
|
||||
t2
|
||||
SHOW TABLES FROM test2;
|
||||
Tables_in_test2
|
||||
t1
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON test1.* TO testuser1@localhost;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t2
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test2
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
SHOW TABLES FROM test1;
|
||||
Tables_in_test1
|
||||
t1
|
||||
t2
|
||||
SHOW TABLES FROM test2;
|
||||
Tables_in_test2
|
||||
t1
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE test1;
|
||||
DROP DATABASE test2;
|
||||
@@ -0,0 +1,562 @@
|
||||
DROP DATABASE IF EXISTS test1;
|
||||
CREATE DATABASE test1;
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME columns_priv
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_bin
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Column privileges
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME db
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_bin
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Database privileges
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME event
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Events
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME func
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_bin
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment User defined functions
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME general_log
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE CSV
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment General log
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME help_category
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment help categories
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME help_keyword
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment help keywords
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME help_relation
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment keyword-topic relation
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME help_topic
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment help topics
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME host
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_bin
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Host privileges; Merged with database privileges
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME ndb_binlog_index
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME plugin
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_bin
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment MySQL plugins
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME proc
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Stored Procedures
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME procs_priv
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_bin
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Procedure privileges
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME servers
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment MySQL Foreign Servers table
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME slow_log
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE CSV
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Slow log
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME tables_priv
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_bin
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Table privileges
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME time_zone
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT 6
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Time zones
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME time_zone_leap_second
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Leap seconds information for time zones
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME time_zone_name
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Time zone names
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME time_zone_transition
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Time zone transitions
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME time_zone_transition_type
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Fixed
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_general_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Time zone transition types
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA mysql
|
||||
TABLE_NAME user
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE MyISAM
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION utf8_bin
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment Users and global privileges
|
||||
Separator -----------------------------------------------------
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON test1.* TO testuser1@localhost;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'mysql'
|
||||
ORDER BY table_schema,table_name;
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE test1;
|
||||
File diff suppressed because it is too large
Load Diff
167
build/lib/mysql/mysql-test/suite/funcs_1/r/is_tables_ndb.result
Normal file
167
build/lib/mysql/mysql-test/suite/funcs_1/r/is_tables_ndb.result
Normal file
@@ -0,0 +1,167 @@
|
||||
DROP DATABASE IF EXISTS test1;
|
||||
DROP DATABASE IF EXISTS test2;
|
||||
CREATE DATABASE test1;
|
||||
CREATE DATABASE test2;
|
||||
CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE ndbcluster
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t2
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE ndbcluster
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test2
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE ndbcluster
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
SHOW TABLES FROM test1;
|
||||
Tables_in_test1
|
||||
t1
|
||||
t2
|
||||
SHOW TABLES FROM test2;
|
||||
Tables_in_test2
|
||||
t1
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON test1.* TO testuser1@localhost;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,'InnoDB free') = 0
|
||||
AND INSTR(table_comment,'number_of_replicas') = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,'InnoDB free')
|
||||
+ INSTR(table_comment,'number_of_replicas') - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
|
||||
ORDER BY table_schema,table_name;
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t1
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE ndbcluster
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
TABLE_CATALOG NULL
|
||||
TABLE_SCHEMA test1
|
||||
TABLE_NAME t2
|
||||
TABLE_TYPE BASE TABLE
|
||||
ENGINE ndbcluster
|
||||
VERSION 10
|
||||
ROW_FORMAT Dynamic
|
||||
TABLE_ROWS #TBLR#
|
||||
AVG_ROW_LENGTH #ARL#
|
||||
DATA_LENGTH #DL#
|
||||
MAX_DATA_LENGTH #MDL#
|
||||
INDEX_LENGTH #IL#
|
||||
DATA_FREE #DF#
|
||||
AUTO_INCREMENT NULL
|
||||
CREATE_TIME #CRT#
|
||||
UPDATE_TIME #UT#
|
||||
CHECK_TIME #CT#
|
||||
TABLE_COLLATION latin1_swedish_ci
|
||||
CHECKSUM NULL
|
||||
CREATE_OPTIONS #CO#
|
||||
TABLE_COMMENT #TC#
|
||||
user_comment
|
||||
Separator -----------------------------------------------------
|
||||
SHOW TABLES FROM test1;
|
||||
Tables_in_test1
|
||||
t1
|
||||
t2
|
||||
SHOW TABLES FROM test2;
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'test2'
|
||||
# Switch to connection default and close connection testuser1
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE test1;
|
||||
DROP DATABASE test2;
|
||||
228
build/lib/mysql/mysql-test/suite/funcs_1/r/is_triggers.result
Normal file
228
build/lib/mysql/mysql-test/suite/funcs_1/r/is_triggers.result
Normal file
@@ -0,0 +1,228 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'TRIGGERS';
|
||||
Tables_in_information_schema (TRIGGERS)
|
||||
TRIGGERS
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.TRIGGERS;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.TRIGGERS;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.TRIGGERS;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.TRIGGERS;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.12.1: INFORMATION_SCHEMA.TRIGGERS layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.TRIGGERS;
|
||||
Field Type Null Key Default Extra
|
||||
TRIGGER_CATALOG varchar(512) YES NULL
|
||||
TRIGGER_SCHEMA varchar(64) NO
|
||||
TRIGGER_NAME varchar(64) NO
|
||||
EVENT_MANIPULATION varchar(6) NO
|
||||
EVENT_OBJECT_CATALOG varchar(512) YES NULL
|
||||
EVENT_OBJECT_SCHEMA varchar(64) NO
|
||||
EVENT_OBJECT_TABLE varchar(64) NO
|
||||
ACTION_ORDER bigint(4) NO 0
|
||||
ACTION_CONDITION longtext YES NULL
|
||||
ACTION_STATEMENT longtext NO NULL
|
||||
ACTION_ORIENTATION varchar(9) NO
|
||||
ACTION_TIMING varchar(6) NO
|
||||
ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL
|
||||
ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL
|
||||
ACTION_REFERENCE_OLD_ROW varchar(3) NO
|
||||
ACTION_REFERENCE_NEW_ROW varchar(3) NO
|
||||
CREATED datetime YES NULL
|
||||
SQL_MODE varchar(8192) NO
|
||||
DEFINER varchar(77) NO
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
COLLATION_CONNECTION varchar(32) NO
|
||||
DATABASE_COLLATION varchar(32) NO
|
||||
SHOW CREATE TABLE information_schema.TRIGGERS;
|
||||
Table Create Table
|
||||
TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
|
||||
`TRIGGER_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`TRIGGER_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`TRIGGER_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`EVENT_MANIPULATION` varchar(6) NOT NULL DEFAULT '',
|
||||
`EVENT_OBJECT_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`EVENT_OBJECT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`EVENT_OBJECT_TABLE` varchar(64) NOT NULL DEFAULT '',
|
||||
`ACTION_ORDER` bigint(4) NOT NULL DEFAULT '0',
|
||||
`ACTION_CONDITION` longtext,
|
||||
`ACTION_STATEMENT` longtext NOT NULL,
|
||||
`ACTION_ORIENTATION` varchar(9) NOT NULL DEFAULT '',
|
||||
`ACTION_TIMING` varchar(6) NOT NULL DEFAULT '',
|
||||
`ACTION_REFERENCE_OLD_TABLE` varchar(64) DEFAULT NULL,
|
||||
`ACTION_REFERENCE_NEW_TABLE` varchar(64) DEFAULT NULL,
|
||||
`ACTION_REFERENCE_OLD_ROW` varchar(3) NOT NULL DEFAULT '',
|
||||
`ACTION_REFERENCE_NEW_ROW` varchar(3) NOT NULL DEFAULT '',
|
||||
`CREATED` datetime DEFAULT NULL,
|
||||
`SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
|
||||
`DEFINER` varchar(77) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
|
||||
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
|
||||
`DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.TRIGGERS;
|
||||
Field Type Null Key Default Extra
|
||||
TRIGGER_CATALOG varchar(512) YES NULL
|
||||
TRIGGER_SCHEMA varchar(64) NO
|
||||
TRIGGER_NAME varchar(64) NO
|
||||
EVENT_MANIPULATION varchar(6) NO
|
||||
EVENT_OBJECT_CATALOG varchar(512) YES NULL
|
||||
EVENT_OBJECT_SCHEMA varchar(64) NO
|
||||
EVENT_OBJECT_TABLE varchar(64) NO
|
||||
ACTION_ORDER bigint(4) NO 0
|
||||
ACTION_CONDITION longtext YES NULL
|
||||
ACTION_STATEMENT longtext NO NULL
|
||||
ACTION_ORIENTATION varchar(9) NO
|
||||
ACTION_TIMING varchar(6) NO
|
||||
ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL
|
||||
ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL
|
||||
ACTION_REFERENCE_OLD_ROW varchar(3) NO
|
||||
ACTION_REFERENCE_NEW_ROW varchar(3) NO
|
||||
CREATED datetime YES NULL
|
||||
SQL_MODE varchar(8192) NO
|
||||
DEFINER varchar(77) NO
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
COLLATION_CONNECTION varchar(32) NO
|
||||
DATABASE_COLLATION varchar(32) NO
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
|
||||
OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
|
||||
OR action_reference_new_table IS NOT NULL;
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
##################################################################################
|
||||
# Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS accessible information
|
||||
##################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
DROP USER 'testuser4'@'localhost';
|
||||
CREATE USER 'testuser4'@'localhost';
|
||||
GRANT TRIGGER ON *.* TO 'testuser1'@'localhost';
|
||||
GRANT TRIGGER ON *.* TO 'testuser3'@'localhost';
|
||||
GRANT TRIGGER ON *.* TO 'testuser4'@'localhost';
|
||||
GRANT ALL ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
CREATE TABLE db_datadict.t1 (f1 INT, f2 INT, f3 INT)
|
||||
ENGINE = <engine_type>;
|
||||
CREATE TRIGGER trg1 BEFORE INSERT
|
||||
ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
|
||||
GRANT ALL ON db_datadict.t1 TO 'testuser2'@'localhost';
|
||||
REVOKE TRIGGER ON db_datadict.t1 FROM 'testuser2'@'localhost';
|
||||
GRANT SELECT ON db_datadict.t1 TO 'testuser3'@'localhost';
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_name = 'trg1';
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
SHOW TRIGGERS FROM db_datadict;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
Grants for testuser2@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `db_datadict`.`t1` TO 'testuser2'@'localhost'
|
||||
# No TRIGGER Privilege --> no result for query
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_name = 'trg1';
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
SHOW TRIGGERS FROM db_datadict;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
SHOW GRANTS FOR 'testuser3'@'localhost';
|
||||
Grants for testuser3@localhost
|
||||
GRANT TRIGGER ON *.* TO 'testuser3'@'localhost'
|
||||
GRANT SELECT ON `db_datadict`.`t1` TO 'testuser3'@'localhost'
|
||||
# TRIGGER Privilege + SELECT Privilege on t1 --> result for query
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_name = 'trg1';
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
SHOW TRIGGERS FROM db_datadict;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
# Establish connection testuser4 (user=testuser4)
|
||||
SHOW GRANTS FOR 'testuser4'@'localhost';
|
||||
Grants for testuser4@localhost
|
||||
GRANT TRIGGER ON *.* TO 'testuser4'@'localhost'
|
||||
# TRIGGER Privilege + no SELECT Privilege on t1 --> result for query
|
||||
SELECT * FROM db_datadict.t1;
|
||||
ERROR 42000: SELECT command denied to user 'testuser4'@'localhost' for table 't1'
|
||||
DESC db_datadict.t1;
|
||||
ERROR 42000: SELECT command denied to user 'testuser4'@'localhost' for table 't1'
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_name = 'trg1';
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
SHOW TRIGGERS FROM db_datadict;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
# Switch to connection default and close connections testuser1 - testuser4
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_name = 'trg1';
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
SHOW TRIGGERS FROM db_datadict;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
DROP USER 'testuser4'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
#########################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TRIGGERS modifications
|
||||
#########################################################################
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
CREATE TRIGGER db_datadict.trg1 BEFORE INSERT
|
||||
ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
|
||||
INSERT INTO information_schema.triggers
|
||||
SELECT * FROM information_schema.triggers;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.triggers SET trigger_schema = 'test'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.triggers WHERE trigger_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.triggers;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_triggers ON information_schema.triggers(trigger_schema);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.triggers DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.triggers ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.triggers;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.triggers RENAME db_datadict.triggers;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.triggers RENAME information_schema.xtriggers;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,208 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'TRIGGERS';
|
||||
Tables_in_information_schema (TRIGGERS)
|
||||
TRIGGERS
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.TRIGGERS;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.TRIGGERS;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.TRIGGERS;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.TRIGGERS;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.12.1: INFORMATION_SCHEMA.TRIGGERS layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.TRIGGERS;
|
||||
Field Type Null Key Default Extra
|
||||
TRIGGER_CATALOG varchar(512) YES NULL
|
||||
TRIGGER_SCHEMA varchar(64) NO
|
||||
TRIGGER_NAME varchar(64) NO
|
||||
EVENT_MANIPULATION varchar(6) NO
|
||||
EVENT_OBJECT_CATALOG varchar(512) YES NULL
|
||||
EVENT_OBJECT_SCHEMA varchar(64) NO
|
||||
EVENT_OBJECT_TABLE varchar(64) NO
|
||||
ACTION_ORDER bigint(4) NO 0
|
||||
ACTION_CONDITION longtext YES NULL
|
||||
ACTION_STATEMENT longtext NO NULL
|
||||
ACTION_ORIENTATION varchar(9) NO
|
||||
ACTION_TIMING varchar(6) NO
|
||||
ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL
|
||||
ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL
|
||||
ACTION_REFERENCE_OLD_ROW varchar(3) NO
|
||||
ACTION_REFERENCE_NEW_ROW varchar(3) NO
|
||||
CREATED datetime YES NULL
|
||||
SQL_MODE longtext NO NULL
|
||||
DEFINER longtext NO NULL
|
||||
SHOW CREATE TABLE information_schema.TRIGGERS;
|
||||
Table Create Table
|
||||
TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
|
||||
`TRIGGER_CATALOG` varchar(512) default NULL,
|
||||
`TRIGGER_SCHEMA` varchar(64) NOT NULL default '',
|
||||
`TRIGGER_NAME` varchar(64) NOT NULL default '',
|
||||
`EVENT_MANIPULATION` varchar(6) NOT NULL default '',
|
||||
`EVENT_OBJECT_CATALOG` varchar(512) default NULL,
|
||||
`EVENT_OBJECT_SCHEMA` varchar(64) NOT NULL default '',
|
||||
`EVENT_OBJECT_TABLE` varchar(64) NOT NULL default '',
|
||||
`ACTION_ORDER` bigint(4) NOT NULL default '0',
|
||||
`ACTION_CONDITION` longtext,
|
||||
`ACTION_STATEMENT` longtext NOT NULL,
|
||||
`ACTION_ORIENTATION` varchar(9) NOT NULL default '',
|
||||
`ACTION_TIMING` varchar(6) NOT NULL default '',
|
||||
`ACTION_REFERENCE_OLD_TABLE` varchar(64) default NULL,
|
||||
`ACTION_REFERENCE_NEW_TABLE` varchar(64) default NULL,
|
||||
`ACTION_REFERENCE_OLD_ROW` varchar(3) NOT NULL default '',
|
||||
`ACTION_REFERENCE_NEW_ROW` varchar(3) NOT NULL default '',
|
||||
`CREATED` datetime default NULL,
|
||||
`SQL_MODE` longtext NOT NULL,
|
||||
`DEFINER` longtext NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.TRIGGERS;
|
||||
Field Type Null Key Default Extra
|
||||
TRIGGER_CATALOG varchar(512) YES NULL
|
||||
TRIGGER_SCHEMA varchar(64) NO
|
||||
TRIGGER_NAME varchar(64) NO
|
||||
EVENT_MANIPULATION varchar(6) NO
|
||||
EVENT_OBJECT_CATALOG varchar(512) YES NULL
|
||||
EVENT_OBJECT_SCHEMA varchar(64) NO
|
||||
EVENT_OBJECT_TABLE varchar(64) NO
|
||||
ACTION_ORDER bigint(4) NO 0
|
||||
ACTION_CONDITION longtext YES NULL
|
||||
ACTION_STATEMENT longtext NO NULL
|
||||
ACTION_ORIENTATION varchar(9) NO
|
||||
ACTION_TIMING varchar(6) NO
|
||||
ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL
|
||||
ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL
|
||||
ACTION_REFERENCE_OLD_ROW varchar(3) NO
|
||||
ACTION_REFERENCE_NEW_ROW varchar(3) NO
|
||||
CREATED datetime YES NULL
|
||||
SQL_MODE longtext NO NULL
|
||||
DEFINER longtext NO NULL
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
|
||||
OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
|
||||
OR action_reference_new_table IS NOT NULL;
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
||||
##################################################################################
|
||||
# Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS accessible information
|
||||
##################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
DROP USER 'testuser4'@'localhost';
|
||||
CREATE USER 'testuser4'@'localhost';
|
||||
GRANT SUPER ON *.* TO 'testuser1'@'localhost';
|
||||
GRANT SUPER ON *.* TO 'testuser3'@'localhost';
|
||||
GRANT SUPER ON *.* TO 'testuser4'@'localhost';
|
||||
GRANT ALL ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
CREATE TABLE db_datadict.t1 (f1 INT, f2 INT, f3 INT)
|
||||
ENGINE = <engine_type>;
|
||||
CREATE TRIGGER trg1 BEFORE INSERT
|
||||
ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
|
||||
GRANT ALL ON db_datadict.t1 TO 'testuser2'@'localhost';
|
||||
GRANT SELECT ON db_datadict.t1 TO 'testuser3'@'localhost';
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_name = 'trg1';
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
|
||||
SHOW TRIGGERS FROM db_datadict;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
# No SUPER Privilege --> no result for query
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_name = 'trg1';
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
|
||||
SHOW TRIGGERS FROM db_datadict;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
SHOW GRANTS FOR 'testuser3'@'localhost';
|
||||
# SUPER Privilege + SELECT Privilege on t1 --> result for query
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_name = 'trg1';
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
|
||||
SHOW TRIGGERS FROM db_datadict;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
|
||||
# Establish connection testuser4 (user=testuser4)
|
||||
SHOW GRANTS FOR 'testuser4'@'localhost';
|
||||
# SUPER Privilege + no SELECT Privilege on t1 --> no result for query
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_name = 'trg1';
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
|
||||
SHOW TRIGGERS FROM db_datadict;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
|
||||
# Switch to connection default and close connections testuser1 - testuser4
|
||||
SELECT * FROM information_schema.triggers
|
||||
WHERE trigger_name = 'trg1';
|
||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
|
||||
SHOW TRIGGERS FROM db_datadict;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
DROP USER 'testuser4'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
#########################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TRIGGERS modifications
|
||||
#########################################################################
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE db_datadict.t1 (f1 BIGINT)
|
||||
ENGINE = <engine_type>;
|
||||
CREATE TRIGGER db_datadict.trg1 BEFORE INSERT
|
||||
ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
|
||||
INSERT INTO information_schema.triggers
|
||||
SELECT * FROM information_schema.triggers;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.triggers SET trigger_schema = 'test'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.triggers WHERE trigger_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.triggers;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_triggers ON information_schema.triggers(trigger_schema);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.triggers DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.triggers ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.triggers;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.triggers RENAME db_datadict.triggers;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.triggers RENAME information_schema.xtriggers;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,400 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'USER_PRIVILEGES';
|
||||
Tables_in_information_schema (USER_PRIVILEGES)
|
||||
USER_PRIVILEGES
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.USER_PRIVILEGES;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.USER_PRIVILEGES;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.USER_PRIVILEGES;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.USER_PRIVILEGES;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.16.1: INFORMATION_SCHEMA.USER_PRIVILEGES layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.USER_PRIVILEGES;
|
||||
Field Type Null Key Default Extra
|
||||
GRANTEE varchar(81) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
PRIVILEGE_TYPE varchar(64) NO
|
||||
IS_GRANTABLE varchar(3) NO
|
||||
SHOW CREATE TABLE information_schema.USER_PRIVILEGES;
|
||||
Table Create Table
|
||||
USER_PRIVILEGES CREATE TEMPORARY TABLE `USER_PRIVILEGES` (
|
||||
`GRANTEE` varchar(81) NOT NULL DEFAULT '',
|
||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '',
|
||||
`IS_GRANTABLE` varchar(3) NOT NULL DEFAULT ''
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.USER_PRIVILEGES;
|
||||
Field Type Null Key Default Extra
|
||||
GRANTEE varchar(81) NO
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
PRIVILEGE_TYPE varchar(64) NO
|
||||
IS_GRANTABLE varchar(3) NO
|
||||
SELECT grantee, table_catalog, privilege_type
|
||||
FROM information_schema.user_privileges
|
||||
WHERE table_catalog IS NOT NULL;
|
||||
grantee table_catalog privilege_type
|
||||
##########################################################################
|
||||
# Testcases 3.2.16.2+3.2.16.3+3.2.16.4: INFORMATION_SCHEMA.USER_PRIVILEGES
|
||||
# accessible information
|
||||
##########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
CREATE USER 'testuser3'@'localhost';
|
||||
GRANT SELECT ON db_datadict.* TO 'testuser1'@'localhost';
|
||||
GRANT SELECT ON mysql.user TO 'testuser1'@'localhost';
|
||||
GRANT INSERT ON *.* TO 'testuser2'@'localhost';
|
||||
GRANT UPDATE ON *.* TO 'testuser2'@'localhost';
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
'testuser2'@'localhost' NULL INSERT NO
|
||||
'testuser2'@'localhost' NULL UPDATE NO
|
||||
'testuser3'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
#
|
||||
# Add GRANT OPTION db_datadict.* to testuser1;
|
||||
GRANT UPDATE ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
'testuser2'@'localhost' NULL INSERT NO
|
||||
'testuser2'@'localhost' NULL UPDATE NO
|
||||
'testuser3'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
SHOW GRANTS;
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT, UPDATE ON `db_datadict`.* TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT SELECT ON `mysql`.`user` TO 'testuser1'@'localhost'
|
||||
|
||||
# Now add SELECT on *.* to testuser1;
|
||||
# Switch to connection default
|
||||
GRANT SELECT ON *.* TO 'testuser1'@'localhost';
|
||||
#
|
||||
# Here <SELECT NO> is shown correctly for testuser1;
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL SELECT NO
|
||||
'testuser2'@'localhost' NULL INSERT NO
|
||||
'testuser2'@'localhost' NULL UPDATE NO
|
||||
'testuser3'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 Y N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
GRANT SELECT ON *.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
#
|
||||
# Here <SELECT YES> is shown correctly for testuser1;
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL SELECT YES
|
||||
'testuser2'@'localhost' NULL INSERT NO
|
||||
'testuser2'@'localhost' NULL UPDATE NO
|
||||
'testuser3'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 Y N N N N N N N N N Y N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL SELECT YES
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 Y N N N N N N N N N Y N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
SHOW GRANTS;
|
||||
Grants for testuser1@localhost
|
||||
GRANT SELECT ON *.* TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT SELECT, UPDATE ON `db_datadict`.* TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT SELECT ON `mysql`.`user` TO 'testuser1'@'localhost'
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser2'@'localhost' NULL INSERT NO
|
||||
'testuser2'@'localhost' NULL UPDATE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table 'user'
|
||||
SHOW GRANTS;
|
||||
Grants for testuser2@localhost
|
||||
GRANT INSERT, UPDATE ON *.* TO 'testuser2'@'localhost'
|
||||
# Establish connection testuser3 (user=testuser3)
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser3'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
ERROR 42000: SELECT command denied to user 'testuser3'@'localhost' for table 'user'
|
||||
SHOW GRANTS;
|
||||
Grants for testuser3@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser3'@'localhost'
|
||||
|
||||
# Revoke privileges from testuser1;
|
||||
# Switch to connection default
|
||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
'testuser2'@'localhost' NULL INSERT NO
|
||||
'testuser2'@'localhost' NULL UPDATE NO
|
||||
'testuser3'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 'user'
|
||||
SHOW GRANTS;
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
CREATE TABLE db_datadict.tb_55 ( c1 TEXT );
|
||||
ERROR 42000: CREATE command denied to user 'testuser1'@'localhost' for table 'tb_55'
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 'user'
|
||||
SHOW GRANTS;
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
CREATE TABLE db_datadict.tb_66 ( c1 TEXT );
|
||||
ERROR 42000: CREATE command denied to user 'testuser1'@'localhost' for table 'tb_66'
|
||||
|
||||
# Add ALL on db_datadict.* (and select on mysql.user) to testuser1;
|
||||
# Switch to connection default
|
||||
GRANT ALL ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||
GRANT SELECT ON mysql.user TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
'testuser2'@'localhost' NULL INSERT NO
|
||||
'testuser2'@'localhost' NULL UPDATE NO
|
||||
'testuser3'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
SHOW GRANTS;
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `db_datadict`.* TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT SELECT ON `mysql`.`user` TO 'testuser1'@'localhost'
|
||||
CREATE TABLE db_datadict.tb_56 ( c1 TEXT );
|
||||
ERROR 42000: CREATE command denied to user 'testuser1'@'localhost' for table 'tb_56'
|
||||
USE db_datadict;
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
SHOW GRANTS;
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT ALL PRIVILEGES ON `db_datadict`.* TO 'testuser1'@'localhost' WITH GRANT OPTION
|
||||
GRANT SELECT ON `mysql`.`user` TO 'testuser1'@'localhost'
|
||||
CREATE TABLE tb_57 ( c1 TEXT )
|
||||
ENGINE = <other_engine_type>;
|
||||
|
||||
# Revoke privileges from testuser1;
|
||||
# Switch to connection default
|
||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
'testuser2'@'localhost' NULL INSERT NO
|
||||
'testuser2'@'localhost' NULL UPDATE NO
|
||||
'testuser3'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||||
localhost testuser1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser2 N Y Y N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
localhost testuser3 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0
|
||||
# Switch to connection testuser1
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee LIKE '''testuser%'''
|
||||
ORDER BY grantee, table_catalog, privilege_type;
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
SELECT * FROM mysql.user
|
||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
||||
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 'user'
|
||||
SHOW GRANTS;
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
CREATE TABLE db_datadict.tb_58 ( c1 TEXT )
|
||||
ENGINE = <other_engine_type>;
|
||||
USE db_datadict;
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'db_datadict'
|
||||
CREATE TABLE db_datadict.tb_59 ( c1 TEXT )
|
||||
ENGINE = <other_engine_type>;
|
||||
# Switch to connection default and close connections testuser1,testuser2,testuser3
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'testuser3'@'localhost';
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
########################################################################################
|
||||
# Testcases 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.USER_PRIVILEGES modifications
|
||||
########################################################################################
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee = '''testuser1''@''localhost''';
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
ERROR 42000: There is no such grant defined for user 'testuser1' on host 'localhost'
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee = '''testuser1''@''localhost''';
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL USAGE NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO 'testuser1'@'localhost'
|
||||
GRANT SELECT, FILE ON *.* TO 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee = '''testuser1''@''localhost''';
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
'testuser1'@'localhost' NULL SELECT NO
|
||||
'testuser1'@'localhost' NULL FILE NO
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT SELECT, FILE ON *.* TO 'testuser1'@'localhost'
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.user_privileges
|
||||
WHERE grantee = '''testuser1''@''localhost''';
|
||||
GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
ERROR 42000: There is no such grant defined for user 'testuser1' on host 'localhost'
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||
########################################################################
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
INSERT INTO information_schema.user_privileges
|
||||
SELECT * FROM information_schema.user_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.user_privileges
|
||||
SET PRIVILEGE_TYPE = 'gaming';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.user_privileges
|
||||
WHERE grantee = '''testuser1''@''localhost''';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.user_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX i1 ON information_schema.user_privileges(grantee);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.user_privileges ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.user_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.user_privileges
|
||||
RENAME db_datadict.user_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.user_privileges
|
||||
RENAME information_schema.xuser_privileges;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
242
build/lib/mysql/mysql-test/suite/funcs_1/r/is_views.result
Normal file
242
build/lib/mysql/mysql-test/suite/funcs_1/r/is_views.result
Normal file
@@ -0,0 +1,242 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'VIEWS';
|
||||
Tables_in_information_schema (VIEWS)
|
||||
VIEWS
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.VIEWS;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.VIEWS;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.VIEWS;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.VIEWS;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.13.1: INFORMATION_SCHEMA.VIEWS layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.VIEWS;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
VIEW_DEFINITION longtext NO NULL
|
||||
CHECK_OPTION varchar(8) NO
|
||||
IS_UPDATABLE varchar(3) NO
|
||||
DEFINER varchar(77) NO
|
||||
SECURITY_TYPE varchar(7) NO
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
COLLATION_CONNECTION varchar(32) NO
|
||||
SHOW CREATE TABLE information_schema.VIEWS;
|
||||
Table Create Table
|
||||
VIEWS CREATE TEMPORARY TABLE `VIEWS` (
|
||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`VIEW_DEFINITION` longtext NOT NULL,
|
||||
`CHECK_OPTION` varchar(8) NOT NULL DEFAULT '',
|
||||
`IS_UPDATABLE` varchar(3) NOT NULL DEFAULT '',
|
||||
`DEFINER` varchar(77) NOT NULL DEFAULT '',
|
||||
`SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
|
||||
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.VIEWS;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
VIEW_DEFINITION longtext NO NULL
|
||||
CHECK_OPTION varchar(8) NO
|
||||
IS_UPDATABLE varchar(3) NO
|
||||
DEFINER varchar(77) NO
|
||||
SECURITY_TYPE varchar(7) NO
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
COLLATION_CONNECTION varchar(32) NO
|
||||
SELECT table_catalog, table_schema, table_name
|
||||
FROM information_schema.views WHERE table_catalog IS NOT NULL;
|
||||
table_catalog table_schema table_name
|
||||
################################################################################
|
||||
# Testcase 3.2.13.2 + 3.2.13.3: INFORMATION_SCHEMA.VIEWS accessible information
|
||||
################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'test_no_views'@'localhost';
|
||||
CREATE USER 'test_no_views'@'localhost';
|
||||
CREATE TABLE db_datadict.t1(f1 INT, f2 INT, f3 INT)
|
||||
ENGINE = <engine_type>;
|
||||
CREATE VIEW db_datadict.v_granted_to_1 AS SELECT * FROM db_datadict.t1;
|
||||
CREATE VIEW db_datadict.v_granted_glob AS SELECT f2, f3 FROM db_datadict.t1;
|
||||
GRANT SELECT ON db_datadict.t1 TO 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict.v_granted_to_1 TO 'testuser1'@'localhost';
|
||||
GRANT SHOW VIEW, CREATE VIEW ON db_datadict.* TO 'testuser2'@'localhost';
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
|
||||
NULL db_datadict v_granted_glob select `db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
|
||||
NULL db_datadict v_granted_to_1 select `db_datadict`.`t1`.`f1` AS `f1`,`db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
|
||||
NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
|
||||
NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
|
||||
NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci
|
||||
# Establish connection test_no_views (user=test_no_views)
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
|
||||
# Switch to connection default and close all other connections
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'test_no_views'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
#########################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.VIEWS modifications
|
||||
#########################################################################
|
||||
DROP TABLE IF EXISTS test.t1_my_table;
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
ENGINE = <engine_type>;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%';
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
|
||||
CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%';
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION
|
||||
NULL test t1_view select distinct `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE NO root@localhost DEFINER latin1 latin1_swedish_ci
|
||||
SELECT table_name,definer FROM information_schema.views
|
||||
WHERE table_name = 't1_view';
|
||||
table_name definer
|
||||
t1_view root@localhost
|
||||
ALTER DEFINER = 'testuser1'@'localhost' VIEW test.t1_view AS
|
||||
SELECT DISTINCT f1 FROM test.t1_table;
|
||||
SELECT table_name,definer,security_type FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%';
|
||||
table_name definer security_type
|
||||
t1_view testuser1@localhost DEFINER
|
||||
ALTER DEFINER = 'root'@'localhost' SQL SECURITY INVOKER VIEW test.t1_view AS
|
||||
SELECT f1 FROM test.t1_table WITH LOCAL CHECK OPTION;
|
||||
SELECT table_name,definer,security_type FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%';
|
||||
table_name definer security_type
|
||||
t1_view root@localhost INVOKER
|
||||
SELECT table_schema,table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_schema,table_name;
|
||||
table_schema table_name
|
||||
test t1_view
|
||||
RENAME TABLE test.t1_view TO db_datadict.t1_view;
|
||||
ERROR HY000: Changing schema from 'test' to 'db_datadict' is not allowed.
|
||||
DROP VIEW test.t1_view;
|
||||
CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
|
||||
SELECT table_schema,table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_schema,table_name;
|
||||
table_schema table_name
|
||||
db_datadict t1_view
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_view
|
||||
RENAME TABLE db_datadict.t1_view TO db_datadict.t1_viewx;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_viewx
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_viewx
|
||||
DROP VIEW db_datadict.t1_viewx;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_view
|
||||
DROP TABLE test.t1_table;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_view
|
||||
CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci COMMENT = 'Initial Comment'
|
||||
ENGINE = <engine_type>;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_view
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP TABLE test.t1_table;
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA table are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE VIEW db_datadict.v1 AS SELECT 1;
|
||||
INSERT INTO information_schema.views
|
||||
SELECT * FROM information_schema.views;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
INSERT INTO information_schema.views(table_schema, table_name)
|
||||
VALUES ('db2', 'v2');
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.views SET table_schema = 'test'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.views WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.views;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_views ON information_schema.views(table_schema);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.views DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.views ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.views;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.views RENAME db_datadict.views;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.views RENAME information_schema.xviews;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,241 @@
|
||||
SHOW TABLES FROM information_schema LIKE 'VIEWS';
|
||||
Tables_in_information_schema (VIEWS)
|
||||
VIEWS
|
||||
#######################################################################
|
||||
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
||||
#######################################################################
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
CREATE VIEW test.v1 AS SELECT * FROM information_schema.VIEWS;
|
||||
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.VIEWS;
|
||||
CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.VIEWS;
|
||||
RETURN counter;
|
||||
END//
|
||||
# Attention: The printing of the next result sets is disabled.
|
||||
SELECT * FROM information_schema.VIEWS;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
||||
#########################################################################
|
||||
# Testcase 3.2.13.1: INFORMATION_SCHEMA.VIEWS layout
|
||||
#########################################################################
|
||||
DESCRIBE information_schema.VIEWS;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
VIEW_DEFINITION longtext NO NULL
|
||||
CHECK_OPTION varchar(8) NO
|
||||
IS_UPDATABLE varchar(3) NO
|
||||
DEFINER varchar(77) NO
|
||||
SECURITY_TYPE varchar(7) NO
|
||||
SHOW CREATE TABLE information_schema.VIEWS;
|
||||
Table Create Table
|
||||
VIEWS CREATE TEMPORARY TABLE `VIEWS` (
|
||||
`TABLE_CATALOG` varchar(512) default NULL,
|
||||
`TABLE_SCHEMA` varchar(64) NOT NULL default '',
|
||||
`TABLE_NAME` varchar(64) NOT NULL default '',
|
||||
`VIEW_DEFINITION` longtext NOT NULL,
|
||||
`CHECK_OPTION` varchar(8) NOT NULL default '',
|
||||
`IS_UPDATABLE` varchar(3) NOT NULL default '',
|
||||
`DEFINER` varchar(77) NOT NULL default '',
|
||||
`SECURITY_TYPE` varchar(7) NOT NULL default ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.VIEWS;
|
||||
Field Type Null Key Default Extra
|
||||
TABLE_CATALOG varchar(512) YES NULL
|
||||
TABLE_SCHEMA varchar(64) NO
|
||||
TABLE_NAME varchar(64) NO
|
||||
VIEW_DEFINITION longtext NO NULL
|
||||
CHECK_OPTION varchar(8) NO
|
||||
IS_UPDATABLE varchar(3) NO
|
||||
DEFINER varchar(77) NO
|
||||
SECURITY_TYPE varchar(7) NO
|
||||
SELECT table_catalog, table_schema, table_name
|
||||
FROM information_schema.views WHERE table_catalog IS NOT NULL;
|
||||
table_catalog table_schema table_name
|
||||
################################################################################
|
||||
# Testcase 3.2.13.2 + 3.2.13.3: INFORMATION_SCHEMA.VIEWS accessible information
|
||||
################################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
CREATE USER 'testuser2'@'localhost';
|
||||
DROP USER 'test_no_views'@'localhost';
|
||||
CREATE USER 'test_no_views'@'localhost';
|
||||
CREATE TABLE db_datadict.t1(f1 INT, f2 INT, f3 INT)
|
||||
ENGINE = <engine_type>;
|
||||
CREATE VIEW db_datadict.v_granted_to_1 AS SELECT * FROM db_datadict.t1;
|
||||
CREATE VIEW db_datadict.v_granted_glob AS SELECT f2, f3 FROM db_datadict.t1;
|
||||
GRANT SELECT ON db_datadict.t1 TO 'testuser1'@'localhost';
|
||||
GRANT SELECT ON db_datadict.v_granted_to_1 TO 'testuser1'@'localhost';
|
||||
GRANT SHOW VIEW, CREATE VIEW ON db_datadict.* TO 'testuser2'@'localhost';
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
||||
NULL db_datadict v_granted_glob /* ALGORITHM=UNDEFINED */ select `db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER
|
||||
NULL db_datadict v_granted_to_1 /* ALGORITHM=UNDEFINED */ select `db_datadict`.`t1`.`f1` AS `f1`,`db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER
|
||||
# Establish connection testuser1 (user=testuser1)
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
||||
NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER
|
||||
NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER
|
||||
# Establish connection testuser2 (user=testuser2)
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
||||
NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER
|
||||
NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER
|
||||
# Establish connection test_no_views (user=test_no_views)
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
||||
NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER
|
||||
NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER
|
||||
# Switch to connection default and close all other connections
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP USER 'testuser2'@'localhost';
|
||||
DROP USER 'test_no_views'@'localhost';
|
||||
DROP DATABASE db_datadict;
|
||||
#########################################################################
|
||||
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.VIEWS modifications
|
||||
#########################################################################
|
||||
DROP TABLE IF EXISTS test.t1_my_table;
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||
ENGINE = <engine_type>;
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
CREATE USER 'testuser1'@'localhost';
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%';
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
||||
CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
|
||||
SELECT * FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%';
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
||||
NULL test t1_view /* ALGORITHM=UNDEFINED */ select distinct `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE NO root@localhost DEFINER
|
||||
SELECT table_name,definer FROM information_schema.views
|
||||
WHERE table_name = 't1_view';
|
||||
table_name definer
|
||||
t1_view root@localhost
|
||||
ALTER DEFINER = 'testuser1'@'localhost' VIEW test.t1_view AS
|
||||
SELECT DISTINCT f1 FROM test.t1_table;
|
||||
SELECT table_name,definer,security_type FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%';
|
||||
table_name definer security_type
|
||||
t1_view testuser1@localhost DEFINER
|
||||
ALTER DEFINER = 'root'@'localhost' SQL SECURITY INVOKER VIEW test.t1_view AS
|
||||
SELECT f1 FROM test.t1_table WITH LOCAL CHECK OPTION;
|
||||
SELECT table_name,definer,security_type FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%';
|
||||
table_name definer security_type
|
||||
t1_view root@localhost INVOKER
|
||||
SELECT table_schema,table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_schema,table_name;
|
||||
table_schema table_name
|
||||
test t1_view
|
||||
RENAME TABLE test.t1_view TO db_datadict.t1_view;
|
||||
ERROR HY000: Changing schema from 'test' to 'db_datadict' is not allowed.
|
||||
DROP VIEW test.t1_view;
|
||||
CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
|
||||
SELECT table_schema,table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_schema,table_name;
|
||||
table_schema table_name
|
||||
db_datadict t1_view
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_view
|
||||
RENAME TABLE db_datadict.t1_view TO db_datadict.t1_viewx;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_viewx
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_viewx
|
||||
DROP VIEW db_datadict.t1_viewx;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_view
|
||||
DROP TABLE test.t1_table;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_view
|
||||
Warnings:
|
||||
Warning 1356 View 'db_datadict.t1_view' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
|
||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci COMMENT = 'Initial Comment'
|
||||
ENGINE = <engine_type>;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
t1_view
|
||||
DROP DATABASE db_datadict;
|
||||
SELECT table_name FROM information_schema.views
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_name;
|
||||
table_name
|
||||
DROP USER 'testuser1'@'localhost';
|
||||
DROP TABLE test.t1_table;
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
# DDL on INFORMATION_SCHEMA table are not supported
|
||||
########################################################################
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
CREATE DATABASE db_datadict;
|
||||
CREATE VIEW db_datadict.v1 AS SELECT 1;
|
||||
INSERT INTO information_schema.views
|
||||
SELECT * FROM information_schema.views;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
INSERT INTO information_schema.views(table_schema, table_name)
|
||||
VALUES ('db2', 'v2');
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
UPDATE information_schema.views SET table_schema = 'test'
|
||||
WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DELETE FROM information_schema.views WHERE table_name = 't1';
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
TRUNCATE information_schema.views;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
CREATE INDEX my_idx_on_views ON information_schema.views(table_schema);
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.views DROP PRIMARY KEY;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.views ADD f1 INT;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP TABLE information_schema.views;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.views RENAME db_datadict.views;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
ALTER TABLE information_schema.views RENAME information_schema.xviews;
|
||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
DROP DATABASE db_datadict;
|
||||
@@ -0,0 +1,4 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
|
||||
NOT YET IMPLEMENTED: bitdata tests
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,4 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
|
||||
NOT YET IMPLEMENTED: cursor tests
|
||||
--------------------------------------------------------------------------------
|
||||
5271
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_func_view.result
Normal file
5271
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_func_view.result
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,497 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
|
||||
--source suite/funcs_1/storedproc/load_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
CREATE DATABASE db_storedproc;
|
||||
CREATE DATABASE db_storedproc_1;
|
||||
USE db_storedproc;
|
||||
create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
|
||||
create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
|
||||
create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
|
||||
create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
|
||||
USE db_storedproc_1;
|
||||
create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
|
||||
USE db_storedproc;
|
||||
create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
|
||||
create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
|
||||
create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
|
||||
|
||||
Section 3.1.3 - Syntax checks for the stored procedure-specific flow
|
||||
control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE:
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Testcase 3.1.3.7:
|
||||
-----------------
|
||||
|
||||
Ensure that the IF statement acts correctly for all variants, including cases
|
||||
where statements are nested.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
DROP PROCEDURE IF EXISTS sp9;
|
||||
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
|
||||
CREATE PROCEDURE sp9( action char(20), subaction char(20) )
|
||||
BEGIN
|
||||
if action = 'action' then
|
||||
if subaction = 'subaction' then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction' , 1);
|
||||
else
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'none' , 2);
|
||||
END if;
|
||||
else
|
||||
if subaction = 'subaction'
|
||||
then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction' , 3);
|
||||
elseif subaction = 'subaction1'
|
||||
then
|
||||
BEGIN
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values ('none', 'subaction1', 4);
|
||||
END;
|
||||
else
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'none' , 5);
|
||||
END if;
|
||||
END if;
|
||||
END//
|
||||
CALL sp9( 'action', 'subaction' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=1;
|
||||
f1 f2 f3
|
||||
action subaction 1
|
||||
CALL sp9( 'temp', 'subaction' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=3;
|
||||
f1 f2 f3
|
||||
none subaction 3
|
||||
CALL sp9( 'temp', 'subaction1' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=4;
|
||||
f1 f2 f3
|
||||
none subaction1 4
|
||||
CALL sp9( 'action', 'temp' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=2;
|
||||
f1 f2 f3
|
||||
action none 2
|
||||
CALL sp9( 'temp', 'temp' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=5;
|
||||
f1 f2 f3
|
||||
none none 5
|
||||
DROP PROCEDURE sp9;
|
||||
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
|
||||
Testcase 3.1.3.8.:
|
||||
------------------
|
||||
|
||||
Ensure that the CASE statement acts correctly for all variants, including cases
|
||||
where statements are nested.
|
||||
--------------------------------------------------------------------------------
|
||||
drop table IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
DROP PROCEDURE IF EXISTS sp10;
|
||||
create table res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 char(20), f2 varchar(20), f3 smallint);
|
||||
CREATE PROCEDURE sp10( action char(20), subaction char(20) )
|
||||
BEGIN
|
||||
case action
|
||||
when 'action' then
|
||||
case
|
||||
when subaction = 'subaction_1' then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction_2' , 1);
|
||||
when subaction = 'subaction_2' then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction_2' , 2);
|
||||
else
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'none' , 3);
|
||||
END case;
|
||||
else
|
||||
case
|
||||
when subaction = 'subaction_1' then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction_1' , 4);
|
||||
when subaction = 'subaction_2' then
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction_2' , 5);
|
||||
else
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'none' , 6);
|
||||
END case;
|
||||
END case;
|
||||
END//
|
||||
CALL sp10( 'action', 'subaction_1' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
action subaction_2 1
|
||||
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CALL sp10( 'action', 'subaction_2' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
action subaction_2 2
|
||||
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CALL sp10( 'temp', 'subaction_1' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
none subaction_1 4
|
||||
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CALL sp10( 'temp', 'subaction_2' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
none subaction_2 5
|
||||
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CALL sp10( 'action', 'temp' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
action none 3
|
||||
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CALL sp10( 'temp', 'temp' );
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
none none 6
|
||||
DROP PROCEDURE sp10;
|
||||
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
|
||||
Testcase 3.1.3.9 + 3.1.3.15:
|
||||
----------------------------
|
||||
|
||||
09. Ensure that the LOOP statement acts correctly for all variants, including
|
||||
. cases where statements are nested.
|
||||
15. Ensure that the LEAVE statement acts correctly for all variants, including
|
||||
. cases where statements are nested.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
DROP PROCEDURE IF EXISTS sp11;
|
||||
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
|
||||
CREATE PROCEDURE sp11( )
|
||||
BEGIN
|
||||
declare count1 integer default 1;
|
||||
declare count2 integer default 1;
|
||||
label1: loop
|
||||
if count2 > 3 then leave label1;
|
||||
END if;
|
||||
set count1 = 1;
|
||||
label2: loop
|
||||
if count1 > 4 then leave label2;
|
||||
END if;
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'xyz' , 'pqr', count1);
|
||||
set count1 = count1 + 1;
|
||||
iterate label2;
|
||||
END loop label2;
|
||||
set count2 = count2 + 1;
|
||||
iterate label1;
|
||||
END loop label1;
|
||||
END//
|
||||
CALL sp11();
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
xyz pqr 1
|
||||
xyz pqr 2
|
||||
xyz pqr 3
|
||||
xyz pqr 4
|
||||
xyz pqr 1
|
||||
xyz pqr 2
|
||||
xyz pqr 3
|
||||
xyz pqr 4
|
||||
xyz pqr 1
|
||||
xyz pqr 2
|
||||
xyz pqr 3
|
||||
xyz pqr 4
|
||||
DROP PROCEDURE sp11;
|
||||
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
|
||||
Testcase 3.1.3.16:
|
||||
------------------
|
||||
|
||||
Ensure that the ITERATE statement acts correctly for all variants, including
|
||||
cases where statements are nested.
|
||||
(tests for this testcase are also included in other testcases)
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp31316;
|
||||
CREATE PROCEDURE sp31316( )
|
||||
BEGIN
|
||||
declare count1 integer default 1;
|
||||
declare count2 integer default 1;
|
||||
label1: loop
|
||||
if count2 > 3 then leave label1;
|
||||
END if;
|
||||
set count1 = 1;
|
||||
label2: loop
|
||||
if count1 > 4 then leave label2;
|
||||
END if;
|
||||
insert into temp values( count1, count2);
|
||||
set count1 = count1 + 1;
|
||||
iterate label3;
|
||||
END loop label2;
|
||||
set count2 = count2 + 1;
|
||||
iterate label1;
|
||||
END loop label1;
|
||||
END//
|
||||
ERROR 42000: ITERATE with no matching label: label3
|
||||
|
||||
Testcase 3.1.3.18:
|
||||
------------------
|
||||
|
||||
Ensure that the REPEAT statement acts correctly for all variants, including
|
||||
cases where statements are nested.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp17;
|
||||
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
|
||||
CREATE PROCEDURE sp17( )
|
||||
BEGIN
|
||||
declare count1 integer default 1;
|
||||
declare count2 integer default 1;
|
||||
repeat
|
||||
set count1 = count1 + 1;
|
||||
set count2 = 1;
|
||||
label1: repeat
|
||||
set count2 = count2 + 1;
|
||||
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'xyz' , 'pqr', count1);
|
||||
until count2 > 3
|
||||
END repeat label1;
|
||||
until count1 > 3
|
||||
END repeat;
|
||||
END//
|
||||
CALL sp17();
|
||||
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
f1 f2 f3
|
||||
xyz pqr 2
|
||||
xyz pqr 2
|
||||
xyz pqr 2
|
||||
xyz pqr 3
|
||||
xyz pqr 3
|
||||
xyz pqr 3
|
||||
xyz pqr 4
|
||||
xyz pqr 4
|
||||
xyz pqr 4
|
||||
DROP PROCEDURE sp17;
|
||||
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
|
||||
|
||||
Testcase 3.1.3.24:
|
||||
------------------
|
||||
|
||||
Ensure that the WHILE statement acts correctly for all variants, including cases
|
||||
where statements are nested.
|
||||
--------------------------------------------------------------------------------
|
||||
drop table IF EXISTS res_t21;
|
||||
DROP PROCEDURE IF EXISTS sp21;
|
||||
create table res_t21(name text(10), surname blob(20), age_averylongfieldname_averylongname_1234569 smallint);
|
||||
insert into res_t21 values('ashwin', 'mokadam', 25);
|
||||
CREATE PROCEDURE sp21( )
|
||||
BEGIN
|
||||
declare count1 integer default 0;
|
||||
declare count2 integer default 0;
|
||||
while count1 < 3 do
|
||||
BEGIN
|
||||
declare ithisissamevariablename int default 100;
|
||||
SELECT ithisissamevariablename;
|
||||
BEGIN
|
||||
declare ithisissamevariablename int default 200;
|
||||
SELECT ithisissamevariablename;
|
||||
END;
|
||||
set count2 = 0;
|
||||
label1: while count2 < 3 do
|
||||
BEGIN
|
||||
declare count1 integer default 7;
|
||||
set count2 = count2 + 1;
|
||||
insert into res_t21 values( 'xyz' , 'pqr', count2);
|
||||
label2: while count1 < 10 do
|
||||
set count1 = count1 + 1;
|
||||
insert into res_t21 values( 'xyz' , 'pqr', count1);
|
||||
END while label2;
|
||||
END;
|
||||
END while label1;
|
||||
set count1 = count1 + 1;
|
||||
END;
|
||||
END while;
|
||||
END//
|
||||
CALL sp21();
|
||||
ithisissamevariablename
|
||||
100
|
||||
ithisissamevariablename
|
||||
200
|
||||
ithisissamevariablename
|
||||
100
|
||||
ithisissamevariablename
|
||||
200
|
||||
ithisissamevariablename
|
||||
100
|
||||
ithisissamevariablename
|
||||
200
|
||||
SELECT * from res_t21;
|
||||
name surname age_averylongfieldname_averylongname_1234569
|
||||
ashwin mokadam 25
|
||||
xyz pqr 1
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 2
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 3
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 1
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 2
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 3
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 1
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 2
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
xyz pqr 3
|
||||
xyz pqr 8
|
||||
xyz pqr 9
|
||||
xyz pqr 10
|
||||
DROP PROCEDURE sp21;
|
||||
drop table res_t21;
|
||||
|
||||
Testcase 3.1.3.30:
|
||||
------------------
|
||||
|
||||
Ensure that multiple cases of all possible combinations of the control flow
|
||||
statements, nested within multiple compound statements within a stored
|
||||
procedure, always act correctly and return the expected result.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS res_tbl;
|
||||
DROP PROCEDURE IF EXISTS sp31330;
|
||||
create table res_tbl (f1 int, f2 text, f3 blob, f4 date,
|
||||
f5 set('one', 'two', 'three', 'four', 'five') default 'one');
|
||||
CREATE PROCEDURE sp31330 (path int)
|
||||
BEGIN
|
||||
declare count int default 1;
|
||||
declare var1 text;
|
||||
declare var2 blob;
|
||||
declare var3 date;
|
||||
declare var4 set('one', 'two', 'three', 'four', 'five') DEFAULT 'five';
|
||||
case
|
||||
when path=1 then
|
||||
set var3 = '2000-11-09';
|
||||
set var1 = 'flowing through case 1';
|
||||
label1: loop
|
||||
if count > 5 then
|
||||
if var4=1000 then
|
||||
set var2 = 'exiting out of case 1 - invalid SET';
|
||||
END if;
|
||||
if var4='two' then
|
||||
set var2 = 'exiting out of case 1';
|
||||
END if;
|
||||
insert into res_tbl values (1, var1, var2, var3, (count-2));
|
||||
leave label1;
|
||||
elseif count = 5 then
|
||||
set count= count + 2;
|
||||
set var4='two';
|
||||
iterate label1;
|
||||
else
|
||||
set count= count + 1;
|
||||
END if;
|
||||
set var4='one';
|
||||
END loop label1;
|
||||
when path=2 then
|
||||
set var3 = '1989-11-09';
|
||||
set var1 = 'flowing through case 2';
|
||||
set @count3=0;
|
||||
label2: repeat
|
||||
set count=count + 1;
|
||||
set @count2=1;
|
||||
while @count2 <= 5 do
|
||||
set @count2 = @count2 + 1;
|
||||
END while;
|
||||
SELECT @count2;
|
||||
set @count3=@count3 + @count2;
|
||||
until count > 5
|
||||
END repeat label2;
|
||||
set var2 = 'exiting out of case 2';
|
||||
set var4 = count-3;
|
||||
SELECT @count3;
|
||||
insert into res_tbl values (2, var1, var2, var3, var4);
|
||||
ELSE BEGIN
|
||||
set @error_opt='undefined path specified';
|
||||
SELECT @error_opt;
|
||||
END;
|
||||
END case;
|
||||
END//
|
||||
CALL sp31330();
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE db_storedproc.sp31330; expected 1, got 0
|
||||
CALL sp31330(1);
|
||||
SELECT * from res_tbl;
|
||||
f1 f2 f3 f4 f5
|
||||
1 flowing through case 1 exiting out of case 1 2000-11-09 one,three
|
||||
CALL sp31330(2);
|
||||
@count2
|
||||
6
|
||||
@count2
|
||||
6
|
||||
@count2
|
||||
6
|
||||
@count2
|
||||
6
|
||||
@count2
|
||||
6
|
||||
@count3
|
||||
30
|
||||
SELECT * from res_tbl;
|
||||
f1 f2 f3 f4 f5
|
||||
1 flowing through case 1 exiting out of case 1 2000-11-09 one,three
|
||||
2 flowing through case 2 exiting out of case 2 1989-11-09 one,two
|
||||
CALL sp31330(4);
|
||||
@error_opt
|
||||
undefined path specified
|
||||
DROP PROCEDURE sp31330;
|
||||
drop table res_tbl;
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
|
||||
. +++ END OF SCRIPT +++
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,394 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
|
||||
--source suite/funcs_1/storedproc/load_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
CREATE DATABASE db_storedproc;
|
||||
CREATE DATABASE db_storedproc_1;
|
||||
USE db_storedproc;
|
||||
create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
|
||||
create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
|
||||
create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
|
||||
create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
|
||||
USE db_storedproc_1;
|
||||
create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
|
||||
USE db_storedproc;
|
||||
create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
|
||||
create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
|
||||
create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
|
||||
|
||||
Section 3.1.6 - Privilege Checks:
|
||||
--------------------------------------------------------------------------------
|
||||
USE db_storedproc_1;
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
|
||||
Testcase 3.1.6.1:
|
||||
-----------------
|
||||
Ensure that no user may create a stored procedure without the GRANT CREATE
|
||||
ROUTINE privilege.
|
||||
--------------------------------------------------------------------------------
|
||||
create user 'user_1'@'localhost';
|
||||
grant all on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
revoke create routine on db_storedproc_1.* from 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
USE db_storedproc_1;
|
||||
CREATE PROCEDURE sp1(v1 char(20))
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||
END//
|
||||
ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1'
|
||||
USE db_storedproc_1;
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
USE db_storedproc_1;
|
||||
CREATE PROCEDURE sp1(v1 char(20))
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||
END//
|
||||
USE db_storedproc_1;
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
DROP USER 'user_1'@'localhost';
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
Testcase 3.1.6.2:
|
||||
-----------------
|
||||
Ensure that root always has the GRANT CREATE ROUTINE privilege.
|
||||
(checked by other testscases)
|
||||
--------------------------------------------------------------------------------
|
||||
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
DROP PROCEDURE IF EXISTS sp3;
|
||||
DROP FUNCTION IF EXISTS fn1;
|
||||
CREATE PROCEDURE sp3(v1 char(20))
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||
END//
|
||||
CREATE FUNCTION fn1(v1 int) returns int
|
||||
BEGIN
|
||||
return v1;
|
||||
END//
|
||||
USE db_storedproc_1;
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
drop user 'user_1'@'localhost';
|
||||
DROP PROCEDURE sp3;
|
||||
DROP FUNCTION fn1;
|
||||
|
||||
Testcase 3.1.6.4:
|
||||
-----------------
|
||||
Ensure that the default security provision of a stored procedure is SQL SECURITY
|
||||
DEFINER.
|
||||
--------------------------------------------------------------------------------
|
||||
CREATE USER 'user_1'@'localhost';
|
||||
grant update on db_storedproc_1.t6 to 'user_1'@'localhost';
|
||||
grant execute on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
USE db_storedproc_1;
|
||||
DROP PROCEDURE IF EXISTS sp4;
|
||||
CREATE PROCEDURE sp4(v1 char(20))
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||
END//
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
USE db_storedproc_1;
|
||||
CALL sp4('a');
|
||||
f1 f2 f3 f4 f5 f6
|
||||
SELECT SPECIFIC_NAME, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE,
|
||||
ROUTINE_BODY, ROUTINE_DEFINITION, IS_DETERMINISTIC,
|
||||
SQL_DATA_ACCESS, SECURITY_TYPE, SQL_MODE, ROUTINE_COMMENT
|
||||
FROM information_schema.routines
|
||||
WHERE routine_schema LIKE 'db_sto%';
|
||||
SPECIFIC_NAME sp4
|
||||
ROUTINE_SCHEMA db_storedproc_1
|
||||
ROUTINE_NAME sp4
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION NULL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SECURITY_TYPE DEFINER
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
DROP PROCEDURE sp4;
|
||||
DROP USER 'user_1'@'localhost';
|
||||
|
||||
Testcase 3.1.6.5:
|
||||
-----------------
|
||||
Ensure that a stored procedure defined with SQL SECURITY DEFINER can be
|
||||
called/executed by any user, using only the privileges (including database
|
||||
access privileges) associated with the user who created the stored procedure.
|
||||
--------------------------------------------------------------------------------
|
||||
USE db_storedproc_1;
|
||||
CREATE TABLE t3165 ( c1 char(20), c2 char(20), c3 date);
|
||||
INSERT INTO t3165 VALUES ('inserted', 'outside of SP', NULL);
|
||||
create user 'user_1'@'localhost';
|
||||
create user 'user_2'@'localhost';
|
||||
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
||||
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
CREATE PROCEDURE sp5_s_i () sql security definer
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t3165;
|
||||
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_s_i', 1000);
|
||||
END//
|
||||
CREATE PROCEDURE sp5_sel () sql security definer
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t3165;
|
||||
END//
|
||||
CREATE PROCEDURE sp5_ins () sql security definer
|
||||
BEGIN
|
||||
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_ins', 1000);
|
||||
END//
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp5_s_i();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_ins();
|
||||
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
CALL sp5_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
grant insert on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp5_s_i();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_ins();
|
||||
CALL sp5_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
CALL sp5_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
grant SELECT on db_storedproc_1.* to 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp5_s_i();
|
||||
c1 c2 c3
|
||||
inserted outside of SP NULL
|
||||
inserted from sp5_ins 2000-10-00
|
||||
CALL sp5_ins();
|
||||
CALL sp5_sel();
|
||||
c1 c2 c3
|
||||
inserted outside of SP NULL
|
||||
inserted from sp5_ins 2000-10-00
|
||||
inserted from sp5_s_i 2000-10-00
|
||||
inserted from sp5_ins 2000-10-00
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
REVOKE INSERT on db_storedproc_1.* from 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp5_s_i();
|
||||
c1 c2 c3
|
||||
inserted outside of SP NULL
|
||||
inserted from sp5_ins 2000-10-00
|
||||
inserted from sp5_s_i 2000-10-00
|
||||
inserted from sp5_ins 2000-10-00
|
||||
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_ins();
|
||||
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_sel();
|
||||
c1 c2 c3
|
||||
inserted outside of SP NULL
|
||||
inserted from sp5_ins 2000-10-00
|
||||
inserted from sp5_s_i 2000-10-00
|
||||
inserted from sp5_ins 2000-10-00
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
REVOKE SELECT on db_storedproc_1.* from 'user_1'@'localhost';
|
||||
flush privileges;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp5_s_i();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_ins();
|
||||
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
CALL sp5_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
DROP PROCEDURE sp5_s_i;
|
||||
DROP PROCEDURE sp5_sel;
|
||||
DROP PROCEDURE sp5_ins;
|
||||
DROP TABLE t3165;
|
||||
DROP USER 'user_1'@'localhost';
|
||||
DROP USER 'user_2'@'localhost';
|
||||
|
||||
Testcase 3.1.6.6:
|
||||
-----------------
|
||||
Ensure that a stored procedure defined with SQL SECURITY INVOKER can be
|
||||
called/executed by any user, using only the privileges (including database
|
||||
access privileges) associated with the user executing the stored procedure.
|
||||
--------------------------------------------------------------------------------
|
||||
USE db_storedproc_1;
|
||||
CREATE TABLE t3166 ( c1 char(30) );
|
||||
INSERT INTO db_storedproc_1.t3166 VALUES ('inserted outside SP');
|
||||
create user 'user_1'@'localhost';
|
||||
create user 'user_2'@'localhost';
|
||||
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
||||
GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_1@localhost db_storedproc_1
|
||||
CREATE PROCEDURE sp3166_s_i () SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t3166;
|
||||
insert into db_storedproc_1.t3166 values ('inserted from sp3166_s_i');
|
||||
END//
|
||||
CREATE PROCEDURE sp3166_sel () SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
SELECT * from db_storedproc_1.t3166;
|
||||
END//
|
||||
CREATE PROCEDURE sp3166_ins () SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
insert into db_storedproc_1.t3166 values ('inserted from sp3166_ins');
|
||||
END//
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp3166_s_i();
|
||||
c1
|
||||
inserted outside SP
|
||||
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table 't3166'
|
||||
CALL sp3166_ins();
|
||||
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table 't3166'
|
||||
CALL sp3166_sel();
|
||||
c1
|
||||
inserted outside SP
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
CALL sp3166_sel();
|
||||
c1
|
||||
inserted outside SP
|
||||
GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp3166_s_i();
|
||||
c1
|
||||
inserted outside SP
|
||||
CALL sp3166_ins();
|
||||
CALL sp3166_sel();
|
||||
c1
|
||||
inserted outside SP
|
||||
inserted from sp3166_s_i
|
||||
inserted from sp3166_ins
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
CALL sp3166_sel();
|
||||
c1
|
||||
inserted outside SP
|
||||
inserted from sp3166_s_i
|
||||
inserted from sp3166_ins
|
||||
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp3166_s_i();
|
||||
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table 't3166'
|
||||
CALL sp3166_ins();
|
||||
CALL sp3166_sel();
|
||||
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table 't3166'
|
||||
CALL sp3166_s_i();
|
||||
c1
|
||||
inserted outside SP
|
||||
inserted from sp3166_s_i
|
||||
inserted from sp3166_ins
|
||||
inserted from sp3166_ins
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_2@localhost db_storedproc_1
|
||||
CALL sp3166_s_i();
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc_1.sp3166_s_i'
|
||||
CALL sp3166_ins();
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc_1.sp3166_ins'
|
||||
CALL sp3166_sel();
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc_1.sp3166_sel'
|
||||
|
||||
root@localhost db_storedproc_1
|
||||
DROP PROCEDURE sp3166_s_i;
|
||||
DROP PROCEDURE sp3166_sel;
|
||||
DROP PROCEDURE sp3166_ins;
|
||||
DROP TABLE t3166;
|
||||
DROP USER 'user_1'@'localhost';
|
||||
DROP USER 'user_2'@'localhost';
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
|
||||
. +++ END OF SCRIPT +++
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,179 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
|
||||
--source suite/funcs_1/storedproc/load_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
CREATE DATABASE db_storedproc;
|
||||
CREATE DATABASE db_storedproc_1;
|
||||
USE db_storedproc;
|
||||
create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
|
||||
create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
|
||||
create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
|
||||
create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
|
||||
USE db_storedproc_1;
|
||||
create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
|
||||
USE db_storedproc;
|
||||
create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
|
||||
create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
|
||||
create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
|
||||
|
||||
Section 3.1.7 - SQL mode checks:
|
||||
--------------------------------------------------------------------------------
|
||||
USE db_storedproc;
|
||||
|
||||
Testcase 3.1.7.1:
|
||||
-----------------
|
||||
Ensure that the sql_mode setting in effect at the time a stored procedure is
|
||||
created is the same setting under which the stored procedure runs when it is
|
||||
called/executed.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
DROP TABLE IF EXISTS temp_tbl;
|
||||
DROP TABLE IF EXISTS result;
|
||||
CREATE TABLE temp_tbl (f1 tinyint);
|
||||
CREATE TABLE result (f1 text(200), f2 char(20));
|
||||
set @@sql_mode='traditional';
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
CREATE PROCEDURE sp1()
|
||||
BEGIN
|
||||
declare a tinyint;
|
||||
declare count_ int default 1;
|
||||
declare continue handler for sqlstate '22003' set count_=1000;
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
SELECT @@sql_mode into @cur_val_sql_mode;
|
||||
insert into temp_tbl values (1000);
|
||||
if count_ = 1000 THEN
|
||||
INSERT INTO result VALUES (@cur_val_sql_mode, 'value restored');
|
||||
ELSE
|
||||
INSERT INTO result VALUES (@cur_val_sql_mode, 'value not restored');
|
||||
END if;
|
||||
END//
|
||||
SHOW CREATE PROCEDURE sp1;
|
||||
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||||
sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
|
||||
BEGIN
|
||||
declare a tinyint;
|
||||
declare count_ int default 1;
|
||||
declare continue handler for sqlstate '22003' set count_=1000;
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
SELECT @@sql_mode into @cur_val_sql_mode;
|
||||
insert into temp_tbl values (1000);
|
||||
if count_ = 1000 THEN
|
||||
INSERT INTO result VALUES (@cur_val_sql_mode, 'value restored');
|
||||
ELSE
|
||||
INSERT INTO result VALUES (@cur_val_sql_mode, 'value not restored');
|
||||
END if;
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
set @@sql_mode='';
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode
|
||||
CALL sp1();
|
||||
Variable_name Value
|
||||
sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
SELECT * from result;
|
||||
f1 f2
|
||||
STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER value restored
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode
|
||||
SELECT @@sql_mode;
|
||||
@@sql_mode
|
||||
|
||||
SET @@sql_mode='TRADITIONAL';
|
||||
DROP PROCEDURE sp1;
|
||||
DROP TABLE temp_tbl;
|
||||
DROP TABLE result;
|
||||
|
||||
Testcase 3.1.7.2:
|
||||
-----------------
|
||||
Ensure that if the sql_mode setting is changed when a stored procedure is run,
|
||||
that the original setting is restored as soon as the stored procedure execution
|
||||
is complete.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp2;
|
||||
... show initial value
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
CREATE PROCEDURE sp2()
|
||||
BEGIN
|
||||
SET @@sql_mode='MAXDB';
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
END//
|
||||
SHOW CREATE PROCEDURE sp2;
|
||||
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||||
sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
|
||||
BEGIN
|
||||
SET @@sql_mode='MAXDB';
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
... show value prior calling procedure
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
... call procedure that changes sql_mode
|
||||
CALL sp2();
|
||||
Variable_name Value
|
||||
sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
|
||||
... check whether old value is re-set
|
||||
SHOW VARIABLES LIKE 'sql_mode';
|
||||
Variable_name Value
|
||||
sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
DROP PROCEDURE sp2;
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
|
||||
. +++ END OF SCRIPT +++
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,752 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
|
||||
--source suite/funcs_1/storedproc/load_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
CREATE DATABASE db_storedproc;
|
||||
CREATE DATABASE db_storedproc_1;
|
||||
USE db_storedproc;
|
||||
create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
|
||||
create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
|
||||
create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
|
||||
create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
|
||||
USE db_storedproc_1;
|
||||
create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
|
||||
USE db_storedproc;
|
||||
create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
|
||||
create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
|
||||
create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
|
||||
|
||||
Section 3.1.8 - SHOW statement checks:
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Testcase 3.1.8.9:
|
||||
-----------------
|
||||
|
||||
Ensure that all stored procedure changes made with ALTER PROCEDURE or ALTER
|
||||
FUNCTION are properly recorded and displayed when a SHOW CREATE PROCEDURE or
|
||||
SHOW CREATE PROCEDURE STATUS statement, or a SHOW CREATE FUNCTION or SHOW CREATE
|
||||
FUNCTION STATUS statement (respectively) is executed.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP FUNCTION IF EXISTS fn_1;
|
||||
DROP FUNCTION IF EXISTS fn_2;
|
||||
DROP PROCEDURE IF EXISTS sp_1;
|
||||
DROP PROCEDURE IF EXISTS sp_2;
|
||||
CREATE PROCEDURE sp_1 (i1 int)
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END//
|
||||
CREATE PROCEDURE sp_2 (i1 int) SQL SECURITY INVOKER COMMENT 'created with INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END//
|
||||
CREATE FUNCTION fn_1 (i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) returns year
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END//
|
||||
CREATE FUNCTION fn_2 (i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real)
|
||||
RETURNS YEAR
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'created with INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END//
|
||||
|
||||
... now check what is stored:
|
||||
-----------------------------
|
||||
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
|
||||
SPECIFIC_NAME fn_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_1
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME fn_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_2
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT created with INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_1
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_2
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT created with INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_1;
|
||||
Function fn_1
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_1`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_2;
|
||||
Function fn_2
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_2`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'created with INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_1;
|
||||
Procedure sp_1
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_1`(i1 int)
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_2;
|
||||
Procedure sp_2
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_2`(i1 int)
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'created with INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW FUNCTION STATUS LIKE 'fn_%';
|
||||
Db db_storedproc
|
||||
Name fn_1
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name fn_2
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment created with INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW PROCEDURE STATUS LIKE 'sp_%';
|
||||
Db db_storedproc
|
||||
Name sp_1
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name sp_2
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment created with INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
|
||||
... now change some stuff:
|
||||
--------------------------
|
||||
ALTER PROCEDURE sp_1 SQL SECURITY INVOKER;
|
||||
ALTER PROCEDURE sp_1 COMMENT 'new comment, SP changed to INVOKER';
|
||||
ALTER PROCEDURE sp_2 SQL SECURITY DEFINER;
|
||||
ALTER PROCEDURE sp_2 DROP COMMENT;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP COMMENT' at line 1
|
||||
ALTER PROCEDURE sp_2 COMMENT 'SP changed to DEFINER';
|
||||
ALTER PROCEDURE sp_2 READS SQL DATA;
|
||||
ALTER FUNCTION fn_1 SQL SECURITY INVOKER;
|
||||
ALTER FUNCTION fn_1 COMMENT 'new comment, FN changed to INVOKER';
|
||||
ALTER FUNCTION fn_1 NO SQL;
|
||||
ALTER FUNCTION fn_2 SQL SECURITY DEFINER;
|
||||
ALTER FUNCTION fn_2 COMMENT 'FN changed to DEFINER';
|
||||
ALTER FUNCTION fn_2 MODIFIES SQL DATA;
|
||||
|
||||
... now check what is stored:
|
||||
-----------------------------
|
||||
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
|
||||
SPECIFIC_NAME fn_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_1
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS NO SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT new comment, FN changed to INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME fn_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_2
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS MODIFIES SQL DATA
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT FN changed to DEFINER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_1
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT new comment, SP changed to INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_2
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS READS SQL DATA
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT SP changed to DEFINER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_1;
|
||||
Function fn_1
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_1`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
NO SQL
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'new comment, FN changed to INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_2;
|
||||
Function fn_2
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_2`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
MODIFIES SQL DATA
|
||||
COMMENT 'FN changed to DEFINER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_1;
|
||||
Procedure sp_1
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_1`(i1 int)
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'new comment, SP changed to INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_2;
|
||||
Procedure sp_2
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_2`(i1 int)
|
||||
READS SQL DATA
|
||||
COMMENT 'SP changed to DEFINER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW FUNCTION STATUS LIKE 'fn_%';
|
||||
Db db_storedproc
|
||||
Name fn_1
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment new comment, FN changed to INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name fn_2
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment FN changed to DEFINER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW PROCEDURE STATUS LIKE 'sp_%';
|
||||
Db db_storedproc
|
||||
Name sp_1
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment new comment, SP changed to INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name sp_2
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment SP changed to DEFINER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
|
||||
... change back to default and check result:
|
||||
--------------------------------------------
|
||||
ALTER FUNCTION fn_2 CONTAINS SQL;
|
||||
|
||||
... now check what is stored:
|
||||
-----------------------------
|
||||
SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
|
||||
SPECIFIC_NAME fn_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_1
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS NO SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT new comment, FN changed to INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME fn_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME fn_2
|
||||
ROUTINE_TYPE FUNCTION
|
||||
DTD_IDENTIFIER year(4)
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT FN changed to DEFINER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_1
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_1
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS CONTAINS SQL
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE INVOKER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT new comment, SP changed to INVOKER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SPECIFIC_NAME sp_2
|
||||
ROUTINE_CATALOG NULL
|
||||
ROUTINE_SCHEMA db_storedproc
|
||||
ROUTINE_NAME sp_2
|
||||
ROUTINE_TYPE PROCEDURE
|
||||
DTD_IDENTIFIER NULL
|
||||
ROUTINE_BODY SQL
|
||||
ROUTINE_DEFINITION BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
EXTERNAL_NAME NULL
|
||||
EXTERNAL_LANGUAGE NULL
|
||||
PARAMETER_STYLE SQL
|
||||
IS_DETERMINISTIC NO
|
||||
SQL_DATA_ACCESS READS SQL DATA
|
||||
SQL_PATH NULL
|
||||
SECURITY_TYPE DEFINER
|
||||
CREATED <modified>
|
||||
LAST_ALTERED <created>
|
||||
SQL_MODE NO_ENGINE_SUBSTITUTION
|
||||
ROUTINE_COMMENT SP changed to DEFINER
|
||||
DEFINER root@localhost
|
||||
CHARACTER_SET_CLIENT latin1
|
||||
COLLATION_CONNECTION latin1_swedish_ci
|
||||
DATABASE_COLLATION latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_1;
|
||||
Function fn_1
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_1`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
NO SQL
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'new comment, FN changed to INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE FUNCTION fn_2;
|
||||
Function fn_2
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Function CREATE DEFINER=`root`@`localhost` FUNCTION `fn_2`(i1 longtext, i2 mediumint , i3 longblob, i4 year, i5 real) RETURNS year(4)
|
||||
COMMENT 'FN changed to DEFINER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
set @y=@x;
|
||||
return i4;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_1;
|
||||
Procedure sp_1
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_1`(i1 int)
|
||||
SQL SECURITY INVOKER
|
||||
COMMENT 'new comment, SP changed to INVOKER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW CREATE PROCEDURE sp_2;
|
||||
Procedure sp_2
|
||||
sql_mode NO_ENGINE_SUBSTITUTION
|
||||
Create Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_2`(i1 int)
|
||||
READS SQL DATA
|
||||
COMMENT 'SP changed to DEFINER'
|
||||
BEGIN
|
||||
set @x=i1;
|
||||
END
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW FUNCTION STATUS LIKE 'fn_%';
|
||||
Db db_storedproc
|
||||
Name fn_1
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment new comment, FN changed to INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name fn_2
|
||||
Type FUNCTION
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment FN changed to DEFINER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
SHOW PROCEDURE STATUS LIKE 'sp_%';
|
||||
Db db_storedproc
|
||||
Name sp_1
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type INVOKER
|
||||
Comment new comment, SP changed to INVOKER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
Db db_storedproc
|
||||
Name sp_2
|
||||
Type PROCEDURE
|
||||
Definer root@localhost
|
||||
Modified <modified>
|
||||
Created <created>
|
||||
Security_type DEFINER
|
||||
Comment SP changed to DEFINER
|
||||
character_set_client latin1
|
||||
collation_connection latin1_swedish_ci
|
||||
Database Collation latin1_swedish_ci
|
||||
|
||||
... cleanup
|
||||
-----------
|
||||
DROP FUNCTION fn_1;
|
||||
DROP FUNCTION fn_2;
|
||||
DROP PROCEDURE sp_1;
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
|
||||
. +++ END OF SCRIPT +++
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,401 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
|
||||
--source suite/funcs_1/storedproc/load_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
CREATE DATABASE db_storedproc;
|
||||
CREATE DATABASE db_storedproc_1;
|
||||
USE db_storedproc;
|
||||
create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
|
||||
create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
|
||||
create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
|
||||
create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
|
||||
USE db_storedproc_1;
|
||||
create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
|
||||
USE db_storedproc;
|
||||
create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
Warning 1265 Data truncated for column 'f3' at row 2
|
||||
Warning 1265 Data truncated for column 'f3' at row 3
|
||||
Warning 1265 Data truncated for column 'f3' at row 4
|
||||
Warning 1265 Data truncated for column 'f3' at row 5
|
||||
Warning 1265 Data truncated for column 'f3' at row 6
|
||||
Warning 1265 Data truncated for column 'f3' at row 7
|
||||
Warning 1265 Data truncated for column 'f3' at row 8
|
||||
Warning 1265 Data truncated for column 'f3' at row 9
|
||||
Warning 1265 Data truncated for column 'f3' at row 10
|
||||
create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
|
||||
create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
|
||||
create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
|
||||
engine = <engine_to_be_tested>;
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
|
||||
|
||||
Section 3.1.10 - CALL checks:
|
||||
--------------------------------------------------------------------------------
|
||||
USE db_storedproc;
|
||||
|
||||
Testcase 3.1.10.2 + 3.1.10.5:
|
||||
-----------------------------
|
||||
|
||||
2. Ensure that a procedure cannot be called if the appropriate privileges do not
|
||||
exist.
|
||||
5. Ensure that a function cannot be executed if the appropriate privileges do
|
||||
not exist.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp31102;
|
||||
DROP FUNCTION IF EXISTS fn31105;
|
||||
create user 'user_1'@'localhost';
|
||||
create user 'user_2'@'localhost';
|
||||
GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
||||
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_1@localhost db_storedproc
|
||||
CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
SELECT * FROM db_storedproc.t1 WHERE f4=-5000 LIMIT 1;
|
||||
END//
|
||||
CREATE FUNCTION fn31105(n INT) RETURNS INT
|
||||
BEGIN
|
||||
DECLARE res INT;
|
||||
SET res = n * n;
|
||||
RETURN res;
|
||||
END//
|
||||
|
||||
user_2@localhost db_storedproc
|
||||
CALL sp31102();
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
|
||||
SELECT fn31105( 9 );
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
|
||||
connection default;
|
||||
USE db_storedproc;
|
||||
|
||||
root@localhost db_storedproc
|
||||
CALL sp31102();
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
SELECT fn31105( 9 );
|
||||
fn31105( 9 )
|
||||
81
|
||||
GRANT EXECUTE ON db_storedproc.* TO 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
user_2@localhost db_storedproc
|
||||
CALL sp31102();
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
SELECT fn31105( 9 );
|
||||
fn31105( 9 )
|
||||
81
|
||||
connection default;
|
||||
USE db_storedproc;
|
||||
|
||||
root@localhost db_storedproc
|
||||
REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
CALL sp31102();
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
SELECT fn31105( 9 );
|
||||
fn31105( 9 )
|
||||
81
|
||||
|
||||
user_2@localhost db_storedproc
|
||||
CALL sp31102();
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
|
||||
SELECT fn31105( 9 );
|
||||
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
|
||||
USE db_storedproc;
|
||||
|
||||
root@localhost db_storedproc
|
||||
DROP PROCEDURE sp31102;
|
||||
DROP FUNCTION fn31105;
|
||||
DROP USER 'user_1'@'localhost';
|
||||
DROP USER 'user_2'@'localhost';
|
||||
|
||||
Testcase 3.1.10.3:
|
||||
------------------
|
||||
|
||||
Ensure that a function can never be called.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP FUNCTION IF EXISTS fn1;
|
||||
CREATE FUNCTION fn1(a int) returns int
|
||||
BEGIN
|
||||
set @b = 0.9 * a;
|
||||
return @b;
|
||||
END//
|
||||
CALL fn1();
|
||||
ERROR 42000: PROCEDURE db_storedproc.fn1 does not exist
|
||||
DROP FUNCTION fn1;
|
||||
|
||||
Testcase 3.1.10.6:
|
||||
------------------
|
||||
|
||||
Ensure that a procedure can never be executed.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
DROP FUNCTION IF EXISTS sp1;
|
||||
CREATE PROCEDURE sp1()
|
||||
BEGIN
|
||||
SELECT * from t10;
|
||||
END//
|
||||
SELECT sp1();
|
||||
ERROR 42000: FUNCTION db_storedproc.sp1 does not exist
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
Testcase 3.1.10.7:
|
||||
------------------
|
||||
|
||||
Ensure that the ROW_COUNT() SQL function always returns the correct number of
|
||||
rows affected by the execution of a stored procedure.
|
||||
--------------------------------------------------------------------------------
|
||||
DROP PROCEDURE IF EXISTS sp_ins_1;
|
||||
DROP PROCEDURE IF EXISTS sp_ins_3;
|
||||
DROP PROCEDURE IF EXISTS sp_upd;
|
||||
DROP PROCEDURE IF EXISTS sp_ins_upd;
|
||||
DROP PROCEDURE IF EXISTS sp_del;
|
||||
DROP PROCEDURE IF EXISTS sp_with_rowcount;
|
||||
CREATE TABLE temp(f1 CHAR(20),f2 CHAR(25),f3 DATE,f4 INT,f5 CHAR(25),f6 INT);
|
||||
INSERT INTO temp SELECT * FROM t10;
|
||||
CREATE PROCEDURE sp_ins_1()
|
||||
BEGIN
|
||||
INSERT INTO temp VALUES ('abc', 'abc', '20051003', 100, 'uvw', 1000);
|
||||
END//
|
||||
CREATE PROCEDURE sp_ins_3()
|
||||
BEGIN
|
||||
INSERT INTO temp VALUES ('abc', 'xyz', '19490523', 100, 'uvw', 1000);
|
||||
INSERT INTO temp VALUES ('abc', 'xyz', '1989-11-09', 100, 'uvw', 1000);
|
||||
INSERT INTO temp VALUES ('abc', 'xyz', '2005-10-24', 100, 'uvw', 1000);
|
||||
END//
|
||||
CREATE PROCEDURE sp_upd()
|
||||
BEGIN
|
||||
UPDATE temp SET temp.f1 = 'updated' WHERE temp.f1 ='abc';
|
||||
END//
|
||||
CREATE PROCEDURE sp_ins_upd()
|
||||
BEGIN
|
||||
BEGIN
|
||||
INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000);
|
||||
INSERT INTO temp VALUES ('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000);
|
||||
INSERT INTO temp VALUES ('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000);
|
||||
INSERT INTO temp VALUES ('qwe', 'abc', '2005-11-07', 100, 'uvw', 1000);
|
||||
END;
|
||||
SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1;
|
||||
UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc';
|
||||
END//
|
||||
CREATE PROCEDURE sp_del()
|
||||
BEGIN
|
||||
DELETE FROM temp WHERE temp.f1 ='qwe' OR temp.f1 = 'updated_2';
|
||||
END//
|
||||
CREATE PROCEDURE sp_with_rowcount()
|
||||
BEGIN
|
||||
BEGIN
|
||||
INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000),
|
||||
('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000),
|
||||
('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000),
|
||||
('qwe', 'xyz', '2005-11-07', 100, 'uvw', 1000);
|
||||
END;
|
||||
SELECT row_count() AS 'row_count() after insert';
|
||||
SELECT row_count() AS 'row_count() after select row_count()';
|
||||
SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3;
|
||||
UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f2 = 'abc';
|
||||
SELECT row_count() AS 'row_count() after update';
|
||||
SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3;
|
||||
DELETE FROM temp WHERE temp.f1 = 'updated_2';
|
||||
SELECT row_count() AS 'row_count() after delete';
|
||||
END//
|
||||
CALL sp_ins_1();
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
1
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
|
||||
a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
aaa aaa 1000-01-02 -4999 aaa -4999
|
||||
abaa abaa 1000-01-03 -4998 abaa -4998
|
||||
abc abc 2005-10-03 100 uvw 1000
|
||||
acaaa acaaa 1000-01-04 -4997 acaaa -4997
|
||||
adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996
|
||||
aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995
|
||||
afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994
|
||||
agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
|
||||
CALL sp_ins_3();
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
1
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
|
||||
a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
aaa aaa 1000-01-02 -4999 aaa -4999
|
||||
abaa abaa 1000-01-03 -4998 abaa -4998
|
||||
abc abc 2005-10-03 100 uvw 1000
|
||||
abc xyz 1949-05-23 100 uvw 1000
|
||||
abc xyz 1989-11-09 100 uvw 1000
|
||||
abc xyz 2005-10-24 100 uvw 1000
|
||||
acaaa acaaa 1000-01-04 -4997 acaaa -4997
|
||||
adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996
|
||||
aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995
|
||||
afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994
|
||||
agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
|
||||
CALL sp_upd();
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
4
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
|
||||
a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
aaa aaa 1000-01-02 -4999 aaa -4999
|
||||
abaa abaa 1000-01-03 -4998 abaa -4998
|
||||
acaaa acaaa 1000-01-04 -4997 acaaa -4997
|
||||
adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996
|
||||
aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995
|
||||
afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994
|
||||
agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
|
||||
updated abc 2005-10-03 100 uvw 1000
|
||||
updated xyz 1949-05-23 100 uvw 1000
|
||||
updated xyz 1989-11-09 100 uvw 1000
|
||||
updated xyz 2005-10-24 100 uvw 1000
|
||||
CALL sp_ins_upd();
|
||||
COUNT( f1 ) f1
|
||||
1 aaa
|
||||
1 abaa
|
||||
1 acaaa
|
||||
1 adaaaa
|
||||
1 aeaaaaa
|
||||
1 afaaaaaa
|
||||
1 agaaaaaaa
|
||||
1 a^aaaaaaaa
|
||||
1 a_aaaaaaaaa
|
||||
1 a`
|
||||
4 qwe
|
||||
4 updated
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
3
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
|
||||
a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
aaa aaa 1000-01-02 -4999 aaa -4999
|
||||
abaa abaa 1000-01-03 -4998 abaa -4998
|
||||
acaaa acaaa 1000-01-04 -4997 acaaa -4997
|
||||
adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996
|
||||
aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995
|
||||
afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994
|
||||
agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
|
||||
qwe xyz 1998-03-26 100 uvw 1000
|
||||
updated abc 2005-10-03 100 uvw 1000
|
||||
updated xyz 1949-05-23 100 uvw 1000
|
||||
updated xyz 1989-11-09 100 uvw 1000
|
||||
updated xyz 2005-10-24 100 uvw 1000
|
||||
updated_2 abc 1989-11-09 100 uvw 1000
|
||||
updated_2 abc 2000-11-09 100 uvw 1000
|
||||
updated_2 abc 2005-11-07 100 uvw 1000
|
||||
CALL sp_del();
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
4
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
|
||||
a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991
|
||||
a` a` 1000-01-01 -5000 a` -5000
|
||||
aaa aaa 1000-01-02 -4999 aaa -4999
|
||||
abaa abaa 1000-01-03 -4998 abaa -4998
|
||||
acaaa acaaa 1000-01-04 -4997 acaaa -4997
|
||||
adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996
|
||||
aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995
|
||||
afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994
|
||||
agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
|
||||
updated abc 2005-10-03 100 uvw 1000
|
||||
updated xyz 1949-05-23 100 uvw 1000
|
||||
updated xyz 1989-11-09 100 uvw 1000
|
||||
updated xyz 2005-10-24 100 uvw 1000
|
||||
DELETE FROM temp;
|
||||
CALL sp_with_rowcount();
|
||||
row_count() after insert
|
||||
4
|
||||
row_count() after select row_count()
|
||||
-1
|
||||
f1 f2 f3
|
||||
qwe abc 1989-11-09
|
||||
qwe abc 2000-11-09
|
||||
qwe xyz 1998-03-26
|
||||
qwe xyz 2005-11-07
|
||||
row_count() after update
|
||||
2
|
||||
f1 f2 f3
|
||||
qwe xyz 1998-03-26
|
||||
qwe xyz 2005-11-07
|
||||
updated_2 abc 1989-11-09
|
||||
updated_2 abc 2000-11-09
|
||||
row_count() after delete
|
||||
2
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
-1
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
qwe xyz 1998-03-26 100 uvw 1000
|
||||
qwe xyz 2005-11-07 100 uvw 1000
|
||||
DROP PROCEDURE sp_ins_1;
|
||||
DROP PROCEDURE sp_ins_3;
|
||||
DROP PROCEDURE sp_upd;
|
||||
DROP PROCEDURE sp_ins_upd;
|
||||
DROP PROCEDURE sp_del;
|
||||
DROP PROCEDURE sp_with_rowcount;
|
||||
DROP TABLE temp;
|
||||
|
||||
Testcase 3.1.10.8:
|
||||
------------------
|
||||
|
||||
Ensure that the mysql_affected_rows() C API function always returns the correct
|
||||
number of rows affected by the execution of a stored procedure.
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
|
||||
--------------------------------------------------------------------------------
|
||||
DROP DATABASE IF EXISTS db_storedproc;
|
||||
DROP DATABASE IF EXISTS db_storedproc_1;
|
||||
|
||||
. +++ END OF SCRIPT +++
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,367 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
|
||||
Testcase: 3.5.1.1:
|
||||
------------------
|
||||
use test;
|
||||
Create trigger trg1_1 BEFORE INSERT
|
||||
on tb3 for each row set @test_before = 2, new.f142 = @test_before;
|
||||
Create trigger trg1_2 AFTER INSERT
|
||||
on tb3 for each row set @test_after = 6;
|
||||
Create trigger trg1_4 BEFORE UPDATE
|
||||
on tb3 for each row set @test_before = 27,
|
||||
new.f142 = @test_before,
|
||||
new.f122 = 'Before Update Trigger';
|
||||
Create trigger trg1_3 AFTER UPDATE
|
||||
on tb3 for each row set @test_after = '15';
|
||||
Create trigger trg1_5 BEFORE DELETE on tb3 for each row
|
||||
select count(*) into @test_before from tb3 as tr_tb3
|
||||
where f121 = 'Test 3.5.1.1';
|
||||
Create trigger trg1_6 AFTER DELETE on tb3 for each row
|
||||
select count(*) into @test_after from tb3 as tr_tb3
|
||||
where f121 = 'Test 3.5.1.1';
|
||||
set @test_before = 1;
|
||||
set @test_after = 5;
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
1 5
|
||||
Insert into tb3 (f121, f122, f142, f144, f134)
|
||||
values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1);
|
||||
select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1';
|
||||
f121 f122 f142 f144 f134
|
||||
Test 3.5.1.1 First Row 2 0000000005 1
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
2 6
|
||||
set @test_before = 18;
|
||||
set @test_after = 8;
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
18 8
|
||||
Update tb3 set tb3.f122 = 'Update',
|
||||
tb3.f142 = @test_before,
|
||||
tb3.f144 = @test_after
|
||||
where tb3.f121 = 'Test 3.5.1.1';
|
||||
select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1';
|
||||
f121 f122 f142 f144 f134
|
||||
Test 3.5.1.1 Before Update Trigger 27 0000000008 1
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
27 15
|
||||
Insert into tb3 (f121, f122, f142, f144, f134)
|
||||
values ('Test 3.5.1.1', 'Second Row', 5, 6, 2);
|
||||
set @test_before = 0;
|
||||
set @test_after = 0;
|
||||
select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1';
|
||||
f121 f122 f142 f144 f134
|
||||
Test 3.5.1.1 Before Update Trigger 27 0000000008 1
|
||||
Test 3.5.1.1 Second Row 2 0000000006 2
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
0 0
|
||||
Delete from tb3 where f121 = 'Test 3.5.1.1' and f134 = 2;
|
||||
select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1';
|
||||
f121 f122 f142 f144 f134
|
||||
Test 3.5.1.1 Before Update Trigger 27 0000000008 1
|
||||
select @test_before, @test_after;
|
||||
@test_before @test_after
|
||||
2 1
|
||||
drop trigger trg1_1;
|
||||
drop trigger trg1_2;
|
||||
drop trigger trg1_3;
|
||||
drop trigger trg1_4;
|
||||
drop trigger trg1_5;
|
||||
drop trigger trg1_6;
|
||||
delete from tb3 where f121='Test 3.5.1.1';
|
||||
|
||||
Testcase: 3.5.1.2:
|
||||
------------------
|
||||
Create trigger trg_1 after insert
|
||||
on tb3 for each statement set @x= 1;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'statement set @x= 1' at line 2
|
||||
drop trigger trg_1;
|
||||
|
||||
Testcase 3.5.1.3:
|
||||
-----------------
|
||||
CREATE TRIGGER trg3_1 on tb3 BEFORE INSERT for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on tb3 BEFORE INSERT for each row set new.f120 = 't'' at line 1
|
||||
CREATE trg3_2 TRIGGER AFTER INSERT on tb3 for each row set new.f120 = 's';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'trg3_2 TRIGGER AFTER INSERT on tb3 for each row set new.f120 = 's'' at line 1
|
||||
CREATE TRIGGER trg3_3 Before DELETE on tb3 set @ret1 = 'test' for each row;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set @ret1 = 'test' for each row' at line 1
|
||||
CREATE TRIGGER trg3_4 DELETE AFTER on tb3 set @ret1 = 'test' for each row;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE AFTER on tb3 set @ret1 = 'test' for each row' at line 1
|
||||
CREATE for each row TRIGGER trg3_5 AFTER UPDATE on tb3 set @ret1 = 'test';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'for each row TRIGGER trg3_5 AFTER UPDATE on tb3 set @ret1 = 'test'' at line 1
|
||||
drop trigger trg3_1;
|
||||
drop trigger trg3_2;
|
||||
drop trigger trg3_3;
|
||||
drop trigger trg3_4;
|
||||
drop trigger trg3_5;
|
||||
|
||||
Testcase: 3.5.1.5:
|
||||
------------------
|
||||
CREATE TRIGGER trg4_1 AFTER on tb3 for each row set new.f120 = 'e';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on tb3 for each row set new.f120 = 'e'' at line 1
|
||||
CREATE TRIGGER trg4_2 INSERT on tb3 for each set row new.f120 = 'f';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT on tb3 for each set row new.f120 = 'f'' at line 1
|
||||
CREATE TRIGGER trg4_3 BEFORE INSERT tb3 for each row set new.f120 = 'g';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tb3 for each row set new.f120 = 'g'' at line 1
|
||||
CREATE TRIGGER trg4_4 AFTER UPDATE on tb3 for each set new.f120 = 'g';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set new.f120 = 'g'' at line 1
|
||||
CREATE trg4_5 AFTER DELETE on tb3 for each set new.f120 = 'g';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'trg4_5 AFTER DELETE on tb3 for each set new.f120 = 'g'' at line 1
|
||||
CREATE TRIGGER trg4_6 BEFORE DELETE for each row set new.f120 = 'g';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'for each row set new.f120 = 'g'' at line 1
|
||||
drop trigger trg4_1;
|
||||
drop trigger trg4_2;
|
||||
drop trigger trg4_3;
|
||||
drop trigger trg4_4;
|
||||
drop trigger trg4_5;
|
||||
drop trigger trg4_6;
|
||||
|
||||
Testcase 3.5.1.6: - Need to fix
|
||||
-------------------------------
|
||||
|
||||
Testcase 3.5.1.7: - need to fix
|
||||
-------------------------------
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
create table t1 (f1 int, f2 char(25),f3 int) engine = <engine_to_be_used>;
|
||||
CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1
|
||||
for each row set new.f3 = '14';
|
||||
CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
BEFORE UPDATE on test.t1 for each row set new.f3 = '42';
|
||||
ERROR 42000: Identifier name 'trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ' is too long
|
||||
CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX
|
||||
BEFORE UPDATE on test.t1 for each row set new.f3 = '42';
|
||||
insert into t1 (f2) values ('insert 3.5.1.7');
|
||||
select * from t1;
|
||||
f1 f2 f3
|
||||
NULL insert 3.5.1.7 14
|
||||
update t1 set f2='update 3.5.1.7';
|
||||
select * from t1;
|
||||
f1 f2 f3
|
||||
NULL update 3.5.1.7 42
|
||||
select trigger_name from information_schema.triggers order by trigger_name;
|
||||
trigger_name
|
||||
gs_insert
|
||||
trg5_1
|
||||
trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX
|
||||
ts_insert
|
||||
drop trigger trg5_1;
|
||||
drop trigger trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ;
|
||||
ERROR 42000: Identifier name 'trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ' is too long
|
||||
drop trigger trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX;
|
||||
drop table t1;
|
||||
|
||||
Testcase 3.5.1.8:
|
||||
-----------------
|
||||
CREATE TRIGGER trg12* before insert on tb3 for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* before insert on tb3 for each row set new.f120 = 't'' at line 1
|
||||
CREATE TRIGGER trigger before insert on tb3 for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'trigger before insert on tb3 for each row set new.f120 = 't'' at line 1
|
||||
CREATE TRIGGER 100 before insert on tb3 for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '100 before insert on tb3 for each row set new.f120 = 't'' at line 1
|
||||
CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@@view before insert on tb3 for each row set new.f120 = 't'' at line 1
|
||||
CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@name before insert on tb3 for each row set new.f120 = 't'' at line 1
|
||||
CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3
|
||||
for each row set new.f120 ='X';
|
||||
ERROR HY000: Trigger in wrong schema
|
||||
drop database if exists trig_db;
|
||||
create database trig_db;
|
||||
use trig_db;
|
||||
create table t1 (f1 integer) engine = <engine_to_be_used>;
|
||||
use test;
|
||||
CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3
|
||||
for each row set @ret_trg6_2 = 5;
|
||||
ERROR 42S02: Table 'trig_db.tb3' doesn't exist
|
||||
use trig_db;
|
||||
CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3
|
||||
for each row set @ret_trg6_3 = 18;
|
||||
ERROR HY000: Trigger in wrong schema
|
||||
use test;
|
||||
drop database trig_db;
|
||||
drop trigger trg6_1;
|
||||
drop trigger trg6_3;
|
||||
|
||||
Testcase 3.5.1.9:(cannot be inplemented at this point)
|
||||
------------------------------------------------------
|
||||
|
||||
Testcase 3.5.1.10:
|
||||
------------------
|
||||
CREATE TRIGGER trg7_1 BEFORE UPDATE on tb3 for each row set new.f120 ='X';
|
||||
CREATE TRIGGER trg7_1 AFTER INSERT on tb3 for each row set @x ='Y';
|
||||
ERROR HY000: Trigger already exists
|
||||
drop trigger trg7_1;
|
||||
|
||||
Testcase 3.5.1.?:
|
||||
-----------------
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
create table t1 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create table t2 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create trigger trig before insert on t1
|
||||
for each row set new.f1 ='trig t1';
|
||||
create trigger trig before update on t2
|
||||
for each row set new.f1 ='trig t2';
|
||||
ERROR HY000: Trigger already exists
|
||||
insert into t1 value ('insert to t1',1);
|
||||
select * from t1;
|
||||
f1 f2
|
||||
trig t1 1
|
||||
update t1 set f1='update to t1';
|
||||
select * from t1;
|
||||
f1 f2
|
||||
update to t1 1
|
||||
insert into t2 value ('insert to t2',2);
|
||||
update t2 set f1='update to t1';
|
||||
select * from t2;
|
||||
f1 f2
|
||||
update to t1 2
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop trigger trig;
|
||||
|
||||
Testcase 3.5.1.11:
|
||||
------------------
|
||||
drop database if exists trig_db1;
|
||||
drop database if exists trig_db2;
|
||||
drop database if exists trig_db3;
|
||||
create database trig_db1;
|
||||
create database trig_db2;
|
||||
create database trig_db3;
|
||||
use trig_db1;
|
||||
create table t1 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create trigger trig before insert on t1
|
||||
for each row set new.f1 ='trig1', @test_var1='trig1';
|
||||
use trig_db2;
|
||||
create table t2 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create trigger trig before insert on t2
|
||||
for each row set new.f1 ='trig2', @test_var2='trig2';
|
||||
use trig_db3;
|
||||
create table t1 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create trigger trig before insert on t1
|
||||
for each row set new.f1 ='trig3', @test_var3='trig3';
|
||||
set @test_var1= '', @test_var2= '', @test_var3= '';
|
||||
use trig_db1;
|
||||
insert into t1 (f1,f2) values ('insert to db1 t1',1);
|
||||
insert into trig_db1.t1 (f1,f2) values ('insert to db1 t1 from db1',2);
|
||||
insert into trig_db2.t2 (f1,f2) values ('insert to db2 t2 from db1',3);
|
||||
insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4);
|
||||
select @test_var1, @test_var2, @test_var3;
|
||||
@test_var1 @test_var2 @test_var3
|
||||
trig1 trig2 trig3
|
||||
select * from t1 order by f2;
|
||||
f1 f2
|
||||
trig1 1
|
||||
trig1 2
|
||||
select * from trig_db2.t2;
|
||||
f1 f2
|
||||
trig2 3
|
||||
select * from trig_db3.t1;
|
||||
f1 f2
|
||||
trig3 4
|
||||
select * from t1 order by f2;
|
||||
f1 f2
|
||||
trig1 1
|
||||
trig1 2
|
||||
use test;
|
||||
drop database trig_db1;
|
||||
drop database trig_db2;
|
||||
drop database trig_db3;
|
||||
|
||||
Testcase 3.5.2.1/2/3:
|
||||
---------------------
|
||||
drop database if exists trig_db1;
|
||||
drop database if exists trig_db2;
|
||||
create database trig_db1;
|
||||
create database trig_db2;
|
||||
use trig_db1;
|
||||
create table t1 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create table trig_db2.t1 (f1 char(50), f2 integer) engine = <engine_to_be_used>;
|
||||
create trigger trig1_b before insert on t1
|
||||
for each row set @test_var1='trig1_b';
|
||||
create trigger trig_db1.trig1_a after insert on t1
|
||||
for each row set @test_var2='trig1_a';
|
||||
create trigger trig_db2.trig2 before insert on trig_db2.t1
|
||||
for each row set @test_var3='trig2';
|
||||
select trigger_schema, trigger_name, event_object_table
|
||||
from information_schema.triggers
|
||||
where trigger_schema like 'trig_db%'
|
||||
order by trigger_name;
|
||||
trigger_schema trigger_name event_object_table
|
||||
trig_db1 trig1_a t1
|
||||
trig_db1 trig1_b t1
|
||||
trig_db2 trig2 t1
|
||||
set @test_var1= '', @test_var2= '', @test_var3= '';
|
||||
insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352);
|
||||
insert into trig_db2.t1 (f1,f2) values ('insert to db2 t1 from db1',352);
|
||||
select @test_var1, @test_var2, @test_var3;
|
||||
@test_var1 @test_var2 @test_var3
|
||||
trig1_b trig1_a trig2
|
||||
drop database trig_db1;
|
||||
drop database trig_db2;
|
||||
DROP TABLE test.tb3;
|
||||
676
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_trig_03.result
Normal file
676
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_trig_03.result
Normal file
@@ -0,0 +1,676 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
|
||||
Testcase 3.5.3:
|
||||
---------------
|
||||
drop database if exists priv_db;
|
||||
create database priv_db;
|
||||
use priv_db;
|
||||
create table t1 (f1 char(20)) engine= <engine_to_be_used>;
|
||||
create User test_noprivs@localhost;
|
||||
set password for test_noprivs@localhost = password('PWD');
|
||||
create User test_yesprivs@localhost;
|
||||
set password for test_yesprivs@localhost = password('PWD');
|
||||
|
||||
Testcase 3.5.3.2/6:
|
||||
-------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke TRIGGER on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
|
||||
Testcase 3.5.3.2:
|
||||
-----------------
|
||||
select current_user;
|
||||
current_user
|
||||
test_noprivs@localhost
|
||||
use priv_db;
|
||||
create trigger trg1_1 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.2_1-no';
|
||||
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1'
|
||||
use priv_db;
|
||||
insert into t1 (f1) values ('insert 3.5.3.2-no');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
select current_user;
|
||||
current_user
|
||||
test_yesprivs@localhost
|
||||
use priv_db;
|
||||
create trigger trg1_2 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.2_2-yes';
|
||||
select current_user;
|
||||
current_user
|
||||
root@localhost
|
||||
use priv_db;
|
||||
insert into t1 (f1) values ('insert 3.5.3.2-yes');
|
||||
ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
grant UPDATE on priv_db.t1 to test_yesprivs@localhost;
|
||||
insert into t1 (f1) values ('insert 3.5.3.2-yes');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
trig 3.5.3.2_2-yes
|
||||
|
||||
Testcase 3.5.3.6:
|
||||
-----------------
|
||||
use priv_db;
|
||||
drop trigger trg1_2;
|
||||
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1'
|
||||
use priv_db;
|
||||
insert into t1 (f1) values ('insert 3.5.3.6-yes');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
use priv_db;
|
||||
drop trigger trg1_2;
|
||||
use priv_db;
|
||||
insert into t1 (f1) values ('insert 3.5.3.6-no');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
drop trigger trg1_2;
|
||||
|
||||
Testcase 3.5.3.7a:
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke UPDATE on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
select current_user;
|
||||
current_user
|
||||
test_noprivs@localhost
|
||||
use priv_db;
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
create trigger trg4a_1 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-1a';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-1a');
|
||||
ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
drop trigger trg4a_1;
|
||||
use priv_db;
|
||||
select current_user;
|
||||
current_user
|
||||
test_yesprivs@localhost
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
create trigger trg4a_2 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-2a';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-2b');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
drop trigger trg4a_2;
|
||||
|
||||
Testcase 3.5.3.7b:
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs;
|
||||
grant ALL on priv_db.* to test_noprivs@localhost;
|
||||
revoke UPDATE on priv_db.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs;
|
||||
Grants for test_noprivs@%
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant UPDATE on priv_db.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4b_1 before UPDATE on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-1b';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-1b');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b';
|
||||
ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
drop trigger trg4b_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4b_2 before UPDATE on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-2b';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-2b');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
insert 3.5.3.7-2b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b';
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
trig 3.5.3.7-2b
|
||||
drop trigger trg4b_2;
|
||||
|
||||
Testcase 3.5.3.7c
|
||||
-----------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs@localhost;
|
||||
grant ALL on priv_db.t1 to test_noprivs@localhost;
|
||||
revoke UPDATE on priv_db.t1 from test_noprivs@localhost;
|
||||
show grants for test_noprivs;
|
||||
Grants for test_noprivs@%
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant UPDATE on priv_db.t1 to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4c_1 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-1c';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-1c');
|
||||
ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
trig 3.5.3.7-2b
|
||||
drop trigger trg4c_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4c_2 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-2c';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-2c');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
trig 3.5.3.7-2b
|
||||
trig 3.5.3.7-2c
|
||||
drop trigger trg4c_2;
|
||||
|
||||
Testcase 3.5.3.7d:
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs@localhost;
|
||||
grant SELECT (f1), INSERT (f1) on priv_db.t1 to test_noprivs@localhost;
|
||||
show grants for test_noprivs;
|
||||
Grants for test_noprivs@%
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost;
|
||||
show grants for test_noprivs;
|
||||
Grants for test_noprivs@%
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT (f1), INSERT (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4d_1 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-1d';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-1d');
|
||||
ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
trig 3.5.3.7-2b
|
||||
trig 3.5.3.7-2c
|
||||
drop trigger trg4d_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT UPDATE (f1) ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg4d_2 before INSERT on t1 for each row
|
||||
set new.f1 = 'trig 3.5.3.7-2d';
|
||||
insert into t1 (f1) values ('insert 3.5.3.7-2d');
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
insert 3.5.3.2-no
|
||||
insert 3.5.3.6-no
|
||||
insert 3.5.3.7-1b
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.2_2-yes
|
||||
trig 3.5.3.7-2a
|
||||
trig 3.5.3.7-2b
|
||||
trig 3.5.3.7-2c
|
||||
trig 3.5.3.7-2d
|
||||
drop trigger trg4d_2;
|
||||
|
||||
Testcase 3.5.3.8a:
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant ALL on *.* to test_noprivs@localhost;
|
||||
revoke SELECT on *.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
select current_user;
|
||||
current_user
|
||||
test_noprivs@localhost
|
||||
use priv_db;
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
create trigger trg5a_1 before INSERT on t1 for each row
|
||||
set @test_var = new.f1;
|
||||
set @test_var = 'before trig 3.5.3.8-1a';
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1a
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-1a');
|
||||
ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1a
|
||||
drop trigger trg5a_1;
|
||||
use priv_db;
|
||||
select current_user;
|
||||
current_user
|
||||
test_yesprivs@localhost
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
create trigger trg5a_2 before INSERT on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var= 'before trig 3.5.3.8-2a';
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-2a
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-2a');
|
||||
select @test_var;
|
||||
@test_var
|
||||
insert 3.5.3.8-2a
|
||||
drop trigger trg5a_2;
|
||||
|
||||
Testcase: 3.5.3.8b
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs@localhost;
|
||||
grant ALL on priv_db.* to test_noprivs@localhost;
|
||||
revoke SELECT on priv_db.* from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.* to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5b_1 before UPDATE on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var= 'before trig 3.5.3.8-1b';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-1b');
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1b
|
||||
update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b';
|
||||
ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1b
|
||||
drop trigger trg5b_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5b_2 before UPDATE on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var= 'before trig 3.5.3.8-2b';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-2b');
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-2b
|
||||
update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b';
|
||||
select @test_var;
|
||||
@test_var
|
||||
update 3.5.3.8-2b
|
||||
drop trigger trg5b_2;
|
||||
|
||||
Testcase 3.5.3.8c:
|
||||
------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs@localhost;
|
||||
grant ALL on priv_db.t1 to test_noprivs@localhost;
|
||||
revoke SELECT on priv_db.t1 from test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5c_1 before INSERT on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var= 'before trig 3.5.3.8-1c';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-1c');
|
||||
ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1c
|
||||
drop trigger trg5c_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5c_2 before INSERT on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var='before trig 3.5.3.8-2c';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-2c');
|
||||
select @test_var;
|
||||
@test_var
|
||||
insert 3.5.3.8-2c
|
||||
drop trigger trg5c_2;
|
||||
|
||||
Testcase: 3.5.3.8d:
|
||||
-------------------
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||
grant TRIGGER on *.* to test_noprivs@localhost;
|
||||
grant UPDATE (f1), INSERT (f1) on priv_db.t1 to test_noprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost;
|
||||
show grants for test_noprivs@localhost;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
show grants;
|
||||
Grants for test_noprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5d_1 before INSERT on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var='before trig 3.5.3.8-1d';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-1d');
|
||||
ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1'
|
||||
select @test_var;
|
||||
@test_var
|
||||
before trig 3.5.3.8-1d
|
||||
drop trigger trg5d_1;
|
||||
show grants;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT (f1) ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
use priv_db;
|
||||
create trigger trg5d_2 before INSERT on t1 for each row
|
||||
set @test_var= new.f1;
|
||||
set @test_var='before trig 3.5.3.8-2d';
|
||||
insert into t1 (f1) values ('insert 3.5.3.8-2d');
|
||||
select @test_var;
|
||||
@test_var
|
||||
insert 3.5.3.8-2d
|
||||
drop trigger trg5d_2;
|
||||
|
||||
Testcase: 3.5.3.x:
|
||||
------------------
|
||||
use priv_db;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
create table t1 (f1 int) engine= <engine_to_be_used>;
|
||||
create table t2 (f2 int) engine= <engine_to_be_used>;
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||
grant TRIGGER on *.* to test_yesprivs@localhost;
|
||||
grant SELECT, UPDATE on priv_db.t1 to test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
||||
show grants for test_yesprivs@localhost;
|
||||
Grants for test_yesprivs@localhost
|
||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||
GRANT SELECT ON `priv_db`.`t2` TO 'test_yesprivs'@'localhost'
|
||||
GRANT SELECT, UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||
select current_user;
|
||||
current_user
|
||||
test_yesprivs@localhost
|
||||
use priv_db;
|
||||
create trigger trg1 before insert on t1 for each row
|
||||
insert into t2 values (new.f1);
|
||||
use priv_db;
|
||||
insert into t1 (f1) values (4);
|
||||
ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
||||
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
|
||||
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
|
||||
insert into t1 (f1) values (4);
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
4
|
||||
select f2 from t2 order by f2;
|
||||
f2
|
||||
4
|
||||
use priv_db;
|
||||
drop trigger trg1;
|
||||
create trigger trg2 before insert on t1 for each row
|
||||
update t2 set f2=new.f1-1;
|
||||
use priv_db;
|
||||
insert into t1 (f1) values (2);
|
||||
ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
||||
revoke INSERT on priv_db.t2 from test_yesprivs@localhost;
|
||||
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
|
||||
insert into t1 (f1) values (2);
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
2
|
||||
4
|
||||
select f2 from t2 order by f2;
|
||||
f2
|
||||
1
|
||||
use priv_db;
|
||||
drop trigger trg2;
|
||||
create trigger trg3 before insert on t1 for each row
|
||||
select f2 into @aaa from t2 where f2=new.f1;
|
||||
use priv_db;
|
||||
insert into t1 (f1) values (1);
|
||||
ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
||||
revoke UPDATE on priv_db.t2 from test_yesprivs@localhost;
|
||||
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
||||
insert into t1 (f1) values (1);
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
1
|
||||
2
|
||||
4
|
||||
select f2 from t2 order by f2;
|
||||
f2
|
||||
1
|
||||
select @aaa;
|
||||
@aaa
|
||||
1
|
||||
use priv_db;
|
||||
drop trigger trg3;
|
||||
create trigger trg4 before insert on t1 for each row
|
||||
delete from t2;
|
||||
use priv_db;
|
||||
insert into t1 (f1) values (1);
|
||||
ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
||||
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
|
||||
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
|
||||
insert into t1 (f1) values (1);
|
||||
select f1 from t1 order by f1;
|
||||
f1
|
||||
1
|
||||
1
|
||||
2
|
||||
4
|
||||
select f2 from t2 order by f2;
|
||||
f2
|
||||
drop database if exists priv_db;
|
||||
drop user test_yesprivs@localhost;
|
||||
drop user test_noprivs@localhost;
|
||||
drop user test_noprivs;
|
||||
use test;
|
||||
drop table tb3;
|
||||
1565
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_trig_03e.result
Normal file
1565
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_trig_03e.result
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,471 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
|
||||
Testcase: 3.5:
|
||||
--------------
|
||||
create User test_general@localhost;
|
||||
set password for test_general@localhost = password('PWD');
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
||||
create User test_super@localhost;
|
||||
set password for test_super@localhost = password('PWD');
|
||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||
|
||||
Testcase 3.5.4:
|
||||
---------------
|
||||
use test;
|
||||
|
||||
Testcase 3.5.4.1:
|
||||
-----------------
|
||||
create database db_drop;
|
||||
Use db_drop;
|
||||
create table t1 (f1 char(30)) engine = <engine_to_be_used>;
|
||||
grant INSERT, SELECT on db_drop.t1 to test_general;
|
||||
Use db_drop;
|
||||
Create trigger trg1 BEFORE INSERT on t1
|
||||
for each row set new.f1='Trigger 3.5.4.1';
|
||||
Use db_drop;
|
||||
Insert into t1 values ('Insert error 3.5.4.1');
|
||||
Select * from t1 order by f1;
|
||||
f1
|
||||
Trigger 3.5.4.1
|
||||
drop trigger trg1;
|
||||
select trigger_schema, trigger_name, event_object_table
|
||||
from information_schema.triggers
|
||||
where trigger_schema = 'db_drop'
|
||||
order by trigger_name;
|
||||
trigger_schema trigger_name event_object_table
|
||||
Insert into t1 values ('Insert no trigger 3.5.4.1');
|
||||
Select * from t1 order by f1;
|
||||
f1
|
||||
Insert no trigger 3.5.4.1
|
||||
Trigger 3.5.4.1
|
||||
drop trigger trg1;
|
||||
drop database if exists db_drop;
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
|
||||
|
||||
Testcase 3.5.4.2:
|
||||
-----------------
|
||||
create database db_drop2;
|
||||
Use db_drop2;
|
||||
drop table if exists t1_432 ;
|
||||
create table t1_432 (f1 char (30)) engine = <engine_to_be_used>;
|
||||
Drop trigger tr_does_not_exit;
|
||||
ERROR HY000: Trigger does not exist
|
||||
drop table if exists t1_432 ;
|
||||
drop database if exists db_drop2;
|
||||
|
||||
Testcase 3.5.4.3:
|
||||
-----------------
|
||||
create database db_drop3;
|
||||
Use db_drop3;
|
||||
drop table if exists t1_433 ;
|
||||
drop table if exists t1_433a ;
|
||||
create table t1_433 (f1 char (30)) engine = <engine_to_be_used>;
|
||||
create table t1_433a (f1a char (5)) engine = <engine_to_be_used>;
|
||||
CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row
|
||||
set new.f1 = 'Trigger 3.5.4.3';
|
||||
Drop trigger t1.433.trg3;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.trg3' at line 1
|
||||
Drop trigger db_drop3.t1.433.trg3;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.433.trg3' at line 1
|
||||
Drop trigger mysql.trg3;
|
||||
ERROR HY000: Trigger does not exist
|
||||
Drop trigger tbx.trg3;
|
||||
ERROR HY000: Trigger does not exist
|
||||
Drop trigger db_drop3.trg3;
|
||||
drop table if exists t1_433;
|
||||
drop table if exists t1_433a;
|
||||
drop database if exists db_drop3;
|
||||
|
||||
Testcase 3.5.4.4:
|
||||
-----------------
|
||||
create database db_drop4;
|
||||
Use db_drop4;
|
||||
create table t1 (f1 char(30)) engine = <engine_to_be_used>;
|
||||
grant INSERT, SELECT on db_drop4.t1 to test_general;
|
||||
Create trigger trg4 BEFORE INSERT on t1
|
||||
for each row set new.f1='Trigger 3.5.4.4';
|
||||
Use db_drop4;
|
||||
Insert into t1 values ('Insert 3.5.4.4');
|
||||
Select * from t1;
|
||||
f1
|
||||
Trigger 3.5.4.4
|
||||
Drop database db_drop4;
|
||||
Show databases like 'db_drop4';
|
||||
Database (db_drop4)
|
||||
select trigger_schema, trigger_name, event_object_table
|
||||
from information_schema.triggers
|
||||
where information_schema.triggers.trigger_name='trg4';
|
||||
trigger_schema trigger_name event_object_table
|
||||
create database db_drop4;
|
||||
Use db_drop4;
|
||||
create table t1 (f1 char(30)) engine = <engine_to_be_used>;
|
||||
grant INSERT, SELECT on db_drop4.t1 to test_general;
|
||||
Insert into t1 values ('2nd Insert 3.5.4.4');
|
||||
Select * from t1;
|
||||
f1
|
||||
2nd Insert 3.5.4.4
|
||||
drop trigger trg4;
|
||||
ERROR HY000: Trigger does not exist
|
||||
drop database if exists db_drop4;
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
|
||||
|
||||
Testcase 3.5.4.5:
|
||||
-----------------
|
||||
create database db_drop5;
|
||||
Use db_drop5;
|
||||
create table t1 (f1 char(50)) engine = <engine_to_be_used>;
|
||||
grant INSERT, SELECT on t1 to test_general;
|
||||
Create trigger trg5 BEFORE INSERT on t1
|
||||
for each row set new.f1='Trigger 3.5.4.5';
|
||||
Use db_drop5;
|
||||
Insert into t1 values ('Insert 3.5.4.5');
|
||||
Select * from t1;
|
||||
f1
|
||||
Trigger 3.5.4.5
|
||||
Drop table t1;
|
||||
Show tables;
|
||||
Tables_in_db_drop5
|
||||
select trigger_schema, trigger_name, event_object_table
|
||||
from information_schema.triggers
|
||||
where information_schema.triggers.trigger_name='trg5';
|
||||
trigger_schema trigger_name event_object_table
|
||||
create table t1 (f1 char(50)) engine = <engine_to_be_used>;
|
||||
grant INSERT, SELECT on t1 to test_general;
|
||||
Insert into t1 values ('2nd Insert 3.5.4.5');
|
||||
Select * from t1;
|
||||
f1
|
||||
2nd Insert 3.5.4.5
|
||||
drop trigger trg5;
|
||||
ERROR HY000: Trigger does not exist
|
||||
drop database if exists db_drop5;
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
|
||||
|
||||
Testcase 3.5.5:
|
||||
---------------
|
||||
use test;
|
||||
|
||||
Testcase 3.5.5.1:
|
||||
-----------------
|
||||
Create trigger trg1 before INSERT on t100 for each row set new.f2=1000;
|
||||
ERROR 42S02: Table 'test.t100' doesn't exist
|
||||
|
||||
Testcase 3.5.5.2:
|
||||
-----------------
|
||||
Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned);
|
||||
Create trigger trg2 before INSERT
|
||||
on t1_temp for each row set new.f2=9999;
|
||||
ERROR HY000: Trigger's 't1_temp' is view or temporary table
|
||||
drop table t1_temp;
|
||||
|
||||
Testcase 3.5.5.3:
|
||||
-----------------
|
||||
Create view vw3 as select f118 from tb3;
|
||||
Create trigger trg3 before INSERT
|
||||
on vw3 for each row set new.f118='s';
|
||||
ERROR HY000: 'test.vw3' is not BASE TABLE
|
||||
drop view vw3;
|
||||
|
||||
Testcase 3.5.5.4:
|
||||
-----------------
|
||||
create database dbtest_one;
|
||||
create database dbtest_two;
|
||||
use dbtest_two;
|
||||
create table t2 (f1 char(15)) engine = <engine_to_be_used>;
|
||||
use dbtest_one;
|
||||
create trigger trg4 before INSERT
|
||||
on dbtest_two.t2 for each row set new.f1='trig 3.5.5.4';
|
||||
ERROR HY000: Trigger in wrong schema
|
||||
grant INSERT, SELECT on dbtest_two.t2 to test_general;
|
||||
grant SELECT on dbtest_one.* to test_general;
|
||||
use dbtest_two;
|
||||
Insert into t2 values ('1st Insert 3.5.5.4');
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Select * from t2;
|
||||
f1
|
||||
1st Insert 3.5.
|
||||
use dbtest_one;
|
||||
Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4');
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Select * from dbtest_two.t2 order by f1;
|
||||
f1
|
||||
1st Insert 3.5.
|
||||
2nd Insert 3.5.
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
|
||||
DROP DATABASE if exists dbtest_one;
|
||||
drop database if EXISTS dbtest_two;
|
||||
|
||||
Testcase 3.5.6:
|
||||
---------------
|
||||
use test;
|
||||
|
||||
Testcase 3.5.6.1 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.6.2 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.6.3:
|
||||
-----------------
|
||||
Create trigger trg3_1 DURING UPDATE on tb3 for each row set new.f132=25;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DURING UPDATE on tb3 for each row set new.f132=25' at line 1
|
||||
Create trigger trg3_2 TIME INSERT on tb3 for each row set new.f132=15;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TIME INSERT on tb3 for each row set new.f132=15' at line 1
|
||||
drop trigger tb3.trg3_1;
|
||||
drop trigger tb3.trg3_2;
|
||||
|
||||
Testcase 3.5.6.4 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.6.5 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.7.1 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.7.2 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.7.3 (see Testcase 3.5.1.1)
|
||||
---------------------------------------
|
||||
|
||||
Testcase 3.5.7.4:
|
||||
-----------------
|
||||
Create trigger trg4_1 BEFORE SELECT on tb3 for each row set new.f132=5;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT on tb3 for each row set new.f132=5' at line 1
|
||||
Create trigger trg4_2 AFTER VALUE on tb3 for each row set new.f132=1;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUE on tb3 for each row set new.f132=1' at line 1
|
||||
drop trigger tb3.trg4_1;
|
||||
drop trigger tb3.trg4_2;
|
||||
|
||||
Testcase 3.5.7.5 / 3.5.7.6:
|
||||
---------------------------
|
||||
Create trigger trg5_1 BEFORE INSERT
|
||||
on tb3 for each row set new.f122='Trigger1 3.5.7.5/6';
|
||||
Create trigger trg5_2 BEFORE INSERT
|
||||
on tb3 for each row set new.f122='Trigger2 3.5.7.5';
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5');
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.5/6';
|
||||
f121 f122
|
||||
Test 3.5.7.5/6 Trigger1 3.5.7.5/6
|
||||
update tb3 set f122='Update 3.5.7.6' where f121= 'Test 3.5.7.5/6';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.5/6';
|
||||
f121 f122
|
||||
Test 3.5.7.5/6 Update 3.5.7.6
|
||||
drop trigger trg5_1;
|
||||
drop trigger trg5_2;
|
||||
delete from tb3 where f121='Test 3.5.7.5/6';
|
||||
|
||||
Testcase 3.5.7.7 / 3.5.7.8:
|
||||
---------------------------
|
||||
set @test_var='Before trig 3.5.7.7';
|
||||
Create trigger trg6_1 AFTER INSERT
|
||||
on tb3 for each row set @test_var='Trigger1 3.5.7.7/8';
|
||||
Create trigger trg6_2 AFTER INSERT
|
||||
on tb3 for each row set @test_var='Trigger2 3.5.7.7';
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
select @test_var;
|
||||
@test_var
|
||||
Before trig 3.5.7.7
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.7/8','Insert 3.5.7.7');
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.7/8';
|
||||
f121 f122
|
||||
Test 3.5.7.7/8 Insert 3.5.7.7
|
||||
select @test_var;
|
||||
@test_var
|
||||
Trigger1 3.5.7.7/8
|
||||
update tb3 set f122='Update 3.5.7.8' where f121= 'Test 3.5.7.7/8';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.7/8';
|
||||
f121 f122
|
||||
Test 3.5.7.7/8 Update 3.5.7.8
|
||||
select @test_var;
|
||||
@test_var
|
||||
Trigger1 3.5.7.7/8
|
||||
drop trigger trg6_1;
|
||||
drop trigger trg6_2;
|
||||
delete from tb3 where f121='Test 3.5.7.7/8';
|
||||
|
||||
Testcase 3.5.7.9/10:
|
||||
--------------------
|
||||
Create trigger trg7_1 BEFORE UPDATE
|
||||
on tb3 for each row set new.f122='Trigger1 3.5.7.9/10';
|
||||
Create trigger trg7_2 BEFORE UPDATE
|
||||
on tb3 for each row set new.f122='Trigger2 3.5.7.9';
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9');
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.9/10';
|
||||
f121 f122
|
||||
Test 3.5.7.9/10 Insert 3.5.7.9
|
||||
update tb3 set f122='update 3.5.7.10' where f121='Test 3.5.7.9/10';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.9/10';
|
||||
f121 f122
|
||||
Test 3.5.7.9/10 Trigger1 3.5.7.9/10
|
||||
drop trigger trg7_1;
|
||||
drop trigger trg7_2;
|
||||
delete from tb3 where f121='Test 3.5.7.9/10';
|
||||
|
||||
Testcase 3.5.7.11/12:
|
||||
---------------------
|
||||
set @test_var='Before trig 3.5.7.11';
|
||||
Create trigger trg8_1 AFTER UPDATE
|
||||
on tb3 for each row set @test_var='Trigger 3.5.7.11/12';
|
||||
Create trigger trg8_2 AFTER UPDATE
|
||||
on tb3 for each row set @test_var='Trigger2 3.5.7.11';
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
select @test_var;
|
||||
@test_var
|
||||
Before trig 3.5.7.11
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.11/12','Insert 3.5.7.11/12');
|
||||
select @test_var;
|
||||
@test_var
|
||||
Before trig 3.5.7.11
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.11/12';
|
||||
f121 f122
|
||||
Test 3.5.7.11/12 Insert 3.5.7.11/12
|
||||
update tb3 set f122='update 3.5.7.12' where f121='Test 3.5.7.11/12';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.11/12';
|
||||
f121 f122
|
||||
Test 3.5.7.11/12 update 3.5.7.12
|
||||
select @test_var;
|
||||
@test_var
|
||||
Trigger 3.5.7.11/12
|
||||
delete from tb3 where f121='Test 3.5.7.11/12';
|
||||
drop trigger trg8_1;
|
||||
drop trigger trg8_2;
|
||||
delete from tb3 where f121='Test 3.5.7.11/12';
|
||||
|
||||
Testcase 3.5.7.13/14:
|
||||
---------------------
|
||||
set @test_var=1;
|
||||
Create trigger trg9_1 BEFORE DELETE
|
||||
on tb3 for each row set @test_var=@test_var+1;
|
||||
Create trigger trg9_2 BEFORE DELETE
|
||||
on tb3 for each row set @test_var=@test_var+10;
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
select @test_var;
|
||||
@test_var
|
||||
1
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.13/14','Insert 3.5.7.13');
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.13/14';
|
||||
f121 f122
|
||||
Test 3.5.7.13/14 Insert 3.5.7.13
|
||||
select @test_var;
|
||||
@test_var
|
||||
1
|
||||
delete from tb3 where f121='Test 3.5.7.13/14';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.13/14';
|
||||
f121 f122
|
||||
select @test_var;
|
||||
@test_var
|
||||
2
|
||||
delete from tb3 where f121='Test 3.5.7.13/14';
|
||||
select @test_var;
|
||||
@test_var
|
||||
2
|
||||
drop trigger trg9_1;
|
||||
drop trigger trg9_2;
|
||||
delete from tb3 where f121='Test 3.5.7.13/14';
|
||||
|
||||
Testcase 3.5.7.15/16:
|
||||
---------------------
|
||||
set @test_var=1;
|
||||
Create trigger trg_3_406010_1 AFTER DELETE
|
||||
on tb3 for each row set @test_var=@test_var+5;
|
||||
Create trigger trg_3_406010_2 AFTER DELETE
|
||||
on tb3 for each row set @test_var=@test_var+50;
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
|
||||
Create trigger trg_3_406010_1 AFTER INSERT
|
||||
on tb3 for each row set @test_var=@test_var+1;
|
||||
ERROR HY000: Trigger already exists
|
||||
select @test_var;
|
||||
@test_var
|
||||
1
|
||||
Insert into tb3 (f121,f122) values ('Test 3.5.7.15/16','Insert 3.5.7.15/16');
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.15/16';
|
||||
f121 f122
|
||||
Test 3.5.7.15/16 Insert 3.5.7.15/16
|
||||
select @test_var;
|
||||
@test_var
|
||||
1
|
||||
delete from tb3 where f121='Test 3.5.7.15/16';
|
||||
Select f121,f122 from tb3 where f121='Test 3.5.7.15/16';
|
||||
f121 f122
|
||||
select @test_var;
|
||||
@test_var
|
||||
6
|
||||
delete from tb3 where f121='Test 3.5.7.15/16';
|
||||
select @test_var;
|
||||
@test_var
|
||||
6
|
||||
drop trigger trg_3_406010_1;
|
||||
drop trigger trg_3_406010_2;
|
||||
delete from tb3 where f121='Test 3.5.7.15/16';
|
||||
|
||||
Testcase 3.5.7.17 (see Testcase 3.5.1.1)
|
||||
----------------------------------------
|
||||
drop user test_general@localhost;
|
||||
drop user test_general;
|
||||
drop user test_super@localhost;
|
||||
DROP TABLE test.tb3;
|
||||
528
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_trig_08.result
Normal file
528
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_trig_08.result
Normal file
@@ -0,0 +1,528 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
|
||||
Testcase: 3.5:
|
||||
--------------
|
||||
create User test_general@localhost;
|
||||
set password for test_general@localhost = password('PWD');
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
||||
create User test_super@localhost;
|
||||
set password for test_super@localhost = password('PWD');
|
||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||
|
||||
Testcase 3.5.8.1: (implied in previous tests)
|
||||
---------------------------------------------
|
||||
|
||||
Testcase 3.5.8.2: (implied in previous tests)
|
||||
---------------------------------------------
|
||||
|
||||
Testcase 3.5.8.3/4:
|
||||
-------------------
|
||||
create database db_test;
|
||||
grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general;
|
||||
grant LOCK TABLES on db_test.* to test_general;
|
||||
Use db_test;
|
||||
create table t1_i (
|
||||
i120 char ascii not null DEFAULT b'101',
|
||||
i136 smallint zerofill not null DEFAULT 999,
|
||||
i144 int zerofill not null DEFAULT 99999,
|
||||
i163 decimal (63,30)) engine=<engine_to_be_used>;
|
||||
create table t1_u (
|
||||
u120 char ascii not null DEFAULT b'101',
|
||||
u136 smallint zerofill not null DEFAULT 999,
|
||||
u144 int zerofill not null DEFAULT 99999,
|
||||
u163 decimal (63,30)) engine=<engine_to_be_used>;
|
||||
create table t1_d (
|
||||
d120 char ascii not null DEFAULT b'101',
|
||||
d136 smallint zerofill not null DEFAULT 999,
|
||||
d144 int zerofill not null DEFAULT 99999,
|
||||
d163 decimal (63,30)) engine=<engine_to_be_used>;
|
||||
Insert into t1_u values ('a',111,99999,999.99);
|
||||
Insert into t1_u values ('b',222,99999,999.99);
|
||||
Insert into t1_u values ('c',333,99999,999.99);
|
||||
Insert into t1_u values ('d',222,99999,999.99);
|
||||
Insert into t1_u values ('e',222,99999,999.99);
|
||||
Insert into t1_u values ('f',333,99999,999.99);
|
||||
Insert into t1_d values ('a',111,99999,999.99);
|
||||
Insert into t1_d values ('b',222,99999,999.99);
|
||||
Insert into t1_d values ('c',333,99999,999.99);
|
||||
Insert into t1_d values ('d',444,99999,999.99);
|
||||
Insert into t1_d values ('e',222,99999,999.99);
|
||||
Insert into t1_d values ('f',222,99999,999.99);
|
||||
|
||||
3.5.8.4 - multiple SQL
|
||||
----------------------
|
||||
use test;
|
||||
Create trigger trg1 AFTER INSERT on tb3 for each row
|
||||
BEGIN
|
||||
insert into db_test.t1_i
|
||||
values (new.f120, new.f136, new.f144, new.f163);
|
||||
update db_test.t1_u
|
||||
set u144=new.f144, u163=new.f163
|
||||
where u136=new.f136;
|
||||
delete from db_test.t1_d where d136= new.f136;
|
||||
select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u
|
||||
where u136= new.f136;
|
||||
END//
|
||||
Use test;
|
||||
set @test_var=0;
|
||||
Insert into tb3 (f120, f122, f136, f144, f163)
|
||||
values ('1', 'Test 3.5.8.4', 222, 23456, 1.05);
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4';
|
||||
f120 f122 f136 f144 f163
|
||||
1 Test 3.5.8.4 00222 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_i;
|
||||
i120 i136 i144 i163
|
||||
1 00222 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_u;
|
||||
u120 u136 u144 u163
|
||||
a 00111 0000099999 999.990000000000000000000000000000
|
||||
b 00222 0000023456 1.050000000000000000000000000000
|
||||
c 00333 0000099999 999.990000000000000000000000000000
|
||||
d 00222 0000023456 1.050000000000000000000000000000
|
||||
e 00222 0000023456 1.050000000000000000000000000000
|
||||
f 00333 0000099999 999.990000000000000000000000000000
|
||||
select * from db_test.t1_d;
|
||||
d120 d136 d144 d163
|
||||
a 00111 0000099999 999.990000000000000000000000000000
|
||||
c 00333 0000099999 999.990000000000000000000000000000
|
||||
d 00444 0000099999 999.990000000000000000000000000000
|
||||
select @test_var;
|
||||
@test_var
|
||||
3.150000000000000000000000000000
|
||||
|
||||
3.5.8.4 - single SQL - insert
|
||||
-----------------------------
|
||||
Create trigger trg2 BEFORE UPDATE on tb3 for each row
|
||||
BEGIN
|
||||
insert into db_test.t1_i
|
||||
values (new.f120, new.f136, new.f144, new.f163);
|
||||
END//
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
f120 f122 f136 f144 f163
|
||||
1 Test 3.5.8.4 00222 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_i order by i120;
|
||||
i120 i136 i144 i163
|
||||
1 00222 0000023456 1.050000000000000000000000000000
|
||||
update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert'
|
||||
where f122='Test 3.5.8.4';
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
f120 f122 f136 f144 f163
|
||||
I Test 3.5.8.4-Single Insert 00222 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_i order by i120;
|
||||
i120 i136 i144 i163
|
||||
1 00222 0000023456 1.050000000000000000000000000000
|
||||
I 00222 0000023456 1.050000000000000000000000000000
|
||||
|
||||
3.5.8.4 - single SQL - update
|
||||
-----------------------------
|
||||
drop trigger trg2;
|
||||
Create trigger trg3 BEFORE UPDATE on tb3 for each row
|
||||
update db_test.t1_u
|
||||
set u120=new.f120
|
||||
where u136=new.f136;
|
||||
update tb3 set f120='U', f122='Test 3.5.8.4-Single Update'
|
||||
where f122='Test 3.5.8.4-Single Insert';
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
f120 f122 f136 f144 f163
|
||||
U Test 3.5.8.4-Single Update 00222 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_u order by u120;
|
||||
u120 u136 u144 u163
|
||||
a 00111 0000099999 999.990000000000000000000000000000
|
||||
c 00333 0000099999 999.990000000000000000000000000000
|
||||
f 00333 0000099999 999.990000000000000000000000000000
|
||||
U 00222 0000023456 1.050000000000000000000000000000
|
||||
U 00222 0000023456 1.050000000000000000000000000000
|
||||
U 00222 0000023456 1.050000000000000000000000000000
|
||||
|
||||
3.5.8.3/4 - single SQL - delete
|
||||
-------------------------------
|
||||
drop trigger trg3;
|
||||
Create trigger trg4 AFTER UPDATE on tb3 for each row
|
||||
delete from db_test.t1_d where d136= new.f136;
|
||||
update tb3 set f120='D', f136=444,
|
||||
f122='Test 3.5.8.4-Single Delete'
|
||||
where f122='Test 3.5.8.4-Single Update';
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
f120 f122 f136 f144 f163
|
||||
D Test 3.5.8.4-Single Delete 00444 0000023456 1.050000000000000000000000000000
|
||||
select * from db_test.t1_d order by d120;
|
||||
d120 d136 d144 d163
|
||||
a 00111 0000099999 999.990000000000000000000000000000
|
||||
c 00333 0000099999 999.990000000000000000000000000000
|
||||
|
||||
3.5.8.3/4 - single SQL - select
|
||||
-------------------------------
|
||||
drop trigger trg4;
|
||||
Create trigger trg5 AFTER UPDATE on tb3 for each row
|
||||
select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u
|
||||
where u136= new.f136;
|
||||
set @test_var=0;
|
||||
update tb3 set f120='S', f136=111,
|
||||
f122='Test 3.5.8.4-Single Select'
|
||||
where f122='Test 3.5.8.4-Single Delete';
|
||||
Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
f120 f122 f136 f144 f163
|
||||
S Test 3.5.8.4-Single Select 00111 0000023456 1.050000000000000000000000000000
|
||||
select @test_var;
|
||||
@test_var
|
||||
999.990000000000000000000000000000
|
||||
drop trigger trg1;
|
||||
drop trigger trg5;
|
||||
drop database if exists db_test;
|
||||
delete from tb3 where f122 like 'Test 3.5.8.4%';
|
||||
revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
|
||||
|
||||
Testcase 3.5.8.5 (IF):
|
||||
----------------------
|
||||
create trigger trg2 before insert on tb3 for each row
|
||||
BEGIN
|
||||
IF new.f120='1' then
|
||||
set @test_var='one', new.f120='2';
|
||||
ELSEIF new.f120='2' then
|
||||
set @test_var='two', new.f120='3';
|
||||
ELSEIF new.f120='3' then
|
||||
set @test_var='three', new.f120='4';
|
||||
END IF;
|
||||
IF (new.f120='4') and (new.f136=10) then
|
||||
set @test_var2='2nd if', new.f120='d';
|
||||
ELSE
|
||||
set @test_var2='2nd else', new.f120='D';
|
||||
END IF;
|
||||
END//
|
||||
set @test_var='Empty', @test_var2=0;
|
||||
Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101);
|
||||
select f120, f122, f136, @test_var, @test_var2
|
||||
from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
|
||||
f120 f122 f136 @test_var @test_var2
|
||||
D Test 3.5.8.5-if 00101 one 2nd else
|
||||
Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102);
|
||||
select f120, f122, f136, @test_var, @test_var2
|
||||
from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
|
||||
f120 f122 f136 @test_var @test_var2
|
||||
D Test 3.5.8.5-if 00101 two 2nd else
|
||||
D Test 3.5.8.5-if 00102 two 2nd else
|
||||
Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10);
|
||||
select f120, f122, f136, @test_var, @test_var2
|
||||
from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
|
||||
f120 f122 f136 @test_var @test_var2
|
||||
d Test 3.5.8.5-if 00010 three 2nd if
|
||||
D Test 3.5.8.5-if 00101 three 2nd if
|
||||
D Test 3.5.8.5-if 00102 three 2nd if
|
||||
Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103);
|
||||
select f120, f122, f136, @test_var, @test_var2
|
||||
from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
|
||||
f120 f122 f136 @test_var @test_var2
|
||||
d Test 3.5.8.5-if 00010 three 2nd else
|
||||
D Test 3.5.8.5-if 00101 three 2nd else
|
||||
D Test 3.5.8.5-if 00102 three 2nd else
|
||||
D Test 3.5.8.5-if 00103 three 2nd else
|
||||
create trigger trg3 before update on tb3 for each row
|
||||
BEGIN
|
||||
ELSEIF new.f120='2' then
|
||||
END IF;
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ELSEIF new.f120='2' then
|
||||
END IF;
|
||||
END' at line 3
|
||||
drop trigger trg3//
|
||||
create trigger trg4 before update on tb3 for each row
|
||||
BEGIN
|
||||
IF (new.f120='4') and (new.f136=10) then
|
||||
set @test_var2='2nd if', new.f120='d';
|
||||
ELSE
|
||||
set @test_var2='2nd else', new.f120='D';
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7
|
||||
drop trigger trg4;
|
||||
drop trigger trg2;
|
||||
delete from tb3 where f121='Test 3.5.8.5-if';
|
||||
|
||||
Testcase 3.5.8.5-case:
|
||||
----------------------
|
||||
create trigger trg3 before insert on tb3 for each row
|
||||
BEGIN
|
||||
SET new.f120=char(ascii(new.f120)-32);
|
||||
CASE
|
||||
when new.f136<100 then set new.f136=new.f136+120;
|
||||
when new.f136<10 then set new.f144=777;
|
||||
when new.f136>100 then set new.f120=new.f136-1;
|
||||
END case;
|
||||
CASE
|
||||
when new.f136=200 then set @test_var=CONCAT(new.f120, '=');
|
||||
ELSE set @test_var=concat(new.f120, '*');
|
||||
END case;
|
||||
CASE new.f144
|
||||
when 1 then set @test_var=concat(@test_var, 'one');
|
||||
when 2 then set @test_var=concat(@test_var, 'two');
|
||||
when 3 then set @test_var=concat(@test_var, 'three');
|
||||
when 4 then set @test_var=concat(@test_var, 'four');
|
||||
when 5 then set @test_var=concat(@test_var, 'five');
|
||||
when 6 then set @test_var=concat(@test_var, 'six');
|
||||
when 7 then set @test_var=concat(@test_var, 'seven');
|
||||
when 8 then set @test_var=concat(@test_var, 'eight');
|
||||
when 9 then set @test_var=concat(@test_var, 'nine');
|
||||
when 10 then set @test_var=concat(@test_var, 'ten');
|
||||
when 11 then set @test_var=concat(@test_var, 'eleven');
|
||||
when 12 then set @test_var=concat(@test_var, 'twelve');
|
||||
when 13 then set @test_var=concat(@test_var, 'thirteen');
|
||||
when 14 then set @test_var=concat(@test_var, 'fourteen');
|
||||
when 15 then set @test_var=concat(@test_var, 'fifteen');
|
||||
ELSE set @test_var=CONCAT(new.f120, '*', new.f144);
|
||||
END case;
|
||||
END//
|
||||
set @test_var='Empty';
|
||||
Insert into tb3 (f120, f122, f136, f144)
|
||||
values ('a', 'Test 3.5.8.5-case', 5, 7);
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
A Test 3.5.8.5-case 00125 0000000007 A*seven
|
||||
Insert into tb3 (f120, f122, f136, f144)
|
||||
values ('b', 'Test 3.5.8.5-case', 71,16);
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
A Test 3.5.8.5-case 00125 0000000007 B*0000000016
|
||||
B Test 3.5.8.5-case 00191 0000000016 B*0000000016
|
||||
Insert into tb3 (f120, f122, f136, f144)
|
||||
values ('c', 'Test 3.5.8.5-case', 80,1);
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
A Test 3.5.8.5-case 00125 0000000007 C=one
|
||||
B Test 3.5.8.5-case 00191 0000000016 C=one
|
||||
C Test 3.5.8.5-case 00200 0000000001 C=one
|
||||
Insert into tb3 (f120, f122, f136)
|
||||
values ('d', 'Test 3.5.8.5-case', 152);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f120' at row 1
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
1 Test 3.5.8.5-case 00152 0000099999 1*0000099999
|
||||
A Test 3.5.8.5-case 00125 0000000007 1*0000099999
|
||||
B Test 3.5.8.5-case 00191 0000000016 1*0000099999
|
||||
C Test 3.5.8.5-case 00200 0000000001 1*0000099999
|
||||
Insert into tb3 (f120, f122, f136, f144)
|
||||
values ('e', 'Test 3.5.8.5-case', 200, 8);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f120' at row 1
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
1 Test 3.5.8.5-case 00152 0000099999 1=eight
|
||||
1 Test 3.5.8.5-case 00200 0000000008 1=eight
|
||||
A Test 3.5.8.5-case 00125 0000000007 1=eight
|
||||
B Test 3.5.8.5-case 00191 0000000016 1=eight
|
||||
C Test 3.5.8.5-case 00200 0000000001 1=eight
|
||||
Insert into tb3 (f120, f122, f136, f144)
|
||||
values ('f', 'Test 3.5.8.5-case', 100, 8);
|
||||
select f120, f122, f136, f144, @test_var
|
||||
from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
|
||||
f120 f122 f136 f144 @test_var
|
||||
1 Test 3.5.8.5-case 00152 0000099999 1=eight
|
||||
1 Test 3.5.8.5-case 00200 0000000008 1=eight
|
||||
A Test 3.5.8.5-case 00125 0000000007 1=eight
|
||||
B Test 3.5.8.5-case 00191 0000000016 1=eight
|
||||
C Test 3.5.8.5-case 00200 0000000001 1=eight
|
||||
create trigger trg3a before update on tb3 for each row
|
||||
BEGIN
|
||||
CASE
|
||||
when new.f136<100 then set new.f120='p';
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5
|
||||
drop trigger trg3a;
|
||||
drop trigger trg3;
|
||||
delete from tb3 where f121='Test 3.5.8.5-case';
|
||||
|
||||
Testcase 3.5.8.5-loop/leave:
|
||||
----------------------------
|
||||
Create trigger trg4 after insert on tb3 for each row
|
||||
BEGIN
|
||||
set @counter=0, @flag='Initial';
|
||||
Label1: loop
|
||||
if new.f136<new.f144 then
|
||||
set @counter='Nothing to loop';
|
||||
leave Label1;
|
||||
else
|
||||
set @counter=@counter+1;
|
||||
if new.f136=new.f144+@counter then
|
||||
set @counter=concat(@counter, ' loops');
|
||||
leave Label1;
|
||||
end if;
|
||||
end if;
|
||||
iterate label1;
|
||||
set @flag='Final';
|
||||
END loop Label1;
|
||||
END//
|
||||
Insert into tb3 (f122, f136, f144)
|
||||
values ('Test 3.5.8.5-loop', 2, 8);
|
||||
select @counter, @flag;
|
||||
@counter @flag
|
||||
Nothing to loop Initial
|
||||
Insert into tb3 (f122, f136, f144)
|
||||
values ('Test 3.5.8.5-loop', 11, 8);
|
||||
select @counter, @flag;
|
||||
@counter @flag
|
||||
3 loops Initial
|
||||
Create trigger trg4_2 after update on tb3 for each row
|
||||
BEGIN
|
||||
Label1: loop
|
||||
set @counter=@counter+1;
|
||||
END;
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';
|
||||
END' at line 5
|
||||
drop trigger trg4_2;
|
||||
drop trigger trg4;
|
||||
delete from tb3 where f122='Test 3.5.8.5-loop';
|
||||
|
||||
Testcase 3.5.8.5-repeat:
|
||||
------------------------
|
||||
Create trigger trg6 after insert on tb3 for each row
|
||||
BEGIN
|
||||
rp_label: REPEAT
|
||||
SET @counter1 = @counter1 + 1;
|
||||
IF (@counter1 MOD 2 = 0) THEN ITERATE rp_label;
|
||||
END IF;
|
||||
SET @counter2 = @counter2 + 1;
|
||||
UNTIL @counter1> new.f136 END REPEAT rp_label;
|
||||
END//
|
||||
set @counter1= 0, @counter2= 0;
|
||||
Insert into tb3 (f122, f136)
|
||||
values ('Test 3.5.8.5-repeat', 13);
|
||||
select @counter1, @counter2;
|
||||
@counter1 @counter2
|
||||
15 8
|
||||
Create trigger trg6_2 after update on tb3 for each row
|
||||
BEGIN
|
||||
REPEAT
|
||||
SET @counter2 = @counter2 + 1;
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 5
|
||||
drop trigger trg6;
|
||||
delete from tb3 where f122='Test 3.5.8.5-repeat';
|
||||
|
||||
Testcase 3.5.8.5-while:
|
||||
-----------------------
|
||||
Create trigger trg7 after insert on tb3 for each row
|
||||
wl_label: WHILE @counter1 < new.f136 DO
|
||||
SET @counter1 = @counter1 + 1;
|
||||
IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label;
|
||||
END IF;
|
||||
SET @counter2 = @counter2 + 1;
|
||||
END WHILE wl_label//
|
||||
set @counter1= 0, @counter2= 0;
|
||||
Insert into tb3 (f122, f136)
|
||||
values ('Test 3.5.8.5-while', 7);
|
||||
select @counter1, @counter2;
|
||||
@counter1 @counter2
|
||||
7 4
|
||||
Create trigger trg7_2 after update on tb3 for each row
|
||||
BEGIN
|
||||
WHILE @counter1 < new.f136
|
||||
SET @counter1 = @counter1 + 1;
|
||||
END//
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @counter1 = @counter1 + 1;
|
||||
END' at line 4
|
||||
delete from tb3 where f122='Test 3.5.8.5-while';
|
||||
drop trigger trg7;
|
||||
|
||||
Testcase 3.5.8.6: (requirement void)
|
||||
------------------------------------
|
||||
CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END//
|
||||
CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW
|
||||
BEGIN
|
||||
CALL sp_01 ();
|
||||
END//
|
||||
Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101);
|
||||
update tb3 set f120='S', f136=111,
|
||||
f122='Test 3.5.8.6-tr8_1'
|
||||
where f122='Test 3.5.8.6-insert';
|
||||
select f120, f122
|
||||
from tb3 where f122 like 'Test 3.5.8.6%' order by f120;
|
||||
f120 f122
|
||||
S Test 3.5.8.6-tr8_1
|
||||
DROP TRIGGER trg8_1;
|
||||
DROP PROCEDURE sp_01;
|
||||
|
||||
Testcase 3.5.8.7
|
||||
----------------
|
||||
Create trigger trg9_1 before update on tb3 for each row
|
||||
BEGIN
|
||||
Start transaction;
|
||||
Set new.f120='U';
|
||||
Commit;
|
||||
END//
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
Create trigger trg9_2 before delete on tb3 for each row
|
||||
BEGIN
|
||||
Start transaction;
|
||||
Set @var2=old.f120;
|
||||
Rollback;
|
||||
END//
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
drop user test_general@localhost;
|
||||
drop user test_general;
|
||||
drop user test_super@localhost;
|
||||
DROP TABLE test.tb3;
|
||||
270
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_trig_09.result
Normal file
270
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_trig_09.result
Normal file
@@ -0,0 +1,270 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/memory_tb3.txt'
|
||||
into table tb3;
|
||||
|
||||
Testcase 3.5.9.1/2:
|
||||
-------------------
|
||||
Create trigger trg1 BEFORE UPDATE on tb3 for each row
|
||||
set new.f142 = 94087, @counter=@counter+1;
|
||||
TotalRows
|
||||
10
|
||||
Affected
|
||||
9
|
||||
NotAffected
|
||||
1
|
||||
NewValuew
|
||||
0
|
||||
set @counter=0;
|
||||
Update tb3 Set f142='1' where f130<100;
|
||||
select count(*) as ExpectedChanged, @counter as TrigCounter
|
||||
from tb3 where f142=94087;
|
||||
ExpectedChanged TrigCounter
|
||||
9 9
|
||||
select count(*) as ExpectedNotChange from tb3
|
||||
where f130<100 and f142<>94087;
|
||||
ExpectedNotChange
|
||||
0
|
||||
select count(*) as NonExpectedChanged from tb3
|
||||
where f130>=130 and f142=94087;
|
||||
NonExpectedChanged
|
||||
0
|
||||
drop trigger trg1;
|
||||
|
||||
Testcase 3.5.9.3:
|
||||
-----------------
|
||||
Create trigger trg2_a before update on tb3 for each row
|
||||
set @tr_var_b4_118=old.f118, @tr_var_b4_121=old.f121,
|
||||
@tr_var_b4_122=old.f122, @tr_var_b4_136=old.f136,
|
||||
@tr_var_b4_163=old.f163;
|
||||
Create trigger trg2_b after update on tb3 for each row
|
||||
set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121,
|
||||
@tr_var_af_122=old.f122, @tr_var_af_136=old.f136,
|
||||
@tr_var_af_163=old.f163;
|
||||
Create trigger trg2_c before delete on tb3 for each row
|
||||
set @tr_var_b4_118=old.f118, @tr_var_b4_121=old.f121,
|
||||
@tr_var_b4_122=old.f122, @tr_var_b4_136=old.f136,
|
||||
@tr_var_b4_163=old.f163;
|
||||
Create trigger trg2_d after delete on tb3 for each row
|
||||
set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121,
|
||||
@tr_var_af_122=old.f122, @tr_var_af_136=old.f136,
|
||||
@tr_var_af_163=old.f163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163
|
||||
0 0 0 0 0
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163
|
||||
0 0 0 0 0
|
||||
Insert into tb3 (f122, f136, f163)
|
||||
values ('Test 3.5.9.3', 7, 123.17);
|
||||
Update tb3 Set f136=8 where f122='Test 3.5.9.3';
|
||||
select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136;
|
||||
f118 f121 f122 f136 f163
|
||||
a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000
|
||||
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
|
||||
@tr_var_b4_136, @tr_var_b4_163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163
|
||||
a NULL Test 3.5.9.3 7 123.170000000000000000000000000000
|
||||
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
|
||||
@tr_var_af_136, @tr_var_af_163;
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163
|
||||
a NULL Test 3.5.9.3 7 123.170000000000000000000000000000
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163
|
||||
0 0 0 0 0
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163
|
||||
0 0 0 0 0
|
||||
delete from tb3 where f122='Test 3.5.9.3';
|
||||
select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136;
|
||||
f118 f121 f122 f136 f163
|
||||
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
|
||||
@tr_var_b4_136, @tr_var_b4_163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163
|
||||
a NULL Test 3.5.9.3 8 123.170000000000000000000000000000
|
||||
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
|
||||
@tr_var_af_136, @tr_var_af_163;
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163
|
||||
a NULL Test 3.5.9.3 8 123.170000000000000000000000000000
|
||||
drop trigger trg2_a;
|
||||
drop trigger trg2_b;
|
||||
drop trigger trg2_c;
|
||||
drop trigger trg2_d;
|
||||
|
||||
Testcase 3.5.9.4:
|
||||
-----------------
|
||||
Create trigger trg3_a before insert on tb3 for each row
|
||||
set @tr_var_b4_118=new.f118, @tr_var_b4_121=new.f121,
|
||||
@tr_var_b4_122=new.f122, @tr_var_b4_136=new.f136,
|
||||
@tr_var_b4_151=new.f151, @tr_var_b4_163=new.f163;
|
||||
Create trigger trg3_b after insert on tb3 for each row
|
||||
set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121,
|
||||
@tr_var_af_122=new.f122, @tr_var_af_136=new.f136,
|
||||
@tr_var_af_151=new.f151, @tr_var_af_163=new.f163;
|
||||
Create trigger trg3_c before update on tb3 for each row
|
||||
set @tr_var_b4_118=new.f118, @tr_var_b4_121=new.f121,
|
||||
@tr_var_b4_122=new.f122, @tr_var_b4_136=new.f136,
|
||||
@tr_var_b4_151=new.f151, @tr_var_b4_163=new.f163;
|
||||
Create trigger trg3_d after update on tb3 for each row
|
||||
set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121,
|
||||
@tr_var_af_122=new.f122, @tr_var_af_136=new.f136,
|
||||
@tr_var_af_151=new.f151, @tr_var_af_163=new.f163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163
|
||||
0 0 0 0 0 0
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163
|
||||
0 0 0 0 0 0
|
||||
Insert into tb3 (f122, f136, f151, f163)
|
||||
values ('Test 3.5.9.4', 7, DEFAULT, 995.24);
|
||||
select f118, f121, f122, f136, f151, f163 from tb3
|
||||
where f122 like 'Test 3.5.9.4%' order by f163;
|
||||
f118 f121 f122 f136 f151 f163
|
||||
a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000
|
||||
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
|
||||
@tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163
|
||||
a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000
|
||||
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
|
||||
@tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163
|
||||
a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163
|
||||
0 0 0 0 0 0
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163
|
||||
0 0 0 0 0 0
|
||||
Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL
|
||||
where f122='Test 3.5.9.4';
|
||||
Warnings:
|
||||
Warning 1048 Column 'f136' cannot be null
|
||||
Update tb3 Set f122='Test 3.5.9.4-trig', f136=0, f151=DEFAULT, f163=NULL
|
||||
where f122='Test 3.5.9.4';
|
||||
select f118, f121, f122, f136, f151, f163 from tb3
|
||||
where f122 like 'Test 3.5.9.4-trig' order by f163;
|
||||
f118 f121 f122 f136 f151 f163
|
||||
a NULL Test 3.5.9.4-trig 00000 999 NULL
|
||||
select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122,
|
||||
@tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
|
||||
@tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163
|
||||
a NULL Test 3.5.9.4-trig 0 999 NULL
|
||||
select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122,
|
||||
@tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
|
||||
@tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163
|
||||
a NULL Test 3.5.9.4-trig 0 999 NULL
|
||||
drop trigger trg3_a;
|
||||
drop trigger trg3_b;
|
||||
drop trigger trg3_c;
|
||||
drop trigger trg3_d;
|
||||
delete from tb3 where f122='Test 3.5.9.4-trig';
|
||||
|
||||
Testcase 3.5.9.5: (implied in previous tests)
|
||||
---------------------------------------------
|
||||
|
||||
Testcase 3.5.9.6:
|
||||
-----------------
|
||||
create trigger trg4a before insert on tb3 for each row
|
||||
set @temp1= old.f120;
|
||||
ERROR HY000: There is no OLD row in on INSERT trigger
|
||||
create trigger trg4b after insert on tb3 for each row
|
||||
set old.f120= 'test';
|
||||
ERROR HY000: Updating of OLD row is not allowed in trigger
|
||||
drop trigger trg4a;
|
||||
drop trigger trg4b;
|
||||
|
||||
Testcase 3.5.9.7: (implied in previous tests)
|
||||
---------------------------------------------
|
||||
|
||||
Testcase 3.5.9.8: (implied in previous tests)
|
||||
---------------------------------------------
|
||||
|
||||
Testcase 3.5.9.9:
|
||||
-----------------
|
||||
create trigger trg5a before DELETE on tb3 for each row
|
||||
set @temp1=new.f122;
|
||||
ERROR HY000: There is no NEW row in on DELETE trigger
|
||||
create trigger trg5b after DELETE on tb3 for each row
|
||||
set new.f122='test';
|
||||
ERROR HY000: There is no NEW row in on DELETE trigger
|
||||
drop trigger trg5a;
|
||||
drop trigger trg5b;
|
||||
|
||||
Testcase 3.5.9.10: (implied in previous tests)
|
||||
----------------------------------------------
|
||||
|
||||
Testcase 3.5.9.11: covered by 3.5.9.9
|
||||
-------------------------------------
|
||||
|
||||
Testcase 3.5.9.12: covered by 3.5.9.6
|
||||
-------------------------------------
|
||||
|
||||
Testcase 3.5.9.13:
|
||||
------------------
|
||||
create trigger trg6a before UPDATE on tb3 for each row
|
||||
set old.f118='C', new.f118='U';
|
||||
ERROR HY000: Updating of OLD row is not allowed in trigger
|
||||
create trigger trg6b after INSERT on tb3 for each row
|
||||
set old.f136=163, new.f118='U';
|
||||
ERROR HY000: Updating of OLD row is not allowed in trigger
|
||||
create trigger trg6c after UPDATE on tb3 for each row
|
||||
set old.f136=NULL;
|
||||
ERROR HY000: Updating of OLD row is not allowed in trigger
|
||||
drop trigger trg6a;
|
||||
drop trigger trg6b;
|
||||
drop trigger trg6c;
|
||||
|
||||
Testcase 3.5.9.14: (implied in previous tests)
|
||||
----------------------------------------------
|
||||
DROP TABLE test.tb3;
|
||||
@@ -0,0 +1,402 @@
|
||||
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
||||
USE test;
|
||||
drop table if exists tb3;
|
||||
create table tb3 (
|
||||
f118 char not null DEFAULT 'a',
|
||||
f119 char binary not null DEFAULT b'101',
|
||||
f120 char ascii not null DEFAULT b'101',
|
||||
f121 char(50),
|
||||
f122 char(50),
|
||||
f129 binary not null DEFAULT b'101',
|
||||
f130 tinyint not null DEFAULT 99,
|
||||
f131 tinyint unsigned not null DEFAULT 99,
|
||||
f132 tinyint zerofill not null DEFAULT 99,
|
||||
f133 tinyint unsigned zerofill not null DEFAULT 99,
|
||||
f134 smallint not null DEFAULT 999,
|
||||
f135 smallint unsigned not null DEFAULT 999,
|
||||
f136 smallint zerofill not null DEFAULT 999,
|
||||
f137 smallint unsigned zerofill not null DEFAULT 999,
|
||||
f138 mediumint not null DEFAULT 9999,
|
||||
f139 mediumint unsigned not null DEFAULT 9999,
|
||||
f140 mediumint zerofill not null DEFAULT 9999,
|
||||
f141 mediumint unsigned zerofill not null DEFAULT 9999,
|
||||
f142 int not null DEFAULT 99999,
|
||||
f143 int unsigned not null DEFAULT 99999,
|
||||
f144 int zerofill not null DEFAULT 99999,
|
||||
f145 int unsigned zerofill not null DEFAULT 99999,
|
||||
f146 bigint not null DEFAULT 999999,
|
||||
f147 bigint unsigned not null DEFAULT 999999,
|
||||
f148 bigint zerofill not null DEFAULT 999999,
|
||||
f149 bigint unsigned zerofill not null DEFAULT 999999,
|
||||
f150 decimal not null DEFAULT 999.999,
|
||||
f151 decimal unsigned not null DEFAULT 999.17,
|
||||
f152 decimal zerofill not null DEFAULT 999.999,
|
||||
f153 decimal unsigned zerofill,
|
||||
f154 decimal (0),
|
||||
f155 decimal (64),
|
||||
f156 decimal (0) unsigned,
|
||||
f157 decimal (64) unsigned,
|
||||
f158 decimal (0) zerofill,
|
||||
f159 decimal (64) zerofill,
|
||||
f160 decimal (0) unsigned zerofill,
|
||||
f161 decimal (64) unsigned zerofill,
|
||||
f162 decimal (0,0),
|
||||
f163 decimal (63,30),
|
||||
f164 decimal (0,0) unsigned,
|
||||
f165 decimal (63,30) unsigned,
|
||||
f166 decimal (0,0) zerofill,
|
||||
f167 decimal (63,30) zerofill,
|
||||
f168 decimal (0,0) unsigned zerofill,
|
||||
f169 decimal (63,30) unsigned zerofill,
|
||||
f170 numeric,
|
||||
f171 numeric unsigned,
|
||||
f172 numeric zerofill,
|
||||
f173 numeric unsigned zerofill,
|
||||
f174 numeric (0),
|
||||
f175 numeric (64)
|
||||
) engine = <engine_to_be_used>;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'f150' at row 1
|
||||
Note 1265 Data truncated for column 'f151' at row 1
|
||||
Note 1265 Data truncated for column 'f152' at row 1
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/memory_tb3.txt'
|
||||
into table tb3;
|
||||
|
||||
Testcase 3.5.10.1/2/3:
|
||||
----------------------
|
||||
Create view vw11 as select * from tb3
|
||||
where f122 like 'Test 3.5.10.1/2/3%';
|
||||
Create trigger trg1a before insert on tb3
|
||||
for each row set new.f163=111.11;
|
||||
Create trigger trg1b after insert on tb3
|
||||
for each row set @test_var='After Insert';
|
||||
Create trigger trg1c before update on tb3
|
||||
for each row set new.f121='Y', new.f122='Test 3.5.10.1/2/3-Update';
|
||||
Create trigger trg1d after update on tb3
|
||||
for each row set @test_var='After Update';
|
||||
Create trigger trg1e before delete on tb3
|
||||
for each row set @test_var=5;
|
||||
Create trigger trg1f after delete on tb3
|
||||
for each row set @test_var= 2* @test_var+7;
|
||||
Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 1);
|
||||
Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2);
|
||||
Insert into vw11 (f122, f151) values ('Not in View', 3);
|
||||
select f121, f122, f151, f163
|
||||
from tb3 where f122 like 'Test 3.5.10.1/2/3%' order by f151;
|
||||
f121 f122 f151 f163
|
||||
NULL Test 3.5.10.1/2/3 1 111.110000000000000000000000000000
|
||||
NULL Test 3.5.10.1/2/3 2 111.110000000000000000000000000000
|
||||
select f121, f122, f151, f163 from vw11;
|
||||
f121 f122 f151 f163
|
||||
NULL Test 3.5.10.1/2/3 1 111.110000000000000000000000000000
|
||||
NULL Test 3.5.10.1/2/3 2 111.110000000000000000000000000000
|
||||
select f121, f122, f151, f163
|
||||
from tb3 where f122 like 'Not in View';
|
||||
f121 f122 f151 f163
|
||||
NULL Not in View 3 111.110000000000000000000000000000
|
||||
Update vw11 set f163=1;
|
||||
select f121, f122, f151, f163 from tb3
|
||||
where f122 like 'Test 3.5.10.1/2/3%' order by f151;
|
||||
f121 f122 f151 f163
|
||||
Y Test 3.5.10.1/2/3-Update 1 1.000000000000000000000000000000
|
||||
Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000
|
||||
select f121, f122, f151, f163 from vw11;
|
||||
f121 f122 f151 f163
|
||||
Y Test 3.5.10.1/2/3-Update 1 1.000000000000000000000000000000
|
||||
Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000
|
||||
set @test_var=0;
|
||||
Select @test_var as 'before delete';
|
||||
before delete
|
||||
0
|
||||
delete from vw11 where f151=1;
|
||||
select f121, f122, f151, f163 from tb3
|
||||
where f122 like 'Test 3.5.10.1/2/3%' order by f151;
|
||||
f121 f122 f151 f163
|
||||
Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000
|
||||
select f121, f122, f151, f163 from vw11;
|
||||
f121 f122 f151 f163
|
||||
Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000
|
||||
Select @test_var as 'after delete';
|
||||
after delete
|
||||
17
|
||||
drop view vw11;
|
||||
drop trigger trg1a;
|
||||
drop trigger trg1b;
|
||||
drop trigger trg1c;
|
||||
drop trigger trg1d;
|
||||
drop trigger trg1e;
|
||||
drop trigger trg1f;
|
||||
delete from tb3 where f122 like 'Test 3.5.10.1/2/3%';
|
||||
|
||||
Testcase 3.5.10.4:
|
||||
------------------
|
||||
create table tb_load (f1 int, f2 char(25),f3 int) engine = <engine_to_be_used>;
|
||||
Create trigger trg4 before insert on tb_load
|
||||
for each row set new.f3=-(new.f1 div 5), @counter= @counter+1;
|
||||
set @counter= 0;
|
||||
select @counter as 'Rows Loaded Before';
|
||||
Rows Loaded Before
|
||||
0
|
||||
load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table tb_load;
|
||||
select @counter as 'Rows Loaded After';
|
||||
Rows Loaded After
|
||||
10
|
||||
Select * from tb_load order by f1 limit 10;
|
||||
f1 f2 f3
|
||||
-5000 a` 1000
|
||||
-4999 aaa 999
|
||||
-4998 abaa 999
|
||||
-4997 acaaa 999
|
||||
-4996 adaaaa 999
|
||||
-4995 aeaaaaa 999
|
||||
-4994 afaaaaaa 998
|
||||
-4993 agaaaaaaa 998
|
||||
-4992 a^aaaaaaaa 998
|
||||
-4991 a_aaaaaaaaa 998
|
||||
drop trigger trg4;
|
||||
drop table tb_load;
|
||||
|
||||
Testcase 3.5.10.5: (implemented in trig_frkey.test)
|
||||
---------------------------------------------------
|
||||
|
||||
Testcase 3.5.10.6: (implemented in trig_frkey.test)
|
||||
---------------------------------------------------
|
||||
|
||||
Testcase 3.5.10.extra:
|
||||
----------------------
|
||||
create table t1_sp (var136 tinyint, var151 decimal) engine = <engine_to_be_used>;
|
||||
create trigger trg before insert on t1_sp
|
||||
for each row set @counter=@counter+1;
|
||||
create procedure trig_sp()
|
||||
begin
|
||||
declare done int default 0;
|
||||
declare var151 decimal;
|
||||
declare var136 tinyint;
|
||||
declare cur1 cursor for select f136, f151 from tb3;
|
||||
declare continue handler for sqlstate '01000' set done = 1;
|
||||
open cur1;
|
||||
fetch cur1 into var136, var151;
|
||||
wl_loop: WHILE NOT done DO
|
||||
insert into t1_sp values (var136, var151);
|
||||
fetch cur1 into var136, var151;
|
||||
END WHILE wl_loop;
|
||||
close cur1;
|
||||
end//
|
||||
set @counter=0;
|
||||
select @counter;
|
||||
@counter
|
||||
0
|
||||
call trig_sp();
|
||||
ERROR 02000: No data - zero rows fetched, selected, or processed
|
||||
select @counter;
|
||||
@counter
|
||||
11
|
||||
select count(*) from tb3;
|
||||
count(*)
|
||||
11
|
||||
select count(*) from t1_sp;
|
||||
count(*)
|
||||
11
|
||||
drop procedure trig_sp;
|
||||
drop trigger trg;
|
||||
drop table t1_sp;
|
||||
|
||||
Testcase 3.5.11.1 (implemented in trig_perf.test)
|
||||
-------------------------------------------------
|
||||
|
||||
Testcase y.y.y.2: Check for triggers starting triggers
|
||||
------------------------------------------------------
|
||||
use test;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2_1;
|
||||
drop table if exists t2_2;
|
||||
drop table if exists t2_3;
|
||||
drop table if exists t2_4;
|
||||
drop table if exists t3;
|
||||
create table t1 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2_1 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2_2 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2_3 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2_4 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t3 (f1 integer) engine = <engine_to_be_used>;
|
||||
insert into t1 values (1);
|
||||
create trigger tr1 after insert on t1 for each row
|
||||
BEGIN
|
||||
insert into t2_1 (f1) values (new.f1+1);
|
||||
insert into t2_2 (f1) values (new.f1+1);
|
||||
insert into t2_3 (f1) values (new.f1+1);
|
||||
insert into t2_4 (f1) values (new.f1+1);
|
||||
END//
|
||||
create trigger tr2_1 after insert on t2_1 for each row
|
||||
insert into t3 (f1) values (new.f1+10);
|
||||
create trigger tr2_2 after insert on t2_2 for each row
|
||||
insert into t3 (f1) values (new.f1+100);
|
||||
create trigger tr2_3 after insert on t2_3 for each row
|
||||
insert into t3 (f1) values (new.f1+1000);
|
||||
create trigger tr2_4 after insert on t2_4 for each row
|
||||
insert into t3 (f1) values (new.f1+10000);
|
||||
insert into t1 values (1);
|
||||
select * from t3 order by f1;
|
||||
f1
|
||||
12
|
||||
102
|
||||
1002
|
||||
10002
|
||||
drop trigger tr1;
|
||||
drop trigger tr2_1;
|
||||
drop trigger tr2_2;
|
||||
drop trigger tr2_3;
|
||||
drop trigger tr2_4;
|
||||
drop table t1, t2_1, t2_2, t2_3, t2_4, t3;
|
||||
|
||||
Testcase y.y.y.3: Circular trigger reference
|
||||
--------------------------------------------
|
||||
use test;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
drop table if exists t3;
|
||||
drop table if exists t4;
|
||||
create table t1 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2 (f2 integer) engine = <engine_to_be_used>;
|
||||
create table t3 (f3 integer) engine = <engine_to_be_used>;
|
||||
create table t4 (f4 integer) engine = <engine_to_be_used>;
|
||||
insert into t1 values (0);
|
||||
create trigger tr1 after insert on t1
|
||||
for each row insert into t2 (f2) values (new.f1+1);
|
||||
create trigger tr2 after insert on t2
|
||||
for each row insert into t3 (f3) values (new.f2+1);
|
||||
create trigger tr3 after insert on t3
|
||||
for each row insert into t4 (f4) values (new.f3+1);
|
||||
create trigger tr4 after insert on t4
|
||||
for each row insert into t1 (f1) values (new.f4+1);
|
||||
insert into t1 values (1);
|
||||
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
select * from t1 order by f1;
|
||||
f1
|
||||
0
|
||||
1
|
||||
select * from t2 order by f2;
|
||||
f2
|
||||
2
|
||||
select * from t3 order by f3;
|
||||
f3
|
||||
3
|
||||
select * from t4 order by f4;
|
||||
f4
|
||||
4
|
||||
drop trigger tr1;
|
||||
drop trigger tr2;
|
||||
drop trigger tr3;
|
||||
drop trigger tr4;
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
drop table t4;
|
||||
|
||||
Testcase y.y.y.4: Recursive trigger/SP references
|
||||
-------------------------------------------------
|
||||
set @sql_mode='traditional';
|
||||
create table t1_sp (
|
||||
count integer,
|
||||
var136 tinyint,
|
||||
var151 decimal) engine = <engine_to_be_used>;
|
||||
create procedure trig_sp()
|
||||
begin
|
||||
declare done int default 0;
|
||||
declare var151 decimal;
|
||||
declare var136 tinyint;
|
||||
declare cur1 cursor for select f136, f151 from tb3;
|
||||
declare continue handler for sqlstate '01000' set done = 1;
|
||||
set @counter= @counter+1;
|
||||
open cur1;
|
||||
fetch cur1 into var136, var151;
|
||||
wl_loop: WHILE NOT done DO
|
||||
insert into t1_sp values (@counter, var136, var151);
|
||||
fetch cur1 into var136, var151;
|
||||
END WHILE wl_loop;
|
||||
close cur1;
|
||||
end//
|
||||
create trigger trg before insert on t1_sp
|
||||
for each row call trig_sp();
|
||||
set @counter=0;
|
||||
select @counter;
|
||||
@counter
|
||||
0
|
||||
call trig_sp();
|
||||
ERROR HY000: Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine trig_sp
|
||||
select @counter;
|
||||
@counter
|
||||
1
|
||||
select count(*) from tb3;
|
||||
count(*)
|
||||
11
|
||||
select count(*) from t1_sp;
|
||||
count(*)
|
||||
0
|
||||
set @@max_sp_recursion_depth= 10;
|
||||
set @counter=0;
|
||||
select @counter;
|
||||
@counter
|
||||
0
|
||||
call trig_sp();
|
||||
ERROR HY000: Can't update table 't1_sp' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
select @counter;
|
||||
@counter
|
||||
2
|
||||
select count(*) from tb3;
|
||||
count(*)
|
||||
11
|
||||
select count(*) from t1_sp;
|
||||
count(*)
|
||||
0
|
||||
drop procedure trig_sp;
|
||||
drop trigger trg;
|
||||
drop table t1_sp;
|
||||
|
||||
Testcase y.y.y.5: Rollback of nested trigger references
|
||||
-------------------------------------------------------
|
||||
set @@sql_mode='traditional';
|
||||
use test;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
drop table if exists t3;
|
||||
drop table if exists t4;
|
||||
create table t1 (f1 integer) engine = <engine_to_be_used>;
|
||||
create table t2 (f2 integer) engine = <engine_to_be_used>;
|
||||
create table t3 (f3 integer) engine = <engine_to_be_used>;
|
||||
create table t4 (f4 tinyint) engine = <engine_to_be_used>;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1
|
||||
insert into t1 values (1);
|
||||
create trigger tr1 after insert on t1
|
||||
for each row insert into t2 (f2) values (new.f1+1);
|
||||
create trigger tr2 after insert on t2
|
||||
for each row insert into t3 (f3) values (new.f2+1);
|
||||
create trigger tr3 after insert on t3
|
||||
for each row insert into t4 (f4) values (new.f3+1000);
|
||||
set autocommit=0;
|
||||
start transaction;
|
||||
insert into t1 values (1);
|
||||
ERROR 22003: Out of range value for column 'f4' at row 1
|
||||
commit;
|
||||
select * from t1 order by f1;
|
||||
f1
|
||||
1
|
||||
1
|
||||
select * from t2 order by f2;
|
||||
f2
|
||||
2
|
||||
select * from t3 order by f3;
|
||||
f3
|
||||
3
|
||||
drop trigger tr1;
|
||||
drop trigger tr2;
|
||||
drop trigger tr3;
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
drop table t4;
|
||||
DROP TABLE test.tb3;
|
||||
22907
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_views.result
Normal file
22907
build/lib/mysql/mysql-test/suite/funcs_1/r/memory_views.result
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user