summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
Diffstat (limited to 'storage')
-rw-r--r--storage/innobase/pars/pars0grm.cc2
-rw-r--r--storage/innobase/pars/pars0grm.y2
-rw-r--r--storage/maria/ha_maria.cc5
-rw-r--r--storage/maria/ma_extra.c8
-rw-r--r--storage/myisam/mi_create.c6
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++)
{