mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Create 'main' test directory and move 't' and 'r' there
This commit is contained in:
165
mysql-test/main/truncate.test
Normal file
165
mysql-test/main/truncate.test
Normal file
@ -0,0 +1,165 @@
|
||||
#
|
||||
# Test of truncate
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (a integer, b integer,c1 CHAR(10));
|
||||
insert into t1 (a) values (1),(2);
|
||||
truncate table t1;
|
||||
select count(*) from t1;
|
||||
insert into t1 values(1,2,"test");
|
||||
select count(*) from t1;
|
||||
delete from t1;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
# The following should fail
|
||||
--error 1146
|
||||
select count(*) from t1;
|
||||
create temporary table t1 (n int);
|
||||
insert into t1 values (1),(2),(3);
|
||||
truncate table t1;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
--error 1146
|
||||
truncate non_existing_table;
|
||||
|
||||
#
|
||||
# test autoincrement with TRUNCATE; verifying difference with DELETE
|
||||
#
|
||||
|
||||
create table t1 (a integer auto_increment primary key);
|
||||
insert into t1 (a) values (NULL),(NULL);
|
||||
truncate table t1;
|
||||
insert into t1 (a) values (NULL),(NULL);
|
||||
SELECT * from t1;
|
||||
delete from t1;
|
||||
insert into t1 (a) values (NULL),(NULL);
|
||||
SELECT * from t1;
|
||||
drop table t1;
|
||||
|
||||
# Verifying that temp tables are handled the same way
|
||||
|
||||
create temporary table t1 (a integer auto_increment primary key);
|
||||
insert into t1 (a) values (NULL),(NULL);
|
||||
truncate table t1;
|
||||
insert into t1 (a) values (NULL),(NULL);
|
||||
SELECT * from t1;
|
||||
delete from t1;
|
||||
insert into t1 (a) values (NULL),(NULL);
|
||||
SELECT * from t1;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
# Test for Bug#5507 "TRUNCATE should work with views"
|
||||
#
|
||||
# when it'll be fixed, the error should become 1347
|
||||
# (test.v1' is not of type 'BASE TABLE')
|
||||
#
|
||||
|
||||
create table t1 (s1 int);
|
||||
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
||||
create view v1 as select * from t1;
|
||||
--error 1146
|
||||
truncate table v1;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug#20667 - Truncate table fails for a write locked table
|
||||
--echo #
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
LOCK TABLE t1 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SELECT * FROM t1;
|
||||
TRUNCATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
LOCK TABLE t1 READ;
|
||||
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
|
||||
TRUNCATE TABLE t1;
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
LOCK TABLE t2 WRITE;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
TRUNCATE TABLE t1;
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
CREATE VIEW v1 AS SELECT t1.c1 FROM t1,t2 WHERE t1.c1 = t2.c1;
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
INSERT INTO t2 VALUES (1), (3), (4);
|
||||
SELECT * FROM v1;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
TRUNCATE v1;
|
||||
SELECT * FROM v1;
|
||||
#
|
||||
LOCK TABLE t1 WRITE;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
SELECT * FROM v1;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
TRUNCATE v1;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
SELECT * FROM v1;
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
LOCK TABLE t1 WRITE, t2 WRITE;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
SELECT * FROM v1;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
TRUNCATE v1;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
SELECT * FROM v1;
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
LOCK TABLE v1 WRITE;
|
||||
SELECT * FROM v1;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
TRUNCATE v1;
|
||||
SELECT * FROM v1;
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
LOCK TABLE t1 WRITE, t2 WRITE, v1 WRITE;
|
||||
SELECT * FROM v1;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
TRUNCATE v1;
|
||||
SELECT * FROM v1;
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
CREATE PROCEDURE p1() SET @a = 5;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
TRUNCATE p1;
|
||||
SHOW CREATE PROCEDURE p1;
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#46452 Crash in MDL, HANDLER OPEN + TRUNCATE TABLE
|
||||
--echo #
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 AS SELECT 1 AS f1;
|
||||
|
||||
HANDLER t1 OPEN;
|
||||
--echo # Here comes the crash.
|
||||
TRUNCATE t1;
|
||||
|
||||
--echo # Currently TRUNCATE, just like other DDL, implicitly closes
|
||||
--echo # open HANDLER table.
|
||||
--error ER_UNKNOWN_TABLE
|
||||
HANDLER t1 READ FIRST;
|
||||
|
||||
# Cleanup
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # End of 6.0 tests
|
||||
|
Reference in New Issue
Block a user