MDEV-21693: Fix clang -Winconsistent-missing-override

ha_partition: Remove redundant 'virtual' keywords and add
missing 'override'.

FIXME: handler::table_type() is not declared virtual, yet ha_partition
and ha_sequence are seemingly trying to override it.
This commit is contained in:
Marko Mäkelä 2020-02-28 14:01:27 +02:00
parent f56dd0a12d
commit e837a358b6

View File

@ -3,7 +3,7 @@
/*
Copyright (c) 2005, 2012, Oracle and/or its affiliates.
Copyright (c) 2009, 2013, Monty Program Ab & SkySQL Ab.
Copyright (c) 2009, 2020, MariaDB Corporation.
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
@ -431,18 +431,18 @@ private:
/** Stores shared auto_increment etc. */
Partition_share *part_share;
/** Fix spurious -Werror=overloaded-virtual in GCC 9 */
virtual void restore_auto_increment(ulonglong prev_insert_id)
virtual void restore_auto_increment(ulonglong prev_insert_id) override
{
handler::restore_auto_increment(prev_insert_id);
}
/** Store and restore next_auto_inc_val over duplicate key errors. */
virtual void store_auto_increment()
void store_auto_increment() override
{
DBUG_ASSERT(part_share);
part_share->prev_auto_inc_val= part_share->next_auto_inc_val;
handler::store_auto_increment();
}
virtual void restore_auto_increment()
void restore_auto_increment() override
{
DBUG_ASSERT(part_share);
part_share->next_auto_inc_val= part_share->prev_auto_inc_val;
@ -450,7 +450,7 @@ private:
}
void sum_copy_info(handler *file);
void sum_copy_infos();
void reset_copy_info();
void reset_copy_info() override;
/** Temporary storage for new partitions Handler_shares during ALTER */
List<Parts_share_refs> m_new_partitions_share_refs;
/** Sorted array of partition ids in descending order of number of rows. */
@ -483,16 +483,16 @@ public:
return NO_CURRENT_PART_ID;
}
Partition_share *get_part_share() { return part_share; }
handler *clone(const char *name, MEM_ROOT *mem_root);
virtual void set_part_info(partition_info *part_info)
handler *clone(const char *name, MEM_ROOT *mem_root) override;
virtual void set_part_info(partition_info *part_info) override
{
m_part_info= part_info;
m_is_sub_partitioned= part_info->is_sub_partitioned();
}
virtual void return_record_by_parent();
void return_record_by_parent() override;
virtual bool vers_can_native(THD *thd)
bool vers_can_native(THD *thd) override
{
if (thd->lex->part_info)
{
@ -551,31 +551,30 @@ public:
object needed in opening the object in openfrm
-------------------------------------------------------------------------
*/
virtual int delete_table(const char *from);
virtual int rename_table(const char *from, const char *to);
virtual int create(const char *name, TABLE *form,
HA_CREATE_INFO *create_info);
virtual int create_partitioning_metadata(const char *name,
const char *old_name, int action_flag);
virtual void update_create_info(HA_CREATE_INFO *create_info);
virtual char *update_table_comment(const char *comment);
virtual int change_partitions(HA_CREATE_INFO *create_info,
const char *path,
ulonglong * const copied,
ulonglong * const deleted,
const uchar *pack_frm_data,
size_t pack_frm_len);
virtual int drop_partitions(const char *path);
virtual int rename_partitions(const char *path);
bool get_no_parts(const char *name, uint *num_parts)
int delete_table(const char *from) override;
int rename_table(const char *from, const char *to) override;
int create(const char *name, TABLE *form,
HA_CREATE_INFO *create_info) override;
int create_partitioning_metadata(const char *name,
const char *old_name, int action_flag)
override;
void update_create_info(HA_CREATE_INFO *create_info) override;
char *update_table_comment(const char *comment) override;
int change_partitions(HA_CREATE_INFO *create_info, const char *path,
ulonglong * const copied, ulonglong * const deleted,
const uchar *pack_frm_data, size_t pack_frm_len)
override;
int drop_partitions(const char *path) override;
int rename_partitions(const char *path) override;
bool get_no_parts(const char *, uint *num_parts) override
{
DBUG_ENTER("ha_partition::get_no_parts");
*num_parts= m_tot_parts;
DBUG_RETURN(0);
}
virtual void change_table_ptr(TABLE *table_arg, TABLE_SHARE *share);
virtual bool check_if_incompatible_data(HA_CREATE_INFO *create_info,
uint table_changes);
void change_table_ptr(TABLE *table_arg, TABLE_SHARE *share) override;
bool check_if_incompatible_data(HA_CREATE_INFO *create_info,
uint table_changes) override;
void update_part_create_info(HA_CREATE_INFO *create_info, uint part_id)
{
m_file[part_id]->update_create_info(create_info);
@ -614,7 +613,7 @@ private:
bool is_subpart);
bool populate_partition_name_hash();
Partition_share *get_share();
bool set_ha_share_ref(Handler_share **ha_share);
bool set_ha_share_ref(Handler_share **ha_share) override;
void fix_data_dir(char* path);
bool init_partition_bitmaps();
void free_partition_bitmaps();
@ -634,8 +633,8 @@ public:
being used for normal queries (not before meta-data changes always.
If the object was opened it will also be closed before being deleted.
*/
virtual int open(const char *name, int mode, uint test_if_locked);
virtual int close(void);
int open(const char *name, int mode, uint test_if_locked) override;
int close() override;
/*
-------------------------------------------------------------------------
@ -650,31 +649,31 @@ public:
and these go directly to the handlers supporting transactions
-------------------------------------------------------------------------
*/
virtual THR_LOCK_DATA **store_lock(THD * thd, THR_LOCK_DATA ** to,
enum thr_lock_type lock_type);
virtual int external_lock(THD * thd, int lock_type);
LEX_CSTRING *engine_name() { return hton_name(partition_ht()); }
THR_LOCK_DATA **store_lock(THD * thd, THR_LOCK_DATA ** to,
enum thr_lock_type lock_type) override;
int external_lock(THD * thd, int lock_type) override;
LEX_CSTRING *engine_name() override { return hton_name(partition_ht()); }
/*
When table is locked a statement is started by calling start_stmt
instead of external_lock
*/
virtual int start_stmt(THD * thd, thr_lock_type lock_type);
int start_stmt(THD * thd, thr_lock_type lock_type) override;
/*
Lock count is number of locked underlying handlers (I assume)
*/
virtual uint lock_count(void) const;
uint lock_count() const override;
/*
Call to unlock rows not to be updated in transaction
*/
virtual void unlock_row();
void unlock_row() override;
/*
Check if semi consistent read
*/
virtual bool was_semi_consistent_read();
bool was_semi_consistent_read() override;
/*
Call to hint about semi consistent read
*/
virtual void try_semi_consistent_read(bool);
void try_semi_consistent_read(bool) override;
/*
NOTE: due to performance and resource issues with many partitions,
@ -708,28 +707,28 @@ public:
start_bulk_insert and end_bulk_insert is called before and after a
number of calls to write_row.
*/
virtual int write_row(const uchar * buf);
virtual bool start_bulk_update();
virtual int exec_bulk_update(ha_rows *dup_key_found);
virtual int end_bulk_update();
virtual int bulk_update_row(const uchar *old_data, const uchar *new_data,
ha_rows *dup_key_found);
virtual int update_row(const uchar * old_data, const uchar * new_data);
virtual int direct_update_rows_init(List<Item> *update_fields);
virtual int pre_direct_update_rows_init(List<Item> *update_fields);
virtual int direct_update_rows(ha_rows *update_rows, ha_rows *found_rows);
virtual int pre_direct_update_rows();
virtual bool start_bulk_delete();
virtual int end_bulk_delete();
virtual int delete_row(const uchar * buf);
virtual int direct_delete_rows_init();
virtual int pre_direct_delete_rows_init();
virtual int direct_delete_rows(ha_rows *delete_rows);
virtual int pre_direct_delete_rows();
virtual int delete_all_rows(void);
virtual int truncate();
virtual void start_bulk_insert(ha_rows rows, uint flags);
virtual int end_bulk_insert();
int write_row(const uchar * buf) override;
bool start_bulk_update() override;
int exec_bulk_update(ha_rows *dup_key_found) override;
int end_bulk_update() override;
int bulk_update_row(const uchar *old_data, const uchar *new_data,
ha_rows *dup_key_found) override;
int update_row(const uchar * old_data, const uchar * new_data) override;
int direct_update_rows_init(List<Item> *update_fields) override;
int pre_direct_update_rows_init(List<Item> *update_fields) override;
int direct_update_rows(ha_rows *update_rows, ha_rows *found_rows) override;
int pre_direct_update_rows() override;
bool start_bulk_delete() override;
int end_bulk_delete() override;
int delete_row(const uchar * buf) override;
int direct_delete_rows_init() override;
int pre_direct_delete_rows_init() override;
int direct_delete_rows(ha_rows *delete_rows) override;
int pre_direct_delete_rows() override;
int delete_all_rows() override;
int truncate() override;
void start_bulk_insert(ha_rows rows, uint flags) override;
int end_bulk_insert() override;
private:
ha_rows guess_bulk_insert_rows();
void start_part_bulk_insert(THD *thd, uint part_id);
@ -745,7 +744,7 @@ public:
*/
int truncate_partition(Alter_info *, bool *binlog_stmt);
virtual bool is_fatal_error(int error, uint flags)
bool is_fatal_error(int error, uint flags) override
{
if (!handler::is_fatal_error(error, flags) ||
error == HA_ERR_NO_PARTITION_FOUND ||
@ -780,12 +779,12 @@ public:
position it to the start of the table, no need to deallocate
and allocate it again
*/
virtual int rnd_init(bool scan);
virtual int rnd_end();
virtual int rnd_next(uchar * buf);
virtual int rnd_pos(uchar * buf, uchar * pos);
virtual int rnd_pos_by_record(uchar *record);
virtual void position(const uchar * record);
int rnd_init(bool scan) override;
int rnd_end() override;
int rnd_next(uchar * buf) override;
int rnd_pos(uchar * buf, uchar * pos) override;
int rnd_pos_by_record(uchar *record) override;
void position(const uchar * record) override;
/*
-------------------------------------------------------------------------
@ -819,11 +818,11 @@ public:
index_init initializes an index before using it and index_end does
any end processing needed.
*/
virtual int index_read_map(uchar * buf, const uchar * key,
key_part_map keypart_map,
enum ha_rkey_function find_flag);
virtual int index_init(uint idx, bool sorted);
virtual int index_end();
int index_read_map(uchar * buf, const uchar * key,
key_part_map keypart_map,
enum ha_rkey_function find_flag) override;
int index_init(uint idx, bool sorted) override;
int index_end() override;
/**
@breif
@ -831,36 +830,36 @@ public:
row if available. If the key value is null, begin at first key of the
index.
*/
virtual int index_read_idx_map(uchar *buf, uint index, const uchar *key,
key_part_map keypart_map,
enum ha_rkey_function find_flag);
int index_read_idx_map(uchar *buf, uint index, const uchar *key,
key_part_map keypart_map,
enum ha_rkey_function find_flag) override;
/*
These methods are used to jump to next or previous entry in the index
scan. There are also methods to jump to first and last entry.
*/
virtual int index_next(uchar * buf);
virtual int index_prev(uchar * buf);
virtual int index_first(uchar * buf);
virtual int index_last(uchar * buf);
virtual int index_next_same(uchar * buf, const uchar * key, uint keylen);
int index_next(uchar * buf) override;
int index_prev(uchar * buf) override;
int index_first(uchar * buf) override;
int index_last(uchar * buf) override;
int index_next_same(uchar * buf, const uchar * key, uint keylen) override;
int index_read_last_map(uchar *buf,
const uchar *key,
key_part_map keypart_map);
key_part_map keypart_map) override;
/*
read_first_row is virtual method but is only implemented by
handler.cc, no storage engine has implemented it so neither
will the partition handler.
virtual int read_first_row(uchar *buf, uint primary_key);
int read_first_row(uchar *buf, uint primary_key) override;
*/
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 read_range_first(const key_range * start_key,
const key_range * end_key,
bool eq_range, bool sorted) override;
int read_range_next() override;
HANDLER_BUFFER *m_mrr_buffer;
@ -921,20 +920,20 @@ public:
RANGE_SEQ_IF *seq,
range_seq_t seq_it
);
virtual ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
void *seq_init_param,
uint n_ranges, uint *bufsz,
uint *mrr_mode,
Cost_estimate *cost);
virtual ha_rows multi_range_read_info(uint keyno, uint n_ranges, uint keys,
uint key_parts, uint *bufsz,
uint *mrr_mode, Cost_estimate *cost);
virtual int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param,
uint n_ranges, uint mrr_mode,
HANDLER_BUFFER *buf);
virtual int multi_range_read_next(range_id_t *range_info);
virtual int multi_range_read_explain_info(uint mrr_mode, char *str,
size_t size);
ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
void *seq_init_param,
uint n_ranges, uint *bufsz,
uint *mrr_mode,
Cost_estimate *cost) override;
ha_rows multi_range_read_info(uint keyno, uint n_ranges, uint keys,
uint key_parts, uint *bufsz,
uint *mrr_mode, Cost_estimate *cost) override;
int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param,
uint n_ranges, uint mrr_mode,
HANDLER_BUFFER *buf) override;
int multi_range_read_next(range_id_t *range_info) override;
int multi_range_read_explain_info(uint mrr_mode, char *str, size_t size)
override;
uint last_part() { return m_last_part; }
private:
@ -962,21 +961,20 @@ public:
purposes.
-------------------------------------------------------------------------
*/
virtual int info(uint);
void get_dynamic_partition_info(PARTITION_STATS *stat_info,
uint part_id);
void set_partitions_to_open(List<String> *partition_names);
int change_partitions_to_open(List<String> *partition_names);
int info(uint) override;
void get_dynamic_partition_info(PARTITION_STATS *stat_info, uint part_id)
override;
void set_partitions_to_open(List<String> *partition_names) override;
int change_partitions_to_open(List<String> *partition_names) override;
int open_read_partitions(char *name_buff, size_t name_buff_size);
virtual int extra(enum ha_extra_function operation);
virtual int extra_opt(enum ha_extra_function operation, ulong arg);
virtual int reset(void);
virtual uint count_query_cache_dependant_tables(uint8 *tables_type);
virtual my_bool
register_query_cache_dependant_tables(THD *thd,
Query_cache *cache,
Query_cache_block_table **block,
uint *n);
int extra(enum ha_extra_function operation) override;
int extra_opt(enum ha_extra_function operation, ulong arg) override;
int reset() override;
uint count_query_cache_dependant_tables(uint8 *tables_type) override;
my_bool register_query_cache_dependant_tables(THD *thd,
Query_cache *cache,
Query_cache_block_table **block,
uint *n) override;
private:
typedef int handler_callback(handler *, void *);
@ -1031,40 +1029,40 @@ public:
index-only scanning when performing an ORDER BY query.
Only called from one place in sql_select.cc
*/
virtual const key_map *keys_to_use_for_scanning();
const key_map *keys_to_use_for_scanning() override;
/*
Called in test_quick_select to determine if indexes should be used.
*/
virtual double scan_time();
double scan_time() override;
virtual double key_scan_time(uint inx);
double key_scan_time(uint inx) override;
virtual double keyread_time(uint inx, uint ranges, ha_rows rows);
double keyread_time(uint inx, uint ranges, ha_rows rows) override;
/*
The next method will never be called if you do not implement indexes.
*/
virtual double read_time(uint index, uint ranges, ha_rows rows);
double read_time(uint index, uint ranges, ha_rows rows) override;
/*
For the given range how many records are estimated to be in this range.
Used by optimiser to calculate cost of using a particular index.
*/
virtual ha_rows records_in_range(uint inx, key_range * min_key,
key_range * max_key);
ha_rows records_in_range(uint inx, key_range * min_key, key_range * max_key)
override;
/*
Upper bound of number records returned in scan is sum of all
underlying handlers.
*/
virtual ha_rows estimate_rows_upper_bound();
ha_rows estimate_rows_upper_bound() override;
/*
table_cache_type is implemented by the underlying handler but all
underlying handlers must have the same implementation for it to work.
*/
virtual uint8 table_cache_type();
virtual ha_rows records();
uint8 table_cache_type() override;
ha_rows records() override;
/* Calculate hash value for PARTITION BY KEY tables. */
static uint32 calculate_key_hash_value(Field **field_array);
@ -1082,19 +1080,19 @@ public:
Here we must ensure that all handlers use the same index type
for each index created.
*/
virtual const char *index_type(uint inx);
const char *index_type(uint inx) override;
/* The name of the table type that will be used for display purposes */
virtual const char *table_type() const;
const char *table_type() const;
/* The name of the row type used for the underlying tables. */
virtual enum row_type get_row_type() const;
enum row_type get_row_type() const override;
/*
Handler specific error messages
*/
virtual void print_error(int error, myf errflag);
virtual bool get_error_message(int error, String * buf);
void print_error(int error, myf errflag) override;
bool get_error_message(int error, String * buf) override;
/*
-------------------------------------------------------------------------
MODULE handler characteristics
@ -1248,7 +1246,7 @@ public:
HA_CAN_INSERT_DELAYED, HA_PRIMARY_KEY_REQUIRED_FOR_POSITION is disabled
until further investigated.
*/
virtual Table_flags table_flags() const;
Table_flags table_flags() const override;
/*
This is a bitmap of flags that says how the storage engine
@ -1306,7 +1304,7 @@ public:
must be updated in the row.
(InnoDB, MyISAM)
*/
virtual ulong index_flags(uint inx, uint part, bool all_parts) const
ulong index_flags(uint inx, uint part, bool all_parts) const override
{
/*
The following code is not safe if you are using different
@ -1319,7 +1317,8 @@ public:
wrapper function for handlerton alter_table_flags, since
the ha_partition_hton cannot know all its capabilities
*/
virtual alter_table_operations alter_table_flags(alter_table_operations flags);
alter_table_operations alter_table_flags(alter_table_operations flags)
override;
/*
unireg.cc will call the following to make sure that the storage engine
can handle the data it is about to send.
@ -1327,19 +1326,18 @@ public:
The maximum supported values is the minimum of all handlers in the table
*/
uint min_of_the_max_uint(uint (handler::*operator_func)(void) const) const;
virtual uint max_supported_record_length() const;
virtual uint max_supported_keys() const;
virtual uint max_supported_key_parts() const;
virtual uint max_supported_key_length() const;
virtual uint max_supported_key_part_length() const;
virtual uint min_record_length(uint options) const;
uint max_supported_record_length() const override;
uint max_supported_keys() const override;
uint max_supported_key_parts() const override;
uint max_supported_key_length() const override;
uint max_supported_key_part_length() const override;
uint min_record_length(uint options) const override;
/*
Primary key is clustered can only be true if all underlying handlers have
this feature.
*/
virtual bool primary_key_is_clustered()
{ return m_pkey_is_clustered; }
bool primary_key_is_clustered() override { return m_pkey_is_clustered; }
/*
-------------------------------------------------------------------------
@ -1357,7 +1355,7 @@ public:
to check whether the rest of the reference part is also the same.
-------------------------------------------------------------------------
*/
virtual int cmp_ref(const uchar * ref1, const uchar * ref2);
int cmp_ref(const uchar * ref1, const uchar * ref2) override;
/*
-------------------------------------------------------------------------
MODULE auto increment
@ -1371,15 +1369,15 @@ public:
auto_increment_column_changed
-------------------------------------------------------------------------
*/
virtual bool need_info_for_auto_inc();
virtual bool can_use_for_auto_inc_init();
virtual void get_auto_increment(ulonglong offset, ulonglong increment,
ulonglong nb_desired_values,
ulonglong *first_value,
ulonglong *nb_reserved_values);
virtual void release_auto_increment();
bool need_info_for_auto_inc() override;
bool can_use_for_auto_inc_init() override;
void get_auto_increment(ulonglong offset, ulonglong increment,
ulonglong nb_desired_values,
ulonglong *first_value,
ulonglong *nb_reserved_values) override;
void release_auto_increment() override;
private:
virtual int reset_auto_increment(ulonglong value);
int reset_auto_increment(ulonglong value) override;
void update_next_auto_inc_val();
virtual void lock_auto_increment()
{
@ -1441,7 +1439,7 @@ public:
This method is a special InnoDB method called before a HANDLER query.
-------------------------------------------------------------------------
*/
virtual void init_table_handle_for_HANDLER();
void init_table_handle_for_HANDLER() override;
/*
The remainder of this file defines the handler methods not implemented
@ -1469,20 +1467,20 @@ public:
List<FOREIGN_KEY_INFO> *f_key_list)
virtual uint referenced_by_foreign_key()
*/
virtual bool can_switch_engines();
bool can_switch_engines() override;
/*
-------------------------------------------------------------------------
MODULE fulltext index
-------------------------------------------------------------------------
*/
void ft_close_search(FT_INFO *handler);
virtual int ft_init();
virtual int pre_ft_init();
virtual void ft_end();
virtual int pre_ft_end();
virtual FT_INFO *ft_init_ext(uint flags, uint inx, String *key);
virtual int ft_read(uchar *buf);
virtual int pre_ft_read(bool use_parallel);
int ft_init() override;
int pre_ft_init() override;
void ft_end() override;
int pre_ft_end() override;
FT_INFO *ft_init_ext(uint flags, uint inx, String *key) override;
int ft_read(uchar *buf) override;
int pre_ft_read(bool use_parallel) override;
/*
-------------------------------------------------------------------------
@ -1490,7 +1488,7 @@ public:
-------------------------------------------------------------------------
The following method is only used by MyISAM when used as
temporary tables in a join.
virtual int restart_rnd_next(uchar *buf, uchar *pos);
int restart_rnd_next(uchar *buf, uchar *pos) override;
*/
/*
@ -1501,17 +1499,19 @@ public:
They are used for in-place alter table:
-------------------------------------------------------------------------
*/
virtual enum_alter_inplace_result
enum_alter_inplace_result
check_if_supported_inplace_alter(TABLE *altered_table,
Alter_inplace_info *ha_alter_info);
virtual bool prepare_inplace_alter_table(TABLE *altered_table,
Alter_inplace_info *ha_alter_info);
virtual bool inplace_alter_table(TABLE *altered_table,
Alter_inplace_info *ha_alter_info);
virtual bool commit_inplace_alter_table(TABLE *altered_table,
Alter_inplace_info *ha_alter_info,
bool commit);
virtual void notify_table_changed();
Alter_inplace_info *ha_alter_info)
override;
bool prepare_inplace_alter_table(TABLE *altered_table,
Alter_inplace_info *ha_alter_info)
override;
bool inplace_alter_table(TABLE *altered_table,
Alter_inplace_info *ha_alter_info) override;
bool commit_inplace_alter_table(TABLE *altered_table,
Alter_inplace_info *ha_alter_info,
bool commit) override;
void notify_table_changed() override;
/*
-------------------------------------------------------------------------
@ -1535,24 +1535,24 @@ public:
all partitions.
-------------------------------------------------------------------------
*/
virtual int optimize(THD* thd, HA_CHECK_OPT *check_opt);
virtual int analyze(THD* thd, HA_CHECK_OPT *check_opt);
virtual int check(THD* thd, HA_CHECK_OPT *check_opt);
virtual int repair(THD* thd, HA_CHECK_OPT *check_opt);
virtual bool check_and_repair(THD *thd);
virtual bool auto_repair(int error) const;
virtual bool is_crashed() const;
virtual int check_for_upgrade(HA_CHECK_OPT *check_opt);
int optimize(THD* thd, HA_CHECK_OPT *check_opt) override;
int analyze(THD* thd, HA_CHECK_OPT *check_opt) override;
int check(THD* thd, HA_CHECK_OPT *check_opt) override;
int repair(THD* thd, HA_CHECK_OPT *check_opt) override;
bool check_and_repair(THD *thd) override;
bool auto_repair(int error) const override;
bool is_crashed() const override;
int check_for_upgrade(HA_CHECK_OPT *check_opt) override;
/*
-------------------------------------------------------------------------
MODULE condition pushdown
-------------------------------------------------------------------------
*/
virtual const COND *cond_push(const COND *cond);
virtual void cond_pop();
virtual void clear_top_table_fields();
virtual int info_push(uint info_type, void *info);
const COND *cond_push(const COND *cond) override;
void cond_pop() override;
void clear_top_table_fields() override;
int info_push(uint info_type, void *info) override;
private:
int handle_opt_partitions(THD *thd, HA_CHECK_OPT *check_opt, uint flags);
@ -1566,13 +1566,13 @@ public:
void append_row_to_str(String &str);
public:
virtual int pre_calculate_checksum();
virtual int calculate_checksum();
int pre_calculate_checksum() override;
int calculate_checksum() override;
/* Enabled keycache for performance reasons, WL#4571 */
virtual int assign_to_keycache(THD* thd, HA_CHECK_OPT *check_opt);
virtual int preload_keys(THD* thd, HA_CHECK_OPT* check_opt);
virtual TABLE_LIST *get_next_global_for_child();
int assign_to_keycache(THD* thd, HA_CHECK_OPT *check_opt) override;
int preload_keys(THD* thd, HA_CHECK_OPT* check_opt) override;
TABLE_LIST *get_next_global_for_child() override;
/*
-------------------------------------------------------------------------
@ -1581,9 +1581,9 @@ public:
Enable/Disable Indexes are only supported by HEAP and MyISAM.
-------------------------------------------------------------------------
*/
virtual int disable_indexes(uint mode);
virtual int enable_indexes(uint mode);
virtual int indexes_are_disabled(void);
int disable_indexes(uint mode) override;
int enable_indexes(uint mode) override;
int indexes_are_disabled() override;
/*
-------------------------------------------------------------------------
@ -1611,7 +1611,7 @@ public:
this can also be done before partition will support a mix of engines,
but preferably together with other incompatible API changes.
*/
virtual handlerton *partition_ht() const
handlerton *partition_ht() const override
{
handlerton *h= m_file[0]->ht;
for (uint i=1; i < m_tot_parts; i++)