Files
openGauss-server/src/test/regress/sql/vec_limit.sql
2020-06-30 17:38:27 +08:00

109 lines
4.7 KiB
SQL

/*
* This file is used to test the function of ExecVecHashJoin()
*/
----
--- Create Table and Insert Data
----
create schema vector_limit_engine;
set current_schema=vector_limit_engine;
create table vector_limit_engine.ROW_LIMIT_TABLE_01
(
col_int int
,col_char char(25)
,col_vchar varchar(35)
,col_date date
,col_num numeric(10,4)
,col_float1 float4
,col_float2 float8
,col_interval interval
);
create table vector_limit_engine.VECTOR_LIMIT_TABLE_01
(
col_int int
,col_char char(25)
,col_vchar varchar(35)
,col_date date
,col_num numeric(10,4)
,col_float1 float4
,col_float2 float8
,col_interval interval
) with(orientation = column);
CREATE OR REPLACE PROCEDURE func_insert_tbl_limit_01()
AS
BEGIN
FOR I IN 1..500 LOOP
if i = 20 OR i = 30 OR i = 60 OR i = 70 OR i = 130 OR i = 1026 then
INSERT INTO vector_limit_engine.row_limit_table_01 VALUES(i,NULL,NULL, '2015-01-01',9.12+i,99.123+i,999.1234+i,'6 day 12:25:56');
elsif i = 75 OR i = 150 OR i = 1200 then
INSERT INTO vector_limit_engine.row_limit_table_01 VALUES(i,'testveclimitchar'||i,'testveclimitvarchar'||i,'2015-01-01',9.12+i,99.123+i,999.1234+i,'4 day 12:25:56');
elsif i = 186 OR i = 706 then
INSERT INTO vector_limit_engine.row_limit_table_01 VALUES(i,'testveclimitchar'||i,'testveclimitvarchar'||i,'2015-01-01',9.12+i,99.123+i,999.1234+i,'8 day 08:15:25');
else
INSERT INTO vector_limit_engine.row_limit_table_01 VALUES(i,'testveclimitchar'||i,'testveclimitvarchar'||i,'2015-01-01',9.12+i,99.123+i,999.1234+i,'1 day 12:34:56');
end if;
END LOOP;
END;
/
CALL func_insert_tbl_limit_01();
insert into VECTOR_LIMIT_TABLE_01 select * from ROW_LIMIT_TABLE_01;
analyze VECTOR_LIMIT_TABLE_01;
SET DateStyle = 'ISO, MDY';
----
--- test 1: Test VecLimit
----
explain (verbose on, costs off) select A.col_int, A.col_vchar, A.col_interval from vector_limit_table_01 A order by 1 offset 0 limit 1000;
select A.col_int, A.col_vchar, A.col_interval from vector_limit_table_01 A order by 1, 2, 3 offset 0 limit 1000;
select * from vector_limit_table_01 offset 0 limit 0;
select * from vector_limit_table_01 order by 1 offset 0 limit 1;
select * from vector_limit_table_01 order by 1 offset 0 limit 1000;
select * from vector_limit_table_01 order by 1 offset 0 limit 1001;
select * from vector_limit_table_01 offset 1 limit 0;
select * from vector_limit_table_01 order by 1 offset 1 limit 1;
select * from vector_limit_table_01 order by 1 offset 1 limit 1001;
select * from vector_limit_table_01 order by 1 offset 500 limit 0;
select * from vector_limit_table_01 order by 1 offset 500 limit 1;
select * from vector_limit_table_01 order by 1 offset 500 limit 501;
select * from vector_limit_table_01 order by 1 offset 500 limit 1001;
select * from vector_limit_table_01 order by 1 offset 500;
select * from vector_limit_table_01 order by 1 offset 1000 limit 0;
select * from vector_limit_table_01 order by 1 offset 1000 limit 1000;
select * from vector_limit_table_01 order by 1 offset 1000;
----
--- test 2: Test Functions(vupper/vlower/vrtrim/vtextlike/vtextnlike)
----
select upper(col_vchar) from vector_limit_table_01 where col_int = 2 and col_char = 'testveclimitchar2';
select upper(col_vchar) from vector_limit_table_01 where col_int = 2;
select upper(col_vchar) from vector_limit_table_01 where col_int = 3 or col_int = 20 or col_int = 30 order by 1;
select lower(col_vchar) from vector_limit_table_01 where col_int = 3 and col_char = 'testveclimitchar3';
select lower(col_vchar) from vector_limit_table_01 where col_int = 3;
select lower(col_vchar) from vector_limit_table_01 where col_int = 3 or col_int = 20 or col_int = 30 order by 1;
select rtrim(col_vchar) from vector_limit_table_01 where col_int = 3;
select rtrim(col_vchar) from vector_limit_table_01 where col_int = 3 or col_int = 20 or col_int = 30 order by 1;
select col_vchar from vector_limit_table_01 where col_vchar like 'testveclimitvarchar3';
select col_vchar from vector_limit_table_01 where col_vchar like 'testveclimitvarchar3' and col_int = 3;
select col_vchar from vector_limit_table_01 where col_vchar like 'testveclimitvarchar%' and col_int = 20;
select col_vchar from vector_limit_table_01 where col_vchar like 'testveclimitvarchar3' or col_int = 20 or col_int = 30 order by 1;
select col_vchar from vector_limit_table_01 where col_vchar not like 'testveclimitvarchar3' and col_int = 4;
select col_vchar from vector_limit_table_01 where col_vchar not like 'testveclimitvarchar%' and col_int = 20;
select col_vchar from vector_limit_table_01 where col_vchar not like 'testveclimitvarchar%';
----
--- Clean Table and Resource
----
drop schema vector_limit_engine cascade;