mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-17759 Assertion `precision > 0' failed in decimal_bin_size upon CREATE TABLE .. SELECT
This commit is contained in:
@@ -3753,5 +3753,23 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-17759 Assertion `precision > 0' failed in decimal_bin_size upon CREATE TABLE .. SELECT
|
||||||
|
#
|
||||||
|
SET sql_mode='';
|
||||||
|
CREATE TABLE t1 (d DECIMAL(43,0) UNSIGNED);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
CREATE TABLE t2 AS SELECT
|
||||||
|
IFNULL(SLEEP(0.01), NULL DIV d) AS f0,
|
||||||
|
IFNULL(SLEEP(0.01), '' DIV d) AS f1
|
||||||
|
FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`f0` decimal(1,0) DEFAULT NULL,
|
||||||
|
`f1` decimal(1,0) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
SET sql_mode=DEFAULT;
|
||||||
|
#
|
||||||
# End of 10.3 tests
|
# End of 10.3 tests
|
||||||
#
|
#
|
||||||
|
@@ -611,6 +611,22 @@ CREATE TABLE t1 AS SELECT
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-17759 Assertion `precision > 0' failed in decimal_bin_size upon CREATE TABLE .. SELECT
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET sql_mode='';
|
||||||
|
CREATE TABLE t1 (d DECIMAL(43,0) UNSIGNED);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
CREATE TABLE t2 AS SELECT
|
||||||
|
IFNULL(SLEEP(0.01), NULL DIV d) AS f0,
|
||||||
|
IFNULL(SLEEP(0.01), '' DIV d) AS f1
|
||||||
|
FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
SET sql_mode=DEFAULT;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.3 tests
|
--echo # End of 10.3 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@@ -1285,3 +1285,36 @@ E59B9BE4BA94E585AD 2914501801
|
|||||||
E4B883E585ABE4B99D 2374586519
|
E4B883E585ABE4B99D 2374586519
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET NAMES default;
|
SET NAMES default;
|
||||||
|
#
|
||||||
|
# MDEV-17759 Assertion `precision > 0' failed in decimal_bin_size upon CREATE TABLE .. SELECT
|
||||||
|
#
|
||||||
|
SET sql_mode='';
|
||||||
|
CREATE TABLE t1 (d DECIMAL(43,0) UNSIGNED);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
CREATE TABLE t2 AS SELECT
|
||||||
|
NULL DIV d AS d_null,
|
||||||
|
'' DIV d AS d_empty_string,
|
||||||
|
X'32' DIV d AS d_hex_string2,
|
||||||
|
X'3232' DIV d AS d_hex_string4,
|
||||||
|
TIME(0) DIV d AS d_time,
|
||||||
|
CURRENT_DATE DIV d AS d_date,
|
||||||
|
CURRENT_TIMESTAMP DIV d AS d_datetime
|
||||||
|
FROM t1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect DECIMAL value: ''
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`d_null` int(1) unsigned DEFAULT NULL,
|
||||||
|
`d_empty_string` int(1) unsigned DEFAULT NULL,
|
||||||
|
`d_hex_string2` int(1) unsigned DEFAULT NULL,
|
||||||
|
`d_hex_string4` int(2) unsigned DEFAULT NULL,
|
||||||
|
`d_time` int(7) unsigned DEFAULT NULL,
|
||||||
|
`d_date` int(8) unsigned DEFAULT NULL,
|
||||||
|
`d_datetime` bigint(14) unsigned DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
SET sql_mode=DEFAULT;
|
||||||
|
#
|
||||||
|
# End of 10.3 tests
|
||||||
|
#
|
||||||
|
@@ -897,3 +897,28 @@ LOAD DATA INFILE '../../std_data/loaddata_utf8.dat' INTO TABLE t1 CHARACTER SET
|
|||||||
SELECT HEX(a), CRC32(a) from t1;
|
SELECT HEX(a), CRC32(a) from t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET NAMES default;
|
SET NAMES default;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-17759 Assertion `precision > 0' failed in decimal_bin_size upon CREATE TABLE .. SELECT
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET sql_mode='';
|
||||||
|
CREATE TABLE t1 (d DECIMAL(43,0) UNSIGNED);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
CREATE TABLE t2 AS SELECT
|
||||||
|
NULL DIV d AS d_null,
|
||||||
|
'' DIV d AS d_empty_string,
|
||||||
|
X'32' DIV d AS d_hex_string2,
|
||||||
|
X'3232' DIV d AS d_hex_string4,
|
||||||
|
TIME(0) DIV d AS d_time,
|
||||||
|
CURRENT_DATE DIV d AS d_date,
|
||||||
|
CURRENT_TIMESTAMP DIV d AS d_datetime
|
||||||
|
FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
SET sql_mode=DEFAULT;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.3 tests
|
||||||
|
--echo #
|
||||||
|
@@ -1752,13 +1752,9 @@ longlong Item_func_int_div::val_int()
|
|||||||
|
|
||||||
bool Item_func_int_div::fix_length_and_dec()
|
bool Item_func_int_div::fix_length_and_dec()
|
||||||
{
|
{
|
||||||
Item_result argtype= args[0]->result_type();
|
uint32 prec= args[0]->decimal_int_part();
|
||||||
/* use precision ony for the data type it is applicable for and valid */
|
set_if_smaller(prec, MY_INT64_NUM_DECIMAL_DIGITS);
|
||||||
uint32 char_length= args[0]->max_char_length() -
|
fix_char_length(prec);
|
||||||
(argtype == DECIMAL_RESULT || argtype == INT_RESULT ?
|
|
||||||
args[0]->decimals : 0);
|
|
||||||
fix_char_length(char_length > MY_INT64_NUM_DECIMAL_DIGITS ?
|
|
||||||
MY_INT64_NUM_DECIMAL_DIGITS : char_length);
|
|
||||||
maybe_null=1;
|
maybe_null=1;
|
||||||
unsigned_flag=args[0]->unsigned_flag | args[1]->unsigned_flag;
|
unsigned_flag=args[0]->unsigned_flag | args[1]->unsigned_flag;
|
||||||
return false;
|
return false;
|
||||||
|
Reference in New Issue
Block a user