mirror of
https://github.com/MariaDB/server.git
synced 2025-11-09 11:41:36 +03:00
Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/mysql_src/mysql-5.0-clean sql/mysqld.cc: Auto merged
This commit is contained in:
@@ -244,6 +244,7 @@ venu@hundin.mysql.fi
|
|||||||
venu@myvenu.com
|
venu@myvenu.com
|
||||||
venu@work.mysql.com
|
venu@work.mysql.com
|
||||||
vtkachenko@intelp4d.mysql.com
|
vtkachenko@intelp4d.mysql.com
|
||||||
|
vtkachenko@mail.mysql.com
|
||||||
vva@eagle.mysql.r18.ru
|
vva@eagle.mysql.r18.ru
|
||||||
vva@genie.(none)
|
vva@genie.(none)
|
||||||
vva@mysql.r18.ru
|
vva@mysql.r18.ru
|
||||||
|
|||||||
@@ -134,6 +134,8 @@ extern ibool srv_lock_timeout_and_monitor_active;
|
|||||||
extern ibool srv_error_monitor_active;
|
extern ibool srv_error_monitor_active;
|
||||||
|
|
||||||
extern ulint srv_n_spin_wait_rounds;
|
extern ulint srv_n_spin_wait_rounds;
|
||||||
|
extern ulint srv_n_free_tickets_to_enter;
|
||||||
|
extern ulint srv_thread_sleep_delay;
|
||||||
extern ulint srv_spin_wait_delay;
|
extern ulint srv_spin_wait_delay;
|
||||||
extern ibool srv_priority_boost;
|
extern ibool srv_priority_boost;
|
||||||
|
|
||||||
|
|||||||
@@ -297,8 +297,8 @@ srv_conc_slot_t* srv_conc_slots; /* array of wait
|
|||||||
|
|
||||||
/* Number of times a thread is allowed to enter InnoDB within the same
|
/* Number of times a thread is allowed to enter InnoDB within the same
|
||||||
SQL query after it has once got the ticket at srv_conc_enter_innodb */
|
SQL query after it has once got the ticket at srv_conc_enter_innodb */
|
||||||
#define SRV_FREE_TICKETS_TO_ENTER 500
|
#define SRV_FREE_TICKETS_TO_ENTER srv_n_free_tickets_to_enter
|
||||||
|
#define SRV_THREAD_SLEEP_DELAY srv_thread_sleep_delay
|
||||||
/*-----------------------*/
|
/*-----------------------*/
|
||||||
/* If the following is set TRUE then we do not run purge and insert buffer
|
/* If the following is set TRUE then we do not run purge and insert buffer
|
||||||
merge to completion before shutdown */
|
merge to completion before shutdown */
|
||||||
@@ -328,6 +328,8 @@ ulint srv_max_purge_lag = 0;
|
|||||||
|
|
||||||
/*-------------------------------------------*/
|
/*-------------------------------------------*/
|
||||||
ulint srv_n_spin_wait_rounds = 20;
|
ulint srv_n_spin_wait_rounds = 20;
|
||||||
|
ulint srv_n_free_tickets_to_enter = 500;
|
||||||
|
ulint srv_thread_sleep_delay = 10000;
|
||||||
ulint srv_spin_wait_delay = 5;
|
ulint srv_spin_wait_delay = 5;
|
||||||
ibool srv_priority_boost = TRUE;
|
ibool srv_priority_boost = TRUE;
|
||||||
|
|
||||||
@@ -1025,8 +1027,8 @@ retry:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If the transaction is not holding resources, let it sleep for 50
|
/* If the transaction is not holding resources,
|
||||||
milliseconds, and try again then */
|
let it sleep for SRV_THREAD_SLEEP_DELAY microseconds, and try again then */
|
||||||
|
|
||||||
if (!has_slept && !trx->has_search_latch
|
if (!has_slept && !trx->has_search_latch
|
||||||
&& NULL == UT_LIST_GET_FIRST(trx->trx_locks)) {
|
&& NULL == UT_LIST_GET_FIRST(trx->trx_locks)) {
|
||||||
@@ -1045,8 +1047,10 @@ retry:
|
|||||||
situations of lots of thread switches. Simply put some
|
situations of lots of thread switches. Simply put some
|
||||||
threads aside for a while to reduce the number of thread
|
threads aside for a while to reduce the number of thread
|
||||||
switches. */
|
switches. */
|
||||||
|
if (SRV_THREAD_SLEEP_DELAY > 0)
|
||||||
os_thread_sleep(10000);
|
{
|
||||||
|
os_thread_sleep(SRV_THREAD_SLEEP_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
trx->op_info = "";
|
trx->op_info = "";
|
||||||
|
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ if ( cd "$fs_ndb" ; $exec_mgmtsrvr -f config.ini ) ; then :; else
|
|||||||
echo "Unable to start $exec_mgmtsrvr from `pwd`"
|
echo "Unable to start $exec_mgmtsrvr from `pwd`"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if sleep_until_file_created $fs_ndb/ndb_3.pid 30
|
if sleep_until_file_created $fs_ndb/ndb_3.pid 120
|
||||||
then :; else
|
then :; else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -201,7 +201,7 @@ cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile"
|
|||||||
|
|
||||||
echo "Starting ndbd"
|
echo "Starting ndbd"
|
||||||
( cd "$fs_ndb" ; $exec_ndb $flags_ndb & )
|
( cd "$fs_ndb" ; $exec_ndb $flags_ndb & )
|
||||||
if sleep_until_file_created $fs_ndb/ndb_1.pid 30
|
if sleep_until_file_created $fs_ndb/ndb_1.pid 120
|
||||||
then :; else
|
then :; else
|
||||||
stop_default_ndbcluster
|
stop_default_ndbcluster
|
||||||
exit 1
|
exit 1
|
||||||
@@ -212,7 +212,7 @@ cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile"
|
|||||||
|
|
||||||
echo "Starting ndbd"
|
echo "Starting ndbd"
|
||||||
( cd "$fs_ndb" ; $exec_ndb $flags_ndb & )
|
( cd "$fs_ndb" ; $exec_ndb $flags_ndb & )
|
||||||
if sleep_until_file_created $fs_ndb/ndb_2.pid 30
|
if sleep_until_file_created $fs_ndb/ndb_2.pid 120
|
||||||
then :; else
|
then :; else
|
||||||
stop_default_ndbcluster
|
stop_default_ndbcluster
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
@@ -1715,5 +1715,65 @@ Innodb_row_lock_time_max 0
|
|||||||
show status like "Innodb_row_lock_time_avg";
|
show status like "Innodb_row_lock_time_avg";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Innodb_row_lock_time_avg 0
|
Innodb_row_lock_time_avg 0
|
||||||
|
show variables like "innodb_sync_spin_loops";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_sync_spin_loops 20
|
||||||
|
set global innodb_sync_spin_loops=1000;
|
||||||
|
show variables like "innodb_sync_spin_loops";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_sync_spin_loops 1000
|
||||||
|
set global innodb_sync_spin_loops=0;
|
||||||
|
show variables like "innodb_sync_spin_loops";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_sync_spin_loops 0
|
||||||
|
set global innodb_sync_spin_loops=20;
|
||||||
|
show variables like "innodb_sync_spin_loops";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_sync_spin_loops 20
|
||||||
|
show variables like "innodb_thread_concurrency";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_thread_concurrency 8
|
||||||
|
set global innodb_thread_concurrency=1000;
|
||||||
|
show variables like "innodb_thread_concurrency";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_thread_concurrency 1000
|
||||||
|
set global innodb_thread_concurrency=0;
|
||||||
|
show variables like "innodb_thread_concurrency";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_thread_concurrency 1
|
||||||
|
set global innodb_thread_concurrency=16;
|
||||||
|
show variables like "innodb_thread_concurrency";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_thread_concurrency 16
|
||||||
|
show variables like "innodb_concurrency_tickets";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_concurrency_tickets 500
|
||||||
|
set global innodb_concurrency_tickets=1000;
|
||||||
|
show variables like "innodb_concurrency_tickets";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_concurrency_tickets 1000
|
||||||
|
set global innodb_concurrency_tickets=0;
|
||||||
|
show variables like "innodb_concurrency_tickets";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_concurrency_tickets 1
|
||||||
|
set global innodb_concurrency_tickets=500;
|
||||||
|
show variables like "innodb_concurrency_tickets";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_concurrency_tickets 500
|
||||||
|
show variables like "innodb_thread_sleep_delay";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_thread_sleep_delay 10000
|
||||||
|
set global innodb_thread_sleep_delay=100000;
|
||||||
|
show variables like "innodb_thread_sleep_delay";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_thread_sleep_delay 100000
|
||||||
|
set global innodb_thread_sleep_delay=0;
|
||||||
|
show variables like "innodb_thread_sleep_delay";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_thread_sleep_delay 0
|
||||||
|
set global innodb_thread_sleep_delay=10000;
|
||||||
|
show variables like "innodb_thread_sleep_delay";
|
||||||
|
Variable_name Value
|
||||||
|
innodb_thread_sleep_delay 10000
|
||||||
create table t1 (v varchar(16384)) engine=innodb;
|
create table t1 (v varchar(16384)) engine=innodb;
|
||||||
ERROR 42000: Column length too big for column 'v' (max = 255); use BLOB instead
|
ERROR 42000: Column length too big for column 'v' (max = 255); use BLOB instead
|
||||||
|
|||||||
@@ -1218,6 +1218,42 @@ show status like "Innodb_row_lock_time";
|
|||||||
show status like "Innodb_row_lock_time_max";
|
show status like "Innodb_row_lock_time_max";
|
||||||
show status like "Innodb_row_lock_time_avg";
|
show status like "Innodb_row_lock_time_avg";
|
||||||
|
|
||||||
|
# Test for innodb_sync_spin_loops variable
|
||||||
|
show variables like "innodb_sync_spin_loops";
|
||||||
|
set global innodb_sync_spin_loops=1000;
|
||||||
|
show variables like "innodb_sync_spin_loops";
|
||||||
|
set global innodb_sync_spin_loops=0;
|
||||||
|
show variables like "innodb_sync_spin_loops";
|
||||||
|
set global innodb_sync_spin_loops=20;
|
||||||
|
show variables like "innodb_sync_spin_loops";
|
||||||
|
|
||||||
|
# Test for innodb_thread_concurrency variable
|
||||||
|
show variables like "innodb_thread_concurrency";
|
||||||
|
set global innodb_thread_concurrency=1000;
|
||||||
|
show variables like "innodb_thread_concurrency";
|
||||||
|
set global innodb_thread_concurrency=0;
|
||||||
|
show variables like "innodb_thread_concurrency";
|
||||||
|
set global innodb_thread_concurrency=16;
|
||||||
|
show variables like "innodb_thread_concurrency";
|
||||||
|
|
||||||
|
# Test for innodb_concurrency_tickets variable
|
||||||
|
show variables like "innodb_concurrency_tickets";
|
||||||
|
set global innodb_concurrency_tickets=1000;
|
||||||
|
show variables like "innodb_concurrency_tickets";
|
||||||
|
set global innodb_concurrency_tickets=0;
|
||||||
|
show variables like "innodb_concurrency_tickets";
|
||||||
|
set global innodb_concurrency_tickets=500;
|
||||||
|
show variables like "innodb_concurrency_tickets";
|
||||||
|
|
||||||
|
# Test for innodb_thread_sleep_delay variable
|
||||||
|
show variables like "innodb_thread_sleep_delay";
|
||||||
|
set global innodb_thread_sleep_delay=100000;
|
||||||
|
show variables like "innodb_thread_sleep_delay";
|
||||||
|
set global innodb_thread_sleep_delay=0;
|
||||||
|
show variables like "innodb_thread_sleep_delay";
|
||||||
|
set global innodb_thread_sleep_delay=10000;
|
||||||
|
show variables like "innodb_thread_sleep_delay";
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test varchar
|
# Test varchar
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ static bool fixDepricated(InitConfigFileParser::Context & ctx, const char *);
|
|||||||
static bool saveInConfigValues(InitConfigFileParser::Context & ctx, const char *);
|
static bool saveInConfigValues(InitConfigFileParser::Context & ctx, const char *);
|
||||||
static bool fixFileSystemPath(InitConfigFileParser::Context & ctx, const char * data);
|
static bool fixFileSystemPath(InitConfigFileParser::Context & ctx, const char * data);
|
||||||
static bool fixBackupDataDir(InitConfigFileParser::Context & ctx, const char * data);
|
static bool fixBackupDataDir(InitConfigFileParser::Context & ctx, const char * data);
|
||||||
|
static bool fixShmUniqueId(InitConfigFileParser::Context & ctx, const char * data);
|
||||||
|
|
||||||
const ConfigInfo::SectionRule
|
const ConfigInfo::SectionRule
|
||||||
ConfigInfo::m_SectionRules[] = {
|
ConfigInfo::m_SectionRules[] = {
|
||||||
@@ -111,6 +112,8 @@ ConfigInfo::m_SectionRules[] = {
|
|||||||
{ "REP", transformNode, 0 },
|
{ "REP", transformNode, 0 },
|
||||||
{ "EXTERNAL REP", transformExtNode, 0 },
|
{ "EXTERNAL REP", transformExtNode, 0 },
|
||||||
|
|
||||||
|
{ MGM_TOKEN, fixShmUniqueId, 0 },
|
||||||
|
|
||||||
{ "TCP", checkConnectionSupport, 0 },
|
{ "TCP", checkConnectionSupport, 0 },
|
||||||
{ "SHM", checkConnectionSupport, 0 },
|
{ "SHM", checkConnectionSupport, 0 },
|
||||||
{ "SCI", checkConnectionSupport, 0 },
|
{ "SCI", checkConnectionSupport, 0 },
|
||||||
@@ -3155,19 +3158,39 @@ fixPortNumber(InitConfigFileParser::Context & ctx, const char * data){
|
|||||||
DBUG_RETURN(true);
|
DBUG_RETURN(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
fixShmUniqueId(InitConfigFileParser::Context & ctx, const char * data)
|
||||||
|
{
|
||||||
|
DBUG_ENTER("fixShmUniqueId");
|
||||||
|
Uint32 nodes= 0;
|
||||||
|
ctx.m_userProperties.get(ctx.fname, &nodes);
|
||||||
|
if (nodes == 1) // first management server
|
||||||
|
{
|
||||||
|
Uint32 portno= atoi(NDB_PORT);
|
||||||
|
ctx.m_currentSection->get("PortNumber", &portno);
|
||||||
|
ctx.m_userProperties.put("ShmUniqueId", portno);
|
||||||
|
}
|
||||||
|
DBUG_RETURN(true);
|
||||||
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
bool
|
bool
|
||||||
fixShmKey(InitConfigFileParser::Context & ctx, const char *)
|
fixShmKey(InitConfigFileParser::Context & ctx, const char *)
|
||||||
{
|
{
|
||||||
|
DBUG_ENTER("fixShmKey");
|
||||||
Uint32 id1= 0, id2= 0, key= 0;
|
Uint32 id1= 0, id2= 0, key= 0;
|
||||||
require(ctx.m_currentSection->get("NodeId1", &id1));
|
require(ctx.m_currentSection->get("NodeId1", &id1));
|
||||||
require(ctx.m_currentSection->get("NodeId2", &id2));
|
require(ctx.m_currentSection->get("NodeId2", &id2));
|
||||||
if(ctx.m_currentSection->get("ShmKey", &key))
|
if(ctx.m_currentSection->get("ShmKey", &key))
|
||||||
return true;
|
{
|
||||||
|
DBUG_RETURN(true);
|
||||||
|
}
|
||||||
|
|
||||||
key= (id1 > id2 ? id1 << 16 | id2 : id2 << 16 | id1);
|
require(ctx.m_userProperties.get("ShmUniqueId", &key));
|
||||||
|
key= key << 16 | (id1 > id2 ? id1 << 8 | id2 : id2 << 8 | id1);
|
||||||
ctx.m_currentSection->put("ShmKey", key);
|
ctx.m_currentSection->put("ShmKey", key);
|
||||||
return true;
|
DBUG_PRINT("info",("Added ShmKey=0x%x", key));
|
||||||
|
DBUG_RETURN(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
0, 0, \
|
0, 0, \
|
||||||
0, \
|
0, \
|
||||||
(desc), \
|
(desc), \
|
||||||
(void *)(value) }
|
(value) }
|
||||||
|
|
||||||
#define CPC_ARG(name, type, opt, desc) \
|
#define CPC_ARG(name, type, opt, desc) \
|
||||||
{ (name), \
|
{ (name), \
|
||||||
@@ -351,17 +351,12 @@ SimpleCpcClient::define_process(Process & p, Properties& reply){
|
|||||||
|
|
||||||
int
|
int
|
||||||
SimpleCpcClient::list_processes(Vector<Process> &procs, Properties& reply) {
|
SimpleCpcClient::list_processes(Vector<Process> &procs, Properties& reply) {
|
||||||
enum Proclist {
|
int start, end, entry;
|
||||||
Proclist_Start,
|
|
||||||
Proclist_End,
|
|
||||||
Proclist_Entry
|
|
||||||
};
|
|
||||||
const ParserRow_t list_reply[] = {
|
const ParserRow_t list_reply[] = {
|
||||||
CPC_CMD("start processes", Proclist_Start, ""),
|
CPC_CMD("start processes", &start, ""),
|
||||||
|
CPC_CMD("end processes", &end, ""),
|
||||||
|
|
||||||
CPC_CMD("end processes", Proclist_End, ""),
|
CPC_CMD("process", &entry, ""),
|
||||||
|
|
||||||
CPC_CMD("process", Proclist_Entry, ""),
|
|
||||||
CPC_ARG("id", Int, Mandatory, "Id of process."),
|
CPC_ARG("id", Int, Mandatory, "Id of process."),
|
||||||
CPC_ARG("name", String, Mandatory, "Name of process"),
|
CPC_ARG("name", String, Mandatory, "Name of process"),
|
||||||
CPC_ARG("group", String, Mandatory, "Group of process"),
|
CPC_ARG("group", String, Mandatory, "Group of process"),
|
||||||
@@ -390,26 +385,29 @@ SimpleCpcClient::list_processes(Vector<Process> &procs, Properties& reply) {
|
|||||||
bool done = false;
|
bool done = false;
|
||||||
while(!done) {
|
while(!done) {
|
||||||
const Properties *proc;
|
const Properties *proc;
|
||||||
enum Proclist p;
|
void *p;
|
||||||
cpc_recv(list_reply, &proc, (void **)&p);
|
cpc_recv(list_reply, &proc, &p);
|
||||||
|
|
||||||
switch(p) {
|
if(p == &start)
|
||||||
case Proclist_Start:
|
{
|
||||||
/* do nothing */
|
/* do nothing */
|
||||||
break;
|
}
|
||||||
case Proclist_End:
|
else if(p == &end)
|
||||||
|
{
|
||||||
done = true;
|
done = true;
|
||||||
break;
|
}
|
||||||
case Proclist_Entry:
|
else if(p == &entry)
|
||||||
|
{
|
||||||
if(proc != NULL){
|
if(proc != NULL){
|
||||||
Process p;
|
Process p;
|
||||||
convert(* proc, p);
|
convert(* proc, p);
|
||||||
procs.push_back(p);
|
procs.push_back(p);
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
default:
|
else
|
||||||
/* ignore */
|
{
|
||||||
break;
|
ndbout_c("internal error: %d", __LINE__);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -1150,7 +1150,6 @@ innobase_init(void)
|
|||||||
srv_n_file_io_threads = (ulint) innobase_file_io_threads;
|
srv_n_file_io_threads = (ulint) innobase_file_io_threads;
|
||||||
|
|
||||||
srv_lock_wait_timeout = (ulint) innobase_lock_wait_timeout;
|
srv_lock_wait_timeout = (ulint) innobase_lock_wait_timeout;
|
||||||
srv_thread_concurrency = (ulint) innobase_thread_concurrency;
|
|
||||||
srv_force_recovery = (ulint) innobase_force_recovery;
|
srv_force_recovery = (ulint) innobase_force_recovery;
|
||||||
|
|
||||||
srv_fast_shutdown = (ibool) innobase_fast_shutdown;
|
srv_fast_shutdown = (ibool) innobase_fast_shutdown;
|
||||||
|
|||||||
@@ -212,7 +212,11 @@ extern "C" {
|
|||||||
extern ulong srv_max_buf_pool_modified_pct;
|
extern ulong srv_max_buf_pool_modified_pct;
|
||||||
extern ulong srv_max_purge_lag;
|
extern ulong srv_max_purge_lag;
|
||||||
extern ulong srv_auto_extend_increment;
|
extern ulong srv_auto_extend_increment;
|
||||||
|
extern ulong srv_n_spin_wait_rounds;
|
||||||
|
extern ulong srv_n_free_tickets_to_enter;
|
||||||
|
extern ulong srv_thread_sleep_delay;
|
||||||
extern ulong srv_max_purge_lag;
|
extern ulong srv_max_purge_lag;
|
||||||
|
extern ulong srv_thread_concurrency;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern TYPELIB innobase_lock_typelib;
|
extern TYPELIB innobase_lock_typelib;
|
||||||
|
|||||||
@@ -4224,6 +4224,9 @@ enum options_mysqld
|
|||||||
OPT_INNODB_TABLE_LOCKS,
|
OPT_INNODB_TABLE_LOCKS,
|
||||||
OPT_INNODB_OPEN_FILES,
|
OPT_INNODB_OPEN_FILES,
|
||||||
OPT_INNODB_AUTOEXTEND_INCREMENT,
|
OPT_INNODB_AUTOEXTEND_INCREMENT,
|
||||||
|
OPT_INNODB_SYNC_SPIN_LOOPS,
|
||||||
|
OPT_INNODB_CONCURRENCY_TICKETS,
|
||||||
|
OPT_INNODB_THREAD_SLEEP_DELAY,
|
||||||
OPT_BDB_CACHE_SIZE,
|
OPT_BDB_CACHE_SIZE,
|
||||||
OPT_BDB_LOG_BUFFER_SIZE,
|
OPT_BDB_LOG_BUFFER_SIZE,
|
||||||
OPT_BDB_MAX_LOCK,
|
OPT_BDB_MAX_LOCK,
|
||||||
@@ -5071,6 +5074,17 @@ log and this option does nothing anymore.",
|
|||||||
"How many files at the maximum InnoDB keeps open at the same time.",
|
"How many files at the maximum InnoDB keeps open at the same time.",
|
||||||
(gptr*) &innobase_open_files, (gptr*) &innobase_open_files, 0,
|
(gptr*) &innobase_open_files, (gptr*) &innobase_open_files, 0,
|
||||||
GET_LONG, REQUIRED_ARG, 300L, 10L, ~0L, 0, 1L, 0},
|
GET_LONG, REQUIRED_ARG, 300L, 10L, ~0L, 0, 1L, 0},
|
||||||
|
{"innodb_sync_spin_loops", OPT_INNODB_SYNC_SPIN_LOOPS,
|
||||||
|
"Count of spin-loop rounds in InnoDB mutexes",
|
||||||
|
(gptr*) &srv_n_spin_wait_rounds,
|
||||||
|
(gptr*) &srv_n_spin_wait_rounds,
|
||||||
|
0, GET_LONG, REQUIRED_ARG, 20L, 0L, ~0L, 0, 1L, 0},
|
||||||
|
{"innodb_concurrency_tickets", OPT_INNODB_CONCURRENCY_TICKETS,
|
||||||
|
"Number of times a thread is allowed to enter InnoDB within the same \
|
||||||
|
SQL query after it has once got the ticket",
|
||||||
|
(gptr*) &srv_n_free_tickets_to_enter,
|
||||||
|
(gptr*) &srv_n_free_tickets_to_enter,
|
||||||
|
0, GET_LONG, REQUIRED_ARG, 500L, 1L, ~0L, 0, 1L, 0},
|
||||||
#ifdef HAVE_REPLICATION
|
#ifdef HAVE_REPLICATION
|
||||||
/*
|
/*
|
||||||
Disabled for the 4.1.3 release. Disabling just this paragraph of code is
|
Disabled for the 4.1.3 release. Disabling just this paragraph of code is
|
||||||
@@ -5093,8 +5107,14 @@ log and this option does nothing anymore.",
|
|||||||
#endif
|
#endif
|
||||||
{"innodb_thread_concurrency", OPT_INNODB_THREAD_CONCURRENCY,
|
{"innodb_thread_concurrency", OPT_INNODB_THREAD_CONCURRENCY,
|
||||||
"Helps in performance tuning in heavily concurrent environments.",
|
"Helps in performance tuning in heavily concurrent environments.",
|
||||||
(gptr*) &innobase_thread_concurrency, (gptr*) &innobase_thread_concurrency,
|
(gptr*) &srv_thread_concurrency, (gptr*) &srv_thread_concurrency,
|
||||||
0, GET_LONG, REQUIRED_ARG, 8, 1, 1000, 0, 1, 0},
|
0, GET_LONG, REQUIRED_ARG, 8, 1, 1000, 0, 1, 0},
|
||||||
|
{"innodb_thread_sleep_delay", OPT_INNODB_THREAD_SLEEP_DELAY,
|
||||||
|
"Time of innodb thread sleeping before joining InnoDB queue (usec). Value 0"
|
||||||
|
" disable a sleep",
|
||||||
|
(gptr*) &srv_thread_sleep_delay,
|
||||||
|
(gptr*) &srv_thread_sleep_delay,
|
||||||
|
0, GET_LONG, REQUIRED_ARG, 10000L, 0L, ~0L, 0, 1L, 0},
|
||||||
#endif /* HAVE_INNOBASE_DB */
|
#endif /* HAVE_INNOBASE_DB */
|
||||||
{"interactive_timeout", OPT_INTERACTIVE_TIMEOUT,
|
{"interactive_timeout", OPT_INTERACTIVE_TIMEOUT,
|
||||||
"The number of seconds the server waits for activity on an interactive connection before closing it.",
|
"The number of seconds the server waits for activity on an interactive connection before closing it.",
|
||||||
|
|||||||
@@ -378,6 +378,14 @@ sys_var_thd_bool sys_innodb_table_locks("innodb_table_locks",
|
|||||||
&SV::innodb_table_locks);
|
&SV::innodb_table_locks);
|
||||||
sys_var_long_ptr sys_innodb_autoextend_increment("innodb_autoextend_increment",
|
sys_var_long_ptr sys_innodb_autoextend_increment("innodb_autoextend_increment",
|
||||||
&srv_auto_extend_increment);
|
&srv_auto_extend_increment);
|
||||||
|
sys_var_long_ptr sys_innodb_sync_spin_loops("innodb_sync_spin_loops",
|
||||||
|
&srv_n_spin_wait_rounds);
|
||||||
|
sys_var_long_ptr sys_innodb_concurrency_tickets("innodb_concurrency_tickets",
|
||||||
|
&srv_n_free_tickets_to_enter);
|
||||||
|
sys_var_long_ptr sys_innodb_thread_sleep_delay("innodb_thread_sleep_delay",
|
||||||
|
&srv_thread_sleep_delay);
|
||||||
|
sys_var_long_ptr sys_innodb_thread_concurrency("innodb_thread_concurrency",
|
||||||
|
&srv_thread_concurrency);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_NDBCLUSTER_DB
|
#ifdef HAVE_NDBCLUSTER_DB
|
||||||
@@ -651,6 +659,10 @@ sys_var *sys_variables[]=
|
|||||||
&sys_innodb_table_locks,
|
&sys_innodb_table_locks,
|
||||||
&sys_innodb_max_purge_lag,
|
&sys_innodb_max_purge_lag,
|
||||||
&sys_innodb_autoextend_increment,
|
&sys_innodb_autoextend_increment,
|
||||||
|
&sys_innodb_sync_spin_loops,
|
||||||
|
&sys_innodb_concurrency_tickets,
|
||||||
|
&sys_innodb_thread_sleep_delay,
|
||||||
|
&sys_innodb_thread_concurrency,
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_NDBCLUSTER_DB
|
#ifdef HAVE_NDBCLUSTER_DB
|
||||||
&sys_ndb_autoincrement_prefetch_sz,
|
&sys_ndb_autoincrement_prefetch_sz,
|
||||||
@@ -742,6 +754,7 @@ struct show_var_st init_vars[]= {
|
|||||||
{"innodb_data_home_dir", (char*) &innobase_data_home_dir, SHOW_CHAR_PTR},
|
{"innodb_data_home_dir", (char*) &innobase_data_home_dir, SHOW_CHAR_PTR},
|
||||||
{"innodb_doublewrite", (char*) &innobase_use_doublewrite, SHOW_MY_BOOL},
|
{"innodb_doublewrite", (char*) &innobase_use_doublewrite, SHOW_MY_BOOL},
|
||||||
{"innodb_checksums", (char*) &innobase_use_checksums, SHOW_MY_BOOL},
|
{"innodb_checksums", (char*) &innobase_use_checksums, SHOW_MY_BOOL},
|
||||||
|
{sys_innodb_concurrency_tickets.name, (char*) &sys_innodb_concurrency_tickets, SHOW_SYS},
|
||||||
{"innodb_fast_shutdown", (char*) &innobase_fast_shutdown, SHOW_MY_BOOL},
|
{"innodb_fast_shutdown", (char*) &innobase_fast_shutdown, SHOW_MY_BOOL},
|
||||||
{"innodb_file_io_threads", (char*) &innobase_file_io_threads, SHOW_LONG },
|
{"innodb_file_io_threads", (char*) &innobase_file_io_threads, SHOW_LONG },
|
||||||
{"innodb_file_per_table", (char*) &innobase_file_per_table, SHOW_MY_BOOL},
|
{"innodb_file_per_table", (char*) &innobase_file_per_table, SHOW_MY_BOOL},
|
||||||
@@ -760,8 +773,10 @@ struct show_var_st init_vars[]= {
|
|||||||
{sys_innodb_max_purge_lag.name, (char*) &sys_innodb_max_purge_lag, SHOW_SYS},
|
{sys_innodb_max_purge_lag.name, (char*) &sys_innodb_max_purge_lag, SHOW_SYS},
|
||||||
{"innodb_mirrored_log_groups", (char*) &innobase_mirrored_log_groups, SHOW_LONG},
|
{"innodb_mirrored_log_groups", (char*) &innobase_mirrored_log_groups, SHOW_LONG},
|
||||||
{"innodb_open_files", (char*) &innobase_open_files, SHOW_LONG },
|
{"innodb_open_files", (char*) &innobase_open_files, SHOW_LONG },
|
||||||
|
{sys_innodb_thread_concurrency.name, (char*) &sys_innodb_thread_concurrency, SHOW_SYS},
|
||||||
|
{sys_innodb_thread_sleep_delay.name, (char*) &sys_innodb_thread_sleep_delay, SHOW_SYS},
|
||||||
|
{sys_innodb_sync_spin_loops.name, (char*) &sys_innodb_sync_spin_loops, SHOW_SYS},
|
||||||
{sys_innodb_table_locks.name, (char*) &sys_innodb_table_locks, SHOW_SYS},
|
{sys_innodb_table_locks.name, (char*) &sys_innodb_table_locks, SHOW_SYS},
|
||||||
{"innodb_thread_concurrency", (char*) &innobase_thread_concurrency, SHOW_LONG },
|
|
||||||
#endif
|
#endif
|
||||||
{sys_interactive_timeout.name,(char*) &sys_interactive_timeout, SHOW_SYS},
|
{sys_interactive_timeout.name,(char*) &sys_interactive_timeout, SHOW_SYS},
|
||||||
{sys_join_buffer_size.name, (char*) &sys_join_buffer_size, SHOW_SYS},
|
{sys_join_buffer_size.name, (char*) &sys_join_buffer_size, SHOW_SYS},
|
||||||
|
|||||||
@@ -1613,7 +1613,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||||||
table_list.schema_table= schema_table;
|
table_list.schema_table= schema_table;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* command not cachable => no gap for data base name */
|
thd->query_length= strlen(packet); // for simplicity: don't optimize
|
||||||
if (!(thd->query=fields=thd->memdup(packet,thd->query_length+1)))
|
if (!(thd->query=fields=thd->memdup(packet,thd->query_length+1)))
|
||||||
break;
|
break;
|
||||||
mysql_log.write(thd,command,"%s %s",table_list.table_name, fields);
|
mysql_log.write(thd,command,"%s %s",table_list.table_name, fields);
|
||||||
|
|||||||
@@ -12481,6 +12481,30 @@ static void test_truncation_option()
|
|||||||
mysql_stmt_close(stmt);
|
mysql_stmt_close(stmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Bug#6761 - mysql_list_fields doesn't work */
|
||||||
|
|
||||||
|
static void test_bug6761(void)
|
||||||
|
{
|
||||||
|
const char *stmt_text;
|
||||||
|
MYSQL_RES *res;
|
||||||
|
int rc;
|
||||||
|
myheader("test_bug6761");
|
||||||
|
|
||||||
|
stmt_text= "CREATE TABLE t1 (a int, b char(255), c decimal)";
|
||||||
|
rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
res= mysql_list_fields(mysql, "t1", "%");
|
||||||
|
DIE_UNLESS(res && mysql_num_fields(res) == 3);
|
||||||
|
mysql_free_result(res);
|
||||||
|
|
||||||
|
stmt_text= "DROP TABLE t1";
|
||||||
|
rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
|
||||||
|
myquery(rc);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Read and parse arguments and MySQL options from my.cnf
|
Read and parse arguments and MySQL options from my.cnf
|
||||||
*/
|
*/
|
||||||
@@ -12687,6 +12711,7 @@ static struct my_tests_st my_tests[]= {
|
|||||||
{ "test_bug4172", test_bug4172 },
|
{ "test_bug4172", test_bug4172 },
|
||||||
{ "test_conversion", test_conversion },
|
{ "test_conversion", test_conversion },
|
||||||
{ "test_rewind", test_rewind },
|
{ "test_rewind", test_rewind },
|
||||||
|
{ "test_bug6761", test_bug6761 },
|
||||||
{ "test_view", test_view },
|
{ "test_view", test_view },
|
||||||
{ "test_view_where", test_view_where },
|
{ "test_view_where", test_view_where },
|
||||||
{ "test_view_2where", test_view_2where },
|
{ "test_view_2where", test_view_2where },
|
||||||
|
|||||||
Reference in New Issue
Block a user