summaryrefslogtreecommitdiff
path: root/sql/item.h
diff options
context:
space:
mode:
authorunknown <bell@laptop.sanja.is.com.ua>2003-08-19 20:14:35 +0300
committerunknown <bell@laptop.sanja.is.com.ua>2003-08-19 20:14:35 +0300
commit6d0a048701e07e69dea899fc1a6caa8f5d6b435d (patch)
tree095650183fd0ccdaa33b61c73f3a08954efac80b /sql/item.h
parent3808546d8a67d62420f9111998d94e44050ac313 (diff)
parent513917a53f87ce43dea98838a7d4e6196b9ea82b (diff)
downloadmariadb-git-6d0a048701e07e69dea899fc1a6caa8f5d6b435d.tar.gz
merge
mysql-test/r/subselect.result: Auto merged mysql-test/t/subselect.test: Auto merged sql/item.cc: Auto merged sql/item.h: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_cmpfunc.h: Auto merged sql/item_func.cc: Auto merged sql/item_func.h: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/sql_delete.cc: 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_table.cc: Auto merged sql/sql_update.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/table.h: Auto merged
Diffstat (limited to 'sql/item.h')
-rw-r--r--sql/item.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/sql/item.h b/sql/item.h
index 6b7730f77db..296ad18b1f1 100644
--- a/sql/item.h
+++ b/sql/item.h
@@ -146,7 +146,24 @@ public:
virtual double val_result() { return val(); }
virtual longlong val_int_result() { return val_int(); }
virtual String *str_result(String* tmp) { return val_str(tmp); }
+ /* bit map of tables used by item */
virtual table_map used_tables() const { return (table_map) 0L; }
+ /*
+ Return table map of tables that can't be NULL tables (tables that are
+ used in a context where if they would contain a NULL row generated
+ by a LEFT or RIGHT join, the item would not be true).
+ This expression is used on WHERE item to determinate if a LEFT JOIN can be
+ converted to a normal join.
+ Generally this function should return used_tables() if the function
+ would return null if any of the arguments are null
+ As this is only used in the beginning of optimization, the value don't
+ have to be updated in update_used_tables()
+ */
+ virtual table_map not_null_tables() const { return used_tables(); }
+ /*
+ Returns true if this is a simple constant item like an integer, not
+ a constant expression
+ */
virtual bool basic_const_item() const { return 0; }
virtual Item *new_item() { return 0; } /* Only for const items */
virtual cond_result eq_cmp_result() const { return COND_OK; }