to issue<44184376>:fix udf argument issue
This commit is contained in:
@ -88,6 +88,7 @@ int ObPLRouter::check_error_in_resolve(int code)
|
|||||||
case OB_ERR_SP_NO_DROP_SP:
|
case OB_ERR_SP_NO_DROP_SP:
|
||||||
case OB_ERR_SP_BAD_CONDITION_TYPE:
|
case OB_ERR_SP_BAD_CONDITION_TYPE:
|
||||||
case OB_ERR_DUP_SIGNAL_SET:
|
case OB_ERR_DUP_SIGNAL_SET:
|
||||||
|
case OB_ERR_WRONG_PARAMETERS_TO_NATIVE_FCT:
|
||||||
case OB_ERR_CANNOT_UPDATE_VIRTUAL_COL_IN_TRG:
|
case OB_ERR_CANNOT_UPDATE_VIRTUAL_COL_IN_TRG:
|
||||||
case OB_ERR_VIEW_SELECT_CONTAIN_QUESTIONMARK: {
|
case OB_ERR_VIEW_SELECT_CONTAIN_QUESTIONMARK: {
|
||||||
if (lib::is_mysql_mode()) {
|
if (lib::is_mysql_mode()) {
|
||||||
|
|||||||
@ -142,6 +142,9 @@ int ObExprUDF::calc_result_typeN(ObExprResType &type,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (OB_SUCC(ret) && lib::is_mysql_mode()) {
|
||||||
|
type_ctx.set_cast_mode(type_ctx.get_cast_mode() & ~CM_WARN_ON_FAIL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1155,24 +1155,15 @@ CREATE FUNCTION f1(arg TINYINT UNSIGNED) RETURNS TINYINT
|
|||||||
BEGIN
|
BEGIN
|
||||||
RETURN arg;
|
RETURN arg;
|
||||||
END|
|
END|
|
||||||
|
|
||||||
SELECT f1(-2500);
|
SELECT f1(-2500);
|
||||||
+-----------+
|
ERROR 22003: Out of range value for column
|
||||||
| f1(-2500) |
|
|
||||||
+-----------+
|
|
||||||
| 0 |
|
|
||||||
+-----------+
|
|
||||||
|
|
||||||
## SET @@sql_mode = 'traditional';
|
## SET @@sql_mode = 'traditional';
|
||||||
SET @@sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES';
|
SET @@sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES';
|
||||||
|
|
||||||
## --error ER_WARN_DATA_OUT_OF_RANGE
|
## --error ER_WARN_DATA_OUT_OF_RANGE
|
||||||
SELECT f1(-2500);
|
SELECT f1(-2500);
|
||||||
+-----------+
|
ERROR 22003: Out of range value for column
|
||||||
| f1(-2500) |
|
|
||||||
+-----------+
|
|
||||||
| 0 |
|
|
||||||
+-----------+
|
|
||||||
|
|
||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
|
|
||||||
@ -1183,11 +1174,7 @@ END|
|
|||||||
|
|
||||||
## --error ER_WARN_DATA_OUT_OF_RANGE
|
## --error ER_WARN_DATA_OUT_OF_RANGE
|
||||||
SELECT f1(-2500);
|
SELECT f1(-2500);
|
||||||
+-----------+
|
ERROR 22003: Out of range value for column
|
||||||
| f1(-2500) |
|
|
||||||
+-----------+
|
|
||||||
| 0 |
|
|
||||||
+-----------+
|
|
||||||
|
|
||||||
## SET @@sql_mode = 'ansi';
|
## SET @@sql_mode = 'ansi';
|
||||||
set @@sql_mode = "PIPES_AS_CONCAT,ONLY_FULL_GROUP_BY";
|
set @@sql_mode = "PIPES_AS_CONCAT,ONLY_FULL_GROUP_BY";
|
||||||
@ -1208,22 +1195,14 @@ BEGIN
|
|||||||
END|
|
END|
|
||||||
|
|
||||||
SELECT f1(8388699);
|
SELECT f1(8388699);
|
||||||
+-------------+
|
ERROR 22003: Out of range value for column
|
||||||
| f1(8388699) |
|
|
||||||
+-------------+
|
|
||||||
| 8388607 |
|
|
||||||
+-------------+
|
|
||||||
|
|
||||||
## SET @@sql_mode = 'traditional';
|
## SET @@sql_mode = 'traditional';
|
||||||
SET @@sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES';
|
SET @@sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES';
|
||||||
|
|
||||||
## --error ER_WARN_DATA_OUT_OF_RANGE
|
## --error ER_WARN_DATA_OUT_OF_RANGE
|
||||||
SELECT f1(8388699);
|
SELECT f1(8388699);
|
||||||
+-------------+
|
ERROR 22003: Out of range value for column
|
||||||
| f1(8388699) |
|
|
||||||
+-------------+
|
|
||||||
| 8388607 |
|
|
||||||
+-------------+
|
|
||||||
|
|
||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
|
|
||||||
@ -1234,11 +1213,7 @@ END|
|
|||||||
|
|
||||||
## --error ER_WARN_DATA_OUT_OF_RANGE
|
## --error ER_WARN_DATA_OUT_OF_RANGE
|
||||||
SELECT f1(8388699);
|
SELECT f1(8388699);
|
||||||
+-------------+
|
ERROR 22003: Out of range value for column
|
||||||
| f1(8388699) |
|
|
||||||
+-------------+
|
|
||||||
| 8388607 |
|
|
||||||
+-------------+
|
|
||||||
|
|
||||||
## SET @@sql_mode = 'ansi';
|
## SET @@sql_mode = 'ansi';
|
||||||
set @@sql_mode = "PIPES_AS_CONCAT,ONLY_FULL_GROUP_BY";
|
set @@sql_mode = "PIPES_AS_CONCAT,ONLY_FULL_GROUP_BY";
|
||||||
|
|||||||
@ -843,7 +843,8 @@ BEGIN
|
|||||||
RETURN arg;
|
RETURN arg;
|
||||||
END|
|
END|
|
||||||
delimiter ;|
|
delimiter ;|
|
||||||
|
# mysql8.0 会报错
|
||||||
|
--error 1264
|
||||||
SELECT f1(-2500);
|
SELECT f1(-2500);
|
||||||
|
|
||||||
# Call in TRADITIONAL mode the function created in ANSI mode.
|
# Call in TRADITIONAL mode the function created in ANSI mode.
|
||||||
@ -853,6 +854,7 @@ SET @@sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES';
|
|||||||
|
|
||||||
# TODO: a warning should be emitted here.
|
# TODO: a warning should be emitted here.
|
||||||
## --error ER_WARN_DATA_OUT_OF_RANGE
|
## --error ER_WARN_DATA_OUT_OF_RANGE
|
||||||
|
--error 1264
|
||||||
SELECT f1(-2500);
|
SELECT f1(-2500);
|
||||||
|
|
||||||
# Recreate the function in TRADITIONAL mode.
|
# Recreate the function in TRADITIONAL mode.
|
||||||
@ -867,6 +869,7 @@ END|
|
|||||||
delimiter ;|
|
delimiter ;|
|
||||||
|
|
||||||
## --error ER_WARN_DATA_OUT_OF_RANGE
|
## --error ER_WARN_DATA_OUT_OF_RANGE
|
||||||
|
--error 1264
|
||||||
SELECT f1(-2500);
|
SELECT f1(-2500);
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -915,6 +918,8 @@ BEGIN
|
|||||||
END|
|
END|
|
||||||
delimiter ;|
|
delimiter ;|
|
||||||
|
|
||||||
|
#mysql 8.0报错
|
||||||
|
--error 1264
|
||||||
SELECT f1(8388699);
|
SELECT f1(8388699);
|
||||||
|
|
||||||
# Call in TRADITIONAL mode the function created in ANSI mode.
|
# Call in TRADITIONAL mode the function created in ANSI mode.
|
||||||
@ -924,6 +929,7 @@ SET @@sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES';
|
|||||||
|
|
||||||
# TODO: a warning should be emitted here.
|
# TODO: a warning should be emitted here.
|
||||||
## --error ER_WARN_DATA_OUT_OF_RANGE
|
## --error ER_WARN_DATA_OUT_OF_RANGE
|
||||||
|
--error 1264
|
||||||
SELECT f1(8388699);
|
SELECT f1(8388699);
|
||||||
|
|
||||||
# Recreate the function in TRADITIONAL mode.
|
# Recreate the function in TRADITIONAL mode.
|
||||||
@ -938,6 +944,7 @@ END|
|
|||||||
delimiter ;|
|
delimiter ;|
|
||||||
|
|
||||||
## --error ER_WARN_DATA_OUT_OF_RANGE
|
## --error ER_WARN_DATA_OUT_OF_RANGE
|
||||||
|
--error 1264
|
||||||
SELECT f1(8388699);
|
SELECT f1(8388699);
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user