diff options
author | Monty <monty@mariadb.org> | 2021-05-25 15:58:46 +0300 |
---|---|---|
committer | Monty <monty@mariadb.org> | 2021-05-26 22:12:49 +0300 |
commit | e8a54a376ad4c8166b411aef96c358be8e781cc2 (patch) | |
tree | cde1af2dcfd5ebbc655655920a998b426bf13afa /sql/item.h | |
parent | 860e754349646fb8ec8e9231a7fc09a5d4b7c247 (diff) | |
download | mariadb-git-e8a54a376ad4c8166b411aef96c358be8e781cc2.tar.gz |
Replace item->marker= # with Item->marker= DEFINE
- Better, easier to read code (no used of 'random' constants).
- All defines are now unique, so it is easier to find bugs if
somethings goes wrong.
Other things:
- Created sub function of common code in Aggregator_distinct::setup() and
Item_func_group_concat::setup() that set item->marker
- More documentation
- Folded a few long lines.
- Allmost all changes in item.cc, sql_lex.cc and sql_window.cc are done
with 'replace'.
Diffstat (limited to 'sql/item.h')
-rw-r--r-- | sql/item.h | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/sql/item.h b/sql/item.h index 004a56e7371..c2a6f351039 100644 --- a/sql/item.h +++ b/sql/item.h @@ -153,14 +153,36 @@ bool mark_unsupported_function(const char *w1, const char *w2, #define SPLIT_SUM_SKIP_REGISTERED 1 /* Skip registered funcs */ #define SPLIT_SUM_SELECT 2 /* SELECT item; Split all parts */ +/* + Values for item->marker for cond items in the WHERE clause as used + by the optimizer. -#define NO_EXTRACTION_FL (1 << 6) -#define FULL_EXTRACTION_FL (1 << 7) -#define DELETION_FL (1 << 8) -#define IMMUTABLE_FL (1 << 9) -#define SUBSTITUTION_FL (1 << 10) -#define EXTRACTION_MASK \ - (NO_EXTRACTION_FL | FULL_EXTRACTION_FL | DELETION_FL | IMMUTABLE_FL) + Note that for Item_fields, the marker contains + 'select->cur_pos_in_select_list +*/ +/* Used to check GROUP BY list in the MODE_ONLY_FULL_GROUP_BY mode */ +#define MARKER_UNDEF_POS -1 +#define MARKER_UNUSED 0 +#define MARKER_CHANGE_COND 1 +#define MARKER_PROCESSED 2 +#define MARKER_CHECK_ON_READ 3 +#define MARKER_NULL_KEY 4 +#define MARKER_FOUND_IN_ORDER 6 + +/* Used as bits in marker by Item::check_pushable_cond() */ +#define MARKER_NO_EXTRACTION (1 << 6) +#define MARKER_FULL_EXTRACTION (1 << 7) +#define MARKER_DELETION (1 << 8) +#define MARKER_IMMUTABLE (1 << 9) +#define MARKER_SUBSTITUTION (1 << 10) + +/* Used as bits in marker by window functions */ +#define MARKER_SORTORDER_CHANGE (1 << 11) +#define MARKER_PARTITION_CHANGE (1 << 12) +#define MARKER_FRAME_CHANGE (1 << 13) +#define MARKER_EXTRACTION_MASK \ + (MARKER_NO_EXTRACTION | MARKER_FULL_EXTRACTION | MARKER_DELETION | \ + MARKER_IMMUTABLE) extern const char *item_empty_name; @@ -2616,17 +2638,17 @@ public: void register_in(THD *thd); bool depends_only_on(table_map view_map) - { return marker & FULL_EXTRACTION_FL; } + { return marker & MARKER_FULL_EXTRACTION; } int get_extraction_flag() - { return marker & EXTRACTION_MASK; } + { return marker & MARKER_EXTRACTION_MASK; } void set_extraction_flag(int16 flags) { - marker &= ~EXTRACTION_MASK; - marker|= flags; + marker &= ~MARKER_EXTRACTION_MASK; + marker|= flags; } void clear_extraction_flag() { - marker &= ~EXTRACTION_MASK; + marker &= ~MARKER_EXTRACTION_MASK; } void check_pushable_cond(Pushdown_checker excl_dep_func, uchar *arg); bool pushable_cond_checker_for_derived(uchar *arg) |