MDEV-21029 Incorrect result for expression with the <=> operator and IS NULL
Item_func_equal erroneously derived is_null() from the parent class. Overriding it to return false because <=> can never return NULL.
This commit is contained in:
parent
773cb726a8
commit
2e404c9850
@ -43,3 +43,14 @@ a
|
|||||||
4828532208463511553
|
4828532208463511553
|
||||||
drop table t1;
|
drop table t1;
|
||||||
#End of 4.1 tests
|
#End of 4.1 tests
|
||||||
|
# Start of 10.5 tests
|
||||||
|
#
|
||||||
|
# MDEV-21029 Incorrect result for expression with the <=> operator and IS NULL
|
||||||
|
#
|
||||||
|
CREATE TABLE t0(c0 INT);
|
||||||
|
INSERT INTO t0 VALUES (1);
|
||||||
|
SELECT (c0 > (NULL <=> 0)) IS NULL AS c1 FROM t0;
|
||||||
|
c1
|
||||||
|
0
|
||||||
|
DROP TABLE t0;
|
||||||
|
# End of 10.5 tests
|
||||||
|
@ -44,3 +44,18 @@ select * from t1 where a in ('4828532208463511553');
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
--echo #End of 4.1 tests
|
--echo #End of 4.1 tests
|
||||||
|
|
||||||
|
|
||||||
|
--echo # Start of 10.5 tests
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-21029 Incorrect result for expression with the <=> operator and IS NULL
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t0(c0 INT);
|
||||||
|
INSERT INTO t0 VALUES (1);
|
||||||
|
SELECT (c0 > (NULL <=> 0)) IS NULL AS c1 FROM t0;
|
||||||
|
DROP TABLE t0;
|
||||||
|
|
||||||
|
|
||||||
|
--echo # End of 10.5 tests
|
||||||
|
@ -782,6 +782,7 @@ public:
|
|||||||
enum Functype functype() const override { return EQUAL_FUNC; }
|
enum Functype functype() const override { return EQUAL_FUNC; }
|
||||||
enum Functype rev_functype() const override { return EQUAL_FUNC; }
|
enum Functype rev_functype() const override { return EQUAL_FUNC; }
|
||||||
cond_result eq_cmp_result() const override { return COND_TRUE; }
|
cond_result eq_cmp_result() const override { return COND_TRUE; }
|
||||||
|
bool is_null() override { return false; }
|
||||||
const char *func_name() const override { return "<=>"; }
|
const char *func_name() const override { return "<=>"; }
|
||||||
Item *neg_transformer(THD *thd) override { return 0; }
|
Item *neg_transformer(THD *thd) override { return 0; }
|
||||||
void add_key_fields(JOIN *join, KEY_FIELD **key_fields,
|
void add_key_fields(JOIN *join, KEY_FIELD **key_fields,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user