summaryrefslogtreecommitdiff
path: root/sql/item_cmpfunc.cc
diff options
context:
space:
mode:
authormonty@donna.mysql.com <>2001-01-31 04:47:25 +0200
committermonty@donna.mysql.com <>2001-01-31 04:47:25 +0200
commitbdbc0ef7a068d77e404bc4e13b864cb41112521a (patch)
tree851a8ba92ed9883efe2504e0726aae6843c317c0 /sql/item_cmpfunc.cc
parentacd45847ac0485617bece05abccbc9f4e9b2b782 (diff)
downloadmariadb-git-bdbc0ef7a068d77e404bc4e13b864cb41112521a.tar.gz
New myisamchk option --sort-recover
Allow delete of crashed MyISAM tables Fixed bug when BLOB was first part of key Fixed bug when using result from CASE in GROUP BY Fixed core-dump bug in monthname() Optimized calling of check_db_name()
Diffstat (limited to 'sql/item_cmpfunc.cc')
-rw-r--r--sql/item_cmpfunc.cc27
1 files changed, 26 insertions, 1 deletions
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index 84b18201ad1..e7a6c52dfd9 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -721,17 +721,41 @@ double Item_func_case::val()
bool
Item_func_case::fix_fields(THD *thd,TABLE_LIST *tables)
{
-
if (first_expr && first_expr->fix_fields(thd,tables) ||
else_expr && else_expr->fix_fields(thd,tables))
return 1;
if (Item_func::fix_fields(thd,tables))
return 1;
+ if (first_expr)
+ {
+ used_tables_cache|=(first_expr)->used_tables();
+ const_item_cache&= (first_expr)->const_item();
+ }
+ if (else_expr)
+ {
+ used_tables_cache|=(else_expr)->used_tables();
+ const_item_cache&= (else_expr)->const_item();
+ }
if (!else_expr || else_expr->maybe_null)
maybe_null=1; // The result may be NULL
return 0;
}
+void Item_func_case::update_used_tables()
+{
+ Item_func::update_used_tables();
+ if (first_expr)
+ {
+ used_tables_cache|=(first_expr)->used_tables();
+ const_item_cache&= (first_expr)->const_item();
+ }
+ if (else_expr)
+ {
+ used_tables_cache|=(else_expr)->used_tables();
+ const_item_cache&= (else_expr)->const_item();
+ }
+}
+
void Item_func_case::fix_length_and_dec()
{
@@ -750,6 +774,7 @@ void Item_func_case::fix_length_and_dec()
}
}
+/* TODO: Fix this so that it prints the whole CASE expression */
void Item_func_case::print(String *str)
{