diff options
Diffstat (limited to 'storage')
-rw-r--r-- | storage/innobase/pars/pars0grm.cc | 2 | ||||
-rw-r--r-- | storage/innobase/pars/pars0grm.y | 2 | ||||
-rw-r--r-- | storage/maria/ha_maria.cc | 5 | ||||
-rw-r--r-- | storage/maria/ma_extra.c | 8 | ||||
-rw-r--r-- | storage/myisam/mi_create.c | 6 |
5 files changed, 19 insertions, 4 deletions
diff --git a/storage/innobase/pars/pars0grm.cc b/storage/innobase/pars/pars0grm.cc index 10d0d0becd7..1e10a61f5ad 100644 --- a/storage/innobase/pars/pars0grm.cc +++ b/storage/innobase/pars/pars0grm.cc @@ -79,7 +79,7 @@ que_node_t */ #include "que0que.h" #include "row0sel.h" -#ifdef __GNUC__ +#if defined __GNUC__ && (!defined __clang_major__ || __clang_major__ > 11) #pragma GCC diagnostic ignored "-Wfree-nonheap-object" #endif diff --git a/storage/innobase/pars/pars0grm.y b/storage/innobase/pars/pars0grm.y index 3fb0865f608..ed2b9bc09b0 100644 --- a/storage/innobase/pars/pars0grm.y +++ b/storage/innobase/pars/pars0grm.y @@ -38,7 +38,7 @@ que_node_t */ #include "que0que.h" #include "row0sel.h" -#ifdef __GNUC__ +#if defined __GNUC__ && (!defined __clang_major__ || __clang_major__ > 11) #pragma GCC diagnostic ignored "-Wfree-nonheap-object" #endif diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc index aa99bc157c9..15cacbba075 100644 --- a/storage/maria/ha_maria.cc +++ b/storage/maria/ha_maria.cc @@ -736,6 +736,11 @@ static int table2maria(TABLE *table_arg, data_file_type row_type, - compare SPATIAL keys; - compare FIELD_SKIP_ZERO which is converted to FIELD_NORMAL correctly (should be correctly detected in table2maria). + + FIXME: + maria_check_definition() is never used! CHECK TABLE does not detect the + corruption! Do maria_check_definition() like check_definition() is done + by MyISAM (related to MDEV-25803). */ int maria_check_definition(MARIA_KEYDEF *t1_keyinfo, diff --git a/storage/maria/ma_extra.c b/storage/maria/ma_extra.c index 2573133ece5..fe2a4c9b8ac 100644 --- a/storage/maria/ma_extra.c +++ b/storage/maria/ma_extra.c @@ -210,7 +210,13 @@ int maria_extra(MARIA_HA *info, enum ha_extra_function function, info->last_key.data + share->base.max_key_length*2, info->save_lastkey_data_length + info->save_lastkey_ref_length); info->update= info->save_update | HA_STATE_WRITTEN; - info->lastinx= info->save_lastinx; + if (info->lastinx != info->save_lastinx) /* Index changed */ + { + info->lastinx = info->save_lastinx; + info->last_key.keyinfo= info->s->keyinfo + info->lastinx; + info->last_key.flag= 0; + info->page_changed=1; + } info->cur_row.lastpos= info->save_lastpos; info->last_key.data_length= info->save_lastkey_data_length; info->last_key.ref_length= info->save_lastkey_ref_length; diff --git a/storage/myisam/mi_create.c b/storage/myisam/mi_create.c index de516d9fb6a..ebe139bb342 100644 --- a/storage/myisam/mi_create.c +++ b/storage/myisam/mi_create.c @@ -711,7 +711,11 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, } #endif - /* Write key and keyseg definitions */ + /* Write key and keyseg definitions + + TODO: update key and keyseg definitions for inplace alter (grep sql layer by + MDEV-25803). Do the same for Aria. + */ DBUG_PRINT("info", ("write key and keyseg definitions")); for (i=0 ; i < share.base.keys - uniques; i++) { |