diff options
-rw-r--r-- | mysql-test/r/join_outer.result | 6 | ||||
-rw-r--r-- | mysql-test/t/join_outer.test | 1 | ||||
-rw-r--r-- | sql/ha_berkeley.cc | 3 | ||||
-rw-r--r-- | sql/ha_ndbcluster.cc | 8 | ||||
-rw-r--r-- | sql/item_cmpfunc.h | 4 |
5 files changed, 14 insertions, 8 deletions
diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result index 316483d0a5e..6042891e0bc 100644 --- a/mysql-test/r/join_outer.result +++ b/mysql-test/r/join_outer.result @@ -910,4 +910,10 @@ a b a b 1 1 1 2 2 1 2 2 3 1 NULL NULL +SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE not(0+(t1.a=30 and t2.b=1)); +a b a b +1 1 1 2 +2 1 2 2 +3 1 NULL NULL +4 2 NULL NULL DROP TABLE t1,t2; diff --git a/mysql-test/t/join_outer.test b/mysql-test/t/join_outer.test index f87233bff12..0af5e05dc0c 100644 --- a/mysql-test/t/join_outer.test +++ b/mysql-test/t/join_outer.test @@ -645,6 +645,7 @@ SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a; SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE t1.b=1; SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE t1.b=1 XOR (NOT ISNULL(t2.a) AND t2.b=1); +SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE not(0+(t1.a=30 and t2.b=1)); DROP TABLE t1,t2; diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc index f8e14844875..d57c51d24b1 100644 --- a/sql/ha_berkeley.cc +++ b/sql/ha_berkeley.cc @@ -371,8 +371,9 @@ void berkeley_cleanup_log_files(void) ** Berkeley DB tables *****************************************************************************/ +static const char *ha_bdb_bas_exts[]= { ha_berkeley_ext, NullS }; const char **ha_berkeley::bas_ext() const -{ static const char *ext[]= { ha_berkeley_ext, NullS }; return ext; } +{ return ha_bdb_bas_exts; } ulong ha_berkeley::index_flags(uint idx, uint part, bool all_parts) const diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index ffb1ecedb3c..fcbe7636dc8 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -3015,12 +3015,8 @@ int ha_ndbcluster::extra_opt(enum ha_extra_function operation, ulong cache_size) } -static const char *ha_ndb_bas_ext[]= { ha_ndb_ext, NullS }; -const char** -ha_ndbcluster::bas_ext() const -{ - return ha_ndb_bas_ext; -} +static const char *ha_ndb_bas_exts[]= { ha_ndb_ext, NullS }; +{ return ha_ndb_bas_exts; } /* diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index cd56528406e..03522fa5a0b 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -1187,6 +1187,8 @@ public: enum Functype functype() const { return COND_AND_FUNC; } longlong val_int(); const char *func_name() const { return "and"; } + table_map not_null_tables() const + { return abort_on_null ? not_null_tables_cache: and_tables_cache; } Item* copy_andor_structure(THD *thd) { Item_cond_and *item; @@ -1234,7 +1236,7 @@ public: enum Type type() const { return FUNC_ITEM; } longlong val_int(); const char *func_name() const { return "xor"; } - table_map not_null_tables() const { return and_tables_cache; } + void top_level_item() {} }; |