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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
e84fd6df
Commit
e84fd6df
authored
Aug 21, 2006
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into mockturtle.local:/home/dlenev/src/mysql-5.0-bg21216-2
parents
cd2c9eec
8daf4e83
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
59 additions
and
2 deletions
+59
-2
mysql-test/r/drop.result
mysql-test/r/drop.result
+13
-0
mysql-test/t/drop.test
mysql-test/t/drop.test
+41
-0
sql/lock.cc
sql/lock.cc
+5
-2
No files found.
mysql-test/r/drop.result
View file @
e84fd6df
...
@@ -72,3 +72,16 @@ show tables;
...
@@ -72,3 +72,16 @@ show tables;
Tables_in_test
Tables_in_test
t1
t1
drop table t1;
drop table t1;
drop database if exists mysqltest;
drop table if exists t1;
create table t1 (i int);
lock tables t1 read;
create database mysqltest;
drop table t1;
show open tables;
drop database mysqltest;
select 1;
1
1
unlock tables;
End of 5.0 tests
mysql-test/t/drop.test
View file @
e84fd6df
...
@@ -81,3 +81,44 @@ show tables;
...
@@ -81,3 +81,44 @@ show tables;
drop
table
t1
;
drop
table
t1
;
# End of 4.1 tests
# End of 4.1 tests
#
# Test for bug#21216 "Simultaneous DROP TABLE and SHOW OPEN TABLES causes
# server to crash". Crash (caused by failed assertion in 5.0 or by null
# pointer dereference in 5.1) happened when one ran SHOW OPEN TABLES
# while concurrently doing DROP TABLE (or RENAME TABLE, CREATE TABLE LIKE
# or any other command that takes name-lock) in other connection.
#
# Also includes test for similar bug#12212 "Crash that happens during
# removing of database name from cache" reappeared in 5.1 as bug#19403
# In its case crash happened when one concurrently executed DROP DATABASE
# and one of name-locking command.
#
--
disable_warnings
drop
database
if
exists
mysqltest
;
drop
table
if
exists
t1
;
--
enable_warnings
create
table
t1
(
i
int
);
lock
tables
t1
read
;
create
database
mysqltest
;
connect
(
addconroot1
,
localhost
,
root
,,);
--
send
drop
table
t1
connect
(
addconroot2
,
localhost
,
root
,,);
# Server should not crash in any of the following statements
--
disable_result_log
show
open
tables
;
--
enable_result_log
--
send
drop
database
mysqltest
connection
default
;
select
1
;
unlock
tables
;
connection
addconroot1
;
--
reap
connection
addconroot2
;
--
reap
disconnect
addconroot1
;
disconnect
addconroot2
;
connection
default
;
--
echo
End
of
5.0
tests
sql/lock.cc
View file @
e84fd6df
...
@@ -854,6 +854,7 @@ int lock_table_name(THD *thd, TABLE_LIST *table_list)
...
@@ -854,6 +854,7 @@ int lock_table_name(THD *thd, TABLE_LIST *table_list)
TABLE
*
table
;
TABLE
*
table
;
char
key
[
MAX_DBKEY_LENGTH
];
char
key
[
MAX_DBKEY_LENGTH
];
char
*
db
=
table_list
->
db
;
char
*
db
=
table_list
->
db
;
int
table_in_key_offset
;
uint
key_length
;
uint
key_length
;
HASH_SEARCH_STATE
state
;
HASH_SEARCH_STATE
state
;
DBUG_ENTER
(
"lock_table_name"
);
DBUG_ENTER
(
"lock_table_name"
);
...
@@ -861,8 +862,9 @@ int lock_table_name(THD *thd, TABLE_LIST *table_list)
...
@@ -861,8 +862,9 @@ int lock_table_name(THD *thd, TABLE_LIST *table_list)
safe_mutex_assert_owner
(
&
LOCK_open
);
safe_mutex_assert_owner
(
&
LOCK_open
);
key_length
=
(
uint
)
(
strmov
(
strmov
(
key
,
db
)
+
1
,
table_list
->
table_name
)
table_in_key_offset
=
strmov
(
key
,
db
)
-
key
+
1
;
-
key
)
+
1
;
key_length
=
(
uint
)(
strmov
(
key
+
table_in_key_offset
,
table_list
->
table_name
)
-
key
)
+
1
;
/* Only insert the table if we haven't insert it already */
/* Only insert the table if we haven't insert it already */
...
@@ -883,6 +885,7 @@ int lock_table_name(THD *thd, TABLE_LIST *table_list)
...
@@ -883,6 +885,7 @@ int lock_table_name(THD *thd, TABLE_LIST *table_list)
table
->
s
=
&
table
->
share_not_to_be_used
;
table
->
s
=
&
table
->
share_not_to_be_used
;
memcpy
((
table
->
s
->
table_cache_key
=
(
char
*
)
(
table
+
1
)),
key
,
key_length
);
memcpy
((
table
->
s
->
table_cache_key
=
(
char
*
)
(
table
+
1
)),
key
,
key_length
);
table
->
s
->
db
=
table
->
s
->
table_cache_key
;
table
->
s
->
db
=
table
->
s
->
table_cache_key
;
table
->
s
->
table_name
=
table
->
s
->
table_cache_key
+
table_in_key_offset
;
table
->
s
->
key_length
=
key_length
;
table
->
s
->
key_length
=
key_length
;
table
->
in_use
=
thd
;
table
->
in_use
=
thd
;
table
->
locked_by_name
=
1
;
table
->
locked_by_name
=
1
;
...
...
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