Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
562b4d96
Commit
562b4d96
authored
Apr 17, 2007
by
serg@janus.mylan
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-5.0-build
into janus.mylan:/usr/home/serg/Abk/mysql-5.0
parents
174330e3
d5b1c3ae
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
14 additions
and
53 deletions
+14
-53
mysql-test/r/truncate.result
mysql-test/r/truncate.result
+3
-23
mysql-test/t/truncate.test
mysql-test/t/truncate.test
+8
-23
sql/sql_delete.cc
sql/sql_delete.cc
+3
-6
sql/sql_lex.cc
sql/sql_lex.cc
+0
-1
No files found.
mysql-test/r/truncate.result
View file @
562b4d96
...
@@ -57,26 +57,6 @@ create table t1 (s1 int);
...
@@ -57,26 +57,6 @@ create table t1 (s1 int);
insert into t1 (s1) values (1), (2), (3), (4), (5);
insert into t1 (s1) values (1), (2), (3), (4), (5);
create view v1 as select * from t1;
create view v1 as select * from t1;
truncate table v1;
truncate table v1;
select count(*) from t1;
ERROR 42S02: Table 'test.v1' doesn't exist
count(*)
drop view v1;
0
drop table t1;
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;
mysql-test/t/truncate.test
View file @
562b4d96
...
@@ -54,33 +54,18 @@ drop table t1;
...
@@ -54,33 +54,18 @@ drop table t1;
# End of 4.1 tests
# End of 4.1 tests
# Test for Bug#5507 "TRUNCATE should work with views"
# Test for Bug#5507 "TRUNCATE should work with views"
#
# when it'll be fixed, the error should become 1347
# (test.v1' is not BASE TABLE)
#
create
table
t1
(
s1
int
);
create
table
t1
(
s1
int
);
insert
into
t1
(
s1
)
values
(
1
),
(
2
),
(
3
),
(
4
),
(
5
);
insert
into
t1
(
s1
)
values
(
1
),
(
2
),
(
3
),
(
4
),
(
5
);
create
view
v1
as
select
*
from
t1
;
create
view
v1
as
select
*
from
t1
;
--
error
1146
truncate
table
v1
;
truncate
table
v1
;
select
count
(
*
)
from
t1
;
drop
view
v1
;
drop
table
t1
;
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
;
select
*
from
v2
;
delete
from
t1
;
# The following should fail
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
;
--
error
1395
truncate
table
v3
;
# The following should fail
create
view
v4
as
select
*
from
t1
limit
1
,
1
;
--
error
1288
truncate
table
v4
;
drop
view
v1
,
v2
,
v3
,
v4
;
drop
table
t1
,
t2
;
# End of 5.0 tests
# End of 5.0 tests
sql/sql_delete.cc
View file @
562b4d96
...
@@ -369,8 +369,6 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds)
...
@@ -369,8 +369,6 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds)
{
{
Item
*
fake_conds
=
0
;
Item
*
fake_conds
=
0
;
SELECT_LEX
*
select_lex
=
&
thd
->
lex
->
select_lex
;
SELECT_LEX
*
select_lex
=
&
thd
->
lex
->
select_lex
;
const
char
*
operation
=
thd
->
lex
->
sql_command
==
SQLCOM_TRUNCATE
?
"TRUNCATE"
:
"DELETE"
;
DBUG_ENTER
(
"mysql_prepare_delete"
);
DBUG_ENTER
(
"mysql_prepare_delete"
);
List
<
Item
>
all_fields
;
List
<
Item
>
all_fields
;
...
@@ -385,14 +383,14 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds)
...
@@ -385,14 +383,14 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds)
DBUG_RETURN
(
TRUE
);
DBUG_RETURN
(
TRUE
);
if
(
!
table_list
->
updatable
||
check_key_in_view
(
thd
,
table_list
))
if
(
!
table_list
->
updatable
||
check_key_in_view
(
thd
,
table_list
))
{
{
my_error
(
ER_NON_UPDATABLE_TABLE
,
MYF
(
0
),
table_list
->
alias
,
operation
);
my_error
(
ER_NON_UPDATABLE_TABLE
,
MYF
(
0
),
table_list
->
alias
,
"DELETE"
);
DBUG_RETURN
(
TRUE
);
DBUG_RETURN
(
TRUE
);
}
}
{
{
TABLE_LIST
*
duplicate
;
TABLE_LIST
*
duplicate
;
if
((
duplicate
=
unique_table
(
thd
,
table_list
,
table_list
->
next_global
,
0
)))
if
((
duplicate
=
unique_table
(
thd
,
table_list
,
table_list
->
next_global
,
0
)))
{
{
update_non_unique_table_error
(
table_list
,
operation
,
duplicate
);
update_non_unique_table_error
(
table_list
,
"DELETE"
,
duplicate
);
DBUG_RETURN
(
TRUE
);
DBUG_RETURN
(
TRUE
);
}
}
}
}
...
@@ -897,8 +895,7 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok)
...
@@ -897,8 +895,7 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok)
if
(
!
dont_send_ok
)
if
(
!
dont_send_ok
)
{
{
db_type
table_type
;
db_type
table_type
;
if
(
mysql_frm_type
(
thd
,
path
,
&
table_type
)
==
FRMTYPE_VIEW
)
mysql_frm_type
(
thd
,
path
,
&
table_type
);
goto
trunc_by_del
;
if
(
table_type
==
DB_TYPE_UNKNOWN
)
if
(
table_type
==
DB_TYPE_UNKNOWN
)
{
{
my_error
(
ER_NO_SUCH_TABLE
,
MYF
(
0
),
my_error
(
ER_NO_SUCH_TABLE
,
MYF
(
0
),
...
...
sql/sql_lex.cc
View file @
562b4d96
...
@@ -1834,7 +1834,6 @@ bool st_lex::can_use_merged()
...
@@ -1834,7 +1834,6 @@ bool st_lex::can_use_merged()
case
SQLCOM_UPDATE_MULTI
:
case
SQLCOM_UPDATE_MULTI
:
case
SQLCOM_DELETE
:
case
SQLCOM_DELETE
:
case
SQLCOM_DELETE_MULTI
:
case
SQLCOM_DELETE_MULTI
:
case
SQLCOM_TRUNCATE
:
case
SQLCOM_INSERT
:
case
SQLCOM_INSERT
:
case
SQLCOM_INSERT_SELECT
:
case
SQLCOM_INSERT_SELECT
:
case
SQLCOM_REPLACE
:
case
SQLCOM_REPLACE
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment