1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Update Mroonga to the latest version on 2015-07-02T04:12:21+0900

This commit is contained in:
Kentoku SHIBA
2015-07-02 04:12:21 +09:00
parent 0319304893
commit 06913d0162
329 changed files with 11220 additions and 2156 deletions

View File

@@ -35,10 +35,18 @@
#include "mrn_variables.hpp"
#include <mrn_lock.hpp>
#if MYSQL_VERSION_ID >= 50603
# define MRN_HA_RESOLVE_BY_NAME(name) ha_resolve_by_name(NULL, (name), TRUE)
#ifdef MRN_MARIADB_P
# if MYSQL_VERSION_ID >= 100100
# define MRN_HA_RESOLVE_BY_NAME(name) ha_resolve_by_name(NULL, (name), TRUE)
# else
# define MRN_HA_RESOLVE_BY_NAME(name) ha_resolve_by_name(NULL, (name))
# endif
#else
# define MRN_HA_RESOLVE_BY_NAME(name) ha_resolve_by_name(NULL, (name))
# if MYSQL_VERSION_ID >= 50603
# define MRN_HA_RESOLVE_BY_NAME(name) ha_resolve_by_name(NULL, (name), TRUE)
# else
# define MRN_HA_RESOLVE_BY_NAME(name) ha_resolve_by_name(NULL, (name))
# endif
#endif
#if MYSQL_VERSION_ID >= 50706 && !defined(MRN_MARIADB_P)
@@ -68,9 +76,7 @@ extern "C" {
# ifdef MRN_TABLE_SHARE_HAVE_LOCK_SHARE
extern PSI_mutex_key *mrn_table_share_lock_share;
# endif
# ifdef MRN_TABLE_SHARE_HAVE_LOCK_HA_DATA
extern PSI_mutex_key *mrn_table_share_lock_ha_data;
# endif
# endif
extern PSI_mutex_key mrn_share_mutex_key;
extern PSI_mutex_key mrn_long_term_share_auto_inc_mutex_key;
@@ -80,7 +86,7 @@ extern HASH mrn_open_tables;
extern mysql_mutex_t mrn_open_tables_mutex;
extern HASH mrn_long_term_share;
extern mysql_mutex_t mrn_long_term_share_mutex;
extern char *mrn_default_parser;
extern char *mrn_default_tokenizer;
extern char *mrn_default_wrapper_engine;
extern handlerton *mrn_hton_ptr;
extern HASH mrn_allocated_thds;
@@ -333,8 +339,8 @@ int mrn_parse_table_param(MRN_SHARE *share, TABLE *table)
for (i = 2; i > 0; i--)
#endif
{
const char *params_string_value;
uint params_string_length;
const char *params_string_value = NULL;
uint params_string_length = 0;
switch (i)
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
@@ -515,16 +521,16 @@ int mrn_add_index_param(MRN_SHARE *share, KEY *key_info, int i)
#if MYSQL_VERSION_ID >= 50500
if (key_info->comment.length == 0)
{
if (share->key_parser[i]) {
my_free(share->key_parser[i]);
if (share->key_tokenizer[i]) {
my_free(share->key_tokenizer[i]);
}
if (
!(share->key_parser[i] = mrn_my_strdup(mrn_default_parser, MYF(MY_WME)))
) {
share->key_tokenizer[i] = mrn_my_strdup(mrn_default_tokenizer, MYF(MY_WME));
if (!share->key_tokenizer[i]) {
error = HA_ERR_OUT_OF_MEM;
goto error;
}
share->key_parser_length[i] = strlen(share->key_parser[i]);
share->key_tokenizer_length[i] = strlen(share->key_tokenizer[i]);
DBUG_RETURN(0);
}
DBUG_PRINT("info", ("mroonga create comment string"));
@@ -572,21 +578,23 @@ int mrn_add_index_param(MRN_SHARE *share, KEY *key_info, int i)
MRN_PARAM_STR_LIST("table", index_table, i);
break;
case 6:
MRN_PARAM_STR_LIST("parser", key_parser, i);
MRN_PARAM_STR_LIST("parser", key_tokenizer, i);
break;
case 9:
MRN_PARAM_STR_LIST("tokenizer", key_tokenizer, i);
break;
default:
break;
}
}
#endif
if (!share->key_parser[i]) {
if (
!(share->key_parser[i] = mrn_my_strdup(mrn_default_parser, MYF(MY_WME)))
) {
if (!share->key_tokenizer[i]) {
share->key_tokenizer[i] = mrn_my_strdup(mrn_default_tokenizer, MYF(MY_WME));
if (!share->key_tokenizer[i]) {
error = HA_ERR_OUT_OF_MEM;
goto error;
}
share->key_parser_length[i] = strlen(share->key_parser[i]);
share->key_tokenizer_length[i] = strlen(share->key_tokenizer[i]);
}
if (param_string)
@@ -687,6 +695,9 @@ int mrn_add_column_param(MRN_SHARE *share, Field *field, int i)
case 5:
MRN_PARAM_STR_LIST("flags", col_flags, i);
break;
case 12:
MRN_PARAM_STR_LIST("groonga_type", col_type, i);
break;
default:
break;
}
@@ -741,8 +752,8 @@ int mrn_free_share_alloc(
{
if (share->index_table && share->index_table[i])
my_free(share->index_table[i]);
if (share->key_parser[i])
my_free(share->key_parser[i]);
if (share->key_tokenizer[i])
my_free(share->key_tokenizer[i]);
}
for (i = 0; i < share->table_share->fields; i++)
{
@@ -817,9 +828,9 @@ error_alloc_long_term_share:
MRN_SHARE *mrn_get_share(const char *table_name, TABLE *table, int *error)
{
MRN_SHARE *share;
char *tmp_name, **index_table, **key_parser, **col_flags, **col_type;
char *tmp_name, **index_table, **key_tokenizer, **col_flags, **col_type;
uint length, *wrap_key_nr, *index_table_length;
uint *key_parser_length, *col_flags_length, *col_type_length, i, j;
uint *key_tokenizer_length, *col_flags_length, *col_type_length, i, j;
KEY *wrap_key_info;
TABLE_SHARE *wrap_table_share;
MRN_DBUG_ENTER_FUNCTION();
@@ -834,8 +845,8 @@ MRN_SHARE *mrn_get_share(const char *table_name, TABLE *table, int *error)
&tmp_name, length + 1,
&index_table, sizeof(char *) * table->s->keys,
&index_table_length, sizeof(uint) * table->s->keys,
&key_parser, sizeof(char *) * table->s->keys,
&key_parser_length, sizeof(uint) * table->s->keys,
&key_tokenizer, sizeof(char *) * table->s->keys,
&key_tokenizer_length, sizeof(uint) * table->s->keys,
&col_flags, sizeof(char *) * table->s->fields,
&col_flags_length, sizeof(uint) * table->s->fields,
&col_type, sizeof(char *) * table->s->fields,
@@ -853,8 +864,8 @@ MRN_SHARE *mrn_get_share(const char *table_name, TABLE *table, int *error)
share->table_name = tmp_name;
share->index_table = index_table;
share->index_table_length = index_table_length;
share->key_parser = key_parser;
share->key_parser_length = key_parser_length;
share->key_tokenizer = key_tokenizer;
share->key_tokenizer_length = key_tokenizer_length;
share->col_flags = col_flags;
share->col_flags_length = col_flags_length;
share->col_type = col_type;
@@ -903,6 +914,7 @@ MRN_SHARE *mrn_get_share(const char *table_name, TABLE *table, int *error)
share->wrap_primary_key = MAX_KEY;
}
memcpy(wrap_table_share, table->s, sizeof(*wrap_table_share));
mrn_init_sql_alloc(current_thd, &(wrap_table_share->mem_root));
wrap_table_share->keys = share->wrap_keys;
wrap_table_share->key_info = share->wrap_key_info;
wrap_table_share->primary_key = share->wrap_primary_key;
@@ -917,20 +929,18 @@ MRN_SHARE *mrn_get_share(const char *table_name, TABLE *table, int *error)
&(wrap_table_share->LOCK_share), MY_MUTEX_INIT_SLOW);
# endif
#endif
#ifdef MRN_TABLE_SHARE_HAVE_LOCK_HA_DATA
# ifdef WIN32
#ifdef WIN32
mysql_mutex_init(*mrn_table_share_lock_ha_data,
&(wrap_table_share->LOCK_ha_data), MY_MUTEX_INIT_FAST);
# else
#else
mysql_mutex_init(key_TABLE_SHARE_LOCK_ha_data,
&(wrap_table_share->LOCK_ha_data), MY_MUTEX_INIT_FAST);
# endif
#endif
share->wrap_table_share = wrap_table_share;
}
if (mysql_mutex_init(mrn_share_mutex_key,
&share->mutex,
&share->record_mutex,
MY_MUTEX_INIT_FAST) != 0)
{
*error = HA_ERR_OUT_OF_MEM;
@@ -953,7 +963,7 @@ MRN_SHARE *mrn_get_share(const char *table_name, TABLE *table, int *error)
error_hash_insert:
error_get_long_term_share:
mysql_mutex_destroy(&share->mutex);
mysql_mutex_destroy(&share->record_mutex);
error_init_mutex:
error_parse_table_param:
mrn_free_share_alloc(share);
@@ -973,14 +983,13 @@ int mrn_free_share(MRN_SHARE *share)
plugin_unlock(NULL, share->plugin);
mrn_free_share_alloc(share);
thr_lock_delete(&share->lock);
mysql_mutex_destroy(&share->mutex);
mysql_mutex_destroy(&share->record_mutex);
if (share->wrapper_mode) {
#ifdef MRN_TABLE_SHARE_HAVE_LOCK_SHARE
mysql_mutex_destroy(&(share->wrap_table_share->LOCK_share));
#endif
#ifdef MRN_TABLE_SHARE_HAVE_LOCK_HA_DATA
mysql_mutex_destroy(&(share->wrap_table_share->LOCK_ha_data));
#endif
free_root(&(share->wrap_table_share->mem_root), MYF(0));
}
my_free(share);
}
@@ -1114,7 +1123,7 @@ st_mrn_slot_data *mrn_get_slot_data(THD *thd, bool can_create)
if (slot_data == NULL) {
slot_data = (st_mrn_slot_data*) malloc(sizeof(st_mrn_slot_data));
slot_data->last_insert_record_id = GRN_ID_NIL;
slot_data->first_alter_share = NULL;
slot_data->first_wrap_hton = NULL;
slot_data->alter_create_info = NULL;
slot_data->disable_keys_create_info = NULL;
slot_data->alter_connect_string = NULL;
@@ -1132,22 +1141,21 @@ st_mrn_slot_data *mrn_get_slot_data(THD *thd, bool can_create)
DBUG_RETURN(slot_data);
}
void mrn_clear_alter_share(THD *thd)
void mrn_clear_slot_data(THD *thd)
{
MRN_DBUG_ENTER_FUNCTION();
st_mrn_slot_data *slot_data = mrn_get_slot_data(thd, FALSE);
if (slot_data) {
if (slot_data->first_alter_share) {
st_mrn_alter_share *tmp_alter_share;
st_mrn_alter_share *alter_share = slot_data->first_alter_share;
while (alter_share)
if (slot_data->first_wrap_hton) {
st_mrn_wrap_hton *tmp_wrap_hton;
st_mrn_wrap_hton *wrap_hton = slot_data->first_wrap_hton;
while (wrap_hton)
{
tmp_alter_share = alter_share->next;
mrn_free_tmp_table_share(alter_share->alter_share);
free(alter_share);
alter_share = tmp_alter_share;
tmp_wrap_hton = wrap_hton->next;
free(wrap_hton);
wrap_hton = tmp_wrap_hton;
}
slot_data->first_alter_share = NULL;
slot_data->first_wrap_hton = NULL;
}
slot_data->alter_create_info = NULL;
slot_data->disable_keys_create_info = NULL;