summaryrefslogtreecommitdiff
path: root/sql/field.h
diff options
context:
space:
mode:
authorkonstantin@mysql.com <>2004-09-28 15:29:38 +0400
committerkonstantin@mysql.com <>2004-09-28 15:29:38 +0400
commitdcaba14f7eccf7b79c27a3b02e8fea426e0fd5d1 (patch)
tree0aeb5248d9e6a0de80ec3d96ef2d1943c957327f /sql/field.h
parentc3fdbf0f732d0c6ed5467235be7a5854c2f0e4d5 (diff)
downloadmariadb-git-dcaba14f7eccf7b79c27a3b02e8fea426e0fd5d1.tar.gz
Give store_for_compare a more meaningful name, cleanup and comment the
call.
Diffstat (limited to 'sql/field.h')
-rw-r--r--sql/field.h23
1 files changed, 15 insertions, 8 deletions
diff --git a/sql/field.h b/sql/field.h
index e12dd60c13b..3d22c6904a7 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -179,7 +179,14 @@ public:
virtual void make_field(Send_field *)=0;
virtual void sort_string(char *buff,uint length)=0;
virtual bool optimize_range(uint idx, uint part);
- virtual bool store_for_compare() { return 0; }
+ /*
+ This should be true for fields which, when compared with constant
+ items, can be casted to longlong. In this case we will at 'fix_fields'
+ stage cast the constant items to longlongs and at the execution stage
+ use field->val_int() for comparison. Used to optimize clauses like
+ 'a_column BETWEEN date_const, date_const'.
+ */
+ virtual bool can_be_compared_as_longlong() const { return FALSE; }
virtual void free() {}
Field *new_field(MEM_ROOT *root, struct st_table *new_table)
{
@@ -566,7 +573,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return 8; }
void sql_type(String &str) const;
- bool store_for_compare() { return 1; }
+ bool can_be_compared_as_longlong() const { return TRUE; }
uint32 max_length() { return 20; }
field_cast_enum field_cast_type() { return FIELD_CAST_LONGLONG; }
};
@@ -694,7 +701,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return 4; }
void sql_type(String &str) const;
- bool store_for_compare() { return 1; }
+ bool can_be_compared_as_longlong() const { return TRUE; }
bool zero_pack() const { return 0; }
void set_time();
virtual void set_default()
@@ -740,7 +747,7 @@ public:
String *val_str(String*,String *);
bool send_binary(Protocol *protocol);
void sql_type(String &str) const;
- bool store_for_compare() { return 1; }
+ bool can_be_compared_as_longlong() const { return TRUE; }
field_cast_enum field_cast_type() { return FIELD_CAST_YEAR; }
};
@@ -772,7 +779,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return 4; }
void sql_type(String &str) const;
- bool store_for_compare() { return 1; }
+ bool can_be_compared_as_longlong() const { return TRUE; }
bool zero_pack() const { return 1; }
field_cast_enum field_cast_type() { return FIELD_CAST_DATE; }
};
@@ -802,7 +809,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return 3; }
void sql_type(String &str) const;
- bool store_for_compare() { return 1; }
+ bool can_be_compared_as_longlong() const { return TRUE; }
bool zero_pack() const { return 1; }
bool get_date(TIME *ltime,uint fuzzydate);
bool get_time(TIME *ltime);
@@ -839,7 +846,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return 3; }
void sql_type(String &str) const;
- bool store_for_compare() { return 1; }
+ bool can_be_compared_as_longlong() const { return TRUE; }
bool zero_pack() const { return 1; }
field_cast_enum field_cast_type() { return FIELD_CAST_TIME; }
};
@@ -875,7 +882,7 @@ public:
void sort_string(char *buff,uint length);
uint32 pack_length() const { return 8; }
void sql_type(String &str) const;
- bool store_for_compare() { return 1; }
+ bool can_be_compared_as_longlong() const { return TRUE; }
bool zero_pack() const { return 1; }
bool get_date(TIME *ltime,uint fuzzydate);
bool get_time(TIME *ltime);