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
5044dae2
Commit
5044dae2
authored
Jan 10, 2017
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.0 into 10.1
parents
4b05d60e
78e6fafc
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
188 additions
and
27 deletions
+188
-27
CMakeLists.txt
CMakeLists.txt
+1
-1
mysql-test/r/alter_table.result
mysql-test/r/alter_table.result
+15
-0
mysql-test/r/sp-prelocking.result
mysql-test/r/sp-prelocking.result
+23
-0
mysql-test/suite/archive/discover.result
mysql-test/suite/archive/discover.result
+7
-0
mysql-test/suite/archive/discover.test
mysql-test/suite/archive/discover.test
+10
-0
mysql-test/t/alter_table.test
mysql-test/t/alter_table.test
+19
-0
mysql-test/t/sp-prelocking.test
mysql-test/t/sp-prelocking.test
+30
-0
mysql-test/valgrind.supp
mysql-test/valgrind.supp
+13
-0
mysys/my_default.c
mysys/my_default.c
+6
-1
sql/CMakeLists.txt
sql/CMakeLists.txt
+1
-0
sql/mysql_install_db.cc
sql/mysql_install_db.cc
+18
-0
sql/slave.cc
sql/slave.cc
+4
-11
sql/sql_lex.cc
sql/sql_lex.cc
+3
-0
sql/sql_table.cc
sql/sql_table.cc
+15
-3
storage/innobase/log/log0recv.cc
storage/innobase/log/log0recv.cc
+6
-7
storage/sphinx/mysql-test/sphinx/suite.pm
storage/sphinx/mysql-test/sphinx/suite.pm
+17
-4
No files found.
CMakeLists.txt
View file @
5044dae2
...
...
@@ -283,7 +283,7 @@ ENDIF()
# Set commonly used variables
IF
(
WIN32
)
SET
(
DEFAULT_MYSQL_HOME
"C:/
MariaDB
${
MYSQL_BASE_VERSION
}
"
)
SET
(
DEFAULT_MYSQL_HOME
"C:/
Program Files/MariaDB
${
MYSQL_BASE_VERSION
}
"
)
SET
(
SHAREDIR share
)
ELSE
()
SET
(
DEFAULT_MYSQL_HOME
${
CMAKE_INSTALL_PREFIX
}
)
...
...
mysql-test/r/alter_table.result
View file @
5044dae2
...
...
@@ -2086,6 +2086,21 @@ tab1 CREATE TABLE `tab1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE `tab1`;
#
# MDEV-11548 Reproducible server crash after the 2nd ALTER TABLE ADD FOREIGN KEY IF NOT EXISTS
#
CREATE TABLE t1 (id INT UNSIGNED NOT NULL PRIMARY KEY);
CREATE TABLE t2 (id1 INT UNSIGNED NOT NULL);
ALTER TABLE t2
ADD FOREIGN KEY IF NOT EXISTS (id1)
REFERENCES t1 (id);
ALTER TABLE t2
ADD FOREIGN KEY IF NOT EXISTS (id1)
REFERENCES t1 (id);
Warnings:
Note 1061 Duplicate key name 'id1'
DROP TABLE t2;
DROP TABLE t1;
#
# Start of 10.1 tests
#
#
...
...
mysql-test/r/sp-prelocking.result
View file @
5044dae2
...
...
@@ -340,3 +340,26 @@ f1()
DROP FUNCTION f1;
DROP VIEW v1;
DROP TABLE t1,t2;
#
# Bug #16672723 "CAN'T FIND TEMPORARY TABLE".
#
CREATE FUNCTION f1() RETURNS INT RETURN 1;
CREATE TEMPORARY TABLE tmp1(a INT);
PREPARE stmt1 FROM "CREATE TEMPORARY TABLE tmp2 AS SELECT b FROM (SELECT f1() AS b FROM tmp1) AS t";
# The below statement failed before the fix.
EXECUTE stmt1;
DROP TEMPORARY TABLES tmp1, tmp2;
DEALLOCATE PREPARE stmt1;
DROP FUNCTION f1;
create procedure sp1()
begin
drop table if exists t1, t2;
create temporary table t1 select 1 v;
create table t2 (col varchar(45)) select distinct col from (select sf1() as col from t1) t;
end$$
create function sf1() returns text return 'blah';
call test.sp1();
call test.sp1();
drop procedure sp1;
drop function sf1;
drop table t2;
mysql-test/suite/archive/discover.result
View file @
5044dae2
...
...
@@ -139,3 +139,10 @@ flush tables;
create table t1 (a int) engine=archive;
ERROR 42S01: Table 't1' already exists
drop table t1;
CREATE OR REPLACE TABLE t1 ( pk INT AUTO_INCREMENT PRIMARY KEY ) ENGINE = ARCHIVE;
CREATE OR REPLACE TABLE t1 ( pk INT AUTO_INCREMENT PRIMARY KEY ) ENGINE = ARCHIVE;
DROP TABLE t1;
CREATE OR REPLACE TABLE t1 ( pk INT AUTO_INCREMENT PRIMARY KEY ) ENGINE = ARCHIVE;
SELECT * FROM t1;
pk
DROP TABLE t1;
mysql-test/suite/archive/discover.test
View file @
5044dae2
...
...
@@ -132,3 +132,13 @@ flush tables;
create
table
t1
(
a
int
)
engine
=
archive
;
drop
table
t1
;
#
# MDEV-11317: Error in deleting non existing .frm for tables with disocvery
#
CREATE
OR
REPLACE
TABLE
t1
(
pk
INT
AUTO_INCREMENT
PRIMARY
KEY
)
ENGINE
=
ARCHIVE
;
CREATE
OR
REPLACE
TABLE
t1
(
pk
INT
AUTO_INCREMENT
PRIMARY
KEY
)
ENGINE
=
ARCHIVE
;
DROP
TABLE
t1
;
CREATE
OR
REPLACE
TABLE
t1
(
pk
INT
AUTO_INCREMENT
PRIMARY
KEY
)
ENGINE
=
ARCHIVE
;
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
mysql-test/t/alter_table.test
View file @
5044dae2
...
...
@@ -1737,6 +1737,25 @@ SHOW CREATE TABLE `tab1`;
ALTER
TABLE
`tab1`
CHANGE
COLUMN
v_col
`v_col`
varchar
(
128
)
AS
(
IF
(
field11
=
'option1'
,
CONCAT_WS
(
":"
,
"field1"
,
field2
,
field3
,
field4
,
field5
,
field6
,
field7
,
field8
,
field9
,
field10
),
CONCAT_WS
(
":"
,
"field1"
,
field11
,
field2
,
field3
,
field4
,
field5
,
field6
,
field7
,
field8
,
field9
,
field10
)))
PERSISTENT
;
SHOW
CREATE
TABLE
`tab1`
;
DROP
TABLE
`tab1`
;
--
echo
#
--
echo
# MDEV-11548 Reproducible server crash after the 2nd ALTER TABLE ADD FOREIGN KEY IF NOT EXISTS
--
echo
#
CREATE
TABLE
t1
(
id
INT
UNSIGNED
NOT
NULL
PRIMARY
KEY
);
CREATE
TABLE
t2
(
id1
INT
UNSIGNED
NOT
NULL
);
ALTER
TABLE
t2
ADD
FOREIGN
KEY
IF
NOT
EXISTS
(
id1
)
REFERENCES
t1
(
id
);
ALTER
TABLE
t2
ADD
FOREIGN
KEY
IF
NOT
EXISTS
(
id1
)
REFERENCES
t1
(
id
);
DROP
TABLE
t2
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# Start of 10.1 tests
--
echo
#
...
...
mysql-test/t/sp-prelocking.test
View file @
5044dae2
...
...
@@ -414,3 +414,33 @@ SELECT f1();
DROP
FUNCTION
f1
;
DROP
VIEW
v1
;
DROP
TABLE
t1
,
t2
;
--
echo
#
--
echo
# Bug #16672723 "CAN'T FIND TEMPORARY TABLE".
--
echo
#
CREATE
FUNCTION
f1
()
RETURNS
INT
RETURN
1
;
CREATE
TEMPORARY
TABLE
tmp1
(
a
INT
);
PREPARE
stmt1
FROM
"CREATE TEMPORARY TABLE tmp2 AS SELECT b FROM (SELECT f1() AS b FROM tmp1) AS t"
;
--
echo
# The below statement failed before the fix.
EXECUTE
stmt1
;
DROP
TEMPORARY
TABLES
tmp1
,
tmp2
;
DEALLOCATE
PREPARE
stmt1
;
DROP
FUNCTION
f1
;
#
# MDEV-9084 Calling a stored function from a nested select from temporary table causes unpredictable behavior
#
delimiter
$$
;
create
procedure
sp1
()
begin
drop
table
if
exists
t1
,
t2
;
create
temporary
table
t1
select
1
v
;
create
table
t2
(
col
varchar
(
45
))
select
distinct
col
from
(
select
sf1
()
as
col
from
t1
)
t
;
end
$$
delimiter
;
$$
create
function
sf1
()
returns
text
return
'blah'
;
call
test
.
sp1
();
call
test
.
sp1
();
drop
procedure
sp1
;
drop
function
sf1
;
drop
table
t2
;
mysql-test/valgrind.supp
View file @
5044dae2
...
...
@@ -357,6 +357,19 @@
fun:_dl_init
}
# This one is on OpenSuse 10.3 with gcc 5.4
{
memory "loss" from _dl_init 2
Memcheck:Leak
fun:malloc
fun:pool
...
fun:call_init*
fun:_dl_init
}
#
# dlclose can allocate memory for error message, the memory will be
# freed by dlerror or other dl* function.
...
...
mysys/my_default.c
View file @
5044dae2
...
...
@@ -90,7 +90,7 @@ static my_bool defaults_already_read= FALSE;
/* Which directories are searched for options (and in which order) */
#define MAX_DEFAULT_DIRS
6
#define MAX_DEFAULT_DIRS
7
#define DEFAULT_DIRS_SIZE (MAX_DEFAULT_DIRS + 1)
/* Terminate with NULL */
static
const
char
**
default_directories
=
NULL
;
...
...
@@ -1218,7 +1218,12 @@ static const char **init_default_directories(MEM_ROOT *alloc)
errors
+=
add_directory
(
alloc
,
"C:/"
,
dirs
);
if
(
my_get_module_parent
(
fname_buffer
,
sizeof
(
fname_buffer
))
!=
NULL
)
{
errors
+=
add_directory
(
alloc
,
fname_buffer
,
dirs
);
strncat
(
fname_buffer
,
"/data"
,
sizeof
(
fname_buffer
));
errors
+=
add_directory
(
alloc
,
fname_buffer
,
dirs
);
}
}
#else
...
...
sql/CMakeLists.txt
View file @
5044dae2
...
...
@@ -415,6 +415,7 @@ IF(WIN32)
${
CMAKE_CURRENT_BINARY_DIR
}
/mysql_bootstrap_sql.c
COMPONENT Server
)
SET_TARGET_PROPERTIES
(
mysql_install_db PROPERTIES COMPILE_FLAGS -DINSTALL_PLUGINDIR=
${
INSTALL_PLUGINDIR
}
)
TARGET_LINK_LIBRARIES
(
mysql_install_db mysys
)
ADD_LIBRARY
(
winservice STATIC winservice.c
)
...
...
sql/mysql_install_db.cc
View file @
5044dae2
...
...
@@ -233,6 +233,20 @@ static void get_basedir(char *basedir, int size, const char *mysqld_path)
}
}
#define STR(s) _STR(s)
#define _STR(s) #s
static
char
*
get_plugindir
()
{
static
char
plugin_dir
[
2
*
MAX_PATH
];
get_basedir
(
plugin_dir
,
sizeof
(
plugin_dir
),
mysqld_path
);
strcat
(
plugin_dir
,
"/"
STR
(
INSTALL_PLUGINDIR
));
if
(
access
(
plugin_dir
,
0
)
==
0
)
return
plugin_dir
;
return
NULL
;
}
/**
Allocate and initialize command line for mysqld --bootstrap.
...
...
@@ -313,6 +327,10 @@ static int create_myini()
fprintf
(
myini
,
"protocol=pipe
\n
"
);
else
if
(
opt_port
)
fprintf
(
myini
,
"port=%d
\n
"
,
opt_port
);
char
*
plugin_dir
=
get_plugindir
();
if
(
plugin_dir
)
fprintf
(
myini
,
"plugin-dir=%s
\n
"
,
plugin_dir
);
fclose
(
myini
);
return
0
;
}
...
...
sql/slave.cc
View file @
5044dae2
...
...
@@ -4796,11 +4796,11 @@ pthread_handler_t handle_slave_sql(void *arg)
{
rli
->
report
(
ERROR_LEVEL
,
ER_SLAVE_FATAL_ERROR
,
NULL
,
"Error initializing relay log position: %s"
,
errmsg
);
goto
err
;
goto
err
_before_start
;
}
rli
->
reset_inuse_relaylog
();
if
(
rli
->
alloc_inuse_relaylog
(
rli
->
group_relay_log_name
))
goto
err
;
goto
err
_before_start
;
strcpy
(
rli
->
future_event_master_log_name
,
rli
->
group_master_log_name
);
THD_CHECK_SENTRY
(
thd
);
...
...
@@ -4977,6 +4977,7 @@ pthread_handler_t handle_slave_sql(void *arg)
}
}
err:
if
(
mi
->
using_parallel
())
rli
->
parallel
.
wait_for_done
(
thd
,
rli
);
...
...
@@ -4994,15 +4995,7 @@ pthread_handler_t handle_slave_sql(void *arg)
rli
->
group_master_log_pos
,
tmp
.
c_ptr_safe
());
}
err:
/*
Once again, in case we aborted with an error and skipped the first one.
(We want the first one to be before the printout of stop position to
get the correct position printed.)
*/
if
(
mi
->
using_parallel
())
rli
->
parallel
.
wait_for_done
(
thd
,
rli
);
err_before_start:
/*
Some events set some playgrounds, which won't be cleared because thread
...
...
sql/sql_lex.cc
View file @
5044dae2
...
...
@@ -3379,6 +3379,9 @@ void LEX::first_lists_tables_same()
if
(
query_tables_last
==
&
first_table
->
next_global
)
query_tables_last
=
first_table
->
prev_global
;
if
(
query_tables_own_last
==
&
first_table
->
next_global
)
query_tables_own_last
=
first_table
->
prev_global
;
if
((
next
=
*
first_table
->
prev_global
=
first_table
->
next_global
))
next
->
prev_global
=
first_table
->
prev_global
;
/* include in new place */
...
...
sql/sql_table.cc
View file @
5044dae2
...
...
@@ -2473,7 +2473,19 @@ int mysql_rm_table_no_locks(THD *thd, TABLE_LIST *tables, bool if_exists,
int
frm_delete_error
,
trigger_drop_error
=
0
;
/* Delete the table definition file */
strmov
(
end
,
reg_ext
);
frm_delete_error
=
mysql_file_delete
(
key_file_frm
,
path
,
MYF
(
MY_WME
));
if
(
table_type
&&
table_type
!=
view_pseudo_hton
&&
table_type
->
discover_table
)
{
/*
Table type is using discovery and may not need a .frm file.
Delete it silently if it exists
*/
(
void
)
mysql_file_delete
(
key_file_frm
,
path
,
MYF
(
0
));
frm_delete_error
=
0
;
}
else
frm_delete_error
=
mysql_file_delete
(
key_file_frm
,
path
,
MYF
(
MY_WME
));
if
(
frm_delete_error
)
frm_delete_error
=
my_errno
;
else
...
...
@@ -2489,7 +2501,7 @@ int mysql_rm_table_no_locks(THD *thd, TABLE_LIST *tables, bool if_exists,
else
if
(
frm_delete_error
&&
if_exists
)
thd
->
clear_error
();
}
non_tmp_error
=
error
?
TRUE
:
non_tmp_error
;
non_tmp_error
|=
MY_TEST
(
error
)
;
}
if
(
error
)
{
...
...
@@ -5932,7 +5944,7 @@ handle_if_exists_options(THD *thd, TABLE *table, Alter_info *alter_info)
while
((
f_key
=
fk_key_it
++
))
{
if
(
my_strcasecmp
(
system_charset_info
,
f_key
->
foreign_id
->
str
,
key
->
name
.
str
)
==
0
)
key
name
)
==
0
)
goto
remove_key
;
}
}
...
...
storage/innobase/log/log0recv.cc
View file @
5044dae2
...
...
@@ -2,7 +2,7 @@
Copyright (c) 1997, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2012, Facebook Inc.
Copyright (c) 2013, 201
6
, MariaDB Corporation. All Rights Reserved.
Copyright (c) 2013, 201
7
, MariaDB Corporation. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -396,12 +396,6 @@ recv_sys_init(
}
#ifndef UNIV_HOTBACKUP
/* Initialize red-black tree for fast insertions into the
flush_list during recovery process.
As this initialization is done while holding the buffer pool
mutex we perform it before acquiring recv_sys->mutex. */
buf_flush_init_flush_rbt
();
mutex_enter
(
&
(
recv_sys
->
mutex
));
recv_sys
->
heap
=
mem_heap_create_typed
(
256
,
...
...
@@ -3051,6 +3045,11 @@ recv_recovery_from_checkpoint_start_func(
byte
*
buf
;
byte
log_hdr_buf
[
LOG_FILE_HDR_SIZE
];
dberr_t
err
;
/* Initialize red-black tree for fast insertions into the
flush_list during recovery process. */
buf_flush_init_flush_rbt
();
ut_when_dtor
<
recv_dblwr_t
>
tmp
(
recv_sys
->
dblwr
);
#ifdef UNIV_LOG_ARCHIVE
...
...
storage/sphinx/mysql-test/sphinx/suite.pm
View file @
5044dae2
...
...
@@ -16,13 +16,26 @@ sub locate_sphinx_binary {
for
(
@list
)
{
return
$_
if
-
x
$_
;
}
}
# Look for Sphinx binaries
.
# Look for Sphinx binaries
my
$exe_sphinx_indexer
=
&
locate_sphinx_binary
('
indexer
');
unless
(
$exe_sphinx_indexer
)
{
mtr_report
("
Sphinx 'indexer' binary not found, sphinx suite will be skipped
");
return
"
No Sphinx
";
}
my
$exe_sphinx_searchd
=
&
locate_sphinx_binary
('
searchd
');
return
"
No Sphinx
"
unless
$exe_sphinx_indexer
and
$exe_sphinx_searchd
;
return
"
No SphinxSE
"
unless
$ENV
{
HA_SPHINX_SO
}
or
$::mysqld_variables
{'
sphinx
'}
eq
"
ON
";
unless
(
$exe_sphinx_searchd
)
{
mtr_report
("
Sphinx 'searchd' binary not found, sphinx suite will be skipped
");
return
"
No Sphinx
";
}
# Check for Sphinx engine
unless
(
$ENV
{
HA_SPHINX_SO
}
or
$::mysqld_variables
{'
sphinx
'}
eq
"
ON
")
{
mtr_report
("
Sphinx engine not found, sphinx suite will be skipped
");
return
"
No SphinxSE
";
}
{
local
$_
=
`
"
$exe_sphinx_searchd
" --help
`;
...
...
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