[Commits] 201c1e0: MDEV-9143 JSON_xxx functions.

Alexey Botchkov holyfoot at askmonty.org
Tue Oct 25 09:10:45 EEST 2016


revision-id: 201c1e0f299f115cda2361ae0535507393872318 (mariadb-10.2.2-55-g201c1e0)
parent(s): b09b3161799e1e22b6cf3a434bc85e929939bc6c
committer: Alexey Botchkov
timestamp: 2016-10-25 10:09:33 +0400
message:

MDEV-9143 JSON_xxx functions.

        Item_bool fixed to behave smarter with NOT operation.

---
 mysql-test/r/null.result              | 2 +-
 mysql-test/r/parser_precedence.result | 2 +-
 sql/item.cc                           | 8 ++++++++
 sql/item.h                            | 1 +
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/mysql-test/r/null.result b/mysql-test/r/null.result
index 222ccc8..1686bc7 100644
--- a/mysql-test/r/null.result
+++ b/mysql-test/r/null.result
@@ -1584,7 +1584,7 @@ SELECT * FROM t1 WHERE ((c1 IS NOT NULL) >= (NOT TRUE)) IS NOT NULL;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
 Warnings:
-Note	1003	select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (((`test`.`t1`.`c1` is not null) >= <cache>((not(1)))) is not null)
+Note	1003	select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (((`test`.`t1`.`c1` is not null) >= 0) is not null)
 SELECT * FROM t1 WHERE ((c1 IS NOT NULL) >= (NOT TRUE)) IS NOT NULL;
 c1
 1
diff --git a/mysql-test/r/parser_precedence.result b/mysql-test/r/parser_precedence.result
index 5225dad..4330c8a 100644
--- a/mysql-test/r/parser_precedence.result
+++ b/mysql-test/r/parser_precedence.result
@@ -369,7 +369,7 @@ select (NOT FALSE) AND FALSE, NOT (FALSE AND FALSE), NOT FALSE AND FALSE;
 0	1	0
 Testing that NOT is associative
 select NOT NOT TRUE, NOT NOT NOT FALSE;
-TRUE	NOT NOT NOT FALSE
+NOT NOT TRUE	NOT NOT NOT FALSE
 1	1
 Testing that IS has precedence over NOT
 select (NOT NULL) IS TRUE, NOT (NULL IS TRUE), NOT NULL IS TRUE;
diff --git a/sql/item.cc b/sql/item.cc
index 448e34b..2388679 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -2900,6 +2900,14 @@ void Item_int::print(String *str, enum_query_type query_type)
 }
 
 
+Item *Item_bool::neg_transformer(THD *thd)
+{
+  value= !value;
+  name= 0;
+  return this;
+}
+
+
 Item_uint::Item_uint(THD *thd, const char *str_arg, uint length):
   Item_int(thd, str_arg, length)
 {
diff --git a/sql/item.h b/sql/item.h
index 7644235..ab70fdb 100644
--- a/sql/item.h
+++ b/sql/item.h
@@ -3008,6 +3008,7 @@ class Item_bool :public Item_int
   Item_bool(THD *thd, const char *str_arg, longlong i):
     Item_int(thd, str_arg, i, 1) {}
   bool is_bool_type() { return true; }
+  Item *neg_transformer(THD *thd);
 };
 
 


More information about the commits mailing list