diff options
author | unknown <hf@deer.(none)> | 2003-06-11 20:09:37 +0500 |
---|---|---|
committer | unknown <hf@deer.(none)> | 2003-06-11 20:09:37 +0500 |
commit | a59410fd68b4b9d859299dd5fcfc5be64a995e22 (patch) | |
tree | a86c3efd40d62c8c075c3b20fbaa871e3c8b84a2 /sql | |
parent | a1a58d6c5a9799cd3746d5bef85a9347051ef356 (diff) | |
download | mariadb-git-a59410fd68b4b9d859299dd5fcfc5be64a995e22.tar.gz |
Bugfix for #614
Item_extract needs special implementation for eq().
Item_func::eq doesn't work correctly because we have to compare
Item_extract::int_type parameters also
We need to propagate this to 4.1
sql/item_timefunc.cc:
Item_extract::eq implementation added
sql/item_timefunc.h:
Item_extract::eq definition added
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item_timefunc.cc | 16 | ||||
-rw-r--r-- | sql/item_timefunc.h | 1 |
2 files changed, 17 insertions, 0 deletions
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 6a95c15a226..84e7a44ac61 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -1137,6 +1137,22 @@ longlong Item_extract::val_int() return 0; // Impossible } +bool Item_extract::eq(const Item *item, bool binary_cmp) const +{ + if (this == item) + return 1; + if (item->type() != FUNC_ITEM || + func_name() != ((Item_func*)item)->func_name()) + return 0; + + Item_extract* ie= (Item_extract*)item; + if (ie->int_type != int_type) + return 0; + + if (!args[0]->eq(ie->args[0], binary_cmp)) + return 0; + return 1; +} void Item_typecast::print(String *str) { diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index 0ca2a36609d..e04e24627d9 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -422,6 +422,7 @@ class Item_extract :public Item_int_func longlong val_int(); const char *func_name() const { return "extract"; } void fix_length_and_dec(); + bool eq(const Item *item, bool binary_cmp) const; unsigned int size_of() { return sizeof(*this);} }; |