mirror of
https://github.com/MariaDB/server.git
synced 2026-04-27 10:45:30 +02:00
BUG#849776: Wrong result with semijoin + "Impossible where"
- Provide fix_after_pullout() function for Item_in_optimizer and other Item_XXX classes (basically, all of them that have eval_not_null_tables, which means they have special rules for calculating not_null_tables_cache value)
This commit is contained in:
parent
42b928ca05
commit
ebbdb14a02
7 changed files with 98 additions and 2 deletions
|
|
@ -262,6 +262,7 @@ public:
|
|||
virtual void get_cache_parameters(List<Item> ¶meters);
|
||||
bool is_top_level_item();
|
||||
bool eval_not_null_tables(uchar *opt_arg);
|
||||
void fix_after_pullout(st_select_lex *new_parent, Item **ref);
|
||||
};
|
||||
|
||||
class Comp_creator
|
||||
|
|
@ -674,6 +675,7 @@ public:
|
|||
CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
|
||||
uint decimal_precision() const { return 1; }
|
||||
bool eval_not_null_tables(uchar *opt_arg);
|
||||
void fix_after_pullout(st_select_lex *new_parent, Item **ref);
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -775,6 +777,7 @@ public:
|
|||
uint decimal_precision() const;
|
||||
const char *func_name() const { return "if"; }
|
||||
bool eval_not_null_tables(uchar *opt_arg);
|
||||
void fix_after_pullout(st_select_lex *new_parent, Item **ref);
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -1313,6 +1316,7 @@ public:
|
|||
bool is_bool_func() { return 1; }
|
||||
CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
|
||||
bool eval_not_null_tables(uchar *opt_arg);
|
||||
void fix_after_pullout(st_select_lex *new_parent, Item **ref);
|
||||
};
|
||||
|
||||
class cmp_item_row :public cmp_item
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue