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
d0dea5e4
Commit
d0dea5e4
authored
Aug 26, 2010
by
Marc Alff
Browse files
Options
Browse Files
Download
Plain Diff
local merge
parents
e965de76
7afb648f
Changes
25
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
232 additions
and
142 deletions
+232
-142
mysql-test/include/mysqlhotcopy.inc
mysql-test/include/mysqlhotcopy.inc
+1
-1
mysql-test/mysql-test-run.pl
mysql-test/mysql-test-run.pl
+6
-4
mysql-test/r/ctype_utf32.result
mysql-test/r/ctype_utf32.result
+13
-0
mysql-test/r/delayed.result
mysql-test/r/delayed.result
+2
-0
mysql-test/r/func_group.result
mysql-test/r/func_group.result
+11
-1
mysql-test/r/locale.result
mysql-test/r/locale.result
+1
-1
mysql-test/r/mysql.result
mysql-test/r/mysql.result
+0
-3
mysql-test/r/mysql_not_windows.result
mysql-test/r/mysql_not_windows.result
+5
-0
mysql-test/r/mysqlbinlog_row.result
mysql-test/r/mysqlbinlog_row.result
+69
-69
mysql-test/suite/ndb/r/ndb_binlog_ddl_multi.result
mysql-test/suite/ndb/r/ndb_binlog_ddl_multi.result
+1
-1
mysql-test/suite/ndb/r/ndb_binlog_ignore_db.result
mysql-test/suite/ndb/r/ndb_binlog_ignore_db.result
+1
-1
mysql-test/suite/ndb/r/ndb_binlog_log_bin.result
mysql-test/suite/ndb/r/ndb_binlog_log_bin.result
+2
-2
mysql-test/suite/ndb/r/ndb_binlog_multi.result
mysql-test/suite/ndb/r/ndb_binlog_multi.result
+2
-2
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
+3
-3
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
+3
-3
mysql-test/t/ctype_utf32.test
mysql-test/t/ctype_utf32.test
+11
-0
mysql-test/t/delayed.test
mysql-test/t/delayed.test
+5
-0
mysql-test/t/func_group.test
mysql-test/t/func_group.test
+10
-1
mysql-test/t/mysql.test
mysql-test/t/mysql.test
+0
-6
mysql-test/t/mysql_not_windows.test
mysql-test/t/mysql_not_windows.test
+15
-0
sql/item.cc
sql/item.cc
+7
-2
sql/log_event.cc
sql/log_event.cc
+2
-1
sql/sql_insert.cc
sql/sql_insert.cc
+55
-33
sql/sql_table.cc
sql/sql_table.cc
+2
-2
storage/myisam/mi_key.c
storage/myisam/mi_key.c
+5
-6
No files found.
mysql-test/include/mysqlhotcopy.inc
View file @
d0dea5e4
...
...
@@ -5,7 +5,7 @@
--
source
include
/
not_windows
.
inc
--
source
include
/
not_embedded
.
inc
if
(
$MYSQLHOTCOPY
)
if
(
!
$MYSQLHOTCOPY
)
{
die
due
to
missing
mysqlhotcopy
tool
;
}
...
...
mysql-test/mysql-test-run.pl
View file @
d0dea5e4
...
...
@@ -2155,10 +2155,12 @@ sub environment_setup {
# mysqlhotcopy
# ----------------------------------------------------
my
$mysqlhotcopy
=
mtr_pl_maybe_exists
("
$bindir
/scripts/mysqlhotcopy
");
# Since mysqltest interprets the real path as "false" in an if,
# use 1 ("true") to indicate "not exists" so it can be tested for
$ENV
{'
MYSQLHOTCOPY
'}
=
$mysqlhotcopy
||
1
;
mtr_pl_maybe_exists
("
$bindir
/scripts/mysqlhotcopy
")
||
mtr_pl_maybe_exists
("
$path_client_bindir
/mysqlhotcopy
");
if
(
$mysqlhotcopy
)
{
$ENV
{'
MYSQLHOTCOPY
'}
=
$mysqlhotcopy
;
}
# ----------------------------------------------------
# perror
...
...
mysql-test/r/ctype_utf32.result
View file @
d0dea5e4
...
...
@@ -1114,5 +1114,18 @@ format(123,2,'no_NO')
123,00
DROP TABLE t1;
#
# Bug#42511 mysqld: ctype-ucs2.c:2044: my_strnncollsp_utf32: Assertion (tlen % 4) == 0' faied
#
CREATE TABLE t1 (
b char(250) CHARACTER SET utf32,
key (b)
) ENGINE=MYISAM;
INSERT INTO t1 VALUES ('d'),('f');
SELECT * FROM t1 WHERE b BETWEEN 'a' AND 'z';
b
d
f
DROP TABLE t1;
#
# End of 5.5 tests
#
mysql-test/r/delayed.result
View file @
d0dea5e4
...
...
@@ -348,6 +348,8 @@ DROP TABLE t1;
#
# Bug#54332 Deadlock with two connections doing LOCK TABLE+INSERT DELAYED
#
# This test is not supposed to work under --ps-protocol since
# INSERT DELAYED doesn't work under LOCK TABLES with this protocol.
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT);
...
...
mysql-test/r/func_group.result
View file @
d0dea5e4
...
...
@@ -1715,7 +1715,7 @@ drop table t1;
#
End of 5.1 tests
#
# Bug#55648: Server crash on MI
X
/MAX on maximum time value
# Bug#55648: Server crash on MI
N
/MAX on maximum time value
#
CREATE TABLE t1(c1 TIME NOT NULL);
INSERT INTO t1 VALUES('837:59:59');
...
...
@@ -1725,3 +1725,13 @@ MAX(c1)
838:59:59
DROP TABLE t1;
# End of the bug#55648
#
# Bug#56120: Failed assertion on MIN/MAX on negative time value
#
CREATE TABLE t1(c1 TIME NOT NULL);
INSERT INTO t1 VALUES('-00:00:01');
SELECT MAX(c1),MIN(c1) FROM t1;
MAX(c1) MIN(c1)
-00:00:01 -00:00:01
DROP TABLE t1;
# End of the bug#56120
mysql-test/r/locale.result
View file @
d0dea5e4
...
...
@@ -44,7 +44,7 @@ a abmon mon
2006-12-01 Δεκ Δεκέμβριος
SELECT format(123456.789, 3, 'el_GR');
format(123456.789, 3, 'el_GR')
123456
.
789
123456
,
789
DROP TABLE t1;
#
# Bug#46633 Obsolete Serbian locale name
...
...
mysql-test/r/mysql.result
View file @
d0dea5e4
...
...
@@ -432,8 +432,5 @@ Bug #47147: mysql client option --skip-column-names does not apply to vertical o
*************************** 1. row ***************************
1
Bug #54466 client 5.5 built from source lacks "pager" support
a
1
End of tests
mysql-test/r/mysql_not_windows.result
0 → 100644
View file @
d0dea5e4
Bug #54466 client 5.5 built from source lacks "pager" support
a
1
End of tests
mysql-test/r/mysqlbinlog_row.result
View file @
d0dea5e4
This diff is collapsed.
Click to expand it.
mysql-test/suite/ndb/r/ndb_binlog_ddl_multi.result
View file @
d0dea5e4
...
...
@@ -193,4 +193,4 @@ mysqld-bin.000001 # Table_map 2 # table_id: # (mysql.ndb_apply_status)
mysqld-bin.000001 # Write_rows 2 # table_id: #
mysqld-bin.000001 # Write_rows 2 # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query 2 # COMMIT
mysqld-bin.000001 # Query 2 # use `test`;
drop table t2
mysqld-bin.000001 # Query 2 # use `test`;
DROP TABLE `t2` /* generated by server */
mysql-test/suite/ndb/r/ndb_binlog_ignore_db.result
View file @
d0dea5e4
...
...
@@ -7,5 +7,5 @@ create table t1 (a int primary key, b int) engine=ndb;
insert into t1 values (1, 1);
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
mysqld-bin.000001 # Query 1 # use `test`;
drop table if exists t1
mysqld-bin.000001 # Query 1 # use `test`;
DROP TABLE IF EXISTS `t1` /* generated by server */
drop database mysqltest;
mysql-test/suite/ndb/r/ndb_binlog_log_bin.result
View file @
d0dea5e4
...
...
@@ -47,8 +47,8 @@ mysqld-bin.000001 # Table_map 1 # table_id: # (mysql.ndb_apply_status)
mysqld-bin.000001 # Write_rows 1 # table_id: #
mysqld-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query 1 # COMMIT
mysqld-bin.000001 # Query 1 # use `mysqltest`;
drop table t1
mysqld-bin.000001 # Query 1 # use `mysqltest`;
drop table t2
mysqld-bin.000001 # Query 1 # use `mysqltest`;
DROP TABLE `t1` /* generated by server */
mysqld-bin.000001 # Query 1 # use `mysqltest`;
DROP TABLE `t2` /* generated by server */
mysqld-bin.000001 # Query 1 # use `mysqltest`; create table t1 (d int key, e int) engine=ndb
mysqld-bin.000001 # Query 1 # use `mysqltest`; create table t2 (d int key, e int) engine=ndb
mysqld-bin.000001 # Query 1 # BEGIN
...
...
mysql-test/suite/ndb/r/ndb_binlog_multi.result
View file @
d0dea5e4
...
...
@@ -37,7 +37,7 @@ mysqld-bin.000001 # Table_map 1 # table_id: # (mysql.ndb_apply_status)
mysqld-bin.000001 # Write_rows 1 # table_id: #
mysqld-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query 1 # COMMIT
mysqld-bin.000001 # Query 1 # use `test`; DROP TABLE
t2
mysqld-bin.000001 # Query 1 # use `test`; DROP TABLE
`t2` /* generated by server */
SELECT inserts,updates,deletes,schemaops FROM
mysql.ndb_binlog_index WHERE epoch=<the_epoch>;
inserts updates deletes schemaops
...
...
@@ -73,7 +73,7 @@ mysqld-bin.000001 # Table_map 2 # table_id: # (mysql.ndb_apply_status)
mysqld-bin.000001 # Write_rows 2 # table_id: #
mysqld-bin.000001 # Write_rows 2 # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query 2 # COMMIT
mysqld-bin.000001 # Query 2 # use `test`;
drop table t1
mysqld-bin.000001 # Query 2 # use `test`;
DROP TABLE `t1` /* generated by server */
SELECT inserts,updates,deletes,schemaops FROM
mysql.ndb_binlog_index WHERE epoch > <the_epoch> AND epoch <= <the_epoch2>;
inserts updates deletes schemaops
...
...
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
View file @
d0dea5e4
...
...
@@ -25,7 +25,7 @@ master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`;
drop table t1
master-bin.000001 # Query # # use `test`;
DROP TABLE `t1` /* generated by server */
master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=NDB
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
...
...
@@ -204,7 +204,7 @@ master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`;
drop table t1
master-bin.000001 # Query # # use `test`;
DROP TABLE `t1` /* generated by server */
master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=NDB
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
...
...
@@ -240,7 +240,7 @@ slave-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
slave-bin.000001 # Write_rows # # table_id: #
slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
slave-bin.000001 # Query # # COMMIT
slave-bin.000001 # Query # # use `test`;
drop table t1
slave-bin.000001 # Query # # use `test`;
DROP TABLE `t1` /* generated by server */
slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=NDB
slave-bin.000001 # Query # # BEGIN
slave-bin.000001 # Table_map # # table_id: # (test.t1)
...
...
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
View file @
d0dea5e4
...
...
@@ -37,7 +37,7 @@ master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
master-bin.000001 # Query # # use `test`; DROP TABLE
t1
master-bin.000001 # Query # # use `test`; DROP TABLE
`t1` /* generated by server */
**** On Master ****
CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB;
INSERT INTO t1 VALUES (1,1), (2,2);
...
...
@@ -72,7 +72,7 @@ master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
master-bin.000001 # Query # # use `test`; DROP TABLE
t1
master-bin.000001 # Query # # use `test`; DROP TABLE
`t1` /* generated by server */
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
...
...
@@ -86,4 +86,4 @@ master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; DROP TABLE
t1
master-bin.000001 # Query # # use `test`; DROP TABLE
`t1` /* generated by server */
mysql-test/t/ctype_utf32.test
View file @
d0dea5e4
...
...
@@ -818,6 +818,17 @@ SHOW CREATE TABLE t1;
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# Bug#42511 mysqld: ctype-ucs2.c:2044: my_strnncollsp_utf32: Assertion (tlen % 4) == 0' faied
--
echo
#
CREATE
TABLE
t1
(
b
char
(
250
)
CHARACTER
SET
utf32
,
key
(
b
)
)
ENGINE
=
MYISAM
;
INSERT
INTO
t1
VALUES
(
'd'
),(
'f'
);
SELECT
*
FROM
t1
WHERE
b
BETWEEN
'a'
AND
'z'
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# End of 5.5 tests
--
echo
#
mysql-test/t/delayed.test
View file @
d0dea5e4
...
...
@@ -394,6 +394,10 @@ DROP TABLE t1;
--
echo
# Bug#54332 Deadlock with two connections doing LOCK TABLE+INSERT DELAYED
--
echo
#
--
echo
# This test is not supposed to work under --ps-protocol since
--
echo
# INSERT DELAYED doesn't work under LOCK TABLES with this protocol.
--
disable_ps_protocol
--
disable_warnings
DROP
TABLE
IF
EXISTS
t1
,
t2
;
--
enable_warnings
...
...
@@ -547,3 +551,4 @@ disconnect con1;
--
echo
# Connection default
connection
default
;
DROP
TABLE
t1
,
t2
,
t3
;
--
enable_ps_protocol
mysql-test/t/func_group.test
View file @
d0dea5e4
...
...
@@ -1086,7 +1086,7 @@ drop table t1;
--
echo
End
of
5.1
tests
--
echo
#
--
echo
# Bug#55648: Server crash on MI
X
/MAX on maximum time value
--
echo
# Bug#55648: Server crash on MI
N
/MAX on maximum time value
--
echo
#
CREATE
TABLE
t1
(
c1
TIME
NOT
NULL
);
INSERT
INTO
t1
VALUES
(
'837:59:59'
);
...
...
@@ -1095,3 +1095,12 @@ SELECT MAX(c1) FROM t1;
DROP
TABLE
t1
;
--
echo
# End of the bug#55648
--
echo
#
--
echo
# Bug#56120: Failed assertion on MIN/MAX on negative time value
--
echo
#
CREATE
TABLE
t1
(
c1
TIME
NOT
NULL
);
INSERT
INTO
t1
VALUES
(
'-00:00:01'
);
SELECT
MAX
(
c1
),
MIN
(
c1
)
FROM
t1
;
DROP
TABLE
t1
;
--
echo
# End of the bug#56120
mysql-test/t/mysql.test
View file @
d0dea5e4
...
...
@@ -425,11 +425,5 @@ drop table t1;
--
echo
--
exec
$MYSQL
--
skip
-
column
-
names
--
vertical
test
-
e
"select 1 as a"
#
# Bug #54466 client 5.5 built from source lacks "pager" support
#
--
echo
Bug
#54466 client 5.5 built from source lacks "pager" support
--
exec
$MYSQL
--
pager
test
-
e
"select 1 as a"
--
echo
--
echo
End
of
tests
mysql-test/t/mysql_not_windows.test
0 → 100644
View file @
d0dea5e4
--
source
include
/
not_windows
.
inc
# This test should work in embedded server after we fix mysqltest
--
source
include
/
not_embedded
.
inc
#
# Testing the MySQL command line client(mysql)
#
#
# Bug #54466 client 5.5 built from source lacks "pager" support
#
--
echo
Bug
#54466 client 5.5 built from source lacks "pager" support
--
exec
$MYSQL
--
pager
test
-
e
"select 1 as a"
--
echo
--
echo
End
of
tests
sql/item.cc
View file @
d0dea5e4
...
...
@@ -7510,9 +7510,14 @@ String *Item_cache_datetime::val_str(String *str)
return
NULL
;
if
(
cached_field_type
==
MYSQL_TYPE_TIME
)
{
ulonglong
time
=
int_value
;
DBUG_ASSERT
(
time
<=
TIME_MAX_VALUE
);
longlong
time
=
int_value
;
set_zero_time
(
&
ltime
,
MYSQL_TIMESTAMP_TIME
);
if
(
time
<
0
)
{
time
=
-
time
;
ltime
.
neg
=
TRUE
;
}
DBUG_ASSERT
(
time
<=
TIME_MAX_VALUE
);
ltime
.
second
=
time
%
100
;
time
/=
100
;
ltime
.
minute
=
time
%
100
;
...
...
sql/log_event.cc
View file @
d0dea5e4
...
...
@@ -674,7 +674,8 @@ const char* Log_event::get_type_str()
#ifndef MYSQL_CLIENT
Log_event
::
Log_event
(
THD
*
thd_arg
,
uint16
flags_arg
,
bool
using_trans
)
:
log_pos
(
0
),
temp_buf
(
0
),
exec_time
(
0
),
flags
(
flags_arg
),
thd
(
thd_arg
)
:
log_pos
(
0
),
temp_buf
(
0
),
exec_time
(
0
),
flags
(
flags_arg
),
cache_type
(
Log_event
::
EVENT_INVALID_CACHE
),
thd
(
thd_arg
)
{
server_id
=
thd
->
server_id
;
when
=
thd
->
start_time
;
...
...
sql/sql_insert.cc
View file @
d0dea5e4
...
...
@@ -563,15 +563,6 @@ bool open_and_lock_for_insert_delayed(THD *thd, TABLE_LIST *table_list)
*/
DBUG_RETURN
(
TRUE
);
/*
If a lock was acquired above, we should release it after delayed_get_table()
has cloned the ticket for the handler thread. Note that acquire_lock() can
succeed because of a lock already held by the connection. In this case we
should not release it here.
*/
MDL_ticket
*
table_ticket
=
mdl_savepoint
==
thd
->
mdl_context
.
mdl_savepoint
()
?
NULL:
thd
->
mdl_context
.
mdl_savepoint
();
bool
error
=
FALSE
;
if
(
delayed_get_table
(
thd
,
table_list
))
error
=
TRUE
;
...
...
@@ -597,12 +588,18 @@ bool open_and_lock_for_insert_delayed(THD *thd, TABLE_LIST *table_list)
}
}
if
(
table_ticket
)
thd
->
mdl_context
.
release_lock
(
table_ticket
);
/*
Clone_ticket() in delayed_get_table() causes TABLE_LIST::MDL_REQUEST::ticket
to be overwritten with the cloned ticket. Reset the ticket here in case
we end up having to use normal insert.
If a lock was acquired above, we should release it after
handle_delayed_insert() has cloned the ticket. Note that acquire_lock() can
succeed because the connection already has the lock. In this case the ticket
will be before the mdl_savepoint and we should not release it here.
*/
if
(
!
thd
->
mdl_context
.
has_lock
(
mdl_savepoint
,
table_list
->
mdl_request
.
ticket
))
thd
->
mdl_context
.
release_lock
(
table_list
->
mdl_request
.
ticket
);
/*
Reset the ticket in case we end up having to use normal insert and
therefore will reopen the table and reacquire the metadata lock.
*/
table_list
->
mdl_request
.
ticket
=
NULL
;
...
...
@@ -1839,14 +1836,25 @@ class Delayed_insert :public ilink {
mysql_cond_t
cond
,
cond_client
;
volatile
uint
tables_in_use
,
stacked_inserts
;
volatile
bool
status
;
/*
When the handler thread starts, it clones a metadata lock ticket
for the table to be inserted. This is done to allow the deadlock
detector to detect deadlocks resulting from this lock.
Before this is done, the connection thread cannot safely exit
without causing problems for clone_ticket().
Once handler_thread_initialized has been set, it is safe for the
connection thread to exit.
Access to handler_thread_initialized is protected by di->mutex.
*/
bool
handler_thread_initialized
;
COPY_INFO
info
;
I_List
<
delayed_row
>
rows
;
ulong
group_count
;
TABLE_LIST
table_list
;
// Argument
Delayed_insert
()
:
locks_in_memory
(
0
),
table
(
0
),
tables_in_use
(
0
),
stacked_inserts
(
0
),
status
(
0
),
group_count
(
0
)
:
locks_in_memory
(
0
),
table
(
0
),
tables_in_use
(
0
),
stacked_inserts
(
0
),
status
(
0
),
handler_thread_initialized
(
FALSE
),
group_count
(
0
)
{
DBUG_ENTER
(
"Delayed_insert constructor"
);
thd
.
security_ctx
->
user
=
thd
.
security_ctx
->
priv_user
=
(
char
*
)
delayed_user
;
...
...
@@ -2063,19 +2071,9 @@ bool delayed_get_table(THD *thd, TABLE_LIST *table_list)
/* Replace volatile strings with local copies */
di
->
table_list
.
alias
=
di
->
table_list
.
table_name
=
di
->
thd
.
query
();
di
->
table_list
.
db
=
di
->
thd
.
db
;
/*
Clone the ticket representing the lock on the target table for
the insert and add it to the list of granted metadata locks held by
the handler thread. This is safe since the handler thread is
not holding nor waiting on any metadata locks.
*/
if
(
di
->
thd
.
mdl_context
.
clone_ticket
(
&
table_list
->
mdl_request
))
{
delete
di
;
my_error
(
ER_OUT_OF_RESOURCES
,
MYF
(
ME_FATALERROR
));
goto
end_create
;
}
/* We need the ticket so that it can be cloned in handle_delayed_insert */
init_mdl_requests
(
&
di
->
table_list
);
di
->
table_list
.
mdl_request
.
ticket
=
table_list
->
mdl_request
.
ticket
;
di
->
lock
();
mysql_mutex_lock
(
&
di
->
mutex
);
...
...
@@ -2088,15 +2086,20 @@ bool delayed_get_table(THD *thd, TABLE_LIST *table_list)
error
));
mysql_mutex_unlock
(
&
di
->
mutex
);
di
->
unlock
();
di
->
thd
.
mdl_context
.
release_lock
(
table_list
->
mdl_request
.
ticket
);
delete
di
;
my_error
(
ER_CANT_CREATE_THREAD
,
MYF
(
ME_FATALERROR
),
error
);
goto
end_create
;
}
/* Wait until table is open */
/*
Wait until table is open unless the handler thread or the connection
thread has been killed. Note that we in all cases must wait until the
handler thread has been properly initialized before exiting. Otherwise
we risk doing clone_ticket() on a ticket that is no longer valid.
*/
thd_proc_info
(
thd
,
"waiting for handler open"
);
while
(
!
di
->
thd
.
killed
&&
!
di
->
table
&&
!
thd
->
killed
)
while
(
!
di
->
handler_thread_initialized
||
(
!
di
->
thd
.
killed
&&
!
di
->
table
&&
!
thd
->
killed
))
{
mysql_cond_wait
(
&
di
->
cond_client
,
&
di
->
mutex
);
}
...
...
@@ -2524,6 +2527,7 @@ pthread_handler_t handle_delayed_insert(void *arg)
/* Can't use my_error since store_globals has not yet been called */
thd
->
stmt_da
->
set_error_status
(
thd
,
ER_OUT_OF_RESOURCES
,
ER
(
ER_OUT_OF_RESOURCES
),
NULL
);
di
->
handler_thread_initialized
=
TRUE
;
}
else
{
...
...
@@ -2534,6 +2538,7 @@ pthread_handler_t handle_delayed_insert(void *arg)
/* Can't use my_error since store_globals has perhaps failed */
thd
->
stmt_da
->
set_error_status
(
thd
,
ER_OUT_OF_RESOURCES
,
ER
(
ER_OUT_OF_RESOURCES
),
NULL
);
di
->
handler_thread_initialized
=
TRUE
;
thd
->
fatal_error
();
goto
err
;
}
...
...
@@ -2546,7 +2551,24 @@ pthread_handler_t handle_delayed_insert(void *arg)
thd
->
lex
->
set_stmt_unsafe
(
LEX
::
BINLOG_STMT_UNSAFE_INSERT_DELAYED
);
thd
->
set_current_stmt_binlog_format_row_if_mixed
();
init_mdl_requests
(
&
di
->
table_list
);
/*
Clone the ticket representing the lock on the target table for
the insert and add it to the list of granted metadata locks held by
the handler thread. This is safe since the handler thread is
not holding nor waiting on any metadata locks.
*/
if
(
thd
->
mdl_context
.
clone_ticket
(
&
di
->
table_list
.
mdl_request
))
{
di
->
handler_thread_initialized
=
TRUE
;
goto
err
;
}
/*
Now that the ticket has been cloned, it is safe for the connection
thread to exit.
*/
di
->
handler_thread_initialized
=
TRUE
;
di
->
table_list
.
mdl_request
.
ticket
=
NULL
;
if
(
di
->
open_and_lock_table
())
goto
err
;
...
...
sql/sql_table.cc
View file @
d0dea5e4
...
...
@@ -4268,6 +4268,7 @@ bool mysql_create_table(THD *thd, TABLE_LIST *create_table,
Alter_info
*
alter_info
)
{
bool
result
;
bool
is_trans
=
FALSE
;
DBUG_ENTER
(
"mysql_create_table"
);
/*
...
...
@@ -4282,7 +4283,6 @@ bool mysql_create_table(THD *thd, TABLE_LIST *create_table,
/* Got lock. */
DEBUG_SYNC
(
thd
,
"locked_table_name"
);
bool
is_trans
;
result
=
mysql_create_table_no_lock
(
thd
,
create_table
->
db
,
create_table
->
table_name
,
create_info
,
alter_info
,
FALSE
,
0
,
&
is_trans
);
...
...
@@ -4454,6 +4454,7 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table,
HA_CREATE_INFO
local_create_info
;
Alter_info
local_alter_info
;
bool
res
=
TRUE
;
bool
is_trans
=
FALSE
;
uint
not_used
;
DBUG_ENTER
(
"mysql_create_like_table"
);
...
...
@@ -4503,7 +4504,6 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table,
/* Reset auto-increment counter for the new table. */
local_create_info
.
auto_increment_value
=
0
;
bool
is_trans
;
if
((
res
=
mysql_create_table_no_lock
(
thd
,
table
->
db
,
table
->
table_name
,
&
local_create_info
,
&
local_alter_info
,
FALSE
,
0
,
&
is_trans
)))
...
...
storage/myisam/mi_key.c
View file @
d0dea5e4
...
...
@@ -253,18 +253,17 @@ uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key, uchar *old,
pos
=
old
;
if
(
keyseg
->
flag
&
HA_SPACE_PACK
)
{
uchar
*
end
=
pos
+
length
;
if
(
type
==
HA_KEYTYPE_NUM
)
{
while
(
pos
<
end
&&
pos
[
0
]
==
' '
)
pos
++
;
uchar
*
end
=
pos
+
length
;
while
(
pos
<
end
&&
pos
[
0
]
==
' '
)
pos
++
;
length
=
(
uint
)
(
end
-
pos
);
}
else
if
(
type
!=
HA_KEYTYPE_BINARY
)
{
while
(
end
>
pos
&&
end
[
-
1
]
==
' '
)
end
--
;
length
=
cs
->
cset
->
lengthsp
(
cs
,
(
char
*
)
pos
,
length
);
}
length
=
(
uint
)
(
end
-
pos
);
FIX_LENGTH
(
cs
,
pos
,
length
,
char_length
);
store_key_length_inc
(
key
,
char_length
);
memcpy
((
uchar
*
)
key
,
pos
,(
size_t
)
char_length
);
...
...
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