summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <holyfoot/hf@mysql.com/hfmain.(none)>2007-04-07 11:35:14 +0500
committerunknown <holyfoot/hf@mysql.com/hfmain.(none)>2007-04-07 11:35:14 +0500
commit2911bcd8e39735931f2dc095770c24bb6350d378 (patch)
treea54fd8f74e0784cf04ceeacd4fe66a46c0eadf22 /sql
parent96d879cb4b310c2b94f83566ee64c701576f5c61 (diff)
parente488e6f23a14490b619d5bbbf2fc4db65dc4b9ef (diff)
downloadmariadb-git-2911bcd8e39735931f2dc095770c24bb6350d378.tar.gz
Merge bk@192.168.21.1:mysql-4.1
into mysql.com:/d2/hf/mrg/mysql-4.1-opt
Diffstat (limited to 'sql')
-rw-r--r--sql/item_cmpfunc.cc20
-rw-r--r--sql/item_cmpfunc.h1
2 files changed, 21 insertions, 0 deletions
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index ffb60754381..4d54dfc2b39 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -838,6 +838,26 @@ longlong Item_func_strcmp::val_int()
}
+bool Item_func_opt_neg::eq(const Item *item, bool binary_cmp) const
+{
+ /* Assume we don't have rtti */
+ if (this == item)
+ return 1;
+ if (item->type() != FUNC_ITEM)
+ return 0;
+ Item_func *item_func=(Item_func*) item;
+ if (arg_count != item_func->arg_count ||
+ functype() != item_func->functype())
+ return 0;
+ if (negated != ((Item_func_opt_neg *) item_func)->negated)
+ return 0;
+ for (uint i=0; i < arg_count ; i++)
+ if (!args[i]->eq(item_func->arguments()[i], binary_cmp))
+ return 0;
+ return 1;
+}
+
+
void Item_func_interval::fix_length_and_dec()
{
if (row->cols() > 8)
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index a13be83e093..132e019b4a3 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -405,6 +405,7 @@ public:
negated= !negated;
return this;
}
+ bool eq(const Item *item, bool binary_cmp) const;
};