155 lines
8.1 KiB
SQL
155 lines
8.1 KiB
SQL
set enable_global_stats = true;
|
|
/*
|
|
* This file is used to test the function of ExecVecUnique()
|
|
*/
|
|
----
|
|
--- Create Table and Insert Data
|
|
----
|
|
create schema vector_unique_engine;
|
|
set current_schema = vector_unique_engine;
|
|
|
|
create table vector_unique_engine.ROW_UNIQUE_TABLE_01
|
|
(
|
|
col_int0 int4
|
|
,col_int1 int
|
|
,col_int2 int
|
|
,col_bint bigint
|
|
,col_char char(25)
|
|
,col_vchar varchar(35)
|
|
,col_num numeric(10,4)
|
|
,col_decimal decimal
|
|
,col_float float
|
|
,col_date date
|
|
,col_time time
|
|
,col_timetz timetz
|
|
,col_interval interval
|
|
);
|
|
|
|
create table vector_unique_engine.VECTOR_UNIQUE_TABLE_01
|
|
(
|
|
col_int0 int4
|
|
,col_int1 int
|
|
,col_int2 int
|
|
,col_bint bigint
|
|
,col_char char(25)
|
|
,col_vchar varchar(35)
|
|
,col_num numeric(10,4)
|
|
,col_decimal decimal
|
|
,col_float float
|
|
,col_date date
|
|
,col_time time
|
|
,col_timetz timetz
|
|
,col_interval interval
|
|
)with(orientation = orc) tablespace hdfs_ts distribute by hash(col_int1);
|
|
|
|
create table vector_unique_engine.ROW_UNIQUE_TABLE_02
|
|
(
|
|
col_int0 int4
|
|
,col_int1 int
|
|
,col_int2 int
|
|
,col_bint bigint
|
|
,col_char char(25)
|
|
,col_vchar varchar(35)
|
|
,col_num numeric(10,4)
|
|
,col_decimal decimal
|
|
,col_float float
|
|
,col_date date
|
|
,col_time time
|
|
,col_timetz timetz
|
|
,col_interval interval
|
|
);
|
|
|
|
create table vector_unique_engine.VECTOR_UNIQUE_TABLE_02
|
|
(
|
|
col_int0 int4
|
|
,col_int1 int
|
|
,col_int2 int
|
|
,col_bint bigint
|
|
,col_char char(25)
|
|
,col_vchar varchar(35)
|
|
,col_num numeric(10,4)
|
|
,col_decimal decimal
|
|
,col_float float
|
|
,col_date date
|
|
,col_time time
|
|
,col_timetz timetz
|
|
,col_interval interval
|
|
)with(orientation = orc) tablespace hdfs_ts distribute by hash(col_int1);
|
|
|
|
insert into ROW_UNIQUE_TABLE_01 values(1, 10, 100, 10000, 'aa', 'aaaaaa', 0.01, 10.01, 1100.01, '2015-02-14', '16:00:38', '1996-2-6 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(11, 20, 100, 10000, 'aa', 'gggggg', 0.01, 10.01, 1100.01, '2015-03-14', '16:02:38', '1996-2-8 01:00:30+8', '2 day 13:56:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(1, 30, 100, 30000, 'bb', 'aaaaaa', 0.01, 10.01, 100.01, '2015-04-15', '16:02:38', '1996-2-6 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(11, 40, 100, 10000, 'bb', 'aaaaaa', 0.04, 10.01, 100.01, '2015-05-16', '16:00:38', '1996-2-8 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(1, 50, 200, 10000, 'cc', 'aaaaaa', 0.01, 10.11, 100.01, '2015-02-18', '16:00:38', '1996-2-6 01:00:30+8', '2 day 13:56:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(11, 10, 100, 30000, 'dd', 'hhhhhh', 0.01, 10.01, 100.01, '2015-08-09', '16:00:38', '1996-2-8 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(1, 20, 100, 10000, 'dd', 'aaaaaa', 0.01, 10.01, 100.01, '2015-10-06', '16:05:38', '1996-2-6 01:00:30+8', '8 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(11, 30, 100, 10000, 'ee', 'ffffff', 0.08, 10.01, 1100.01, '2015-12-02', '16:05:38', '1996-2-6 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(1, 40, 200, 60000, 'ee', 'aaaaaa', 0.08, 10.01, 1100.01, '2015-06-16', '16:00:38', '1996-2-8 01:00:30+8', '10 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(11, 50, 100, 10000, 'gg', 'ffffff', 0.01, 10.11, 100.01, '2015-05-20', '16:00:38', '1996-2-6 01:00:30+8', '2 day 13:24:56');
|
|
|
|
insert into ROW_UNIQUE_TABLE_02 values(2, 10, 900, 10000, 'aa', 'bbbbbb', 0.01, 10.01, 100.01, '2015-02-14', '16:00:38', '1996-2-6 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_02 values(1, 20, 100, 20000, 'cc', 'aaaaaa', 0.01, 10.01, 100.01, '2015-02-14', '16:00:38', '1996-2-16 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_02 values(2, 10, 800, 10000, 'aa', 'cccccc', 0.01, 10.02, 100.22, '2015-02-14', '16:00:38', '1996-2-6 01:00:30+8', '8 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_02 values(7, 40, 100, 10000, 'aa', 'cccccc', 0.01, 10.01, 100.22, '2015-02-14', '16:08:38', '1996-2-16 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_02 values(2, 10, 700, 20000, 'eee', 'aaaaaa', 0.01, 10.01, 100.22, '2015-02-14', '16:08:38', '1996-2-6 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_02 values(1, 60, 100, 10000, 'aa', 'zzzzzz', 0.01, 10.02, 100.01, '2015-02-14', '16:00:38', '1996-2-6 01:00:30+8', '8 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_02 values(2, 10, 600, 10000, 'ddd', 'aaaaaa', 0.01, 10.01, 100.01, '2015-02-16', '16:00:38', '1996-2-16 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_02 values(1, 80, 100, 20000, 'aa', 'vvvvvvv', 0.01, 10.01, 100.01, '2015-02-16', '16:00:38', '1996-2-6 01:00:30+8', '2 day 13:24:56');
|
|
|
|
insert into VECTOR_UNIQUE_TABLE_01 select * from ROW_UNIQUE_TABLE_01;
|
|
insert into VECTOR_UNIQUE_TABLE_02 select * from ROW_UNIQUE_TABLE_02;
|
|
|
|
analyze VECTOR_UNIQUE_TABLE_01;
|
|
analyze VECTOR_UNIQUE_TABLE_02;
|
|
|
|
----
|
|
--- case 1: Basic Cases
|
|
----
|
|
explain (verbose on, costs off) select distinct col_num from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct col_num from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct col_date from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct col_time from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct col_vchar from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct col_timetz from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct col_interval from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct col_float + col_decimal from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct A.col_int1 + B.col_int2 from VECTOR_UNIQUE_TABLE_01 A, VECTOR_UNIQUE_TABLE_02 B order by 1;
|
|
select distinct A.col_int1 + B.col_int2 from VECTOR_UNIQUE_TABLE_01 A, ROW_UNIQUE_TABLE_02 B order by 1;
|
|
select distinct A.col_int1 + B.col_int2 from VECTOR_UNIQUE_TABLE_01 A, VECTOR_UNIQUE_TABLE_02 B where A.col_char = B.col_char order by 1;
|
|
|
|
----
|
|
--- case 2: With NULL
|
|
----
|
|
delete from VECTOR_UNIQUE_TABLE_01;
|
|
insert into ROW_UNIQUE_TABLE_01 values(1, 80, 100, 20000, 'aa', NULL, 0.01, 10.01, 100.01, '2015-02-16', NULL, '1996-2-6 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(1, 60, 100, 20000, NULL, 'vvvvvvv', 0.01, 10.01, 100.01, '2015-02-16', '16:00:38', '1996-2-6 01:00:30+8', '2 day 13:24:56');
|
|
insert into ROW_UNIQUE_TABLE_01 values(1, 80, 100, 20000, 'aa', 'vvvvvvv', 0.01, 10.01, 100.01, NULL, '16:00:38', '1996-2-6 01:00:30+8', NULL);
|
|
insert into ROW_UNIQUE_TABLE_01 values(1, 60, NULL, 20000, 'aa', 'vvvvvvv', NULL, 10.01, 100.01, NULL, '16:00:38', '1996-2-6 01:00:30+8', '2 day 13:24:56');
|
|
insert into VECTOR_UNIQUE_TABLE_01 select * from ROW_UNIQUE_TABLE_01;
|
|
|
|
select distinct col_time from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct col_date from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct col_float + col_num from VECTOR_UNIQUE_TABLE_01 order by 1;
|
|
select distinct A.col_int1 + B.col_int2 from VECTOR_UNIQUE_TABLE_01 A, VECTOR_UNIQUE_TABLE_02 B where A.col_char = B.col_char order by 1;
|
|
|
|
----
|
|
--- case 3: Count(distinct)
|
|
----
|
|
explain (costs off) select col_int0, count(distinct col_time) from VECTOR_UNIQUE_TABLE_01 group by col_int0;
|
|
select col_int0, count(distinct col_time) from VECTOR_UNIQUE_TABLE_01 group by col_int0 order by 1;
|
|
explain (costs off) select col_int1, count(distinct col_time) from VECTOR_UNIQUE_TABLE_01 group by col_int1;
|
|
select col_int1, count(distinct col_time) from VECTOR_UNIQUE_TABLE_01 group by col_int1 order by 1;
|
|
explain (costs off) select count(distinct col_time) from VECTOR_UNIQUE_TABLE_01;
|
|
select count(distinct col_time) from VECTOR_UNIQUE_TABLE_01;
|
|
explain (costs off) select distinct x from (select count(distinct col_time) x from VECTOR_UNIQUE_TABLE_01 group by col_int0);
|
|
select distinct x from (select count(distinct col_time) x from VECTOR_UNIQUE_TABLE_01 group by col_int0) order by 1;
|
|
explain (costs off) select distinct x from (select count(distinct col_time) x from VECTOR_UNIQUE_TABLE_01 group by col_int1);
|
|
select distinct x from (select count(distinct col_time) x from VECTOR_UNIQUE_TABLE_01 group by col_int1) order by 1;
|
|
explain (costs off) select distinct x from (select count(distinct col_time) x from VECTOR_UNIQUE_TABLE_01);
|
|
select distinct x from (select count(distinct col_time) x from VECTOR_UNIQUE_TABLE_01);
|
|
|
|
----
|
|
--- Clean Table and Resource
|
|
----
|
|
drop schema vector_unique_engine cascade;
|