Skip to content

Commit

Permalink
sql/handler: referenced_by_foreign_key() returns bool
Browse files Browse the repository at this point in the history
The method was declared to return an unsigned integer, but it is
really a boolean (and used as such by all callers).

A secondary change is the addition of "const" and "noexcept" to this
method.

In ha_mroonga.cpp, I also added "inline" to the two helper methods of
referenced_by_foreign_key().  This allows the compiler to flatten the
method.
  • Loading branch information
MaxKellermann committed Sep 27, 2024
1 parent be164fc commit e1ff5d3
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 22 deletions.
2 changes: 1 addition & 1 deletion sql/ha_partition.h
Original file line number Diff line number Diff line change
Expand Up @@ -1464,7 +1464,7 @@ class ha_partition :public handler
virtual int get_foreign_key_list(THD *thd,
List<FOREIGN_KEY_INFO> *f_key_list)
virtual uint referenced_by_foreign_key()
bool referenced_by_foreign_key() const noexcept override
*/
bool can_switch_engines() override;
/*
Expand Down
2 changes: 1 addition & 1 deletion sql/handler.h
Original file line number Diff line number Diff line change
Expand Up @@ -4078,7 +4078,7 @@ class handler :public Sql_alloc
virtual int
get_parent_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list)
{ return 0; }
virtual uint referenced_by_foreign_key() { return 0;}
virtual bool referenced_by_foreign_key() const noexcept { return false;}
virtual void init_table_handle_for_HANDLER()
{ return; } /* prepare InnoDB for HANDLER */
virtual void free_foreign_key_create_info(char* str) {}
Expand Down
16 changes: 6 additions & 10 deletions storage/innobase/handler/ha_innodb.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10052,8 +10052,8 @@ wsrep_append_key(
static bool
referenced_by_foreign_key2(
/*=======================*/
dict_table_t* table,
dict_index_t* index)
const dict_table_t* table,
const dict_index_t* index) noexcept
{
ut_ad(table != NULL);
ut_ad(index != NULL);
Expand Down Expand Up @@ -15451,16 +15451,12 @@ ha_innobase::can_switch_engines(void)
DBUG_RETURN(can_switch);
}

/*******************************************************************//**
Checks if a table is referenced by a foreign key. The MySQL manual states that
a REPLACE is either equivalent to an INSERT, or DELETE(s) + INSERT. Only a
/** Checks if a table is referenced by a foreign key. The MySQL manual states
that a REPLACE is either equivalent to an INSERT, or DELETE(s) + INSERT. Only a
delete is then allowed internally to resolve a duplicate key conflict in
REPLACE, not an update.
@return > 0 if referenced by a FOREIGN KEY */

uint
ha_innobase::referenced_by_foreign_key(void)
/*========================================*/
@return whether the table is referenced by a FOREIGN KEY */
bool ha_innobase::referenced_by_foreign_key() const noexcept
{
if (dict_table_is_referenced_by_foreign_key(m_prebuilt->table)) {

Expand Down
2 changes: 1 addition & 1 deletion storage/innobase/handler/ha_innodb.h
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ class ha_innobase final : public handler

bool can_switch_engines() override;

uint referenced_by_foreign_key() override;
bool referenced_by_foreign_key() const noexcept override;

void free_foreign_key_create_info(char* str) override;

Expand Down
12 changes: 6 additions & 6 deletions storage/mroonga/ha_mroonga.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16790,10 +16790,10 @@ int ha_mroonga::get_parent_foreign_key_list(THD *thd,
DBUG_RETURN(res);
}

uint ha_mroonga::wrapper_referenced_by_foreign_key()
inline bool ha_mroonga::wrapper_referenced_by_foreign_key() const noexcept
{
MRN_DBUG_ENTER_METHOD();
uint res;
bool res;
MRN_SET_WRAP_SHARE_KEY(share, table->s);
MRN_SET_WRAP_TABLE_KEY(this, table);
res = wrap_handler->referenced_by_foreign_key();
Expand All @@ -16802,17 +16802,17 @@ uint ha_mroonga::wrapper_referenced_by_foreign_key()
DBUG_RETURN(res);
}

uint ha_mroonga::storage_referenced_by_foreign_key()
inline bool ha_mroonga::storage_referenced_by_foreign_key() const noexcept
{
MRN_DBUG_ENTER_METHOD();
uint res = handler::referenced_by_foreign_key();
bool res = handler::referenced_by_foreign_key();
DBUG_RETURN(res);
}

uint ha_mroonga::referenced_by_foreign_key()
bool ha_mroonga::referenced_by_foreign_key() const noexcept
{
MRN_DBUG_ENTER_METHOD();
uint res;
bool res;
if (share->wrapper_mode)
{
res = wrapper_referenced_by_foreign_key();
Expand Down
6 changes: 3 additions & 3 deletions storage/mroonga/ha_mroonga.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,7 @@ class ha_mroonga: public handler
bool can_switch_engines() mrn_override;
int get_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list) mrn_override;
int get_parent_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list) mrn_override;
uint referenced_by_foreign_key() mrn_override;
bool referenced_by_foreign_key() const noexcept mrn_override;
void init_table_handle_for_HANDLER() mrn_override;
void free_foreign_key_create_info(char* str) mrn_override;
#ifdef MRN_HAVE_HA_REBIND_PSI
Expand Down Expand Up @@ -1268,8 +1268,8 @@ class ha_mroonga: public handler
int storage_get_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list);
int wrapper_get_parent_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list);
int storage_get_parent_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list);
uint wrapper_referenced_by_foreign_key();
uint storage_referenced_by_foreign_key();
bool wrapper_referenced_by_foreign_key() const noexcept;
bool storage_referenced_by_foreign_key() const noexcept;
void wrapper_init_table_handle_for_HANDLER();
void storage_init_table_handle_for_HANDLER();
void wrapper_free_foreign_key_create_info(char* str);
Expand Down

0 comments on commit e1ff5d3

Please sign in to comment.