mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
Archive merge
This commit is contained in:
parent
00bd872d41
commit
9c84b9b691
2 changed files with 99 additions and 40 deletions
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
|
||||
/* Copyright (C) 2000,2004 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
|
||||
|
||||
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
|
||||
|
@ -28,7 +28,8 @@
|
|||
#define NO_HASH /* Not yet implemented */
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_BERKELEY_DB) || defined(HAVE_INNOBASE_DB)
|
||||
#if defined(HAVE_BERKELEY_DB) || defined(HAVE_INNOBASE_DB) || \
|
||||
defined(HAVE_NDBCLUSTER_DB)
|
||||
#define USING_TRANSACTIONS
|
||||
#endif
|
||||
|
||||
|
@ -80,7 +81,6 @@
|
|||
#define HA_FILE_BASED (1 << 26)
|
||||
|
||||
|
||||
|
||||
/* bits in index_flags(index_number) for what you can do with index */
|
||||
#define HA_WRONG_ASCII_ORDER 1 /* Can't use sorting through key */
|
||||
#define HA_READ_NEXT 2 /* Read next record with same key */
|
||||
|
@ -91,6 +91,13 @@
|
|||
#define HA_KEY_READ_ONLY 64 /* Support HA_EXTRA_KEYREAD */
|
||||
|
||||
|
||||
/* operations for disable/enable indexes */
|
||||
#define HA_KEY_SWITCH_NONUNIQ 0
|
||||
#define HA_KEY_SWITCH_ALL 1
|
||||
#define HA_KEY_SWITCH_NONUNIQ_SAVE 2
|
||||
#define HA_KEY_SWITCH_ALL_SAVE 3
|
||||
|
||||
|
||||
/*
|
||||
Bits in index_ddl_flags(KEY *wanted_index)
|
||||
for what ddl you can do with index
|
||||
|
@ -138,15 +145,23 @@
|
|||
|
||||
/* Table caching type */
|
||||
#define HA_CACHE_TBL_NONTRANSACT 0
|
||||
#define HA_CACHE_TBL_ASKTRANSACT 1
|
||||
#define HA_CACHE_TBL_TRANSACT 2
|
||||
#define HA_CACHE_TBL_NOCACHE 1
|
||||
#define HA_CACHE_TBL_ASKTRANSACT 2
|
||||
#define HA_CACHE_TBL_TRANSACT 4
|
||||
|
||||
enum db_type { DB_TYPE_UNKNOWN=0,DB_TYPE_DIAB_ISAM=1,
|
||||
DB_TYPE_HASH,DB_TYPE_MISAM,DB_TYPE_PISAM,
|
||||
DB_TYPE_RMS_ISAM, DB_TYPE_HEAP, DB_TYPE_ISAM,
|
||||
DB_TYPE_MRG_ISAM, DB_TYPE_MYISAM, DB_TYPE_MRG_MYISAM,
|
||||
DB_TYPE_BERKELEY_DB, DB_TYPE_INNODB, DB_TYPE_GEMINI,
|
||||
DB_TYPE_EXAMPLE_DB, DB_TYPE_ARCHIVE_DB, DB_TYPE_DEFAULT };
|
||||
|
||||
enum db_type
|
||||
{
|
||||
DB_TYPE_UNKNOWN=0,DB_TYPE_DIAB_ISAM=1,
|
||||
DB_TYPE_HASH,DB_TYPE_MISAM,DB_TYPE_PISAM,
|
||||
DB_TYPE_RMS_ISAM, DB_TYPE_HEAP, DB_TYPE_ISAM,
|
||||
DB_TYPE_MRG_ISAM, DB_TYPE_MYISAM, DB_TYPE_MRG_MYISAM,
|
||||
DB_TYPE_BERKELEY_DB, DB_TYPE_INNODB,
|
||||
DB_TYPE_GEMINI, DB_TYPE_NDBCLUSTER,
|
||||
DB_TYPE_EXAMPLE_DB,
|
||||
|
||||
DB_TYPE_DEFAULT // Must be last
|
||||
};
|
||||
|
||||
struct show_table_type_st {
|
||||
const char *type;
|
||||
|
@ -176,6 +191,7 @@ typedef struct st_thd_trans {
|
|||
void *bdb_tid;
|
||||
void *innobase_tid;
|
||||
bool innodb_active_trans;
|
||||
void *ndb_tid;
|
||||
} THD_TRANS;
|
||||
|
||||
enum enum_tx_isolation { ISO_READ_UNCOMMITTED, ISO_READ_COMMITTED,
|
||||
|
@ -218,14 +234,6 @@ typedef struct st_ha_check_opt
|
|||
} HA_CHECK_OPT;
|
||||
|
||||
|
||||
typedef struct st_key_range
|
||||
{
|
||||
const byte *key;
|
||||
uint length;
|
||||
enum ha_rkey_function flag;
|
||||
} key_range;
|
||||
|
||||
|
||||
class handler :public Sql_alloc
|
||||
{
|
||||
protected:
|
||||
|
@ -252,6 +260,7 @@ public:
|
|||
key_range save_end_range, *end_range;
|
||||
KEY_PART_INFO *range_key_part;
|
||||
int key_compare_result_on_equal;
|
||||
bool eq_range;
|
||||
|
||||
uint errkey; /* Last dup key */
|
||||
uint sortkey, key_used_on_scan;
|
||||
|
@ -313,14 +322,15 @@ public:
|
|||
{
|
||||
return (my_errno=HA_ERR_WRONG_COMMAND);
|
||||
}
|
||||
virtual int handler::read_range_first(const key_range *start_key,
|
||||
const key_range *end_key,
|
||||
bool sorted);
|
||||
virtual int handler::read_range_next(bool eq_range);
|
||||
int handler::compare_key(key_range *range);
|
||||
virtual int read_range_first(const key_range *start_key,
|
||||
const key_range *end_key,
|
||||
bool eq_range, bool sorted);
|
||||
virtual int read_range_next();
|
||||
int compare_key(key_range *range);
|
||||
virtual int ft_init()
|
||||
{ return -1; }
|
||||
virtual FT_INFO *ft_init_ext(uint flags,uint inx,const byte *key, uint keylen)
|
||||
virtual FT_INFO *ft_init_ext(uint flags,uint inx,const byte *key,
|
||||
uint keylen)
|
||||
{ return NULL; }
|
||||
virtual int ft_read(byte *buf) { return -1; }
|
||||
virtual int rnd_init(bool scan=1)=0;
|
||||
|
@ -329,11 +339,8 @@ public:
|
|||
virtual int rnd_pos(byte * buf, byte *pos)=0;
|
||||
virtual int read_first_row(byte *buf, uint primary_key);
|
||||
virtual int restart_rnd_next(byte *buf, byte *pos);
|
||||
virtual ha_rows records_in_range(int inx,
|
||||
const byte *start_key,uint start_key_len,
|
||||
enum ha_rkey_function start_search_flag,
|
||||
const byte *end_key,uint end_key_len,
|
||||
enum ha_rkey_function end_search_flag)
|
||||
virtual ha_rows records_in_range(uint inx, key_range *min_key,
|
||||
key_range *max_key)
|
||||
{ return (ha_rows) 10; }
|
||||
virtual void position(const byte *record)=0;
|
||||
virtual my_off_t row_position() { return HA_OFFSET_ERROR; }
|
||||
|
@ -364,8 +371,9 @@ public:
|
|||
*/
|
||||
virtual int restore(THD* thd, HA_CHECK_OPT* check_opt);
|
||||
virtual int dump(THD* thd, int fd = -1) { return ER_DUMP_NOT_IMPLEMENTED; }
|
||||
virtual int disable_indexes(bool all, bool save) { return HA_ERR_WRONG_COMMAND; }
|
||||
virtual int enable_indexes() { return HA_ERR_WRONG_COMMAND; }
|
||||
virtual int disable_indexes(uint mode) { return HA_ERR_WRONG_COMMAND; }
|
||||
virtual int enable_indexes(uint mode) { return HA_ERR_WRONG_COMMAND; }
|
||||
virtual int indexes_are_disabled(void) {return 0;}
|
||||
virtual void start_bulk_insert(ha_rows rows) {}
|
||||
virtual int end_bulk_insert() {return 0; }
|
||||
virtual int discard_or_import_tablespace(my_bool discard) {return -1;}
|
||||
|
@ -479,3 +487,5 @@ bool ha_flush_logs(void);
|
|||
int ha_recovery_logging(THD *thd, bool on);
|
||||
int ha_change_key_cache(KEY_CACHE *old_key_cache,
|
||||
KEY_CACHE *new_key_cache);
|
||||
int ha_discover(const char* dbname, const char* name,
|
||||
const void** frmblob, uint* frmlen);
|
||||
|
|
|
@ -32,6 +32,9 @@
|
|||
#ifdef HAVE_ISAM
|
||||
#include "ha_isam.h"
|
||||
#endif
|
||||
#ifdef HAVE_NDBCLUSTER_DB
|
||||
#include "ha_ndbcluster.h"
|
||||
#endif
|
||||
#include <nisam.h>
|
||||
#include <thr_alarm.h>
|
||||
#include <ft_global.h>
|
||||
|
@ -261,7 +264,7 @@ my_bool opt_local_infile, opt_external_locking, opt_slave_compressed_protocol;
|
|||
my_bool opt_safe_user_create = 0, opt_no_mix_types = 0;
|
||||
my_bool opt_show_slave_auth_info, opt_sql_bin_update = 0;
|
||||
my_bool opt_log_slave_updates= 0;
|
||||
my_bool opt_console= 0, opt_bdb, opt_innodb, opt_isam;
|
||||
my_bool opt_console= 0, opt_bdb, opt_innodb, opt_isam, opt_ndbcluster;
|
||||
my_bool opt_readonly, use_temp_pool, relay_log_purge;
|
||||
my_bool opt_sync_bdb_logs, opt_sync_frm;
|
||||
my_bool opt_secure_auth= 0;
|
||||
|
@ -370,7 +373,8 @@ KEY_CACHE *sql_key_cache;
|
|||
CHARSET_INFO *system_charset_info, *files_charset_info ;
|
||||
CHARSET_INFO *national_charset_info, *table_alias_charset;
|
||||
|
||||
SHOW_COMP_OPTION have_berkeley_db, have_innodb, have_isam, have_example_db, have_archive_db;
|
||||
SHOW_COMP_OPTION have_berkeley_db, have_innodb, have_isam, have_ndbcluster,
|
||||
have_example_db, have_archive_db;
|
||||
SHOW_COMP_OPTION have_raid, have_openssl, have_symlink, have_query_cache;
|
||||
SHOW_COMP_OPTION have_crypt, have_compress;
|
||||
|
||||
|
@ -2324,6 +2328,17 @@ Warning: you need to use --log-bin to make --log-slave-updates work. \
|
|||
Now disabling --log-slave-updates.");
|
||||
}
|
||||
|
||||
#ifdef HAVE_REPLICATION
|
||||
if (opt_log_slave_updates && replicate_same_server_id)
|
||||
{
|
||||
sql_print_error("\
|
||||
Error: using --replicate-same-server-id in conjunction with \
|
||||
--log-slave-updates is impossible, it would lead to infinite loops in this \
|
||||
server.");
|
||||
unireg_abort(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (opt_error_log)
|
||||
{
|
||||
if (!log_error_file_ptr[0])
|
||||
|
@ -3612,7 +3627,7 @@ enum options_mysqld
|
|||
OPT_SKIP_SLAVE_START, OPT_SKIP_INNOBASE,
|
||||
OPT_SAFEMALLOC_MEM_LIMIT, OPT_REPLICATE_DO_TABLE,
|
||||
OPT_REPLICATE_IGNORE_TABLE, OPT_REPLICATE_WILD_DO_TABLE,
|
||||
OPT_REPLICATE_WILD_IGNORE_TABLE,
|
||||
OPT_REPLICATE_WILD_IGNORE_TABLE, OPT_REPLICATE_SAME_SERVER_ID,
|
||||
OPT_DISCONNECT_SLAVE_EVENT_COUNT,
|
||||
OPT_ABORT_SLAVE_EVENT_COUNT,
|
||||
OPT_INNODB_DATA_HOME_DIR,
|
||||
|
@ -3625,7 +3640,7 @@ enum options_mysqld
|
|||
OPT_INNODB_FAST_SHUTDOWN,
|
||||
OPT_INNODB_FILE_PER_TABLE,
|
||||
OPT_SAFE_SHOW_DB,
|
||||
OPT_INNODB, OPT_ISAM, OPT_SKIP_SAFEMALLOC,
|
||||
OPT_INNODB, OPT_ISAM, OPT_NDBCLUSTER, OPT_SKIP_SAFEMALLOC,
|
||||
OPT_TEMP_POOL, OPT_TX_ISOLATION,
|
||||
OPT_SKIP_STACK_TRACE, OPT_SKIP_SYMLINKS,
|
||||
OPT_MAX_BINLOG_DUMP_EVENTS, OPT_SPORADIC_BINLOG_DUMP_FAIL,
|
||||
|
@ -3657,7 +3672,7 @@ enum options_mysqld
|
|||
OPT_MAX_SEEKS_FOR_KEY, OPT_MAX_TMP_TABLES, OPT_MAX_USER_CONNECTIONS,
|
||||
OPT_MAX_LENGTH_FOR_SORT_DATA,
|
||||
OPT_MAX_WRITE_LOCK_COUNT, OPT_BULK_INSERT_BUFFER_SIZE,
|
||||
OPT_MAX_ERROR_COUNT,
|
||||
OPT_MAX_ERROR_COUNT, OPT_MYISAM_DATA_POINTER_SIZE,
|
||||
OPT_MYISAM_BLOCK_SIZE, OPT_MYISAM_MAX_EXTRA_SORT_FILE_SIZE,
|
||||
OPT_MYISAM_MAX_SORT_FILE_SIZE, OPT_MYISAM_SORT_BUFFER_SIZE,
|
||||
OPT_NET_BUFFER_LENGTH, OPT_NET_RETRY_COUNT,
|
||||
|
@ -4086,6 +4101,15 @@ master-ssl",
|
|||
{"replicate-rewrite-db", OPT_REPLICATE_REWRITE_DB,
|
||||
"Updates to a database with a different name than the original. Example: replicate-rewrite-db=master_db_name->slave_db_name.",
|
||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#ifdef HAVE_REPLICATION
|
||||
{"replicate-same-server-id", OPT_REPLICATE_SAME_SERVER_ID,
|
||||
"In replication, if set to 1, do not skip events having our server id. \
|
||||
Default value is 0 (to break infinite loops in circular replication). \
|
||||
Can't be set to 1 if --log-slave-updates is used.",
|
||||
(gptr*) &replicate_same_server_id,
|
||||
(gptr*) &replicate_same_server_id,
|
||||
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
// In replication, we may need to tell the other servers how to connect
|
||||
{"report-host", OPT_REPORT_HOST,
|
||||
"Hostname or IP of the slave to be reported to to the master during slave registration. Will appear in the output of SHOW SLAVE HOSTS. Leave unset if you do not want the slave to register itself with the master. Note that it is not sufficient for the master to simply read the IP of the slave off the socket once the slave connects. Due to NAT and other routing issues, that IP may not be valid for connecting to the slave from the master or other hosts.",
|
||||
|
@ -4139,7 +4163,7 @@ relay logs.",
|
|||
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"show-slave-auth-info", OPT_SHOW_SLAVE_AUTH_INFO,
|
||||
"Show user and password in SHOW SLAVE HOSTS.",
|
||||
"Show user and password in SHOW SLAVE HOSTS on this master",
|
||||
(gptr*) &opt_show_slave_auth_info, (gptr*) &opt_show_slave_auth_info, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"concurrent-insert", OPT_CONCURRENT_INSERT,
|
||||
|
@ -4158,6 +4182,10 @@ Disable with --skip-innodb (will save memory).",
|
|||
Disable with --skip-isam.",
|
||||
(gptr*) &opt_isam, (gptr*) &opt_isam, 0, GET_BOOL, NO_ARG, 1, 0, 0,
|
||||
0, 0, 0},
|
||||
{"ndbcluster", OPT_NDBCLUSTER, "Enable NDB Cluster (if this version of MySQL supports it). \
|
||||
Disable with --skip-ndbcluster (will save memory).",
|
||||
(gptr*) &opt_ndbcluster, (gptr*) &opt_ndbcluster, 0, GET_BOOL, NO_ARG, 1, 0, 0,
|
||||
0, 0, 0},
|
||||
{"skip-locking", OPT_SKIP_LOCK,
|
||||
"Deprecated option, use --skip-external-locking instead.",
|
||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
@ -4507,6 +4535,11 @@ The minimum value for this variable is 4096.",
|
|||
(gptr*) &opt_myisam_block_size, 0, GET_ULONG, REQUIRED_ARG,
|
||||
MI_KEY_BLOCK_LENGTH, MI_MIN_KEY_BLOCK_LENGTH, MI_MAX_KEY_BLOCK_LENGTH,
|
||||
0, MI_MIN_KEY_BLOCK_LENGTH, 0},
|
||||
{"myisam_data_pointer_size", OPT_MYISAM_DATA_POINTER_SIZE,
|
||||
"Default pointer size to be used for MyISAM tables.",
|
||||
(gptr*) &myisam_data_pointer_size,
|
||||
(gptr*) &myisam_data_pointer_size, 0, GET_ULONG, REQUIRED_ARG,
|
||||
4, 2, 7, 0, 1, 0},
|
||||
{"myisam_max_extra_sort_file_size", OPT_MYISAM_MAX_EXTRA_SORT_FILE_SIZE,
|
||||
"Used to help MySQL to decide when to use the slow but safe key cache index create method.",
|
||||
(gptr*) &global_system_variables.myisam_max_extra_sort_file_size,
|
||||
|
@ -4828,10 +4861,13 @@ struct show_var_st status_vars[]= {
|
|||
{"Handler_rollback", (char*) &ha_rollback_count, SHOW_LONG},
|
||||
{"Handler_update", (char*) &ha_update_count, SHOW_LONG},
|
||||
{"Handler_write", (char*) &ha_write_count, SHOW_LONG},
|
||||
{"Handler_discover", (char*) &ha_discover_count, SHOW_LONG},
|
||||
{"Key_blocks_not_flushed", (char*) &dflt_key_cache_var.global_blocks_changed,
|
||||
SHOW_KEY_CACHE_LONG},
|
||||
{"Key_blocks_used", (char*) &dflt_key_cache_var.global_blocks_used,
|
||||
SHOW_KEY_CACHE_LONG},
|
||||
{"Key_blocks_used", (char*) &dflt_key_cache_var.blocks_used,
|
||||
SHOW_KEY_CACHE_CONST_LONG},
|
||||
{"Key_blocks_unused", (char*) &dflt_key_cache_var.blocks_unused,
|
||||
SHOW_KEY_CACHE_CONST_LONG},
|
||||
{"Key_read_requests", (char*) &dflt_key_cache_var.global_cache_r_requests,
|
||||
SHOW_KEY_CACHE_LONG},
|
||||
{"Key_reads", (char*) &dflt_key_cache_var.global_cache_read,
|
||||
|
@ -5131,6 +5167,11 @@ static void mysql_init_variables(void)
|
|||
#else
|
||||
have_archive_db= SHOW_OPTION_NO;
|
||||
#endif
|
||||
#ifdef HAVE_NDBCLUSTER_DB
|
||||
have_ndbcluster=SHOW_OPTION_DISABLED;
|
||||
#else
|
||||
have_ndbcluster=SHOW_OPTION_NO;
|
||||
#endif
|
||||
#ifdef USE_RAID
|
||||
have_raid=SHOW_OPTION_YES;
|
||||
#else
|
||||
|
@ -5599,6 +5640,14 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
have_isam= SHOW_OPTION_YES;
|
||||
else
|
||||
have_isam= SHOW_OPTION_DISABLED;
|
||||
#endif
|
||||
break;
|
||||
case OPT_NDBCLUSTER:
|
||||
#ifdef HAVE_NDBCLUSTER_DB
|
||||
if (opt_ndbcluster)
|
||||
have_ndbcluster=SHOW_OPTION_YES;
|
||||
else
|
||||
have_ndbcluster=SHOW_OPTION_DISABLED;
|
||||
#endif
|
||||
break;
|
||||
case OPT_INNODB:
|
||||
|
|
Loading…
Reference in a new issue