blob: 83112fe87edfda3231ca5a365bb70d4518cd8451 [file]
# unsigned.iq - Tests for unsigned types
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
!use post
!set outputformat csv
WITH consts(v) AS (VALUES(CAST(1 AS UNSIGNED)), (2), (3))
SELECT SUM(v) FROM consts;
EXPR$0
6
!ok
SELECT -CAST(200 AS INT UNSIGNED);
java.sql.SQLException: Error while executing SQL "SELECT -CAST(200 AS INT UNSIGNED)": From line 1, column 8 to line 1, column 33: Cannot apply '-' to arguments of type '-<INTEGER UNSIGNED>'. Supported form(s): '-<INTEGER>'
!error
SELECT CAST(200 AS INT UNSIGNED) - 100;
EXPR$0
100
!ok
SELECT CAST(1 AS INT UNSIGNED);
EXPR$0
1
!ok
SELECT CAST(-1 AS INT UNSIGNED);
java.lang.NumberFormatException: Value is out of range : -1
!error
SELECT CAST(255 AS TINYINT UNSIGNED);
EXPR$0
255
!ok
SELECT CAST(255 AS TINYINT);
java.lang.ArithmeticException: Value 255 out of range
!error
SELECT CAST(200 AS INT UNSIGNED) - CAST(100 AS INT UNSIGNED);
EXPR$0
100
!ok
SELECT CAST(100 AS INT UNSIGNED) - CAST(200 AS INT UNSIGNED);
java.lang.NumberFormatException: Value is out of range : -100
!error
SELECT CAST(CAST(100 AS INT UNSIGNED) AS INT) - 200;
EXPR$0
-100
!ok
SELECT CAST(100 AS INT UNSIGNED) - 200;
java.lang.NumberFormatException: Value is out of range : -100
!error
SELECT CAST(100 AS INT UNSIGNED) + 200;
EXPR$0
300
!ok
SELECT CAST(100 AS INT UNSIGNED) * 10;
EXPR$0
1000
!ok
SELECT CAST(CAST(10 AS TINYINT) AS INT UNSIGNED);
EXPR$0
10
!ok
SELECT CAST('10' AS INT UNSIGNED);
EXPR$0
10
!ok
SELECT CAST(10.2 AS INT UNSIGNED);
EXPR$0
10
!ok
SELECT CAST(10.2e0 AS INT UNSIGNED);
EXPR$0
10
!ok
SELECT CAST(10 AS INT UNSIGNED) < 20;
EXPR$0
true
!ok
SELECT CAST(65536 AS INT UNSIGNED) * 65536;
java.lang.NumberFormatException: Value is out of range : 4294967296
!error
SELECT CAST(65536 AS INT UNSIGNED) * 65535;
EXPR$0
4294901760
!ok
SELECT CAST(65536 AS BIGINT UNSIGNED) * 65536;
EXPR$0
4294967296
!ok
SELECT CAST(255 AS TINYINT UNSIGNED) * 255;
EXPR$0
65025
!ok
SELECT TYPEOF(CAST(CAST(255 AS TINYINT UNSIGNED) * 255 AS VARIANT));
EXPR$0
INTEGER
!ok
SELECT TYPEOF(CAST(CAST(255 AS TINYINT UNSIGNED) AS VARIANT));
EXPR$0
TINYINT UNSIGNED
!ok
SELECT CAST(CAST(CAST(255 AS TINYINT UNSIGNED) AS VARIANT) AS INTEGER);
EXPR$0
255
!ok
SELECT CAST(1000 AS INT UNSIGNED) / 30;
EXPR$0
33
!ok
SELECT CAST(CAST(1 AS UNSIGNED) AS BOOLEAN);
EXPR$0
true
!ok
# Check error message to display type properly
SELECT CAST(CAST(1 AS UNSIGNED) AS TIME);
Cast function cannot convert value of type INTEGER UNSIGNED NOT NULL to type TIME(0) NOT NULL
!error
SELECT CAST(1 AS UNSIGNED) * 1.0;
EXPR$0
1
!ok
-- BITXOR with large unsigned values
SELECT CAST(4294967295 AS INTEGER UNSIGNED) ^ CAST(255 AS INTEGER UNSIGNED);
EXPR$0
4294967040
!ok
-- BITXOR with NULL and unsigned value
SELECT CAST(NULL AS INTEGER UNSIGNED) ^ CAST(1 AS INTEGER UNSIGNED);
EXPR$0
null
!ok
-- BITXOR with unsigned and NULL (opposite order)
SELECT CAST(1 AS INTEGER UNSIGNED) ^ CAST(NULL AS INTEGER UNSIGNED);
EXPR$0
null
!ok
# End unsigned.iq