@@ -1163,6 +1163,75 @@ ROUND(a,-2) 9223372036854775800
1163
1163
ROUND(a,-19) 10000000000000000000
1164
1164
ROUND(a,-20) 0
1165
1165
ROUND(a,-30) 0
1166
+ CALL p1('bigint(22)');
1167
+ bigint(22)
1168
+ Table t2
1169
+ Create Table CREATE TABLE `t2` (
1170
+ `a` bigint(22) DEFAULT NULL,
1171
+ `ROUND(a,-1)` decimal(22,0) DEFAULT NULL,
1172
+ `ROUND(a,-2)` decimal(22,0) DEFAULT NULL,
1173
+ `ROUND(a,-19)` decimal(22,0) DEFAULT NULL,
1174
+ `ROUND(a,-20)` decimal(22,0) DEFAULT NULL,
1175
+ `ROUND(a,-30)` decimal(22,0) DEFAULT NULL
1176
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin1
1177
+ a -9223372036854775808
1178
+ ROUND(a,-1) -9223372036854775810
1179
+ ROUND(a,-2) -9223372036854775800
1180
+ ROUND(a,-19) -10000000000000000000
1181
+ ROUND(a,-20) 0
1182
+ ROUND(a,-30) 0
1183
+ a 9223372036854775807
1184
+ ROUND(a,-1) 9223372036854775810
1185
+ ROUND(a,-2) 9223372036854775800
1186
+ ROUND(a,-19) 10000000000000000000
1187
+ ROUND(a,-20) 0
1188
+ ROUND(a,-30) 0
1189
+ CALL p1('bigint(23)');
1190
+ bigint(23)
1191
+ Table t2
1192
+ Create Table CREATE TABLE `t2` (
1193
+ `a` bigint(23) DEFAULT NULL,
1194
+ `ROUND(a,-1)` decimal(23,0) DEFAULT NULL,
1195
+ `ROUND(a,-2)` decimal(23,0) DEFAULT NULL,
1196
+ `ROUND(a,-19)` decimal(23,0) DEFAULT NULL,
1197
+ `ROUND(a,-20)` decimal(23,0) DEFAULT NULL,
1198
+ `ROUND(a,-30)` decimal(23,0) DEFAULT NULL
1199
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin1
1200
+ a -9223372036854775808
1201
+ ROUND(a,-1) -9223372036854775810
1202
+ ROUND(a,-2) -9223372036854775800
1203
+ ROUND(a,-19) -10000000000000000000
1204
+ ROUND(a,-20) 0
1205
+ ROUND(a,-30) 0
1206
+ a 9223372036854775807
1207
+ ROUND(a,-1) 9223372036854775810
1208
+ ROUND(a,-2) 9223372036854775800
1209
+ ROUND(a,-19) 10000000000000000000
1210
+ ROUND(a,-20) 0
1211
+ ROUND(a,-30) 0
1212
+ CALL p1('bigint(30)');
1213
+ bigint(30)
1214
+ Table t2
1215
+ Create Table CREATE TABLE `t2` (
1216
+ `a` bigint(30) DEFAULT NULL,
1217
+ `ROUND(a,-1)` decimal(30,0) DEFAULT NULL,
1218
+ `ROUND(a,-2)` decimal(30,0) DEFAULT NULL,
1219
+ `ROUND(a,-19)` decimal(30,0) DEFAULT NULL,
1220
+ `ROUND(a,-20)` decimal(30,0) DEFAULT NULL,
1221
+ `ROUND(a,-30)` decimal(30,0) DEFAULT NULL
1222
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin1
1223
+ a -9223372036854775808
1224
+ ROUND(a,-1) -9223372036854775810
1225
+ ROUND(a,-2) -9223372036854775800
1226
+ ROUND(a,-19) -10000000000000000000
1227
+ ROUND(a,-20) 0
1228
+ ROUND(a,-30) 0
1229
+ a 9223372036854775807
1230
+ ROUND(a,-1) 9223372036854775810
1231
+ ROUND(a,-2) 9223372036854775800
1232
+ ROUND(a,-19) 10000000000000000000
1233
+ ROUND(a,-20) 0
1234
+ ROUND(a,-30) 0
1166
1235
CALL p1('tinyint unsigned');
1167
1236
tinyint unsigned
1168
1237
Table t2
@@ -1324,7 +1393,103 @@ ROUND(a,-2) 18446744073709551600
1324
1393
ROUND(a,-19) 20000000000000000000
1325
1394
ROUND(a,-20) 0
1326
1395
ROUND(a,-30) 0
1396
+ CALL p1('bigint(22) unsigned');
1397
+ bigint(22) unsigned
1398
+ Table t2
1399
+ Create Table CREATE TABLE `t2` (
1400
+ `a` bigint(22) unsigned DEFAULT NULL,
1401
+ `ROUND(a,-1)` decimal(23,0) unsigned DEFAULT NULL,
1402
+ `ROUND(a,-2)` decimal(23,0) unsigned DEFAULT NULL,
1403
+ `ROUND(a,-19)` decimal(23,0) unsigned DEFAULT NULL,
1404
+ `ROUND(a,-20)` decimal(23,0) unsigned DEFAULT NULL,
1405
+ `ROUND(a,-30)` decimal(23,0) unsigned DEFAULT NULL
1406
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin1
1407
+ a 0
1408
+ ROUND(a,-1) 0
1409
+ ROUND(a,-2) 0
1410
+ ROUND(a,-19) 0
1411
+ ROUND(a,-20) 0
1412
+ ROUND(a,-30) 0
1413
+ a 18446744073709551615
1414
+ ROUND(a,-1) 18446744073709551620
1415
+ ROUND(a,-2) 18446744073709551600
1416
+ ROUND(a,-19) 20000000000000000000
1417
+ ROUND(a,-20) 0
1418
+ ROUND(a,-30) 0
1419
+ CALL p1('bigint(23) unsigned');
1420
+ bigint(23) unsigned
1421
+ Table t2
1422
+ Create Table CREATE TABLE `t2` (
1423
+ `a` bigint(23) unsigned DEFAULT NULL,
1424
+ `ROUND(a,-1)` decimal(24,0) unsigned DEFAULT NULL,
1425
+ `ROUND(a,-2)` decimal(24,0) unsigned DEFAULT NULL,
1426
+ `ROUND(a,-19)` decimal(24,0) unsigned DEFAULT NULL,
1427
+ `ROUND(a,-20)` decimal(24,0) unsigned DEFAULT NULL,
1428
+ `ROUND(a,-30)` decimal(24,0) unsigned DEFAULT NULL
1429
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin1
1430
+ a 0
1431
+ ROUND(a,-1) 0
1432
+ ROUND(a,-2) 0
1433
+ ROUND(a,-19) 0
1434
+ ROUND(a,-20) 0
1435
+ ROUND(a,-30) 0
1436
+ a 18446744073709551615
1437
+ ROUND(a,-1) 18446744073709551620
1438
+ ROUND(a,-2) 18446744073709551600
1439
+ ROUND(a,-19) 20000000000000000000
1440
+ ROUND(a,-20) 0
1441
+ ROUND(a,-30) 0
1442
+ CALL p1('bigint(30) unsigned');
1443
+ bigint(30) unsigned
1444
+ Table t2
1445
+ Create Table CREATE TABLE `t2` (
1446
+ `a` bigint(30) unsigned DEFAULT NULL,
1447
+ `ROUND(a,-1)` decimal(31,0) unsigned DEFAULT NULL,
1448
+ `ROUND(a,-2)` decimal(31,0) unsigned DEFAULT NULL,
1449
+ `ROUND(a,-19)` decimal(31,0) unsigned DEFAULT NULL,
1450
+ `ROUND(a,-20)` decimal(31,0) unsigned DEFAULT NULL,
1451
+ `ROUND(a,-30)` decimal(31,0) unsigned DEFAULT NULL
1452
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin1
1453
+ a 0
1454
+ ROUND(a,-1) 0
1455
+ ROUND(a,-2) 0
1456
+ ROUND(a,-19) 0
1457
+ ROUND(a,-20) 0
1458
+ ROUND(a,-30) 0
1459
+ a 18446744073709551615
1460
+ ROUND(a,-1) 18446744073709551620
1461
+ ROUND(a,-2) 18446744073709551600
1462
+ ROUND(a,-19) 20000000000000000000
1463
+ ROUND(a,-20) 0
1464
+ ROUND(a,-30) 0
1327
1465
DROP PROCEDURE p1;
1328
1466
#
1467
+ # MDEV-23366 ROUND(18446744073709551615,rand()*0) returns a wrong result
1468
+ #
1469
+ SELECT
1470
+ ROUND(18446744073709551615,NULL) AS c1,
1471
+ ROUND(18446744073709551615,rand()*0) AS c2,
1472
+ ROUND(18446744073709551615,rand()*0-19) AS c3;
1473
+ c1 NULL
1474
+ c2 18446744073709551615
1475
+ c3 20000000000000000000
1476
+ CREATE OR REPLACE TABLE t1 AS
1477
+ SELECT
1478
+ ROUND(18446744073709551615,NULL) AS c1,
1479
+ ROUND(18446744073709551615,rand()*0) AS c2,
1480
+ ROUND(18446744073709551615,rand()*0-19) AS c3;
1481
+ SELECT * FROM t1;
1482
+ c1 NULL
1483
+ c2 18446744073709551615
1484
+ c3 20000000000000000000
1485
+ SHOW CREATE TABLE t1;
1486
+ Table t1
1487
+ Create Table CREATE TABLE `t1` (
1488
+ `c1` bigint(20) unsigned DEFAULT NULL,
1489
+ `c2` decimal(21,0) unsigned NOT NULL,
1490
+ `c3` decimal(21,0) unsigned NOT NULL
1491
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin1
1492
+ DROP TABLE t1;
1493
+ #
1329
1494
# End of 10.4 tests
1330
1495
#
0 commit comments