mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge 10.0 into 10.1
This commit is contained in:
@ -283,7 +283,7 @@ ENDIF()
|
|||||||
|
|
||||||
# Set commonly used variables
|
# Set commonly used variables
|
||||||
IF(WIN32)
|
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)
|
SET(SHAREDIR share)
|
||||||
ELSE()
|
ELSE()
|
||||||
SET(DEFAULT_MYSQL_HOME ${CMAKE_INSTALL_PREFIX})
|
SET(DEFAULT_MYSQL_HOME ${CMAKE_INSTALL_PREFIX})
|
||||||
|
@ -2086,6 +2086,21 @@ tab1 CREATE TABLE `tab1` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE `tab1`;
|
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
|
# Start of 10.1 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -340,3 +340,26 @@ f1()
|
|||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1,t2;
|
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;
|
||||||
|
@ -139,3 +139,10 @@ flush tables;
|
|||||||
create table t1 (a int) engine=archive;
|
create table t1 (a int) engine=archive;
|
||||||
ERROR 42S01: Table 't1' already exists
|
ERROR 42S01: Table 't1' already exists
|
||||||
drop table t1;
|
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;
|
||||||
|
@ -132,3 +132,13 @@ flush tables;
|
|||||||
create table t1 (a int) engine=archive;
|
create table t1 (a int) engine=archive;
|
||||||
drop table t1;
|
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;
|
||||||
|
@ -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;
|
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`;
|
SHOW CREATE TABLE `tab1`;
|
||||||
DROP 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 #
|
||||||
--echo # Start of 10.1 tests
|
--echo # Start of 10.1 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -414,3 +414,33 @@ SELECT f1();
|
|||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1,t2;
|
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;
|
||||||
|
@ -357,6 +357,19 @@
|
|||||||
fun:_dl_init
|
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
|
# dlclose can allocate memory for error message, the memory will be
|
||||||
# freed by dlerror or other dl* function.
|
# freed by dlerror or other dl* function.
|
||||||
|
@ -90,7 +90,7 @@ static my_bool defaults_already_read= FALSE;
|
|||||||
|
|
||||||
/* Which directories are searched for options (and in which order) */
|
/* 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 */
|
#define DEFAULT_DIRS_SIZE (MAX_DEFAULT_DIRS + 1) /* Terminate with NULL */
|
||||||
static const char **default_directories = 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);
|
errors += add_directory(alloc, "C:/", dirs);
|
||||||
|
|
||||||
if (my_get_module_parent(fname_buffer, sizeof(fname_buffer)) != NULL)
|
if (my_get_module_parent(fname_buffer, sizeof(fname_buffer)) != NULL)
|
||||||
|
{
|
||||||
errors += add_directory(alloc, fname_buffer, dirs);
|
errors += add_directory(alloc, fname_buffer, dirs);
|
||||||
|
|
||||||
|
strncat(fname_buffer, "/data", sizeof(fname_buffer));
|
||||||
|
errors += add_directory(alloc, fname_buffer, dirs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -415,6 +415,7 @@ IF(WIN32)
|
|||||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_bootstrap_sql.c
|
${CMAKE_CURRENT_BINARY_DIR}/mysql_bootstrap_sql.c
|
||||||
COMPONENT Server
|
COMPONENT Server
|
||||||
)
|
)
|
||||||
|
SET_TARGET_PROPERTIES(mysql_install_db PROPERTIES COMPILE_FLAGS -DINSTALL_PLUGINDIR=${INSTALL_PLUGINDIR})
|
||||||
TARGET_LINK_LIBRARIES(mysql_install_db mysys)
|
TARGET_LINK_LIBRARIES(mysql_install_db mysys)
|
||||||
|
|
||||||
ADD_LIBRARY(winservice STATIC winservice.c)
|
ADD_LIBRARY(winservice STATIC winservice.c)
|
||||||
|
@ -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.
|
Allocate and initialize command line for mysqld --bootstrap.
|
||||||
@ -313,6 +327,10 @@ static int create_myini()
|
|||||||
fprintf(myini,"protocol=pipe\n");
|
fprintf(myini,"protocol=pipe\n");
|
||||||
else if (opt_port)
|
else if (opt_port)
|
||||||
fprintf(myini,"port=%d\n",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);
|
fclose(myini);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
15
sql/slave.cc
15
sql/slave.cc
@ -4796,11 +4796,11 @@ pthread_handler_t handle_slave_sql(void *arg)
|
|||||||
{
|
{
|
||||||
rli->report(ERROR_LEVEL, ER_SLAVE_FATAL_ERROR, NULL,
|
rli->report(ERROR_LEVEL, ER_SLAVE_FATAL_ERROR, NULL,
|
||||||
"Error initializing relay log position: %s", errmsg);
|
"Error initializing relay log position: %s", errmsg);
|
||||||
goto err;
|
goto err_before_start;
|
||||||
}
|
}
|
||||||
rli->reset_inuse_relaylog();
|
rli->reset_inuse_relaylog();
|
||||||
if (rli->alloc_inuse_relaylog(rli->group_relay_log_name))
|
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);
|
strcpy(rli->future_event_master_log_name, rli->group_master_log_name);
|
||||||
THD_CHECK_SENTRY(thd);
|
THD_CHECK_SENTRY(thd);
|
||||||
@ -4977,6 +4977,7 @@ pthread_handler_t handle_slave_sql(void *arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err:
|
||||||
if (mi->using_parallel())
|
if (mi->using_parallel())
|
||||||
rli->parallel.wait_for_done(thd, rli);
|
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());
|
rli->group_master_log_pos, tmp.c_ptr_safe());
|
||||||
}
|
}
|
||||||
|
|
||||||
err:
|
err_before_start:
|
||||||
|
|
||||||
/*
|
|
||||||
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);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Some events set some playgrounds, which won't be cleared because thread
|
Some events set some playgrounds, which won't be cleared because thread
|
||||||
|
@ -3379,6 +3379,9 @@ void LEX::first_lists_tables_same()
|
|||||||
if (query_tables_last == &first_table->next_global)
|
if (query_tables_last == &first_table->next_global)
|
||||||
query_tables_last= first_table->prev_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))
|
if ((next= *first_table->prev_global= first_table->next_global))
|
||||||
next->prev_global= first_table->prev_global;
|
next->prev_global= first_table->prev_global;
|
||||||
/* include in new place */
|
/* include in new place */
|
||||||
|
@ -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;
|
int frm_delete_error, trigger_drop_error= 0;
|
||||||
/* Delete the table definition file */
|
/* Delete the table definition file */
|
||||||
strmov(end,reg_ext);
|
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)
|
if (frm_delete_error)
|
||||||
frm_delete_error= my_errno;
|
frm_delete_error= my_errno;
|
||||||
else
|
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)
|
else if (frm_delete_error && if_exists)
|
||||||
thd->clear_error();
|
thd->clear_error();
|
||||||
}
|
}
|
||||||
non_tmp_error= error ? TRUE : non_tmp_error;
|
non_tmp_error|= MY_TEST(error);
|
||||||
}
|
}
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
@ -5932,7 +5944,7 @@ drop_create_field:
|
|||||||
while ((f_key= fk_key_it++))
|
while ((f_key= fk_key_it++))
|
||||||
{
|
{
|
||||||
if (my_strcasecmp(system_charset_info, f_key->foreign_id->str,
|
if (my_strcasecmp(system_charset_info, f_key->foreign_id->str,
|
||||||
key->name.str) == 0)
|
keyname) == 0)
|
||||||
goto remove_key;
|
goto remove_key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Copyright (c) 1997, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 1997, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2012, Facebook Inc.
|
Copyright (c) 2012, Facebook Inc.
|
||||||
Copyright (c) 2013, 2016, MariaDB Corporation. All Rights Reserved.
|
Copyright (c) 2013, 2017, MariaDB Corporation. All Rights Reserved.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
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
|
the terms of the GNU General Public License as published by the Free Software
|
||||||
@ -396,12 +396,6 @@ recv_sys_init(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef UNIV_HOTBACKUP
|
#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));
|
mutex_enter(&(recv_sys->mutex));
|
||||||
|
|
||||||
recv_sys->heap = mem_heap_create_typed(256,
|
recv_sys->heap = mem_heap_create_typed(256,
|
||||||
@ -3051,6 +3045,11 @@ recv_recovery_from_checkpoint_start_func(
|
|||||||
byte* buf;
|
byte* buf;
|
||||||
byte log_hdr_buf[LOG_FILE_HDR_SIZE];
|
byte log_hdr_buf[LOG_FILE_HDR_SIZE];
|
||||||
dberr_t err;
|
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);
|
ut_when_dtor<recv_dblwr_t> tmp(recv_sys->dblwr);
|
||||||
|
|
||||||
#ifdef UNIV_LOG_ARCHIVE
|
#ifdef UNIV_LOG_ARCHIVE
|
||||||
|
@ -16,13 +16,26 @@ sub locate_sphinx_binary {
|
|||||||
for (@list) { return $_ if -x $_; }
|
for (@list) { return $_ if -x $_; }
|
||||||
}
|
}
|
||||||
|
|
||||||
# Look for Sphinx binaries.
|
# Look for Sphinx binaries
|
||||||
my $exe_sphinx_indexer = &locate_sphinx_binary('indexer');
|
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');
|
my $exe_sphinx_searchd = &locate_sphinx_binary('searchd');
|
||||||
|
|
||||||
return "No Sphinx" unless $exe_sphinx_indexer and $exe_sphinx_searchd;
|
unless ($exe_sphinx_searchd) {
|
||||||
return "No SphinxSE" unless $ENV{HA_SPHINX_SO} or
|
mtr_report("Sphinx 'searchd' binary not found, sphinx suite will be skipped");
|
||||||
$::mysqld_variables{'sphinx'} eq "ON";
|
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`;
|
local $_ = `"$exe_sphinx_searchd" --help`;
|
||||||
|
Reference in New Issue
Block a user