Merge gleb.loc:/home/uchum/work/bk/5.0
into gleb.loc:/home/uchum/work/bk/5.0-opt sql/item_func.cc: Auto merged
This commit is contained in:
commit
ccae0cf8b2
@ -362,3 +362,29 @@ cast(-19999999999999999999 as signed)
|
|||||||
-9223372036854775808
|
-9223372036854775808
|
||||||
Warnings:
|
Warnings:
|
||||||
Error 1292 Truncated incorrect DECIMAL value: ''
|
Error 1292 Truncated incorrect DECIMAL value: ''
|
||||||
|
select -9223372036854775808;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def -9223372036854775808 8 20 20 N 32897 0 63
|
||||||
|
-9223372036854775808
|
||||||
|
-9223372036854775808
|
||||||
|
select -(9223372036854775808);
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def -(9223372036854775808) 8 20 20 N 32897 0 63
|
||||||
|
-(9223372036854775808)
|
||||||
|
-9223372036854775808
|
||||||
|
select -((9223372036854775808));
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def -((9223372036854775808)) 8 20 20 N 32897 0 63
|
||||||
|
-((9223372036854775808))
|
||||||
|
-9223372036854775808
|
||||||
|
select -(-(9223372036854775808));
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def -(-(9223372036854775808)) 246 21 19 N 129 0 63
|
||||||
|
-(-(9223372036854775808))
|
||||||
|
9223372036854775808
|
||||||
|
select --9223372036854775808, ---9223372036854775808, ----9223372036854775808;
|
||||||
|
--9223372036854775808 ---9223372036854775808 ----9223372036854775808
|
||||||
|
9223372036854775808 -9223372036854775808 9223372036854775808
|
||||||
|
select -(-9223372036854775808), -(-(-9223372036854775808));
|
||||||
|
-(-9223372036854775808) -(-(-9223372036854775808))
|
||||||
|
9223372036854775808 -9223372036854775808
|
||||||
|
@ -2061,4 +2061,96 @@ C
|
|||||||
2707236321
|
2707236321
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
SELECT LOCATE('foo', NULL) FROM DUAL;
|
||||||
|
LOCATE('foo', NULL)
|
||||||
|
NULL
|
||||||
|
SELECT LOCATE(NULL, 'o') FROM DUAL;
|
||||||
|
LOCATE(NULL, 'o')
|
||||||
|
NULL
|
||||||
|
SELECT LOCATE(NULL, NULL) FROM DUAL;
|
||||||
|
LOCATE(NULL, NULL)
|
||||||
|
NULL
|
||||||
|
SELECT LOCATE('foo', NULL) IS NULL FROM DUAL;
|
||||||
|
LOCATE('foo', NULL) IS NULL
|
||||||
|
1
|
||||||
|
SELECT LOCATE(NULL, 'o') IS NULL FROM DUAL;
|
||||||
|
LOCATE(NULL, 'o') IS NULL
|
||||||
|
1
|
||||||
|
SELECT LOCATE(NULL, NULL) IS NULL FROM DUAL;
|
||||||
|
LOCATE(NULL, NULL) IS NULL
|
||||||
|
1
|
||||||
|
SELECT ISNULL(LOCATE('foo', NULL)) FROM DUAL;
|
||||||
|
ISNULL(LOCATE('foo', NULL))
|
||||||
|
1
|
||||||
|
SELECT ISNULL(LOCATE(NULL, 'o')) FROM DUAL;
|
||||||
|
ISNULL(LOCATE(NULL, 'o'))
|
||||||
|
1
|
||||||
|
SELECT ISNULL(LOCATE(NULL, NULL)) FROM DUAL;
|
||||||
|
ISNULL(LOCATE(NULL, NULL))
|
||||||
|
1
|
||||||
|
SELECT LOCATE('foo', NULL) <=> NULL FROM DUAL;
|
||||||
|
LOCATE('foo', NULL) <=> NULL
|
||||||
|
1
|
||||||
|
SELECT LOCATE(NULL, 'o') <=> NULL FROM DUAL;
|
||||||
|
LOCATE(NULL, 'o') <=> NULL
|
||||||
|
1
|
||||||
|
SELECT LOCATE(NULL, NULL) <=> NULL FROM DUAL;
|
||||||
|
LOCATE(NULL, NULL) <=> NULL
|
||||||
|
1
|
||||||
|
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, a varchar(10), p varchar(10));
|
||||||
|
INSERT INTO t1 VALUES (1, 'foo', 'o');
|
||||||
|
INSERT INTO t1 VALUES (2, 'foo', NULL);
|
||||||
|
INSERT INTO t1 VALUES (3, NULL, 'o');
|
||||||
|
INSERT INTO t1 VALUES (4, NULL, NULL);
|
||||||
|
SELECT id, LOCATE(a,p) FROM t1;
|
||||||
|
id LOCATE(a,p)
|
||||||
|
1 0
|
||||||
|
2 NULL
|
||||||
|
3 NULL
|
||||||
|
4 NULL
|
||||||
|
SELECT id, LOCATE(a,p) IS NULL FROM t1;
|
||||||
|
id LOCATE(a,p) IS NULL
|
||||||
|
1 0
|
||||||
|
2 1
|
||||||
|
3 1
|
||||||
|
4 1
|
||||||
|
SELECT id, ISNULL(LOCATE(a,p)) FROM t1;
|
||||||
|
id ISNULL(LOCATE(a,p))
|
||||||
|
1 0
|
||||||
|
2 1
|
||||||
|
3 1
|
||||||
|
4 1
|
||||||
|
SELECT id, LOCATE(a,p) <=> NULL FROM t1;
|
||||||
|
id LOCATE(a,p) <=> NULL
|
||||||
|
1 0
|
||||||
|
2 1
|
||||||
|
3 1
|
||||||
|
4 1
|
||||||
|
SELECT id FROM t1 WHERE LOCATE(a,p) IS NULL;
|
||||||
|
id
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
SELECT id FROM t1 WHERE LOCATE(a,p) <=> NULL;
|
||||||
|
id
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
DROP TABLE t1;
|
||||||
|
SELECT SUBSTR('foo',1,0) FROM DUAL;
|
||||||
|
SUBSTR('foo',1,0)
|
||||||
|
|
||||||
|
SELECT SUBSTR('foo',1,CAST(0 AS SIGNED)) FROM DUAL;
|
||||||
|
SUBSTR('foo',1,CAST(0 AS SIGNED))
|
||||||
|
|
||||||
|
SELECT SUBSTR('foo',1,CAST(0 AS UNSIGNED)) FROM DUAL;
|
||||||
|
SUBSTR('foo',1,CAST(0 AS UNSIGNED))
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a varchar(10), len int unsigned);
|
||||||
|
INSERT INTO t1 VALUES ('bar', 2), ('foo', 0);
|
||||||
|
SELECT SUBSTR(a,1,len) FROM t1;
|
||||||
|
SUBSTR(a,1,len)
|
||||||
|
ba
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -294,3 +294,19 @@ drop table t1;
|
|||||||
|
|
||||||
select cast(19999999999999999999 as signed);
|
select cast(19999999999999999999 as signed);
|
||||||
select cast(-19999999999999999999 as signed);
|
select cast(-19999999999999999999 as signed);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #28625: -9223372036854775808 doesn't fit in BIGINT.
|
||||||
|
#
|
||||||
|
|
||||||
|
# PS protocol gives different metadata for `Max length' column
|
||||||
|
--disable_ps_protocol
|
||||||
|
--enable_metadata
|
||||||
|
select -9223372036854775808;
|
||||||
|
select -(9223372036854775808);
|
||||||
|
select -((9223372036854775808));
|
||||||
|
select -(-(9223372036854775808));
|
||||||
|
--disable_metadata
|
||||||
|
--endble_ps_protocol
|
||||||
|
select --9223372036854775808, ---9223372036854775808, ----9223372036854775808;
|
||||||
|
select -(-9223372036854775808), -(-(-9223372036854775808));
|
||||||
|
@ -1076,4 +1076,52 @@ SELECT * FROM (SELECT * FROM v1) x;
|
|||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #27932: LOCATE with argument evaluated to NULL
|
||||||
|
#
|
||||||
|
|
||||||
|
SELECT LOCATE('foo', NULL) FROM DUAL;
|
||||||
|
SELECT LOCATE(NULL, 'o') FROM DUAL;
|
||||||
|
SELECT LOCATE(NULL, NULL) FROM DUAL;
|
||||||
|
SELECT LOCATE('foo', NULL) IS NULL FROM DUAL;
|
||||||
|
SELECT LOCATE(NULL, 'o') IS NULL FROM DUAL;
|
||||||
|
SELECT LOCATE(NULL, NULL) IS NULL FROM DUAL;
|
||||||
|
SELECT ISNULL(LOCATE('foo', NULL)) FROM DUAL;
|
||||||
|
SELECT ISNULL(LOCATE(NULL, 'o')) FROM DUAL;
|
||||||
|
SELECT ISNULL(LOCATE(NULL, NULL)) FROM DUAL;
|
||||||
|
SELECT LOCATE('foo', NULL) <=> NULL FROM DUAL;
|
||||||
|
SELECT LOCATE(NULL, 'o') <=> NULL FROM DUAL;
|
||||||
|
SELECT LOCATE(NULL, NULL) <=> NULL FROM DUAL;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, a varchar(10), p varchar(10));
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1, 'foo', 'o');
|
||||||
|
INSERT INTO t1 VALUES (2, 'foo', NULL);
|
||||||
|
INSERT INTO t1 VALUES (3, NULL, 'o');
|
||||||
|
INSERT INTO t1 VALUES (4, NULL, NULL);
|
||||||
|
|
||||||
|
SELECT id, LOCATE(a,p) FROM t1;
|
||||||
|
SELECT id, LOCATE(a,p) IS NULL FROM t1;
|
||||||
|
SELECT id, ISNULL(LOCATE(a,p)) FROM t1;
|
||||||
|
SELECT id, LOCATE(a,p) <=> NULL FROM t1;
|
||||||
|
SELECT id FROM t1 WHERE LOCATE(a,p) IS NULL;
|
||||||
|
SELECT id FROM t1 WHERE LOCATE(a,p) <=> NULL;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #27130: SUBSTR with UNSIGNED 0 as the last argument
|
||||||
|
#
|
||||||
|
|
||||||
|
SELECT SUBSTR('foo',1,0) FROM DUAL;
|
||||||
|
SELECT SUBSTR('foo',1,CAST(0 AS SIGNED)) FROM DUAL;
|
||||||
|
SELECT SUBSTR('foo',1,CAST(0 AS UNSIGNED)) FROM DUAL;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a varchar(10), len int unsigned);
|
||||||
|
INSERT INTO t1 VALUES ('bar', 2), ('foo', 0);
|
||||||
|
|
||||||
|
SELECT SUBSTR(a,1,len) FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@ -1523,16 +1523,20 @@ void Item_func_neg::fix_length_and_dec()
|
|||||||
Use val() to get value as arg_type doesn't mean that item is
|
Use val() to get value as arg_type doesn't mean that item is
|
||||||
Item_int or Item_real due to existence of Item_param.
|
Item_int or Item_real due to existence of Item_param.
|
||||||
*/
|
*/
|
||||||
if (hybrid_type == INT_RESULT &&
|
if (hybrid_type == INT_RESULT && args[0]->const_item())
|
||||||
args[0]->type() == INT_ITEM &&
|
|
||||||
((ulonglong) args[0]->val_int() >= (ulonglong) LONGLONG_MIN))
|
|
||||||
{
|
{
|
||||||
/*
|
longlong val= args[0]->val_int();
|
||||||
Ensure that result is converted to DECIMAL, as longlong can't hold
|
if ((ulonglong) val >= (ulonglong) LONGLONG_MIN &&
|
||||||
the negated number
|
((ulonglong) val != (ulonglong) LONGLONG_MIN ||
|
||||||
*/
|
args[0]->type() != INT_ITEM))
|
||||||
hybrid_type= DECIMAL_RESULT;
|
{
|
||||||
DBUG_PRINT("info", ("Type changed: DECIMAL_RESULT"));
|
/*
|
||||||
|
Ensure that result is converted to DECIMAL, as longlong can't hold
|
||||||
|
the negated number
|
||||||
|
*/
|
||||||
|
hybrid_type= DECIMAL_RESULT;
|
||||||
|
DBUG_PRINT("info", ("Type changed: DECIMAL_RESULT"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
unsigned_flag= 0;
|
unsigned_flag= 0;
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
@ -2507,7 +2511,6 @@ longlong Item_func_coercibility::val_int()
|
|||||||
|
|
||||||
void Item_func_locate::fix_length_and_dec()
|
void Item_func_locate::fix_length_and_dec()
|
||||||
{
|
{
|
||||||
maybe_null= 0;
|
|
||||||
max_length= MY_INT32_NUM_DECIMAL_DIGITS;
|
max_length= MY_INT32_NUM_DECIMAL_DIGITS;
|
||||||
agg_arg_charsets(cmp_collation, args, 2, MY_COLL_CMP_CONV, 1);
|
agg_arg_charsets(cmp_collation, args, 2, MY_COLL_CMP_CONV, 1);
|
||||||
}
|
}
|
||||||
|
@ -1145,8 +1145,9 @@ String *Item_func_substr::val_str(String *str)
|
|||||||
(arg_count == 3 && args[2]->null_value))))
|
(arg_count == 3 && args[2]->null_value))))
|
||||||
return 0; /* purecov: inspected */
|
return 0; /* purecov: inspected */
|
||||||
|
|
||||||
/* Negative length, will return empty string. */
|
/* Negative or zero length, will return empty string. */
|
||||||
if ((arg_count == 3) && (length <= 0) && !args[2]->unsigned_flag)
|
if ((arg_count == 3) && (length <= 0) &&
|
||||||
|
(length == 0 || !args[2]->unsigned_flag))
|
||||||
return &my_empty_string;
|
return &my_empty_string;
|
||||||
|
|
||||||
/* Assumes that the maximum length of a String is < INT_MAX32. */
|
/* Assumes that the maximum length of a String is < INT_MAX32. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user