cleanup: index options don't need hton anymore

This commit is contained in:
Sergei Golubchik 2024-08-27 15:10:06 +02:00
parent aed5928207
commit ea4562ef21
4 changed files with 22 additions and 29 deletions

View file

@ -226,7 +226,7 @@ static const size_t ha_option_type_sizeof[]=
@retval FALSE OK
*/
bool parse_option_list(THD* thd, handlerton *hton, void *option_struct_arg,
bool parse_option_list(THD* thd, st_plugin_int *plugin, void *option_struct_arg,
engine_option_value **option_list,
ha_create_table_option *rules,
bool suppress_warning, MEM_ROOT *root)
@ -302,7 +302,7 @@ bool parse_option_list(THD* thd, handlerton *hton, void *option_struct_arg,
(thd->lex->sql_command == SQLCOM_CREATE_TABLE || seen))
{
// take a value from the variable and add it to the list
sys_var *sysvar= find_hton_sysvar(hton, opt->var);
sys_var *sysvar= find_plugin_sysvar(plugin, opt->var);
DBUG_ASSERT(sysvar);
if (!sysvar->session_is_default(thd))
@ -344,7 +344,7 @@ bool parse_option_list(THD* thd, handlerton *hton, void *option_struct_arg,
This is done when an engine is loaded.
*/
static bool resolve_sysvars(handlerton *hton, ha_create_table_option *rules)
bool resolve_sysvar_table_options(ha_create_table_option *rules)
{
for (ha_create_table_option *opt= rules; rules && opt->name; opt++)
{
@ -397,13 +397,6 @@ static bool resolve_sysvars(handlerton *hton, ha_create_table_option *rules)
return 0;
}
bool resolve_sysvar_table_options(handlerton *hton)
{
return resolve_sysvars(hton, hton->table_options) ||
resolve_sysvars(hton, hton->field_options) ||
resolve_sysvars(hton, hton->index_options);
}
/*
Restore HA_OPTION_TYPE_SYSVAR options back as they were
before resolve_sysvars().
@ -411,7 +404,7 @@ bool resolve_sysvar_table_options(handlerton *hton)
This is done when the engine is unloaded, so that we could
call resolve_sysvars() if the engine is installed again.
*/
static void free_sysvars(handlerton *hton, ha_create_table_option *rules)
void free_sysvar_table_options(ha_create_table_option *rules)
{
for (ha_create_table_option *opt= rules; rules && opt->name; opt++)
{
@ -428,14 +421,6 @@ static void free_sysvars(handlerton *hton, ha_create_table_option *rules)
}
}
void free_sysvar_table_options(handlerton *hton)
{
free_sysvars(hton, hton->table_options);
free_sysvars(hton, hton->field_options);
free_sysvars(hton, hton->index_options);
}
/**
Parses all table/fields/keys options

View file

@ -105,16 +105,25 @@ public:
typedef struct st_key KEY;
class Create_field;
bool resolve_sysvar_table_options(handlerton *hton);
void free_sysvar_table_options(handlerton *hton);
bool resolve_sysvar_table_options(ha_create_table_option *rules);
void free_sysvar_table_options(ha_create_table_option *rules);
bool parse_engine_table_options(THD *thd, handlerton *ht, TABLE_SHARE *share);
#ifdef WITH_PARTITION_STORAGE_ENGINE
bool parse_engine_part_options(THD *thd, TABLE *table);
#endif
bool parse_option_list(THD* thd, handlerton *hton, void *option_struct,
bool parse_option_list(THD* thd, st_plugin_int *plugin, void *option_struct,
engine_option_value **option_list,
ha_create_table_option *rules,
bool suppress_warning, MEM_ROOT *root);
static inline bool parse_option_list(THD* thd, handlerton *hton,
void *option_struct, engine_option_value **option_list,
ha_create_table_option *rules, bool suppress_warning, MEM_ROOT *root)
{
return parse_option_list(thd, hton2plugin[hton->slot], option_struct,
option_list, rules, suppress_warning, root);
}
bool engine_table_options_frm_read(const uchar *buff, size_t length,
TABLE_SHARE *share);
bool merge_engine_options(engine_option_value *source,

View file

@ -607,7 +607,9 @@ int ha_finalize_handlerton(st_plugin_int *plugin)
if (plugin->plugin->deinit)
deinit_status= plugin->plugin->deinit(NULL);
free_sysvar_table_options(hton);
free_sysvar_table_options(hton->table_options);
free_sysvar_table_options(hton->field_options);
free_sysvar_table_options(hton->index_options);
update_discovery_counters(hton, -1);
/*
@ -811,7 +813,9 @@ int ha_initialize_handlerton(st_plugin_int *plugin)
break;
};
resolve_sysvar_table_options(hton);
resolve_sysvar_table_options(hton->table_options);
resolve_sysvar_table_options(hton->field_options);
resolve_sysvar_table_options(hton->index_options);
update_discovery_counters(hton, 1);
if (ddl_recovery_done && hton->signal_ddl_recovery_done)

View file

@ -1761,11 +1761,6 @@ static inline handlerton *plugin_hton(plugin_ref plugin)
return plugin_data(plugin, handlerton *);
}
static inline sys_var *find_hton_sysvar(transaction_participant *hton, st_mysql_sys_var *var)
{
return find_plugin_sysvar(hton2plugin[hton->slot], var);
}
handlerton *ha_default_handlerton(THD *thd);
handlerton *ha_default_tmp_handlerton(THD *thd);