mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
6b2f13098a
according to the standard. The idea is to use Field-classes to implement stored routines variables. Also, we should provide facade to Item-hierarchy by Item_field class (it is necessary, since SRVs take part in expressions). The patch fixes the following bugs: - BUG#8702: Stored Procedures: No Error/Warning shown for inappropriate data type matching; - BUG#8768: Functions: For any unsigned data type, -ve values can be passed and returned; - BUG#8769: Functions: For Int datatypes, out of range values can be passed and returned; - BUG#9078: STORED PROCDURE: Decimal digits are not displayed when we use DECIMAL datatype; - BUG#9572: Stored procedures: variable type declarations ignored; - BUG#12903: upper function does not work inside a function; - BUG#13705: parameters to stored procedures are not verified; - BUG#13808: ENUM type stored procedure parameter accepts non-enumerated data; - BUG#13909: Varchar Stored Procedure Parameter always BINARY string (ignores CHARACTER SET); - BUG#14161: Stored procedure cannot retrieve bigint unsigned; - BUG#14188: BINARY variables have no 0x00 padding; - BUG#15148: Stored procedure variables accept non-scalar values; mysql-test/r/ctype_ujis.result: Explicitly specify correct charset. mysql-test/r/schema.result: Drop our test database to not affect this test if some test left it cause of failure. mysql-test/r/show_check.result: Drop our test database to not affect this test if some test left it cause of failure. mysql-test/r/skip_name_resolve.result: Ignore columns with unpredictable values. mysql-test/r/sp-big.result: Add cleanup statement. mysql-test/r/sp-dynamic.result: Add cleanup statements. mysql-test/r/sp.result: Update result file. mysql-test/r/sum_distinct-big.result: Update result file. mysql-test/r/type_newdecimal-big.result: Update result file. mysql-test/t/ctype_ujis.test: Explicitly specify correct charset. mysql-test/t/schema.test: Drop our test database to not affect this test if some test left it cause of failure. mysql-test/t/show_check.test: Drop our test database to not affect this test if some test left it cause of failure. mysql-test/t/skip_name_resolve.test: Ignore columns with unpredictable values. mysql-test/t/sp-big.test: Add cleanup statement. mysql-test/t/sp-dynamic.test: Add cleanup statements. mysql-test/t/sp.test: Non-scalar values prohibited for assignment to SP-vars; polishing. mysql-test/t/type_newdecimal-big.test: Update type specification so that the variables can contain the large values used in the test. sql/field.cc: Extract create_field::init() to initialize an existing instance of create_field from new_create_field(). sql/field.h: Extract create_field::init() to initialize an existing instance of create_field from new_create_field(). sql/item.cc: - Introduce a new class: Item_sp_variable -- a base class of stored-routine-variables classes; - Introduce Item_case_expr -- an Item, which is used to access to the expression of CASE statement; sql/item.h: - Introduce a new class: Item_sp_variable -- a base class of stored-routine-variables classes; - Introduce Item_case_expr -- an Item, which is used to access to the expression of CASE statement; sql/item_func.cc: Pass the Field (instead of Item) for the return value of a function to the function execution routine. sql/item_func.h: Pass the Field (instead of Item) for the return value of a function to the function execution routine. sql/mysql_priv.h: Move create_virtual_tmp_table() out of sql_select.h. sql/sp.cc: Use create_result_field() instead of make_field(). sql/sp_head.cc: - Add a function to map enum_field_types to Item::Type; - Add sp_instr_push_case_expr instruction -- an instruction to push CASE expression into the active running context; - Add sp_instr_pop_case_expr instruction -- an instruction to pop CASE expression from the active running context; - Adapt the SP-execution code to using Fields instead of Items for SP-vars; - Use create_field structure for field description instead of a set of members. sql/sp_head.h: - Add a function to map enum_field_types to Item::Type; - Add sp_instr_push_case_expr instruction -- an instruction to push CASE expression into the active running context; - Add sp_instr_pop_case_expr instruction -- an instruction to pop CASE expression from the active running context; - Adapt the SP-execution code to using Fields instead of Items for SP-vars; - Use create_field structure for field description instead of a set of members. sql/sp_pcontext.cc: - Change rules to assign an index of SP-variable: use transparent index; - Add an operation to retrieve a list of defined SP-vars from the processing context recursively. sql/sp_pcontext.h: - Change rules to assign an index of SP-variable: use transparent index; - Add an operation to retrieve a list of defined SP-vars from the processing context recursively. sql/sp_rcontext.cc: - Change rules to assign an index of SP-variable: use transparent index; - Use a tmp virtual table to store SP-vars instead of Items; - Provide operations to work with CASE expresion. sql/sp_rcontext.h: - Change rules to assign an index of SP-variable: use transparent index; - Use a tmp virtual table to store SP-vars instead of Items; - Provide operations to work with CASE expresion. sql/sql_class.cc: - Reflect Item_splocal ctor changes; - Item_splocal::get_offset() has been renamed to get_var_idx(). sql/sql_class.h: Polishing. sql/sql_parse.cc: Extract create_field::init() to initialize an existing instance of create_field from new_create_field(). sql/sql_select.cc: Take care of BLOB columns in create_virtual_tmp_table(). sql/sql_select.h: Move create_virtual_tmp_table() out of sql_select.h. sql/sql_trigger.cc: Use boolean constants for boolean type instead of numerical ones. sql/sql_yacc.yy: Provide an instance of create_field for each SP-var. mysql-test/include/sp-vars.inc: The definitions of common-procedures, which are created under different circumstances. mysql-test/r/sp-vars.result: Result file for the SP-vars test. mysql-test/sp-vars.test: A new test for checking SP-vars functionality.
567 lines
22 KiB
Text
567 lines
22 KiB
Text
drop table if exists t1,t2;
|
|
drop table if exists t1aa,t2aa;
|
|
drop database if exists mysqltest;
|
|
drop database if exists mysqltest1;
|
|
delete from mysql.user where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
|
delete from mysql.db where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
|
flush privileges;
|
|
create table t1 (a int not null primary key, b int not null,c int not null, key(b,c));
|
|
insert into t1 values (1,2,2),(2,2,3),(3,2,4),(4,2,4);
|
|
check table t1 fast;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status Table is already up to date
|
|
check table t1 fast;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status Table is already up to date
|
|
check table t1 changed;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
insert into t1 values (5,5,5);
|
|
check table t1 changed;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
check table t1 medium;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
check table t1 extended;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
show index from t1;
|
|
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
|
t1 0 PRIMARY 1 a A 5 NULL NULL BTREE
|
|
t1 1 b 1 b A 1 NULL NULL BTREE
|
|
t1 1 b 2 c A 5 NULL NULL BTREE
|
|
insert into t1 values (5,5,5);
|
|
ERROR 23000: Duplicate entry '5' for key 1
|
|
optimize table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 optimize status OK
|
|
optimize table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 optimize status Table is already up to date
|
|
drop table t1;
|
|
show variables like "wait_timeout%";
|
|
Variable_name Value
|
|
wait_timeout 28800
|
|
show variables like "WAIT_timeout%";
|
|
Variable_name Value
|
|
wait_timeout 28800
|
|
show variables like "this_doesn't_exists%";
|
|
Variable_name Value
|
|
show table status from test like "this_doesn't_exists%";
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
show databases;
|
|
Database
|
|
information_schema
|
|
mysql
|
|
test
|
|
show databases like "test%";
|
|
Database (test%)
|
|
test
|
|
create table t1 (f1 int not null, f2 int not null, f3 int not null, f4 int not null, primary key(f1,f2,f3,f4));
|
|
insert into t1 values (1,1,1,0),(1,1,2,0),(1,1,3,0),(1,2,1,0),(1,2,2,0),(1,2,3,0),(1,3,1,0),(1,3,2,0),(1,3,3,0),(1,1,1,1),(1,1,2,1),(1,1,3,1),(1,2,1,1),(1,2,2,1),(1,2,3,1),(1,3,1,1),(1,3,2,1),(1,3,3,1);
|
|
analyze table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status OK
|
|
show index from 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 A 1 NULL NULL BTREE
|
|
t1 0 PRIMARY 2 f2 A 3 NULL NULL BTREE
|
|
t1 0 PRIMARY 3 f3 A 9 NULL NULL BTREE
|
|
t1 0 PRIMARY 4 f4 A 18 NULL NULL BTREE
|
|
repair table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 repair status OK
|
|
show index from 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 A 1 NULL NULL BTREE
|
|
t1 0 PRIMARY 2 f2 A 3 NULL NULL BTREE
|
|
t1 0 PRIMARY 3 f3 A 9 NULL NULL BTREE
|
|
t1 0 PRIMARY 4 f4 A 18 NULL NULL BTREE
|
|
drop table t1;
|
|
create temporary table t1 (a int not null);
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TEMPORARY TABLE `t1` (
|
|
`a` int(11) NOT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
alter table t1 rename t2;
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TEMPORARY TABLE `t2` (
|
|
`a` int(11) NOT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
drop table t2;
|
|
create table t1 (
|
|
test_set set( 'val1', 'val2', 'val3' ) not null default '',
|
|
name char(20) default 'O''Brien' comment 'O''Brien as default',
|
|
c int not null comment 'int column',
|
|
`c-b` int comment 'name with a minus',
|
|
`space 2` int comment 'name with a space'
|
|
) comment = 'it\'s a table' ;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`test_set` set('val1','val2','val3') NOT NULL default '',
|
|
`name` char(20) default 'O''Brien' COMMENT 'O''Brien as default',
|
|
`c` int(11) NOT NULL COMMENT 'int column',
|
|
`c-b` int(11) default NULL COMMENT 'name with a minus',
|
|
`space 2` int(11) default NULL COMMENT 'name with a space'
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='it''s a table'
|
|
set sql_quote_show_create=0;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE t1 (
|
|
test_set set('val1','val2','val3') NOT NULL default '',
|
|
`name` char(20) default 'O''Brien' COMMENT 'O''Brien as default',
|
|
c int(11) NOT NULL COMMENT 'int column',
|
|
`c-b` int(11) default NULL COMMENT 'name with a minus',
|
|
`space 2` int(11) default NULL COMMENT 'name with a space'
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='it''s a table'
|
|
set sql_quote_show_create=1;
|
|
show full columns from t1;
|
|
Field Type Collation Null Key Default Extra Privileges Comment
|
|
test_set set('val1','val2','val3') latin1_swedish_ci NO select,insert,update,references
|
|
name char(20) latin1_swedish_ci YES O'Brien select,insert,update,references O'Brien as default
|
|
c int(11) NULL NO select,insert,update,references int column
|
|
c-b int(11) NULL YES NULL select,insert,update,references name with a minus
|
|
space 2 int(11) NULL YES NULL select,insert,update,references name with a space
|
|
drop table t1;
|
|
create table t1 (a int not null, unique aa (a));
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL,
|
|
UNIQUE KEY `aa` (`a`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
drop table t1;
|
|
create table t1 (a int not null, primary key (a));
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
drop table t1;
|
|
flush tables;
|
|
show open tables;
|
|
Database Table In_use Name_locked
|
|
create table t1(n int);
|
|
insert into t1 values (1);
|
|
show open tables;
|
|
Database Table In_use Name_locked
|
|
test t1 0 0
|
|
drop table t1;
|
|
create table t1 (a int not null, b VARCHAR(10), INDEX (b) ) AVG_ROW_LENGTH=10 CHECKSUM=1 COMMENT="test" ENGINE=MYISAM MIN_ROWS=10 MAX_ROWS=100 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=fixed;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL,
|
|
`b` varchar(10) default NULL,
|
|
KEY `b` (`b`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 MIN_ROWS=10 MAX_ROWS=100 AVG_ROW_LENGTH=10 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=FIXED COMMENT='test'
|
|
alter table t1 MAX_ROWS=200 ROW_FORMAT=dynamic PACK_KEYS=0;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL,
|
|
`b` varchar(10) default NULL,
|
|
KEY `b` (`b`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 MIN_ROWS=10 MAX_ROWS=200 AVG_ROW_LENGTH=10 PACK_KEYS=0 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='test'
|
|
ALTER TABLE t1 AVG_ROW_LENGTH=0 CHECKSUM=0 COMMENT="" MIN_ROWS=0 MAX_ROWS=0 PACK_KEYS=DEFAULT DELAY_KEY_WRITE=0 ROW_FORMAT=default;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL,
|
|
`b` varchar(10) default NULL,
|
|
KEY `b` (`b`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
drop table t1;
|
|
create table t1 (a decimal(9,2), b decimal (9,0), e double(9,2), f double(5,0), h float(3,2), i float(3,0));
|
|
show columns from t1;
|
|
Field Type Null Key Default Extra
|
|
a decimal(9,2) YES NULL
|
|
b decimal(9,0) YES NULL
|
|
e double(9,2) YES NULL
|
|
f double(5,0) YES NULL
|
|
h float(3,2) YES NULL
|
|
i float(3,0) YES NULL
|
|
show full columns from t1;
|
|
Field Type Collation Null Key Default Extra Privileges Comment
|
|
a decimal(9,2) NULL YES NULL select,insert,update,references
|
|
b decimal(9,0) NULL YES NULL select,insert,update,references
|
|
e double(9,2) NULL YES NULL select,insert,update,references
|
|
f double(5,0) NULL YES NULL select,insert,update,references
|
|
h float(3,2) NULL YES NULL select,insert,update,references
|
|
i float(3,0) NULL YES NULL select,insert,update,references
|
|
drop table t1;
|
|
create table t1 (
|
|
type_bool bool not null default 0,
|
|
type_tiny tinyint not null auto_increment primary key,
|
|
type_short smallint(3),
|
|
type_mediumint mediumint,
|
|
type_bigint bigint,
|
|
type_decimal decimal(5,2),
|
|
type_numeric numeric(5,2),
|
|
empty_char char(0),
|
|
type_char char(2),
|
|
type_varchar varchar(10),
|
|
type_timestamp timestamp not null,
|
|
type_date date not null default '0000-00-00',
|
|
type_time time not null default '00:00:00',
|
|
type_datetime datetime not null default '0000-00-00 00:00:00',
|
|
type_year year,
|
|
type_enum enum ('red', 'green', 'blue'),
|
|
type_set enum ('red', 'green', 'blue'),
|
|
type_tinyblob tinyblob,
|
|
type_blob blob,
|
|
type_medium_blob mediumblob,
|
|
type_long_blob longblob,
|
|
index(type_short)
|
|
) AVG_ROW_LENGTH=10 CHECKSUM=1 COMMENT="test" ENGINE=MYISAM MIN_ROWS=10 MAX_ROWS=100 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=fixed CHARSET=latin1;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`type_bool` tinyint(1) NOT NULL default '0',
|
|
`type_tiny` tinyint(4) NOT NULL auto_increment,
|
|
`type_short` smallint(3) default NULL,
|
|
`type_mediumint` mediumint(9) default NULL,
|
|
`type_bigint` bigint(20) default NULL,
|
|
`type_decimal` decimal(5,2) default NULL,
|
|
`type_numeric` decimal(5,2) default NULL,
|
|
`empty_char` char(0) default NULL,
|
|
`type_char` char(2) default NULL,
|
|
`type_varchar` varchar(10) default NULL,
|
|
`type_timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
|
`type_date` date NOT NULL default '0000-00-00',
|
|
`type_time` time NOT NULL default '00:00:00',
|
|
`type_datetime` datetime NOT NULL default '0000-00-00 00:00:00',
|
|
`type_year` year(4) default NULL,
|
|
`type_enum` enum('red','green','blue') default NULL,
|
|
`type_set` enum('red','green','blue') default NULL,
|
|
`type_tinyblob` tinyblob,
|
|
`type_blob` blob,
|
|
`type_medium_blob` mediumblob,
|
|
`type_long_blob` longblob,
|
|
PRIMARY KEY (`type_tiny`),
|
|
KEY `type_short` (`type_short`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 MIN_ROWS=10 MAX_ROWS=100 AVG_ROW_LENGTH=10 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=FIXED COMMENT='test'
|
|
insert into t1 (type_timestamp) values ("2003-02-07 10:00:01");
|
|
select * from t1;
|
|
type_bool type_tiny type_short type_mediumint type_bigint type_decimal type_numeric empty_char type_char type_varchar type_timestamp type_date type_time type_datetime type_year type_enum type_set type_tinyblob type_blob type_medium_blob type_long_blob
|
|
0 1 NULL NULL NULL NULL NULL NULL NULL NULL 2003-02-07 10:00:01 0000-00-00 00:00:00 0000-00-00 00:00:00 NULL NULL NULL NULL NULL NULL NULL
|
|
drop table t1;
|
|
create table t1 (a int not null);
|
|
create table t2 select max(a) from t1;
|
|
show columns from t2;
|
|
Field Type Null Key Default Extra
|
|
max(a) int(11) YES NULL
|
|
drop table t1,t2;
|
|
create table t1 (c decimal, d double, f float, r real);
|
|
show columns from t1;
|
|
Field Type Null Key Default Extra
|
|
c decimal(10,0) YES NULL
|
|
d double YES NULL
|
|
f float YES NULL
|
|
r double YES NULL
|
|
drop table t1;
|
|
create table t1 (c decimal(3,3), d double(3,3), f float(3,3));
|
|
show columns from t1;
|
|
Field Type Null Key Default Extra
|
|
c decimal(3,3) YES NULL
|
|
d double(3,3) YES NULL
|
|
f float(3,3) YES NULL
|
|
drop table t1;
|
|
SET @old_sql_mode= @@sql_mode, sql_mode= '';
|
|
SET @old_sql_quote_show_create= @@sql_quote_show_create, sql_quote_show_create= OFF;
|
|
CREATE TABLE `a/b` (i INT);
|
|
ERROR 42000: Incorrect table name 'a/b'
|
|
SET sql_mode= '';
|
|
SET sql_quote_show_create= OFF;
|
|
CREATE TABLE t1 (i INT);
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE t1 (
|
|
i int(11) default NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE `table` (i INT);
|
|
SHOW CREATE TABLE `table`;
|
|
Table Create Table
|
|
table CREATE TABLE `table` (
|
|
i int(11) default NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE `table`;
|
|
SET sql_quote_show_create= @old_sql_quote_show_create;
|
|
SET sql_mode= @old_sql_mode;
|
|
select @@max_heap_table_size;
|
|
@@max_heap_table_size
|
|
1047552
|
|
CREATE TABLE t1 (
|
|
a int(11) default NULL,
|
|
KEY a USING BTREE (a)
|
|
) ENGINE=HEAP;
|
|
CREATE TABLE t2 (
|
|
b int(11) default NULL,
|
|
index(b)
|
|
) ENGINE=HEAP;
|
|
CREATE TABLE t3 (
|
|
a int(11) default NULL,
|
|
b int(11) default NULL,
|
|
KEY a USING BTREE (a),
|
|
index(b)
|
|
) ENGINE=HEAP;
|
|
insert into t1 values (1),(2);
|
|
insert into t2 values (1),(2);
|
|
insert into t3 values (1,1),(2,2);
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 MEMORY 10 Fixed 2 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t2 MEMORY 10 Fixed 2 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t3 MEMORY 10 Fixed 2 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
insert into t1 values (3),(4);
|
|
insert into t2 values (3),(4);
|
|
insert into t3 values (3,3),(4,4);
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 MEMORY 10 Fixed 4 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t2 MEMORY 10 Fixed 4 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t3 MEMORY 10 Fixed 4 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
insert into t1 values (5);
|
|
insert into t2 values (5);
|
|
insert into t3 values (5,5);
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 MEMORY 10 Fixed 5 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t2 MEMORY 10 Fixed 5 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t3 MEMORY 10 Fixed 5 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
delete from t1 where a=3;
|
|
delete from t2 where b=3;
|
|
delete from t3 where a=3;
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 MEMORY 10 Fixed 4 # # # # # NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t2 MEMORY 10 Fixed 4 # # # # # NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t3 MEMORY 10 Fixed 4 # # # # # NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
delete from t1;
|
|
delete from t2;
|
|
delete from t3;
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 MEMORY 10 Fixed 0 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t2 MEMORY 10 Fixed 0 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t3 MEMORY 10 Fixed 0 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
insert into t1 values (5);
|
|
insert into t2 values (5);
|
|
insert into t3 values (5,5);
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 MEMORY 10 Fixed 1 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t2 MEMORY 10 Fixed 1 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t3 MEMORY 10 Fixed 1 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
delete from t1 where a=5;
|
|
delete from t2 where b=5;
|
|
delete from t3 where a=5;
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 MEMORY 10 Fixed 0 # # # # # NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t2 MEMORY 10 Fixed 0 # # # # # NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
t3 MEMORY 10 Fixed 0 # # # # # NULL NULL NULL NULL latin1_swedish_ci NULL
|
|
drop table t1, t2, t3;
|
|
create database mysqltest;
|
|
show create database mysqltest;
|
|
Database Create Database
|
|
mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 */
|
|
create table mysqltest.t1(a int);
|
|
insert into mysqltest.t1 values(1);
|
|
grant select on `mysqltest`.* to mysqltest_1@localhost;
|
|
grant usage on `mysqltest`.* to mysqltest_2@localhost;
|
|
grant drop on `mysqltest`.* to mysqltest_3@localhost;
|
|
select * from t1;
|
|
a
|
|
1
|
|
show create database mysqltest;
|
|
Database Create Database
|
|
mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 */
|
|
drop table t1;
|
|
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
|
drop database mysqltest;
|
|
ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'mysqltest'
|
|
select * from mysqltest.t1;
|
|
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table 't1'
|
|
show create database mysqltest;
|
|
ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest'
|
|
drop table mysqltest.t1;
|
|
ERROR 42000: DROP command denied to user 'mysqltest_2'@'localhost' for table 't1'
|
|
drop database mysqltest;
|
|
ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest'
|
|
select * from mysqltest.t1;
|
|
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't1'
|
|
show create database mysqltest;
|
|
ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysqltest'
|
|
drop table mysqltest.t1;
|
|
drop database mysqltest;
|
|
set names binary;
|
|
delete from mysql.user
|
|
where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
|
delete from mysql.db
|
|
where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
|
flush privileges;
|
|
CREATE TABLE t1 (i int, KEY (i)) ENGINE=MEMORY;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`i` int(11) default NULL,
|
|
KEY `i` (`i`)
|
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (i int, KEY USING HASH (i)) ENGINE=MEMORY;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`i` int(11) default NULL,
|
|
KEY `i` USING HASH (`i`)
|
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (i int, KEY USING BTREE (i)) ENGINE=MEMORY;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`i` int(11) default NULL,
|
|
KEY `i` USING BTREE (`i`)
|
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (i int, KEY (i)) ENGINE=MyISAM;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`i` int(11) default NULL,
|
|
KEY `i` (`i`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (i int, KEY USING BTREE (i)) ENGINE=MyISAM;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`i` int(11) default NULL,
|
|
KEY `i` USING BTREE (`i`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (i int, KEY (i)) ENGINE=MyISAM;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`i` int(11) default NULL,
|
|
KEY `i` (`i`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
ALTER TABLE t1 ENGINE=MEMORY;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`i` int(11) default NULL,
|
|
KEY `i` (`i`)
|
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (i int, KEY USING BTREE (i)) ENGINE=MyISAM;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`i` int(11) default NULL,
|
|
KEY `i` USING BTREE (`i`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
ALTER TABLE t1 ENGINE=MEMORY;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`i` int(11) default NULL,
|
|
KEY `i` USING BTREE (`i`)
|
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1(
|
|
field1 text NOT NULL,
|
|
PRIMARY KEY(field1(1000))
|
|
);
|
|
show index from t1;
|
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
|
def STATISTICS TABLE_NAME Table 253 64 2 N 1 0 63
|
|
def STATISTICS NON_UNIQUE Non_unique 8 1 1 N 32769 0 63
|
|
def STATISTICS INDEX_NAME Key_name 253 64 7 N 1 0 63
|
|
def STATISTICS SEQ_IN_INDEX Seq_in_index 8 2 1 N 32769 0 63
|
|
def STATISTICS COLUMN_NAME Column_name 253 64 6 N 1 0 63
|
|
def STATISTICS COLLATION Collation 253 1 1 Y 0 0 63
|
|
def STATISTICS CARDINALITY Cardinality 8 21 1 Y 32768 0 63
|
|
def STATISTICS SUB_PART Sub_part 8 3 4 Y 32768 0 63
|
|
def STATISTICS PACKED Packed 253 10 0 Y 0 0 63
|
|
def STATISTICS NULLABLE Null 253 3 0 N 1 0 63
|
|
def STATISTICS INDEX_TYPE Index_type 253 16 5 N 1 0 63
|
|
def STATISTICS COMMENT Comment 253 16 0 Y 0 0 63
|
|
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
|
t1 0 PRIMARY 1 field1 A 0 1000 NULL BTREE
|
|
drop table t1;
|
|
create table t1 (
|
|
c1 int NOT NULL,
|
|
c2 int NOT NULL,
|
|
PRIMARY KEY USING HASH (c1),
|
|
INDEX USING BTREE(c2)
|
|
);
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`c1` int(11) NOT NULL,
|
|
`c2` int(11) NOT NULL,
|
|
PRIMARY KEY USING HASH (`c1`),
|
|
KEY `c2` USING BTREE (`c2`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
flush tables;
|
|
SHOW TABLE STATUS like 't1';
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 NULL NULL NULL NULL # # # # NULL NULL NULL NULL NULL NULL NULL NULL Incorrect information in file: './test/t1.frm'
|
|
show create table t1;
|
|
ERROR HY000: Incorrect information in file: './test/t1.frm'
|
|
drop table t1;
|
|
CREATE TABLE txt1(a int);
|
|
CREATE TABLE tyt2(a int);
|
|
CREATE TABLE urkunde(a int);
|
|
FLUSH TABLES;
|
|
SELECT 1 FROM mysql.db, mysql.proc, mysql.user, mysql.time_zone, mysql.time_zone_name, txt1, tyt2, urkunde LIMIT 0;
|
|
1
|
|
SHOW OPEN TABLES;
|
|
Database Table In_use Name_locked
|
|
mysql db 0 0
|
|
test urkunde 0 0
|
|
mysql time_zone 0 0
|
|
mysql user 0 0
|
|
test txt1 0 0
|
|
mysql proc 0 0
|
|
test tyt2 0 0
|
|
mysql time_zone_name 0 0
|
|
SHOW OPEN TABLES FROM mysql;
|
|
Database Table In_use Name_locked
|
|
mysql db 0 0
|
|
mysql time_zone 0 0
|
|
mysql user 0 0
|
|
mysql proc 0 0
|
|
mysql time_zone_name 0 0
|
|
SHOW OPEN TABLES FROM mysql LIKE 'u%';
|
|
Database Table In_use Name_locked
|
|
mysql user 0 0
|
|
SHOW OPEN TABLES LIKE 't%';
|
|
Database Table In_use Name_locked
|
|
mysql time_zone 0 0
|
|
test txt1 0 0
|
|
test tyt2 0 0
|
|
mysql time_zone_name 0 0
|
|
SHOW OPEN TABLES LIKE '%o%';
|
|
Database Table In_use Name_locked
|
|
mysql time_zone 0 0
|
|
mysql proc 0 0
|
|
mysql time_zone_name 0 0
|
|
FLUSH TABLES;
|
|
SHOW OPEN TABLES;
|
|
Database Table In_use Name_locked
|
|
DROP TABLE txt1;
|
|
DROP TABLE tyt2;
|
|
DROP TABLE urkunde;
|
|
SHOW TABLES FROM non_existing_database;
|
|
ERROR 42000: Unknown database 'non_existing_database'
|