summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/join_outer.result6
-rw-r--r--mysql-test/t/join_outer.test1
-rw-r--r--sql/ha_berkeley.cc3
-rw-r--r--sql/ha_ndbcluster.cc8
-rw-r--r--sql/item_cmpfunc.h4
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() {}
};