summaryrefslogtreecommitdiff
path: root/sql/opt_range.h
diff options
context:
space:
mode:
Diffstat (limited to 'sql/opt_range.h')
-rw-r--r--sql/opt_range.h61
1 files changed, 7 insertions, 54 deletions
diff --git a/sql/opt_range.h b/sql/opt_range.h
index 1014176ecc5..65e2d6db9ae 100644
--- a/sql/opt_range.h
+++ b/sql/opt_range.h
@@ -36,8 +36,9 @@
#include "sql_class.h" // set_var.h: THD
#include "set_var.h" /* Item */
-class JOIN;
class Item_sum;
+class JOIN;
+class Unique;
struct KEY_PART {
uint16 key,part;
@@ -389,30 +390,7 @@ public:
{
return sel_cmp(field,max_value, arg->min_value, max_flag, arg->min_flag);
}
- SEL_ARG *clone_and(THD *thd, SEL_ARG* arg)
- { // Get overlapping range
- uchar *new_min,*new_max;
- uint8 flag_min,flag_max;
- if (cmp_min_to_min(arg) >= 0)
- {
- new_min=min_value; flag_min=min_flag;
- }
- else
- {
- new_min=arg->min_value; flag_min=arg->min_flag; /* purecov: deadcode */
- }
- if (cmp_max_to_max(arg) <= 0)
- {
- new_max=max_value; flag_max=max_flag;
- }
- else
- {
- new_max=arg->max_value; flag_max=arg->max_flag;
- }
- return new (thd->mem_root) SEL_ARG(field, part, new_min, new_max, flag_min,
- flag_max,
- MY_TEST(maybe_flag && arg->maybe_flag));
- }
+ SEL_ARG *clone_and(THD *thd, SEL_ARG* arg);
SEL_ARG *clone_first(SEL_ARG *arg)
{ // min <= X < arg->min
return new SEL_ARG(field,part, min_value, arg->min_value,
@@ -733,14 +711,7 @@ public:
bool force_default_mrr;
KEY_PART *key[MAX_KEY]; /* First key parts of keys used in the query */
- bool statement_should_be_aborted() const
- {
- return
- thd->killed ||
- thd->is_fatal_error ||
- thd->is_error() ||
- alloced_sel_args > SEL_ARG::MAX_SEL_ARGS;
- }
+ bool statement_should_be_aborted() const;
};
@@ -763,21 +734,9 @@ class QUICK_RANGE :public Sql_alloc {
QUICK_RANGE(); /* Full range */
QUICK_RANGE(THD *thd, const uchar *min_key_arg, uint min_length_arg,
key_part_map min_keypart_map_arg,
- const uchar *max_key_arg, uint max_length_arg,
+ const uchar *max_key_arg, uint max_length_arg,
key_part_map max_keypart_map_arg,
- uint flag_arg)
- : min_key((uchar*) thd->memdup(min_key_arg, min_length_arg + 1)),
- max_key((uchar*) thd->memdup(max_key_arg, max_length_arg + 1)),
- min_length((uint16) min_length_arg),
- max_length((uint16) max_length_arg),
- flag((uint16) flag_arg),
- min_keypart_map(min_keypart_map_arg),
- max_keypart_map(max_keypart_map_arg)
- {
-#ifdef HAVE_valgrind
- dummy=0;
-#endif
- }
+ uint flag_arg);
/**
Initalizes a key_range object for communication with storage engine.
@@ -1724,13 +1683,7 @@ class SQL_SELECT :public Sql_alloc {
-1 if error
1 otherwise
*/
- inline int skip_record(THD *thd)
- {
- int rc= MY_TEST(!cond || cond->val_int());
- if (thd->is_error())
- rc= -1;
- return rc;
- }
+ int skip_record(THD *thd);
int test_quick_select(THD *thd, key_map keys, table_map prev_tables,
ha_rows limit, bool force_quick_range,
bool ordered_output, bool remove_false_parts_of_where,