Commit 628c281d authored by Vladislav Vaintroub's avatar Vladislav Vaintroub

MDEV-27030 vcol.vcol_keys_myisam fails on Windows x64, with Visual Studio 2022

Upon investigation, decided this to be a compiler bug
(happens with new compiler, on code that did not change for the last 15 years)

Fixed by de-optimizing single function remove_key(), using MSVC pragma
parent 3163d9e6
...@@ -767,6 +767,10 @@ static int underflow(register MI_INFO *info, register MI_KEYDEF *keyinfo, ...@@ -767,6 +767,10 @@ static int underflow(register MI_INFO *info, register MI_KEYDEF *keyinfo,
returns how many chars was removed or 0 on error returns how many chars was removed or 0 on error
*/ */
#if defined(_MSC_VER) && defined(_M_X64) && _MSC_VER >= 1930
#pragma optimize("g", off)
#endif
static uint remove_key(MI_KEYDEF *keyinfo, uint nod_flag, static uint remove_key(MI_KEYDEF *keyinfo, uint nod_flag,
uchar *keypos, /* Where key starts */ uchar *keypos, /* Where key starts */
uchar *lastkey, /* key to be removed */ uchar *lastkey, /* key to be removed */
...@@ -891,3 +895,7 @@ static uint remove_key(MI_KEYDEF *keyinfo, uint nod_flag, ...@@ -891,3 +895,7 @@ static uint remove_key(MI_KEYDEF *keyinfo, uint nod_flag,
(uint) (page_end-start-s_length)); (uint) (page_end-start-s_length));
DBUG_RETURN((uint) s_length); DBUG_RETURN((uint) s_length);
} /* remove_key */ } /* remove_key */
#if defined(_MSC_VER) && defined(_M_X64) && _MSC_VER >= 1930
#pragma optimize("",on)
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment