64
65
#include <drizzled/memory/multi_malloc.h>
65
66
#include <drizzled/pthread_globals.h>
66
67
#include <drizzled/named_savepoint.h>
68
#include <drizzled/session/table_messages.h>
68
69
#include <drizzled/transaction_services.h>
69
70
#include <drizzled/message/statement_transform.h>
71
#include <drizzled/cached_directory.h>
72
#include <drizzled/statistics_variables.h>
73
#include <drizzled/system_variables.h>
74
#include <drizzled/session/times.h>
75
#include <drizzled/session/transactions.h>
76
#include <drizzled/typelib.h>
71
78
#include <boost/algorithm/string.hpp>
72
79
#include <boost/program_options.hpp>
174
181
static additional_mem_pool_constraint innobase_additional_mem_pool_size;
175
182
typedef constrained_check<unsigned int, 1000, 1> autoextend_constraint;
176
183
static autoextend_constraint innodb_auto_extend_increment;
177
typedef constrained_check<size_t, SIZE_MAX, 5242880, 1048576> buffer_pool_constraint;
184
typedef constrained_check<size_t, SIZE_MAX, 33554432, 1048576> buffer_pool_constraint;
178
185
static buffer_pool_constraint innobase_buffer_pool_size;
179
186
typedef constrained_check<uint32_t, MAX_BUFFER_POOLS, 1> buffer_pool_instances_constraint;
180
187
static buffer_pool_instances_constraint innobase_buffer_pool_instances;
188
typedef constrained_check<uint32_t,
189
(1 << UNIV_PAGE_SIZE_SHIFT_MAX),
190
(1 << 12)> page_size_constraint;
191
static page_size_constraint innobase_page_size;
192
typedef constrained_check<uint32_t,
193
(1 << UNIV_PAGE_SIZE_SHIFT_MAX),
194
(1 << 9)> log_block_size_constraint;
195
static log_block_size_constraint innobase_log_block_size;
181
196
typedef constrained_check<uint32_t, UINT32_MAX, 100> io_capacity_constraint;
182
197
static io_capacity_constraint innodb_io_capacity;
183
198
typedef constrained_check<uint32_t, 5000, 1> purge_batch_constraint;
216
233
typedef constrained_check<uint32_t, 64, 0> read_ahead_threshold_constraint;
217
234
static read_ahead_threshold_constraint innodb_read_ahead_threshold;
236
static uint64_constraint ibuf_max_size;
238
typedef constrained_check<uint32_t, 1, 0> binary_constraint;
239
static binary_constraint ibuf_active_contract;
241
typedef constrained_check<uint32_t, 999999999, 100> ibuf_accel_rate_constraint;
242
static ibuf_accel_rate_constraint ibuf_accel_rate;
243
static uint32_constraint checkpoint_age_target;
244
static binary_constraint flush_neighbor_pages;
246
static string sysvar_transaction_log_use_replicator;
219
248
/* The default values for the following char* start-up parameters
220
249
are determined in innobase_init below: */
285
316
"all" /* IBUF_USE_ALL */
319
/** Allowed values of read_ahead */
320
static const char* read_ahead_names[] = {
325
/* For compatibility with the older Percona patch */
326
"0", /* 4 ("none" + 4) */
329
"3", /* 7 ("both" + 4) */
333
static TYPELIB read_ahead_typelib = {
334
array_elements(read_ahead_names) - 1, "read_ahead_typelib",
335
read_ahead_names, NULL
338
/** Allowed values of adaptive_flushing_method */
339
static const char* adaptive_flushing_method_names[] = {
342
"keep_average", /* 2 */
343
/* For compatibility with the older Percona patch */
344
"0", /* 3 ("native" + 3) */
345
"1", /* 4 ("estimate" + 3) */
346
"2", /* 5 ("keep_average" + 3) */
350
static TYPELIB adaptive_flushing_method_typelib = {
351
array_elements(adaptive_flushing_method_names) - 1,
352
"adaptive_flushing_method_typelib",
353
adaptive_flushing_method_names, NULL
288
356
/* "GEN_CLUST_INDEX" is the name reserved for Innodb default
289
357
system primary index. */
290
358
static const char innobase_index_reserve_name[]= "GEN_CLUST_INDEX";
963
1029
uint64_t end_timestamp= message.transaction_context().end_timestamp();
964
1030
bool is_end_segment= message.end_segment();
965
1031
trx->log_commit_id= TRUE;
1033
string server_uuid= session.getServerUUID();
1034
string originating_server_uuid= session.getOriginatingServerUUID();
1035
uint64_t originating_commit_id= session.getOriginatingCommitID();
1036
bool use_originating_server_uuid= session.isOriginatingServerUUIDSet();
966
1038
ulint error= insert_replication_message(data, message.ByteSize(), trx, trx_id,
967
end_timestamp, is_end_segment, seg_id);
1039
end_timestamp, is_end_segment, seg_id, server_uuid.c_str(),
1040
use_originating_server_uuid, originating_server_uuid.c_str(),
1041
originating_commit_id);
1865
1940
srv_read_ahead_threshold= innodb_read_ahead_threshold.get();
1943
static void auto_lru_dump_update(Session *, sql_var_t)
1945
srv_auto_lru_dump= buffer_pool_restore_at_startup.get();
1948
static void ibuf_active_contract_update(Session *, sql_var_t)
1950
srv_ibuf_active_contract= ibuf_active_contract.get();
1953
static void ibuf_accel_rate_update(Session *, sql_var_t)
1955
srv_ibuf_accel_rate= ibuf_accel_rate.get();
1958
static void checkpoint_age_target_update(Session *, sql_var_t)
1960
srv_checkpoint_age_target= checkpoint_age_target.get();
1963
static void flush_neighbor_pages_update(Session *, sql_var_t)
1965
srv_flush_neighbor_pages= flush_neighbor_pages.get();
1869
1968
static int innodb_commit_concurrency_validate(Session *session, set_var *var)
2104
/*********************************************************************//**
2105
Check if argument is a valid value for srv_read_ahead and set it. This
2106
function is registered as a callback with MySQL.
2107
@return 0 for valid read_ahead value */
2110
read_ahead_validate(
2111
/*================*/
2112
Session*, /*!< in: thread handle */
2115
const char *read_ahead_input = var->value->str_value.ptr();
2116
int res = read_ahead_typelib.find_type(read_ahead_input, TYPELIB::e_none); // e_none is wrong
2119
srv_read_ahead = res - 1;
2126
/*********************************************************************//**
2127
Check if argument is a valid value for srv_adaptive_flushing_method and
2128
set it. This function is registered as a callback with MySQL.
2129
@return 0 for valid read_ahead value */
2132
adaptive_flushing_method_validate(
2133
/*==============================*/
2134
Session*, /*!< in: thread handle */
2137
const char *adaptive_flushing_method_input = var->value->str_value.ptr();
2138
int res = adaptive_flushing_method_typelib.find_type(adaptive_flushing_method_input, TYPELIB::e_none); // e_none is wrong
2141
srv_adaptive_flushing_method = res - 1;
2006
2148
/*********************************************************************//**
2007
2149
Opens an InnoDB database.
2033
2175
srv_spin_wait_delay= innodb_spin_wait_delay.get();
2034
2176
srv_thread_sleep_delay= innodb_thread_sleep_delay.get();
2035
2177
srv_read_ahead_threshold= innodb_read_ahead_threshold.get();
2178
srv_auto_lru_dump= buffer_pool_restore_at_startup.get();
2179
srv_ibuf_max_size= ibuf_max_size.get();
2180
srv_ibuf_active_contract= ibuf_active_contract.get();
2181
srv_ibuf_accel_rate= ibuf_accel_rate.get();
2182
srv_checkpoint_age_target= checkpoint_age_target.get();
2183
srv_flush_neighbor_pages= flush_neighbor_pages.get();
2185
srv_read_ahead = read_ahead_typelib.find_type_or_exit(vm["read-ahead"].as<string>().c_str(),
2186
"read_ahead_typelib") + 1;
2188
srv_adaptive_flushing_method = adaptive_flushing_method_typelib.find_type_or_exit(vm["adaptive-flushing-method"].as<string>().c_str(),
2189
"adaptive_flushing_method_typelib") + 1;
2037
2191
/* Inverted Booleans */
2039
innobase_use_checksums= (vm.count("disable-checksums")) ? false : true;
2040
innobase_use_doublewrite= (vm.count("disable-doublewrite")) ? false : true;
2041
srv_adaptive_flushing= (vm.count("disable-adaptive-flushing")) ? false : true;
2042
srv_use_sys_malloc= (vm.count("use-internal-malloc")) ? false : true;
2043
srv_use_native_aio= (vm.count("disable-native-aio")) ? false : true;
2044
support_xa= (vm.count("disable-xa")) ? false : true;
2045
btr_search_enabled= (vm.count("disable-adaptive-hash-index")) ? false : true;
2193
innobase_use_checksums= not vm.count("disable-checksums");
2194
innobase_use_doublewrite= not vm.count("disable-doublewrite");
2195
srv_adaptive_flushing= not vm.count("disable-adaptive-flushing");
2196
srv_use_sys_malloc= not vm.count("use-internal-malloc");
2197
srv_use_native_aio= not vm.count("disable-native-aio");
2198
support_xa= not vm.count("disable-xa");
2199
btr_search_enabled= not vm.count("disable-adaptive-hash-index");
2048
2201
/* Hafta do this here because we need to late-bind the default value */
2049
if (vm.count("data-home-dir"))
2051
innobase_data_home_dir= vm["data-home-dir"].as<string>();
2055
innobase_data_home_dir= getDataHome().file_string();
2202
innobase_data_home_dir= vm.count("data-home-dir") ? vm["data-home-dir"].as<string>() : getDataHome().file_string();
2059
2204
if (vm.count("data-file-path"))
2086
2231
#endif /* UNIV_DEBUG */
2234
srv_page_size_shift = 0;
2236
uint32_t page_size = innobase_page_size.get();
2237
uint32_t log_block_size = innobase_log_block_size.get();
2239
if (innobase_page_size != (1 << 14)) {
2242
errmsg_printf(error::WARN,
2243
"InnoDB: Warning: innodb_page_size has been changed from default value 16384. (###EXPERIMENTAL### operation)\n");
2244
for (n_shift = 12; n_shift <= UNIV_PAGE_SIZE_SHIFT_MAX; n_shift++) {
2245
if (innobase_page_size == (1UL << n_shift)) {
2246
srv_page_size_shift = n_shift;
2247
srv_page_size = (1 << srv_page_size_shift);
2248
errmsg_printf(error::WARN,
2249
"InnoDB: The universal page size of the database is set to %lu.\n",
2255
srv_page_size_shift = 14;
2256
srv_page_size = (1 << srv_page_size_shift);
2259
if (!srv_page_size_shift) {
2260
errmsg_printf(error::ERROR,
2261
"InnoDB: Error: %"PRIu32" is not a valid value for innodb_page_size.\n"
2262
"InnoDB: Error: Valid values are 4096, 8192, and 16384 (default=16384).\n",
2267
srv_log_block_size = 0;
2268
if (log_block_size != (1 << 9)) { /*!=512*/
2271
errmsg_printf(error::WARN,
2272
"InnoDB: Warning: innodb_log_block_size has been changed from default value 512. (###EXPERIMENTAL### operation)\n");
2273
for (n_shift = 9; n_shift <= UNIV_PAGE_SIZE_SHIFT_MAX; n_shift++) {
2274
if (log_block_size == (1UL << n_shift)) {
2275
srv_log_block_size = (1 << n_shift);
2276
errmsg_printf(error::WARN, "InnoDB: The log block size is set to %"PRIu32".\n",
2277
srv_log_block_size);
2282
srv_log_block_size = 512;
2285
if (!srv_log_block_size) {
2286
errmsg_printf(error::ERROR,
2287
"InnoDB: Error: %"PRIu32" is not a valid value for innodb_log_block_size.\n"
2288
"InnoDB: Error: A valid value for innodb_log_block_size is\n"
2289
"InnoDB: Error: a power of 2 from 512 to 16384.\n",
2088
2294
os_innodb_umask = (ulint)internal::my_umask;
2288
2496
actuall_engine_ptr->dropTemporarySchema();
2290
2498
context.add(new InnodbStatusTool);
2292
2499
context.add(innodb_engine_ptr);
2294
context.add(new(std::nothrow)CmpTool(false));
2296
context.add(new(std::nothrow)CmpTool(true));
2298
context.add(new(std::nothrow)CmpmemTool(false));
2300
context.add(new(std::nothrow)CmpmemTool(true));
2302
context.add(new(std::nothrow)InnodbTrxTool("INNODB_TRX"));
2304
context.add(new(std::nothrow)InnodbTrxTool("INNODB_LOCKS"));
2306
context.add(new(std::nothrow)InnodbTrxTool("INNODB_LOCK_WAITS"));
2308
context.add(new(std::nothrow)InnodbSysTablesTool());
2310
context.add(new(std::nothrow)InnodbSysTableStatsTool());
2312
context.add(new(std::nothrow)InnodbSysIndexesTool());
2314
context.add(new(std::nothrow)InnodbSysColumnsTool());
2316
context.add(new(std::nothrow)InnodbSysFieldsTool());
2318
context.add(new(std::nothrow)InnodbSysForeignTool());
2320
context.add(new(std::nothrow)InnodbSysForeignColsTool());
2322
context.add(new(std::nothrow)InnodbInternalTables());
2323
context.add(new(std::nothrow)InnodbReplicationTable());
2500
context.add(new CmpTool(false));
2501
context.add(new CmpTool(true));
2502
context.add(new CmpmemTool(false));
2503
context.add(new CmpmemTool(true));
2504
context.add(new InnodbTrxTool("INNODB_TRX"));
2505
context.add(new InnodbTrxTool("INNODB_LOCKS"));
2506
context.add(new InnodbTrxTool("INNODB_LOCK_WAITS"));
2507
context.add(new InnodbSysTablesTool());
2508
context.add(new InnodbSysTableStatsTool());
2509
context.add(new InnodbSysIndexesTool());
2510
context.add(new InnodbSysColumnsTool());
2511
context.add(new InnodbSysFieldsTool());
2512
context.add(new InnodbSysForeignTool());
2513
context.add(new InnodbSysForeignColsTool());
2514
context.add(new InnodbInternalTables());
2515
context.add(new InnodbReplicationTable());
2325
2517
if (innobase_use_replication_log)
2327
ReplicationLog *replication_logger= new(std::nothrow)ReplicationLog();
2519
ReplicationLog *replication_logger= new ReplicationLog();
2328
2520
context.add(replication_logger);
2329
ReplicationLog::setup(replication_logger);
2521
ReplicationLog::setup(replication_logger, sysvar_transaction_log_use_replicator);
2332
2524
context.registerVariable(new sys_var_const_string_val("data-home-dir", innobase_data_home_dir));
2376
2568
innodb_file_format_max_validate));
2377
2569
context.registerVariable(new sys_var_constrained_value_readonly<size_t>("buffer_pool_size", innobase_buffer_pool_size));
2378
2570
context.registerVariable(new sys_var_constrained_value_readonly<int64_t>("log_file_size", innobase_log_file_size));
2571
context.registerVariable(new sys_var_constrained_value_readonly<uint32_t>("page_size", innobase_page_size));
2572
context.registerVariable(new sys_var_constrained_value_readonly<uint32_t>("log_block_size", innobase_log_block_size));
2379
2573
context.registerVariable(new sys_var_constrained_value_readonly<uint32_t>("flush_log_at_trx_commit",
2380
2574
innodb_flush_log_at_trx_commit));
2381
2575
context.registerVariable(new sys_var_constrained_value_readonly<unsigned int>("max_dirty_pages_pct",
2410
2604
context.registerVariable(new sys_var_constrained_value<uint32_t>("read_ahead_threshold",
2411
2605
innodb_read_ahead_threshold,
2412
2606
innodb_read_ahead_threshold_update));
2607
context.registerVariable(new sys_var_constrained_value<uint32_t>("auto_lru_dump",
2608
buffer_pool_restore_at_startup,
2609
auto_lru_dump_update));
2610
context.registerVariable(new sys_var_constrained_value_readonly<uint64_t>("ibuf_max_size",
2612
context.registerVariable(new sys_var_constrained_value<uint32_t>("ibuf_active_contract",
2613
ibuf_active_contract,
2614
ibuf_active_contract_update));
2615
context.registerVariable(new sys_var_constrained_value<uint32_t>("ibuf_accel_rate",
2617
ibuf_accel_rate_update));
2618
context.registerVariable(new sys_var_constrained_value<uint32_t>("checkpoint_age_target",
2619
checkpoint_age_target,
2620
checkpoint_age_target_update));
2621
context.registerVariable(new sys_var_constrained_value<uint32_t>("flush_neighbor_pages",
2622
flush_neighbor_pages,
2623
flush_neighbor_pages_update));
2624
context.registerVariable(new sys_var_std_string("read_ahead",
2626
read_ahead_validate));
2627
context.registerVariable(new sys_var_std_string("adaptive_flushing_method",
2628
adaptive_flushing_method,
2629
adaptive_flushing_method_validate));
2413
2630
/* Get the current high water mark format. */
2414
2631
innobase_file_format_max = trx_sys_file_format_max_get();
2415
2632
btr_search_fully_disabled = (!btr_search_enabled);
2634
context.registerVariable(new sys_var_const_string("use-replicator",
2635
sysvar_transaction_log_use_replicator));
7677
7880
db_name[i] = 0;
7678
7881
ulen= identifier::Table::filename_to_tablename(db_name, uname, sizeof(uname));
7679
LEX_STRING *tmp_referenced_db = session->make_lex_string(NULL, uname, ulen, true);
7882
lex_string_t *tmp_referenced_db = session->make_lex_string(NULL, str_ref(uname, ulen));
7681
7884
/* Table name */
7682
7885
tmp_buff += i + 1;
7683
7886
ulen= identifier::Table::filename_to_tablename(tmp_buff, uname, sizeof(uname));
7684
LEX_STRING *tmp_referenced_table = session->make_lex_string(NULL, uname, ulen, true);
7887
lex_string_t *tmp_referenced_table = session->make_lex_string(NULL, str_ref(uname, ulen));
7686
7889
/** Foreign Fields **/
7687
List<LEX_STRING> tmp_foreign_fields;
7688
List<LEX_STRING> tmp_referenced_fields;
7690
tmp_buff= foreign->foreign_col_names[i];
7691
name = session->make_lex_string(name, tmp_buff, strlen(tmp_buff), true);
7692
tmp_foreign_fields.push_back(name);
7693
tmp_buff= foreign->referenced_col_names[i];
7694
name = session->make_lex_string(name, tmp_buff, strlen(tmp_buff), true);
7695
tmp_referenced_fields.push_back(name);
7890
List<lex_string_t> tmp_foreign_fields;
7891
List<lex_string_t> tmp_referenced_fields;
7894
tmp_foreign_fields.push_back(session->make_lex_string(NULL, str_ref(foreign->foreign_col_names[i])));
7895
tmp_referenced_fields.push_back(session->make_lex_string(NULL, str_ref(foreign->referenced_col_names[i])));
7696
7896
if (++i >= foreign->n_fields)
7701
7900
if (foreign->type & DICT_FOREIGN_ON_DELETE_CASCADE)
7704
7901
tmp_buff= "CASCADE";
7706
7902
else if (foreign->type & DICT_FOREIGN_ON_DELETE_SET_NULL)
7709
7903
tmp_buff= "SET NULL";
7711
7904
else if (foreign->type & DICT_FOREIGN_ON_DELETE_NO_ACTION)
7714
7905
tmp_buff= "NO ACTION";
7719
7907
tmp_buff= "RESTRICT";
7721
LEX_STRING *tmp_delete_method = session->make_lex_string(NULL, tmp_buff, length, true);
7908
lex_string_t *tmp_delete_method = session->make_lex_string(NULL, str_ref(tmp_buff));
7724
7910
if (foreign->type & DICT_FOREIGN_ON_UPDATE_CASCADE)
7727
7911
tmp_buff= "CASCADE";
7729
7912
else if (foreign->type & DICT_FOREIGN_ON_UPDATE_SET_NULL)
7732
7913
tmp_buff= "SET NULL";
7734
7914
else if (foreign->type & DICT_FOREIGN_ON_UPDATE_NO_ACTION)
7737
7915
tmp_buff= "NO ACTION";
7742
7917
tmp_buff= "RESTRICT";
7744
LEX_STRING *tmp_update_method = session->make_lex_string(NULL, tmp_buff, length, true);
7746
LEX_STRING *tmp_referenced_key_name = NULL;
7748
if (foreign->referenced_index &&
7749
foreign->referenced_index->name)
7751
tmp_referenced_key_name = session->make_lex_string(NULL,
7752
foreign->referenced_index->name, strlen(foreign->referenced_index->name), true);
7918
lex_string_t *tmp_update_method = session->make_lex_string(NULL, str_ref(tmp_buff));
7920
lex_string_t *tmp_referenced_key_name = foreign->referenced_index && foreign->referenced_index->name
7921
? session->make_lex_string(NULL, str_ref(foreign->referenced_index->name))
7755
7924
ForeignKeyInfo f_key_info(
7756
tmp_foreign_id, tmp_referenced_db, tmp_referenced_table,
7757
tmp_update_method, tmp_delete_method, tmp_referenced_key_name,
7758
tmp_foreign_fields, tmp_referenced_fields);
7925
tmp_foreign_id, tmp_referenced_db, tmp_referenced_table,
7926
tmp_update_method, tmp_delete_method, tmp_referenced_key_name,
7927
tmp_foreign_fields, tmp_referenced_fields);
7760
ForeignKeyInfo *pf_key_info = (ForeignKeyInfo *)
7761
session->getMemRoot()->duplicate(&f_key_info, sizeof(ForeignKeyInfo));
7762
f_key_list->push_back(pf_key_info);
7929
f_key_list->push_back((ForeignKeyInfo*)session->mem.memdup(&f_key_info, sizeof(ForeignKeyInfo)));
7763
7930
foreign = UT_LIST_GET_NEXT(foreign_list, foreign);
7765
7932
mutex_exit(&(dict_sys->mutex));
7766
prebuilt->trx->op_info = (char*)"";
7933
prebuilt->trx->op_info = "";
7771
7938
/*****************************************************************//**
9211
9375
context("log-file-size",
9212
9376
po::value<log_file_constraint>(&innobase_log_file_size)->default_value(20*1024*1024L),
9213
9377
"The size of the buffer which InnoDB uses to write log to the log files on disk.");
9378
context("page-size",
9379
po::value<page_size_constraint>(&innobase_page_size)->default_value(1 << 14),
9380
"###EXPERIMENTAL###: The universal page size of the database. Changing for created database is not supported. Use on your own risk!");
9381
context("log-block-size",
9382
po::value<log_block_size_constraint>(&innobase_log_block_size)->default_value(1 << 9),
9383
"###EXPERIMENTAL###: The log block size of the transaction log file. Changing for created log file is not supported. Use on your own risk!");
9214
9384
context("log-files-in-group",
9215
9385
po::value<log_files_in_group_constraint>(&innobase_log_files_in_group)->default_value(2),
9216
9386
"Number of log files in the log group. InnoDB writes to the files in a circular fashion.");
9248
9418
context("read-ahead-threshold",
9249
9419
po::value<read_ahead_threshold_constraint>(&innodb_read_ahead_threshold)->default_value(56),
9250
9420
"Number of pages that must be accessed sequentially for InnoDB to trigger a readahead.");
9421
context("auto-lru-dump",
9422
po::value<uint32_constraint>(&buffer_pool_restore_at_startup)->default_value(0),
9423
"Time in seconds between automatic buffer pool dumps. "
9424
"0 (the default) disables automatic dumps.");
9425
context("ibuf-max-size",
9426
po::value<uint64_constraint>(&ibuf_max_size)->default_value(UINT64_MAX),
9427
"The maximum size of the insert buffer (in bytes).");
9428
context("ibuf-active-contract",
9429
po::value<binary_constraint>(&ibuf_active_contract)->default_value(1),
9430
"Enable/Disable active_contract of insert buffer. 0:disable 1:enable");
9431
context("ibuf-accel-rate",
9432
po::value<ibuf_accel_rate_constraint>(&ibuf_accel_rate)->default_value(100),
9433
"Tunes amount of insert buffer processing of background, in addition to innodb_io_capacity. (in percentage)");
9434
context("checkpoint-age-target",
9435
po::value<uint32_constraint>(&checkpoint_age_target)->default_value(0),
9436
"Control soft limit of checkpoint age. (0 : not control)");
9437
context("flush-neighbor-pages",
9438
po::value<binary_constraint>(&flush_neighbor_pages)->default_value(1),
9439
"Enable/Disable flushing also neighbor pages. 0:disable 1:enable");
9440
context("read-ahead",
9441
po::value<string>(&read_ahead)->default_value("linear"),
9442
"Control read ahead activity (none, random, [linear], both). [from 1.0.5: random read ahead is ignored]");
9443
context("adaptive-flushing-method",
9444
po::value<string>(&adaptive_flushing_method)->default_value("estimate"),
9445
"Choose method of innodb_adaptive_flushing. (native, [estimate], keep_average)");
9251
9446
context("disable-xa",
9252
9447
"Disable InnoDB support for the XA two-phase commit");
9253
9448
context("disable-table-locks",
9258
9453
context("replication-log",
9259
9454
po::value<bool>(&innobase_use_replication_log)->default_value(false)->zero_tokens(),
9260
9455
_("Enable internal replication log."));
9456
context("use-replicator",
9457
po::value<string>(&sysvar_transaction_log_use_replicator)->default_value(DEFAULT_USE_REPLICATOR),
9458
_("Name of the replicator plugin to use (default='default_replicator')"));
9261
9459
context("lock-wait-timeout",
9262
9460
po::value<lock_wait_constraint>(&lock_wait_timeout)->default_value(50),
9263
9461
_("Timeout in seconds an InnoDB transaction may wait for a lock before being rolled back. Values above 100000000 disable the timeout."));