Files
openGauss-server/src/test/regress/sql/float_literals.sql
2024-09-13 14:34:39 +08:00

117 lines
4.5 KiB
SQL

-- test float literals overflow in dbcompatibility A
create database float_literals dbcompatibility 'A';
\c float_literals
SELECT 0.0;
SELECT -0.0;
SELECT 3.142596;
SELECT -3.142596;
SELECT 1.79E+400;
SELECT 1.79E-400;
SELECT -1.79E+400;
SELECT 1E-307;
SELECT 1E-308;
SELECT '0.0';
SELECT '-0.0';
SELECT '3.142596';
SELECT '-3.142596';
SELECT '1.79E+400';
SELECT '1.79E-400';
SELECT '-1.79E+400';
SELECT '1E-307';
SELECT '1E-308';
SELECT '0.0'::float8;
SELECT '-0.0'::float8;
SELECT '3.142596'::float8;
SELECT '-3.142596'::float8;
SELECT '1.79E+400'::float8;
SELECT '1.79E-400'::float8;
SELECT '-1.79E+400'::float8;
SELECT '1E-307'::float8;
SELECT '1E-308'::float8;
SELECT TO_BINARY_FLOAT(3.14 DEFAULT y ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT(-3.14 DEFAULT + ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT(3.14 DEFAULT - ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT(-3.14 DEFAULT * ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT(3.14 DEFAULT / ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT('3.14' DEFAULT y ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT('-3.14' DEFAULT + ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT('3.14' DEFAULT - ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT('-3.14' DEFAULT * ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT('3.14' DEFAULT / ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT(1.79E+400 DEFAULT y ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT(1.79E+400 DEFAULT + ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT(1.79E+400 DEFAULT - ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT(1.79E+400 DEFAULT * ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT(1.79E+400 DEFAULT / ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT('1.79E+400' DEFAULT y ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT('1.79E-400' DEFAULT + ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT('-1.79E+400' DEFAULT - ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT('-1.79E-400' DEFAULT * ON CONVERSION ERROR);
SELECT TO_BINARY_FLOAT('1.79E+400' DEFAULT / ON CONVERSION ERROR);
CREATE TABLE t_float_literals (id int, c1 float8);
INSERT INTO t_float_literals VALUES (1, 0.0);
INSERT INTO t_float_literals VALUES (2, 3.14);
INSERT INTO t_float_literals VALUES (3, 3.14E+40);
INSERT INTO t_float_literals VALUES (4, -3.14E+40);
INSERT INTO t_float_literals VALUES (5, '3.14E+40'::float8);
INSERT INTO t_float_literals VALUES (6, '-3.14E+40'::float8);
INSERT INTO t_float_literals VALUES (7, 3.14E+400);
INSERT INTO t_float_literals VALUES (8, 3.14E-400);
INSERT INTO t_float_literals VALUES (9, -3.14E+400);
INSERT INTO t_float_literals VALUES (10, '3.14E+400'::float8);
INSERT INTO t_float_literals VALUES (11, '3.14E-400'::float8);
INSERT INTO t_float_literals VALUES (12, '-3.14E+400'::float8);
SELECT * FROM t_float_literals ORDER bY id;
UPDATE t_float_iterals SET c1 = 1.79E+400 WHERE id = 1;
UPDATE t_float_iterals SET c1 = '1.79E+400'::float8 WHERE id = 2;
UPDATE t_float_iterals SET c1 = 1.79E+40 WHERE id = 3;
UPDATE t_float_iterals SET c1 = '1.79E+40'::float8 WHERE id = 4;
SELECT * FROM t_float_iterals ORDER BY c1;
create table llvm_enh
(
l_bool boolean default false,
l_tint tinyint default 255,
l_sint smallint default 32767,
l_int integer default 2147483647,
l_bint bigint default 9223372036854775807,
l_num1 numeric(18,0) default 999999999999999999,
l_num2 numeric(19,19) default 0.9223372036854775807,
l_num3 numeric(38,0) default 99999999999999999999999999999999999999,
l_flo1 float4 default 999999,
l_flo2 float8 default 1E-307,
l_char char(39) default '170141183460469231731687303715884105728',
l_vchar varchar(40) default '-170141183460469231731687303715884105728',
l_text text default '-170141183460469231731687303715884105729',
l_date date default '2016-10-18',
l_time time default '21:21:21',
l_times timestamp default '2003-04-12 04:05:06',
l_timez timestamp with time zone default '2003-04-12 04:05:06 pst',
l_oid oid default 12345
) ;
insert into llvm_enh(l_bool) values(true);
insert into llvm_enh(l_tint) values(0);
insert into llvm_enh(l_sint) values(-32768);
insert into llvm_enh(l_int) values(-2147483648);
insert into llvm_enh(l_bint) values(-9223372036854775808);
insert into llvm_enh(l_num1) values(-999999999999999999);
insert into llvm_enh(l_num2) values(-0.9223372036854775808);
insert into llvm_enh(l_num3) values(-99999999999999999999999999999999999999);
insert into llvm_enh(l_flo1) values(-999999);
insert into llvm_enh(l_flo2) values(1E+308);
select l_flo2,l_flo1 from llvm_enh where l_flo2 < l_flo1-999998 order by 1,2;
drop table t_float_literals;
drop table llvm_enh;
\c regression
drop database float_literals;