--source ../include/have_columnstore.inc --echo # --echo # MCOL-4648: Disallow casting to NULL marker values, allow casting to EMPTY ROW values. --echo # --echo # Defined in joblisttypes.h: UBIGINTNULL == 0xFFFFFFFFFFFFFFFEULL == 18446744073709551614 --echo # Defined in joblisttypes.h: UBIGINTEMPTYROW == 0xFFFFFFFFFFFFFFFFULL == 18446744073709551615 --echo # --disable_warnings DROP DATABASE IF EXISTS mcol_4648; --enable_warnings 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; SELECT str1, CAST(str1 AS UNSIGNED), CAST(str2 AS UNSIGNED) FROM t1; --echo # Doubles only store about 15 digits of precision for decimal places, therefore both inserted numbers --echo # 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; DROP DATABASE mcol_4648;