1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-12303 Add Type_handler::Item_xxx_fix_length_and_dec() for CAST classes

This commit is contained in:
Alexander Barkov
2017-04-04 17:59:48 +04:00
parent f1b0b04651
commit 17309c4c12
7 changed files with 425 additions and 33 deletions

View File

@ -3778,5 +3778,64 @@ SELECT STDDEV(COALESCE(a)) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'std('
DROP TABLE t1;
#
# MDEV-12303 Add Type_handler::Item_xxx_fix_length_and_dec() for CAST classes
#
CREATE TABLE t1 (a GEOMETRY);
SELECT CAST(POINT(1,1) AS SIGNED) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_signed'
SELECT CAST(POINT(1,1) AS UNSIGNED) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_unsigned'
SELECT CAST(POINT(1,1) AS DOUBLE) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'double_typecast'
SELECT CAST(POINT(1,1) AS DECIMAL(10,1)) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'decimal_typecast'
SELECT CAST(POINT(1,1) AS CHAR) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_char'
SELECT CAST(POINT(1,1) AS TIME) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_time'
SELECT CAST(POINT(1,1) AS DATE) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_date'
SELECT CAST(POINT(1,1) AS DATETIME) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_datetime'
SELECT CAST(a AS SIGNED) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_signed'
SELECT CAST(a AS UNSIGNED) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_unsigned'
SELECT CAST(a AS DOUBLE) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'double_typecast'
SELECT CAST(a AS DECIMAL(10,1)) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'decimal_typecast'
SELECT CAST(a AS CHAR) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_char'
SELECT CAST(a AS TIME) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_time'
SELECT CAST(a AS DATE) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_date'
SELECT CAST(a AS DATETIME) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_datetime'
SELECT CAST(COALESCE(a) AS SIGNED) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_signed'
SELECT CAST(COALESCE(a) AS UNSIGNED) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_unsigned'
SELECT CAST(COALESCE(a) AS DOUBLE) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'double_typecast'
SELECT CAST(COALESCE(a) AS DECIMAL(10,1)) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'decimal_typecast'
SELECT CAST(COALESCE(a) AS CHAR) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_char'
SELECT CAST(COALESCE(a) AS TIME) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_time'
SELECT CAST(COALESCE(a) AS DATE) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_date'
SELECT CAST(COALESCE(a) AS DATETIME) FROM t1;
ERROR HY000: Illegal parameter data type geometry for operation 'cast_as_datetime'
SELECT LENGTH(CAST(POINT(1,1) AS BINARY)) FROM t1;
LENGTH(CAST(POINT(1,1) AS BINARY))
SELECT LENGTH(CAST(a AS BINARY)) FROM t1;
LENGTH(CAST(a AS BINARY))
SELECT LENGTH(CAST(COALESCE(a) AS BINARY)) FROM t1;
LENGTH(CAST(COALESCE(a) AS BINARY))
DROP TABLE t1;
#
# End of 10.3 tests
#