# # MCOL-4648: Disallow casting to NULL marker values, allow casting to EMPTY ROW values. # # Defined in joblisttypes.h: UBIGINTNULL == 0xFFFFFFFFFFFFFFFEULL == 18446744073709551614 # Defined in joblisttypes.h: UBIGINTEMPTYROW == 0xFFFFFFFFFFFFFFFFULL == 18446744073709551615 # DROP DATABASE IF EXISTS mcol_4648; CREATE DATABASE mcol_4648; USE mcol_4648; CREATE TABLE t1 (d1 DECIMAL(30,0), d2 DECIMAL(30,0) NOT NULL, str1 TEXT, str2 TEXT NOT NULL, double1 DOUBLE(30,0), double2 DOUBLE(30,0) NOT NULL) ENGINE=ColumnStore; INSERT INTO t1 VALUES (18446744073709551614, 18446744073709551614, "18446744073709551614", "18446744073709551614", 18446744073709551614.0, 18446744073709551614.0); INSERT INTO t1 VALUES (18446744073709551615, 18446744073709551615, "18446744073709551615", "18446744073709551615", 18446744073709551615.0, 18446744073709551615.0); SELECT d1, CAST(d1 AS UNSIGNED), CAST(d2 AS UNSIGNED) FROM t1; d1 CAST(d1 AS UNSIGNED) CAST(d2 AS UNSIGNED) 18446744073709551614 18446744073709551613 18446744073709551613 18446744073709551615 18446744073709551615 18446744073709551615 SELECT str1, CAST(str1 AS UNSIGNED), CAST(str2 AS UNSIGNED) FROM t1; str1 CAST(str1 AS UNSIGNED) CAST(str2 AS UNSIGNED) 18446744073709551614 18446744073709551613 18446744073709551613 18446744073709551615 18446744073709551615 18446744073709551615 # Doubles only store about 15 digits of precision for decimal places, therefore both inserted numbers # are rounded to 18446744073709552000.0 and we expect them to be casted to EMPTYROW value each. SELECT double1, CAST(double1 AS UNSIGNED), CAST(double2 AS UNSIGNED) FROM t1; double1 CAST(double1 AS UNSIGNED) CAST(double2 AS UNSIGNED) 18446744073709552000 18446744073709551615 18446744073709551615 18446744073709552000 18446744073709551615 18446744073709551615 DROP DATABASE mcol_4648;