Merge 10.6 into 10.11

Some fixes related to commit f838b2d799 and
Rows_log_event::do_apply_event() and Update_rows_log_event::do_exec_row()
for system-versioned tables were provided by Nikita Malyavin.
This was required by test versioning.rpl,trx_id,row.
This commit is contained in:
Marko Mäkelä 2024-03-28 09:16:57 +02:00
commit 788953463d
319 changed files with 7100 additions and 3435 deletions

View file

@ -89,7 +89,7 @@ public:
static void wrong_param_count_error(const LEX_CSTRING &schema_name,
const LEX_CSTRING &func_name);
table_map not_null_tables_cache;
table_map not_null_tables_cache= 0;
enum Functype { UNKNOWN_FUNC,EQ_FUNC,EQUAL_FUNC,NE_FUNC,LT_FUNC,LE_FUNC,
GE_FUNC,GT_FUNC,FT_FUNC,
@ -1263,6 +1263,24 @@ public:
};
class Item_long_ge0_func: public Item_int_func
{
public:
Item_long_ge0_func(THD *thd): Item_int_func(thd) { }
Item_long_ge0_func(THD *thd, Item *a): Item_int_func(thd, a) {}
Item_long_ge0_func(THD *thd, Item *a, Item *b): Item_int_func(thd, a, b) {}
Item_long_ge0_func(THD *thd, Item *a, Item *b, Item *c): Item_int_func(thd, a, b, c) {}
Item_long_ge0_func(THD *thd, List<Item> &list): Item_int_func(thd, list) { }
Item_long_ge0_func(THD *thd, Item_long_ge0_func *item) :Item_int_func(thd, item) {}
const Type_handler *type_handler() const override
{
DBUG_ASSERT(!unsigned_flag);
return &type_handler_slong_ge0;
}
bool fix_length_and_dec(THD *) override { max_length= 10; return FALSE; }
};
class Item_func_hash: public Item_int_func
{
public:
@ -1407,6 +1425,13 @@ public:
{
fix_char_length(MAX_BIGINT_WIDTH);
}
void fix_length_and_dec_sint_ge0()
{
uint32 digits= args[0]->decimal_precision();
DBUG_ASSERT(digits > 0);
DBUG_ASSERT(digits <= MY_INT64_NUM_DECIMAL_DIGITS);
fix_char_length(digits + (unsigned_flag ? 0 : 1/*sign*/));
}
void fix_length_and_dec_generic()
{
uint32 char_length= MY_MIN(args[0]->max_char_length(),
@ -1823,6 +1848,7 @@ public:
return name;
}
void fix_length_and_dec_int();
void fix_length_and_dec_sint_ge0();
void fix_length_and_dec_double();
void fix_length_and_dec_decimal();
bool fix_length_and_dec(THD *thd) override;
@ -2152,6 +2178,7 @@ public:
void fix_arg_int(const Type_handler *preferred,
const Type_std_attributes *preferred_attributes,
bool use_decimal_on_length_increase);
void fix_arg_slong_ge0();
void fix_arg_hex_hybrid();
void fix_arg_double();
void fix_arg_time();