mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-13673 Bad result in view
When printing an expression, like a/(b*c), we need to print parentheses, even though / and * have the same precedence. Basically, we should always treat the second argument as having one level higher precedence than it normally is.
This commit is contained in:
@ -838,3 +838,8 @@ select 0=0, 0=-0, 0.0= -0.0, 0.0 = -(0.0), 0.0E1=-0.0E1, 0.0E1=-(0.0E1);
|
|||||||
select CRC32(NULL), CRC32(''), CRC32('MySQL'), CRC32('mysql'), CRC32('01234567'), CRC32('012345678');
|
select CRC32(NULL), CRC32(''), CRC32('MySQL'), CRC32('mysql'), CRC32('01234567'), CRC32('012345678');
|
||||||
CRC32(NULL) CRC32('') CRC32('MySQL') CRC32('mysql') CRC32('01234567') CRC32('012345678')
|
CRC32(NULL) CRC32('') CRC32('MySQL') CRC32('mysql') CRC32('01234567') CRC32('012345678')
|
||||||
NULL 0 3259397556 2501908538 763378421 939184570
|
NULL 0 3259397556 2501908538 763378421 939184570
|
||||||
|
explain extended select (3-2)+1, (3/2)*1, 3-(2+1), 3/(2*1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 3 - 2 + 1 AS `(3-2)+1`,3 / 2 * 1 AS `(3/2)*1`,3 - (2 + 1) AS `3-(2+1)`,3 / (2 * 1) AS `3/(2*1)`
|
||||||
|
@ -4784,7 +4784,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a` AS `a`,2 AS `b` from `test`.`t1` where `test`.`t1`.`a` = <cache>(2 + 1 + 1)
|
Note 1003 select `test`.`t1`.`a` AS `a`,2 AS `b` from `test`.`t1` where `test`.`t1`.`a` = <cache>(2 + (1 + 1))
|
||||||
SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
|
SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
|
||||||
b a
|
b a
|
||||||
2 3
|
2 3
|
||||||
|
@ -4795,7 +4795,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a` AS `a`,2 AS `b` from `test`.`t1` where `test`.`t1`.`a` = <cache>(2 + 1 + 1)
|
Note 1003 select `test`.`t1`.`a` AS `a`,2 AS `b` from `test`.`t1` where `test`.`t1`.`a` = <cache>(2 + (1 + 1))
|
||||||
SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
|
SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
|
||||||
b a
|
b a
|
||||||
2 3
|
2 3
|
||||||
|
@ -4784,7 +4784,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a` AS `a`,2 AS `b` from `test`.`t1` where `test`.`t1`.`a` = <cache>(2 + 1 + 1)
|
Note 1003 select `test`.`t1`.`a` AS `a`,2 AS `b` from `test`.`t1` where `test`.`t1`.`a` = <cache>(2 + (1 + 1))
|
||||||
SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
|
SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
|
||||||
b a
|
b a
|
||||||
2 3
|
2 3
|
||||||
|
@ -608,3 +608,8 @@ select 0=0, 0=-0, 0.0= -0.0, 0.0 = -(0.0), 0.0E1=-0.0E1, 0.0E1=-(0.0E1);
|
|||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
select CRC32(NULL), CRC32(''), CRC32('MySQL'), CRC32('mysql'), CRC32('01234567'), CRC32('012345678');
|
select CRC32(NULL), CRC32(''), CRC32('MySQL'), CRC32('mysql'), CRC32('01234567'), CRC32('012345678');
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13673 Bad result in view
|
||||||
|
#
|
||||||
|
explain extended select (3-2)+1, (3/2)*1, 3-(2+1), 3/(2*1);
|
||||||
|
@ -479,7 +479,8 @@ void Item_func::print_op(String *str, enum_query_type query_type)
|
|||||||
str->append(func_name());
|
str->append(func_name());
|
||||||
str->append(' ');
|
str->append(' ');
|
||||||
}
|
}
|
||||||
args[arg_count-1]->print_parenthesised(str, query_type, precedence());
|
args[arg_count-1]->print_parenthesised(str, query_type,
|
||||||
|
(enum precedence)(precedence() + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user