diff options
author | unknown <bell@sanja.is.com.ua> | 2003-04-23 10:37:13 +0300 |
---|---|---|
committer | unknown <bell@sanja.is.com.ua> | 2003-04-23 10:37:13 +0300 |
commit | b648068856f8bc2a636fc3ce0a49a7128b6bd6c6 (patch) | |
tree | 323551f0eea223343c193f408c8a38564861bfcd /sql/item_cmpfunc.cc | |
parent | 7900c2f1ad1126cc3449d907a074e80ed5da89d9 (diff) | |
parent | 06017a0db0fc6f67e5e0698d285532aa3cca0180 (diff) | |
download | mariadb-git-b648068856f8bc2a636fc3ce0a49a7128b6bd6c6.tar.gz |
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-in-4.1
sql/item_cmpfunc.cc:
Auto merged
Diffstat (limited to 'sql/item_cmpfunc.cc')
-rw-r--r-- | sql/item_cmpfunc.cc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index ac2d0b4f847..0f21cf5a774 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -1781,6 +1781,43 @@ longlong Item_func_isnull::val_int() return args[0]->is_null() ? 1: 0; } +longlong Item_is_not_null_test::val_int() +{ + DBUG_ENTER("Item_is_not_null_test::val_int"); + if (!used_tables_cache) + { + owner->was_null|= (!cached_value); + DBUG_PRINT("info", ("cached :%d", cached_value)); + DBUG_RETURN(cached_value); + } + if (args[0]->is_null()) + { + DBUG_PRINT("info", ("null")) + owner->was_null|= 1; + DBUG_RETURN(0); + } + else + DBUG_RETURN(1); +} + +/* Optimize case of not_null_column IS NULL */ +void Item_is_not_null_test::update_used_tables() +{ + if (!args[0]->maybe_null) + { + used_tables_cache= 0; /* is always true */ + cached_value= (longlong) 1; + } + else + { + args[0]->update_used_tables(); + if (!(used_tables_cache=args[0]->used_tables())) + { + /* Remember if the value is always NULL or never NULL */ + cached_value= (longlong) !args[0]->is_null(); + } + } +} longlong Item_func_isnotnull::val_int() { |