mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
4b2aab14ba
Support of views wasn't implemented for the TRUNCATE statement. Now TRUNCATE on views has the same semantics as DELETE FROM view: mysql_truncate() checks whether the table is a view and falls back to delete if so. In order to initialize properly the LEX::updatable for a view st_lex::can_use_merged() now allows usage of merged views for the TRUNCATE statement.
82 lines
1.8 KiB
Text
82 lines
1.8 KiB
Text
drop table if exists t1;
|
|
create table t1 (a integer, b integer,c1 CHAR(10));
|
|
insert into t1 (a) values (1),(2);
|
|
truncate table t1;
|
|
select count(*) from t1;
|
|
count(*)
|
|
0
|
|
insert into t1 values(1,2,"test");
|
|
select count(*) from t1;
|
|
count(*)
|
|
1
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c1
|
|
drop table t1;
|
|
select count(*) from t1;
|
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
|
create temporary table t1 (n int);
|
|
insert into t1 values (1),(2),(3);
|
|
truncate table t1;
|
|
select * from t1;
|
|
n
|
|
drop table t1;
|
|
truncate non_existing_table;
|
|
ERROR 42S02: Table 'test.non_existing_table' doesn't exist
|
|
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;
|
|
a
|
|
1
|
|
2
|
|
delete from t1;
|
|
insert into t1 (a) values (NULL),(NULL);
|
|
SELECT * from t1;
|
|
a
|
|
3
|
|
4
|
|
drop table t1;
|
|
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;
|
|
a
|
|
1
|
|
2
|
|
delete from t1;
|
|
insert into t1 (a) values (NULL),(NULL);
|
|
SELECT * from t1;
|
|
a
|
|
3
|
|
4
|
|
drop table t1;
|
|
create table t1 (s1 int);
|
|
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
|
create view v1 as select * from t1;
|
|
truncate table v1;
|
|
select count(*) from t1;
|
|
count(*)
|
|
0
|
|
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
|
create view v2 as select * from t1 where s1 > 3;
|
|
truncate table v2;
|
|
select * from t1;
|
|
s1
|
|
1
|
|
2
|
|
3
|
|
select * from v2;
|
|
s1
|
|
delete from t1;
|
|
create table t2 (s1 int, s2 int);
|
|
create view v3 as select a.s1, b.s2 from t1 a join t2 b on a.s1 = b.s1 where a.s1 > 3;
|
|
truncate table v3;
|
|
ERROR HY000: Can not delete from join view 'test.v3'
|
|
create view v4 as select * from t1 limit 1,1;
|
|
truncate table v4;
|
|
ERROR HY000: The target table v4 of the TRUNCATE is not updatable
|
|
drop view v1, v2, v3, v4;
|
|
drop table t1, t2;
|