diff options
Diffstat (limited to 'storage/mroonga/ha_mroonga.hpp')
-rw-r--r-- | storage/mroonga/ha_mroonga.hpp | 79 |
1 files changed, 70 insertions, 9 deletions
diff --git a/storage/mroonga/ha_mroonga.hpp b/storage/mroonga/ha_mroonga.hpp index 224abb09732..78d5c3d2465 100644 --- a/storage/mroonga/ha_mroonga.hpp +++ b/storage/mroonga/ha_mroonga.hpp @@ -98,7 +98,13 @@ extern "C" { # define MRN_TABLE_LIST_INIT_REQUIRE_ALIAS #endif -#ifdef BIG_TABLES +#if MYSQL_VERSION_ID >= 50706 && !defined(MRN_MARIADB_P) +# define MRN_BIG_TABLES +#elif defined(BIG_TABLES) +# define MRN_BIG_TABLES +#endif + +#ifdef MRN_BIG_TABLES # define MRN_HA_ROWS_FORMAT "llu" #else # define MRN_HA_ROWS_FORMAT "lu" @@ -145,6 +151,14 @@ extern "C" { # define MRN_HAVE_TL_WRITE_ALLOW_READ #endif +#if MYSQL_VERSION_ID < 50706 || defined(MRN_MARIADB_P) +# define MRN_HAVE_TL_WRITE_DELAYED +#endif + +#if MYSQL_VERSION_ID >= 50706 && !defined(MRN_MARIADB_P) +# define MRN_HAVE_TL_WRITE_CONCURRENT_DEFAULT +#endif + #if (defined(MRN_MARIADB_P) && \ ((MYSQL_VERSION_ID >= 50306 && MYSQL_VERSION_ID < 50500) || \ MYSQL_VERSION_ID >= 50523)) @@ -179,6 +193,44 @@ extern "C" { # define MRN_HAVE_TDC_LOCK_TABLE_SHARE #endif +#ifdef MRN_MARIADB_P +# if MYSQL_VERSION_ID >= 50542 && MYSQL_VERSION_ID < 100000 +# define MRN_SUPPORT_THDVAR_SET +# elif MYSQL_VERSION_ID >= 100017 +# define MRN_SUPPORT_THDVAR_SET +# endif +#else +# define MRN_SUPPORT_THDVAR_SET +#endif + +#ifdef MRN_MARIADB_P +# if MYSQL_VERSION_ID < 100000 +# define MRN_SUPPORT_PARTITION +# endif +#else +# define MRN_SUPPORT_PARTITION +#endif + +#if MYSQL_VERSION_ID >= 50706 && !defined(MRN_MARIADB_P) +# define MRN_FLUSH_LOGS_HAVE_BINLOG_GROUP_FLUSH +#endif + +#if MYSQL_VERSION_ID < 50706 || defined(MRN_MARIADB_P) +# define MRN_HAVE_HTON_ALTER_TABLE_FLAGS +#endif + +#if MYSQL_VERSION_ID >= 50706 && !defined(MRN_MARIADB_P) +# define MRN_FOREIGN_KEY_USE_CONST_STRING +#endif + +#if MYSQL_VERSION_ID < 50706 || defined(MRN_MARIADB_P) +# define MRN_HANDLER_IS_FATAL_ERROR_HAVE_FLAGS +#endif + +#if MYSQL_VERSION_ID < 50706 || defined(MRN_MARIADB_P) +# define MRN_HANDLER_HAVE_RESET_AUTO_INCREMENT +#endif + class ha_mroonga; /* structs */ @@ -263,7 +315,6 @@ private: grn_obj **grn_column_ranges; grn_obj **grn_index_tables; grn_obj **grn_index_columns; - bool grn_table_is_referenced; // buffers grn_obj encoded_key_buffer; @@ -349,7 +400,7 @@ public: uint max_supported_record_length() const; uint max_supported_keys() const; - uint max_supported_key_parts(); + uint max_supported_key_parts() const; uint max_supported_key_length() const; uint max_supported_key_part_length() const; @@ -449,7 +500,7 @@ public: bool check_and_repair(THD *thd); int analyze(THD* thd, HA_CHECK_OPT* check_opt); int optimize(THD* thd, HA_CHECK_OPT* check_opt); - bool is_fatal_error(int error_num, uint flags); + bool is_fatal_error(int error_num, uint flags=0); bool check_if_incompatible_data(HA_CREATE_INFO *create_info, uint table_changes); #ifdef MRN_HANDLER_HAVE_CHECK_IF_SUPPORTED_INPLACE_ALTER @@ -475,7 +526,9 @@ public: void restore_auto_increment(ulonglong prev_insert_id); void release_auto_increment(); int check_for_upgrade(HA_CHECK_OPT *check_opt); +#ifdef MRN_HANDLER_HAVE_RESET_AUTO_INCREMENT int reset_auto_increment(ulonglong value); +#endif bool was_semi_consistent_read(); void try_semi_consistent_read(bool yes); void unlock_row(); @@ -557,6 +610,7 @@ private: int drop_index(MRN_SHARE *target_share, uint key_index); grn_obj *find_tokenizer(const char *name, int name_length); grn_obj *find_normalizer(KEY *key_info); + bool find_index_column_flags(KEY *key_info, grn_obj_flags *index_column_flags); bool find_token_filters(KEY *key_info, grn_obj *token_filters); bool find_token_filters_put(grn_obj *token_filters, const char *token_filter_name, @@ -580,6 +634,7 @@ private: void check_count_skip(key_part_map start_key_part_map, key_part_map end_key_part_map, bool fulltext); bool is_grn_zero_column_value(grn_obj *column, grn_obj *value); + bool is_primary_key_field(Field *field) const; void check_fast_order_limit(grn_table_sort_key **sort_keys, int *n_sort_keys, longlong *limit); @@ -641,7 +696,7 @@ private: void storage_store_field_geometry(Field *field, const char *value, uint value_length); void storage_store_field(Field *field, const char *value, uint value_length); - void storage_store_field_column(Field *field, + void storage_store_field_column(Field *field, bool is_primary_key, int nth_column, grn_id record_id); void storage_store_fields(uchar *buf, grn_id record_id); void storage_store_fields_for_prep_update(const uchar *old_data, @@ -742,7 +797,6 @@ private: int wrapper_open(const char *name, int mode, uint test_if_locked); int wrapper_open_indexes(const char *name); int storage_open(const char *name, int mode, uint test_if_locked); - void update_grn_table_is_referenced(); int open_table(const char *name); int storage_open_columns(void); int storage_open_indexes(const char *name); @@ -785,7 +839,9 @@ private: grn_obj *index_column); int storage_write_row_multiple_column_indexes(uchar *buf, grn_id record_id); int storage_write_row_unique_index(uchar *buf, - KEY *key_info, grn_obj *index_table, + KEY *key_info, + grn_obj *index_table, + grn_obj *index_column, grn_id *key_id); int storage_write_row_unique_indexes(uchar *buf); int wrapper_get_record_id(uchar *data, grn_id *record_id, const char *context); @@ -812,8 +868,8 @@ private: uint storage_max_supported_record_length() const; uint wrapper_max_supported_keys() const; uint storage_max_supported_keys() const; - uint wrapper_max_supported_key_parts(); - uint storage_max_supported_key_parts(); + uint wrapper_max_supported_key_parts() const; + uint storage_max_supported_key_parts() const; uint wrapper_max_supported_key_length() const; uint storage_max_supported_key_length() const; uint wrapper_max_supported_key_part_length() const; @@ -904,6 +960,7 @@ private: grn_obj *match_columns, uint *consumed_keyword_length, grn_obj *tmp_objects); + grn_expr_flags expr_flags_in_boolean_mode(); grn_rc generic_ft_init_ext_prepare_expression_in_boolean_mode( struct st_mrn_ft_info *info, String *key, @@ -1029,6 +1086,7 @@ private: bool storage_is_crashed() const; bool wrapper_auto_repair(int error) const; bool storage_auto_repair(int error) const; + int generic_disable_index(int i, KEY *key_info); int wrapper_disable_indexes(uint mode); int storage_disable_indexes(uint mode); int wrapper_enable_indexes(uint mode); @@ -1038,6 +1096,7 @@ private: int wrapper_fill_indexes(THD *thd, KEY *key_info, grn_obj **index_columns, uint n_keys); int wrapper_recreate_indexes(THD *thd); + int storage_recreate_indexes(THD *thd); int wrapper_repair(THD* thd, HA_CHECK_OPT* check_opt); int storage_repair(THD* thd, HA_CHECK_OPT* check_opt); bool wrapper_check_and_repair(THD *thd); @@ -1129,8 +1188,10 @@ private: void storage_release_auto_increment(); int wrapper_check_for_upgrade(HA_CHECK_OPT *check_opt); int storage_check_for_upgrade(HA_CHECK_OPT *check_opt); +#ifdef MRN_HANDLER_HAVE_RESET_AUTO_INCREMENT int wrapper_reset_auto_increment(ulonglong value); int storage_reset_auto_increment(ulonglong value); +#endif bool wrapper_was_semi_consistent_read(); bool storage_was_semi_consistent_read(); void wrapper_try_semi_consistent_read(bool yes); |