mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-21765 Possibly inconsistent behavior of BIT_xx functions with INET6 field
Disallow BIT_AND(), BIT_OR(), BIT_XOR() for data types GEOMETRY and INET6, as they cannot return any useful integer values.
This commit is contained in:
@ -5315,5 +5315,16 @@ SELECT EXTRACT(DAY FROM a) FROM t1;
|
|||||||
ERROR HY000: Illegal parameter data type geometry for operation 'extract(day)'
|
ERROR HY000: Illegal parameter data type geometry for operation 'extract(day)'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-21765 Possibly inconsistent behavior of BIT_xx functions with INET6 field
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a GEOMETRY);
|
||||||
|
SELECT BIT_AND(a) FROM t1;
|
||||||
|
ERROR HY000: Illegal parameter data type geometry for operation 'bit_and('
|
||||||
|
SELECT BIT_OR(a) FROM t1;
|
||||||
|
ERROR HY000: Illegal parameter data type geometry for operation 'bit_or('
|
||||||
|
SELECT BIT_XOR(a) FROM t1;
|
||||||
|
ERROR HY000: Illegal parameter data type geometry for operation 'bit_xor('
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
# End of 10.5 tests
|
# End of 10.5 tests
|
||||||
#
|
#
|
||||||
|
@ -3318,6 +3318,20 @@ CREATE TABLE t1 (a GEOMETRY);
|
|||||||
SELECT EXTRACT(DAY FROM a) FROM t1;
|
SELECT EXTRACT(DAY FROM a) FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-21765 Possibly inconsistent behavior of BIT_xx functions with INET6 field
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a GEOMETRY);
|
||||||
|
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
|
||||||
|
SELECT BIT_AND(a) FROM t1;
|
||||||
|
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
|
||||||
|
SELECT BIT_OR(a) FROM t1;
|
||||||
|
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
|
||||||
|
SELECT BIT_XOR(a) FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.5 tests
|
--echo # End of 10.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -909,6 +909,17 @@ a GROUP_CONCAT(a ORDER BY a)
|
|||||||
::2 ::2,::2,::2,::2
|
::2 ::2,::2,::2,::2
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-21765 Possibly inconsistent behavior of BIT_xx functions with INET6 field
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INET6);
|
||||||
|
SELECT BIT_AND(a) FROM t1;
|
||||||
|
ERROR HY000: Illegal parameter data type inet6 for operation 'bit_and('
|
||||||
|
SELECT BIT_OR(a) FROM t1;
|
||||||
|
ERROR HY000: Illegal parameter data type inet6 for operation 'bit_or('
|
||||||
|
SELECT BIT_XOR(a) FROM t1;
|
||||||
|
ERROR HY000: Illegal parameter data type inet6 for operation 'bit_xor('
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
# Window functions
|
# Window functions
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a INET6);
|
CREATE TABLE t1 (a INET6);
|
||||||
|
@ -536,6 +536,20 @@ SELECT GROUP_CONCAT(a ORDER BY a) FROM t1;
|
|||||||
SELECT a, GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a;
|
SELECT a, GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-21765 Possibly inconsistent behavior of BIT_xx functions with INET6 field
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INET6);
|
||||||
|
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
|
||||||
|
SELECT BIT_AND(a) FROM t1;
|
||||||
|
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
|
||||||
|
SELECT BIT_OR(a) FROM t1;
|
||||||
|
--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
|
||||||
|
SELECT BIT_XOR(a) FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Window functions
|
--echo # Window functions
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1208,6 +1208,8 @@ public:
|
|||||||
const Type_handler *type_handler() const { return &type_handler_ulonglong; }
|
const Type_handler *type_handler() const { return &type_handler_ulonglong; }
|
||||||
bool fix_length_and_dec()
|
bool fix_length_and_dec()
|
||||||
{
|
{
|
||||||
|
if (args[0]->check_type_can_return_int(func_name()))
|
||||||
|
return true;
|
||||||
decimals= 0; max_length=21; unsigned_flag= 1; maybe_null= null_value= 0;
|
decimals= 0; max_length=21; unsigned_flag= 1; maybe_null= null_value= 0;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user