summaryrefslogtreecommitdiff
path: root/sql/item_cmpfunc.cc
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2003-10-31 22:14:49 +0200
committerunknown <bell@sanja.is.com.ua>2003-10-31 22:14:49 +0200
commit5337ffde112ebc041f4048fcc3b152ca6b4d5cec (patch)
tree2c6fd809f0c5f377f0c9be63a16c38f0853a56cf /sql/item_cmpfunc.cc
parentab9fb4ea752731bb04cfbd844902ae34c63123ab (diff)
parented49917e8c9ea60797772ca8db638a3ae8580c3e (diff)
downloadmariadb-git-5337ffde112ebc041f4048fcc3b152ca6b4d5cec.tar.gz
merge
mysql-test/r/fulltext.result: Auto merged mysql-test/r/func_group.result: Auto merged mysql-test/t/fulltext.test: Auto merged sql/item.cc: Auto merged sql/item.h: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_func.cc: Auto merged sql/item_func.h: Auto merged sql/item_timefunc.cc: Auto merged sql/mysql_priv.h: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_select.h: Auto merged sql/sql_show.cc: Auto merged sql/sql_yacc.yy: Auto merged
Diffstat (limited to 'sql/item_cmpfunc.cc')
-rw-r--r--sql/item_cmpfunc.cc64
1 files changed, 60 insertions, 4 deletions
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index d6c05f47964..3897022e8ce 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -113,6 +113,14 @@ longlong Item_func_not_all::val_int()
return (!null_value && value == 0) ? 1 : 0;
}
+void Item_func_not_all::print(String *str)
+{
+ if (show)
+ Item_func::print(str);
+ else
+ args[0]->print(str);
+}
+
/*
Convert a constant expression or string to an integer.
This is done when comparing DATE's of different formats and
@@ -707,6 +715,18 @@ longlong Item_func_between::val_int()
return 0;
}
+
+void Item_func_between::print(String *str)
+{
+ str->append('(');
+ args[0]->print(str);
+ str->append(" between ", 9);
+ args[1]->print(str);
+ str->append(" and ", 5);
+ args[2]->print(str);
+ str->append(')');
+}
+
void
Item_func_ifnull::fix_length_and_dec()
{
@@ -863,7 +883,7 @@ Item_func_nullif::fix_length_and_dec()
}
/*
- nullif () returns NULL if arguments are different, else it returns the
+ nullif () returns NULL if arguments are equal, else it returns the
first argument.
Note that we have to evaluate the first argument twice as the compare
may have been done with a different type than return value
@@ -1100,7 +1120,27 @@ void Item_func_case::fix_length_and_dec()
void Item_func_case::print(String *str)
{
- str->append("case "); // Not yet complete
+ str->append("(case ", 6);
+ if (first_expr_num != -1)
+ {
+ args[first_expr_num]->print(str);
+ str->append(' ');
+ }
+ for (uint i=0 ; i < ncases ; i+=2)
+ {
+ str->append("when ", 5);
+ args[i]->print(str);
+ str->append(" then ", 6);
+ args[i+1]->print(str);
+ str->append(' ');
+ }
+ if (else_expr_num != -1)
+ {
+ str->append("else ", 5);
+ args[else_expr_num]->print(str);
+ str->append(' ');
+ }
+ str->append("end)", 4);
}
/*
@@ -1507,8 +1547,15 @@ void Item_func_in::fix_length_and_dec()
void Item_func_in::print(String *str)
{
str->append('(');
- Item_func::print(str);
- str->append(')');
+ args[0]->print(str);
+ str->append(" in (", 5);
+ for (uint i=1 ; i < arg_count ; i++)
+ {
+ if (i > 1)
+ str->append(',');
+ args[i]->print(str);
+ }
+ str->append("))", 2);
}
@@ -1882,12 +1929,21 @@ void Item_is_not_null_test::update_used_tables()
}
}
+
longlong Item_func_isnotnull::val_int()
{
return args[0]->is_null() ? 0 : 1;
}
+void Item_func_isnotnull::print(String *str)
+{
+ str->append('(');
+ args[0]->print(str);
+ str->append(" is not null)", 13);
+}
+
+
longlong Item_func_like::val_int()
{
String* res = args[0]->val_str(&tmp_value1);