Files
openGauss-server/src/test/regress/sql/vec_expression1.sql
dengxuyue 1567043064 同步source code
日期: 12-26
    revision: ee5b054c
2020-12-28 22:19:21 +08:00

724 lines
33 KiB
SQL

/*
* This file is used to test the function of vecexpression.cpp --- test(1)
*/
/*******************************
Expression Type:
T_Var,
T_Const,
T_Param,
T_Aggref,
T_WindowFunc,
T_ArrayRef,
T_FuncExpr,
T_NamedArgExpr,
T_OpExpr,
T_DistinctExpr,
T_NullIfExpr,
T_ScalarArrayOpExpr,
T_BoolExpr,
T_SubLink,
T_SubPlan,
T_AlternativeSubPlan,
T_FieldSelect,
T_FieldStore,
T_RelabelType,
T_CoerceViaIO,
T_ArrayCoerceExpr,
T_ConvertRowtypeExpr,
T_CollateExpr,
T_CaseExpr,
T_CaseWhen,
T_CaseTestExpr,
T_ArrayExpr,
T_RowExpr,
T_RowCompareExpr,
T_CoalesceExpr,
T_MinMaxExpr,
T_XmlExpr,
T_NullTest,
T_BooleanTest
Using Type:
qual
targetlist
*********************************/
----
--- Create Table and Insert Data
----
create schema vector_expression_engine_first;
set current_schema=vector_expression_engine_first;
create table vector_expression_engine_first.VECTOR_EXPR_TABLE_01
(
a bool
,b bool
,c int
)with (orientation=column);
COPY VECTOR_EXPR_TABLE_01(a, b, c) FROM stdin;
true false 1
true true 1
true \N 1
false true 1
false false 1
false \N 1
\N true 1
\N false 1
\N \N 1
\.
create table vector_expression_engine_first.VECTOR_EXPR_TABLE_02
(
col_int int
,col_int2 int
,col_char char(20)
,col_varchar varchar(30)
,col_date date
,col_num numeric(10,2)
,col_num2 numeric(10,4)
,col_float float4
,col_float2 float8
)with (orientation=column);
COPY VECTOR_EXPR_TABLE_02(col_int, col_int2, col_char, col_varchar, col_date, col_num, col_num2, col_float, col_float2) FROM stdin;
0 1935401906 aabccd aabccd 2011-11-01 00:00:00 1.20 10.0000 \N 1.1
1 1345971420 abccd abccd 2012-11-02 00:00:00 11.18 1.1181 55.555 55.555
2 656473370 aabccd aabccd 2011-11-01 00:00:00 1.20 10.0000 1.1 1.1
2 1269710788 abccd abccd 2012-11-02 00:00:00 11.18 1.1181 55.555 55.555
2 1156776517 aabccd aabccd 2011-11-01 00:00:00 1.20 10.0000 1.1 1.1
2 1289013296 abccd abccd 2012-11-02 00:00:00 11.18 1.1181 55.555 55.555
2 1415564928 aabccd aabccd \N 1.20 10.0000 1.1 1.1
8 1345971420 abccd abccd 2012-11-02 00:00:00 11.18 1.1181 55.555 55.555
8 435456494 aabccd aabccd 2011-11-01 00:00:00 1.20 10.0000 1.1 1.1
8 66302641 \N abccd 2012-11-02 00:00:00 11.18 1.1181 55.555 55.555
8 915852158 aabccd aabccd 2011-11-01 00:00:00 1.20 10.0000 1.1 1.1
8 1345971420 abccd abccd 2012-11-02 00:00:00 11.18 1.1181 55.555 55.555
8 961711400 aabccd aabccd 2011-11-01 00:00:00 1.20 10.0000 1.1 1.1
8 74070078 abccd \N 2012-11-02 00:00:00 11.18 1.1181 55.555 55.555
87 656473370 aabccd aabccd 2011-11-01 00:00:00 1.20 10.0000 1.1 1.1
87 843938989 abccd abccd 2012-11-02 00:00:00 11.18 1.1181 55.555 55.555
87 189351248 abbccd abbccd 2012-11-02 00:00:00 1.62 6.2110 2.2 2.2
87 1388679963 abbccd abbccd 2012-11-02 00:00:00 1.62 6.2110 2.2 2.2
87 556726251 abbccd abbccd 2012-11-02 00:00:00 1.62 6.2110 2.2 2.2
87 634715959 abbccd abbccd 2012-11-02 00:00:00 1.62 6.2110 2.2 2.2
87 1489080225 abbccd abbccd 2012-11-02 00:00:00 1.62 6.2110 2.2 2.2
87 649132105 abbccd abbccd 2012-11-02 00:00:00 1.62 6.2110 2.2 2.2
87 886008616 abbccd abbccd 2012-11-02 00:00:00 1.62 6.2110 2.2 2.2
123 1935401906 abbccd \N 2012-11-02 00:00:00 1.62 6.2110 2.2 2.2
123 1935401906 aabbcd aabbcd 2012-11-03 00:00:00 29.00 24.1100 3.33 3.33
123 846480997 aabbcd aabbcd 2012-11-03 00:00:00 29.00 24.1100 3.33 3.33
123 1102020422 aabbcd aabbcd 2012-11-03 00:00:00 29.00 24.1100 3.33 3.33
123 1533442662 aabbcd aabbcd 2012-11-03 00:00:00 \N 24.1100 3.33 3.33
123 1935401906 aabbcd aabbcd 2012-11-03 00:00:00 29.00 24.1100 3.33 3.33
123 656473370 \N aabbcd 2012-11-03 00:00:00 29.00 24.1100 3.33 3.33
123 539384293 aabbcd aabbcd 2012-11-03 00:00:00 29.00 24.1100 3.33 3.33
\N \N aabbcd aabbcd 2012-11-03 00:00:00 29.00 24.1100 \N 3.33
\N \N abbccd abbccd 2012-12-01 00:00:00 221.70 11.1700 13822.2 13822.237
\N \N abbccd abbccd 2012-12-01 00:00:00 221.70 11.1700 13822.2 13822.237
\N \N abbccd abbccd 2012-12-01 00:00:00 221.70 11.1700 \N 13822.237
\N \N abbccd abbccd 2012-12-01 00:00:00 221.70 11.1700 13822.2 13822.237
\N \N abbccd abbccd 2012-12-01 00:00:00 221.70 11.1700 13822.2 13822.237
\N \N abbccd abbccd 2012-12-01 00:00:00 221.70 11.1700 13822.2 13822.237
\N \N abbccd abbccd 2012-12-01 00:00:00 221.70 11.1700 13822.2 13822.237
\N \N abbccd abbccd 2012-12-01 00:00:00 221.70 11.1700 13822.2 13822.237
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 \N
\N \N aaccccd aaccccd 2012-12-02 00:00:00 \N 37.3737 2.58 2.58
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 2.58
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 2.58
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 \N
\N \N aaccccd aaccccd \N 3.78 37.3737 2.58 2.58
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 2.58
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 2.58
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N acbccd acbccd 2012-11-01 00:00:00 5.10 131.1100 44.4 44.4
\N \N acbccd acbccd 2012-11-01 00:00:00 5.10 131.1100 44.4 44.4
\N \N acbccd acbccd 2012-11-01 00:00:00 5.10 131.1100 44.4 44.4
\N \N acbccd acbccd 2012-11-01 00:00:00 5.10 131.1100 44.4 44.4
\N \N acbccd acbccd 2012-11-01 00:00:00 5.10 131.1100 44.4 44.4
\N \N acbccd acbccd 2012-11-01 00:00:00 5.10 131.1100 44.4 44.4
\N \N acbccd acbccd 2012-11-01 00:00:00 5.10 131.1100 44.4 44.4
\N \N acbccd acbccd 2012-11-01 00:00:00 5.10 131.1100 44.4 44.4
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 2.58
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 \N 3.67233 3.672335
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 2.58
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 2.58
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 2.58
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 2.58
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 2.58 2.58
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N aaccccd aaccccd 2012-12-02 00:00:00 3.78 37.3737 \N 2.58
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\N \N aaccccd aaccccd \N 3.78 37.3737 2.58 2.58
\N \N abbccd abbccd 2013-11-12 00:00:00 87.10 1.8700 3.67233 3.672335
\.
CREATE TABLE vector_expression_engine_first.VECTOR_EXPR_TABLE_03(
a int,
b int,
c int
) WITH (orientation=column) distribute by hash (a);
COPY VECTOR_EXPR_TABLE_03(a, b, c) FROM stdin;
1 1 1
1 1 2
1 1 3
1 1 4
1 2 1
1 2 2
1 2 3
2 1 1
2 1 2
2 1 3
2 1 4
2 2 1
2 2 2
2 2 3
2 2 4
2 1 3
2 3 2
2 3 3
2 3 4
3 1 1
3 1 2
3 1 3
3 1 4
3 2 3
3 2 1
4 0 0
\.
CREATE TABLE vector_expression_engine_first.VECTOR_EXPR_TABLE_04
(
a varchar
,b char(10)
,c varchar(10)
,d text
) with(orientation=column);
COPY VECTOR_EXPR_TABLE_04(a, b, c, d) FROM stdin;
abc \N \N \N
\N 1 2.0 \N
\N \N 2.0 \N
\N \N \N \N
\N \N \N def
\N 2 \N \N
\.
CREATE TABLE vector_expression_engine_first.VECTOR_EXPR_TABLE_05
(
a bool
,b int
,c bool
) with (orientation=column);
COPY VECTOR_EXPR_TABLE_05(a, b, c) FROM stdin;
1 1 1
1 1 0
1 0 1
1 0 0
0 1 1
0 1 0
0 0 1
0 0 0
\N 0 0
1 \N 0
\.
CREATE TABLE vector_expression_engine_first.VECTOR_EXPR_TABLE_06
(
a varchar
,b char(10)
,c text
) with(orientation=column);
COPY VECTOR_EXPR_TABLE_06(a, b, c) FROM stdin;
abc abb \N
\N abb abc
abcdefgh \N abcdefgg
abc \N aabcdefg
\N \N \N
\.
CREATE TABLE vector_expression_engine_first.VECTOR_EXPR_TABLE_07
(
col_num numeric(5, 0)
,col_int int
,col_timestamptz timestamptz
,col_varchar varchar
,col_char char(2)
,col_interval interval
,col_timetz timetz
,col_tinterval tinterval
) with(orientation=column);
COPY VECTOR_EXPR_TABLE_07(col_num, col_int, col_timestamptz, col_varchar, col_char, col_interval, col_timetz, col_tinterval) FROM stdin;
123 5 2017-09-09 19:45:37 2017-09-09 19:45:37 a 2 day 13:34:56 1984-2-6 01:00:30+8 ["Sep 4, 1983 23:59:12" "Oct 4, 1983 23:59:12"]
234 6 2017-10-09 19:45:37 2017-10-09 19:45:37 c 1 day 18:34:56 1986-2-6 03:00:30+8 ["May 10, 1947 23:59:12" "Jan 14, 1973 03:14:21"]
345 7 2017-11-09 19:45:37 2017-11-09 19:45:37 d 1 day 13:34:56 1987-2-6 08:00:30+8 ["epoch" "Mon May 1 00:30:30 1995"]
456 8 2017-12-09 19:45:37 2017-12-09 19:45:37 h 18 day 14:34:56 1989-2-6 06:00:30+8 ["Feb 15 1990 12:15:03" "2001-09-23 11:12:13"]
567 9 2018-01-09 19:45:37 2018-01-09 19:45:37 m 18 day 15:34:56 1990-2-6 12:00:30+8 \N
678 10 2018-02-09 19:45:37 2018-02-09 19:45:37 \N 7 day 16:34:56 2002-2-6 00:00:30+8 ["-infinity" "infinity"]
789 11 2018-03-09 19:45:37 2018-03-09 19:45:37 g 22 day 13:34:56 1984-2-6 00:00:30+8 ["Feb 10, 1947 23:59:12" "Jan 14, 1973 03:14:21"]
147 12 2018-04-09 19:45:37 2018-04-09 19:45:37 l \N 1984-2-7 00:00:30+8 ["Feb 10, 1947 23:59:12" "Jan 14, 1973 03:14:21"]
369 13 2018-05-09 19:45:37 2018-05-09 19:45:37 a 21 day 13:34:56 \N ["Feb 10, 1947 23:59:12" "Jan 14, 1973 03:14:21"]
\.
CREATE TABLE vector_expression_engine_first.VECTOR_EXPR_TABLE_08
(
col_num numeric(3,0)
,col_int int
)with(orientation=column);
COPY VECTOR_EXPR_TABLE_08(col_num, col_int) FROM stdin;
1 1
\.
analyze vector_expr_table_01;
analyze vector_expr_table_02;
analyze vector_expr_table_03;
analyze vector_expr_table_04;
analyze vector_expr_table_05;
analyze vector_expr_table_06;
analyze vector_expr_table_07;
analyze vector_expr_table_08;
select * from VECTOR_EXPR_TABLE_03 where (CASE
WHEN (SELECT distinct -5
FROM VECTOR_EXPR_TABLE_04
) NOT LIKE '%C%' THEN
VECTOR_EXPR_TABLE_03.a else NULL end) = 0;
----
--- case 1: AND OR NOT
----
explain (verbose on, costs off) select a, b, a and b, a or b, not a from vector_expr_table_01;
select a, b, a and b, a or b, not a from vector_expr_table_01 order by 1, 2, 3, 4, 5;
--NULL Test
explain (verbose on, costs off) select * from vector_expr_table_01 where a is NULL order by 1, 2;
select * from vector_expr_table_01 where a is NULL order by 1, 2;
select * from vector_expr_table_01 where a is not NULL order by 1, 2;
select a from vector_expr_table_01 where a is NULL order by 1;
select a from vector_expr_table_01 where a is not NULL order by 1;
select * from vector_expr_table_01 where b is not NULL order by 1, 2;
select * from vector_expr_table_01 where a is NULL and b is not NULL order by 1, 2;
select * from vector_expr_table_01 where a is not NULL and b is NULL order by 1, 2;
select * from vector_expr_table_01 where a is not NULL and b is not NULL order by 1, 2;
select a is not NULL, a from vector_expr_table_01 order by 1, 2;
select a is NULL, a from vector_expr_table_01 order by 1, 2;
select a is not NULL, a from vector_expr_table_01 where a is not NULL order by 1, 2;
select a is NULL, a from vector_expr_table_01 where a is NULL order by 1, 2;
--Operation
explain (verbose on, costs off) select * from vector_expr_table_02 where col_int = 1;
select * from vector_expr_table_02 where col_int = 1;
select col_int, col_int2, col_int + col_int2 from vector_expr_table_02 where col_int = 1;
--Date
select col_date, sum(1) from vector_expr_table_02 where col_date between date '2012-11-02' and date '2012-12-20' group by col_date order by 1, 2;
select A.col_date, sum(1) s from vector_expr_table_02 A where extract(year from A.col_date) >= 2012 group by A.col_date order by A.col_date, s;
explain (verbose on, costs off) select A.col_date, extract(year from B.col_date) y from vector_expr_table_02 A join vector_expr_table_02 B on A.col_char=B.col_char group by A.col_date,extract(year from B.col_date) order by 1, y;
select A.col_date, extract(year from B.col_date) y from vector_expr_table_02 A join vector_expr_table_02 B on A.col_char=B.col_char group by A.col_date,extract(year from B.col_date) order by 1, y;
explain (verbose on, costs off) select A.col_date, substring(B.col_varchar, 1, 2) y from vector_expr_table_02 A join vector_expr_table_02 B on A.col_char = B.col_char group by A.col_date,substring(B.col_varchar, 1, 2) order by A.col_date, y;
select A.col_date, substring(B.col_varchar, 1, 2) y from vector_expr_table_02 A join vector_expr_table_02 B on A.col_char = B.col_char group by A.col_date,substring(B.col_varchar, 1, 2) order by A.col_date, y;
select A.col_date, sum(1) s from vector_expr_table_02 A where abs(-extract(year from A.col_date)) >= 2012 group by A.col_date order by A.col_date, s;
-- String ops does not require special plan, FIXME: IN-list is still not right)
select col_int, sum(1) from vector_expr_table_02 where col_char like '%cc%' group by col_int order by col_int;
select col_int, sum(1) from vector_expr_table_02 where col_varchar like '%cc%' group by col_int order by col_int;
select col_int, sum(1) from vector_expr_table_02 where col_char like 'ab%' group by col_int order by col_int;
select col_int, sum(1) from vector_expr_table_02 where col_varchar like 'ab%' group by col_int order by col_int;
select col_char, sum(1) from vector_expr_table_02 where col_char not like '%d' group by col_char order by col_char;
select col_varchar, sum(1) from vector_expr_table_02 where col_varchar not like '%d' group by col_varchar order by col_varchar;
select col_int, sum(1) from vector_expr_table_02 where col_char = 'aabccd' group by col_int order by col_int;
select col_int, sum(1) from vector_expr_table_02 where col_varchar = 'aabccd' group by col_int order by col_int;
select col_int, sum(1) from vector_expr_table_02 where col_char <> 'aabccd' group by col_int order by col_int;
select col_int, sum(1) from vector_expr_table_02 where col_varchar <> 'aabccd' group by col_int order by col_int;
select col_int, sum(1) from vector_expr_table_02 where substring(col_char from 1 for 2) <> 'aa' group by col_int order by col_int;
select col_int, sum(1) from vector_expr_table_02 where substring(col_char from 1 for 2) <> 'aa' group by col_int order by col_int;
select col_int, sum(1) from vector_expr_table_02 where substring(col_char, 1, 2) <> 'aa' group by col_int order by col_int;
select col_int, 'OkThisSoundsGood' from vector_expr_table_02 where substring(col_char from 1 for 2) <> 'aa' order by col_int;
--Float, Integer
select min(col_int),min(col_int2),min(col_char),min(col_varchar),min(col_date),min(col_num),min(col_num2),min(col_float),min(col_float2) from vector_expr_table_02;
select max(col_int),max(col_int2),max(col_char),max(col_varchar),max(col_date),max(col_num),max(col_num2),max(col_float),max(col_float2) from vector_expr_table_02;
select count(col_int),count(col_int2),count(col_char),count(col_varchar),count(col_date),count(col_num),count(col_num2),count(col_float),count(col_float2) from vector_expr_table_02;
select sum(col_int),sum(col_int2),sum(col_num),sum(col_num2),sum(col_float),sum(col_float2) from vector_expr_table_02;
select col_int,sum(col_int) from vector_expr_table_02 group by col_int order by col_int;
select col_int2,sum(col_int2) from vector_expr_table_02 group by col_int2 order by col_int2;
select col_num,sum(col_num) from vector_expr_table_02 group by col_num order by col_num;
select col_num2,sum(col_num2) from vector_expr_table_02 group by col_num2 order by col_num2;
select col_float,sum(col_float) from vector_expr_table_02 group by col_float order by col_float;
select col_float2,sum(col_float2) from vector_expr_table_02 group by col_float2 order by col_float2;
select col_int, col_int2, sum(abs(-col_int!)+abs(col_int-col_int2!)) as a from vector_expr_table_02 where col_int < 25 AND col_int > 2 AND col_int2 <= 1935401906 group by col_int, col_int2 order by col_int, col_int2;
select col_int, col_int2, sum(abs(-col_int)+width_bucket(5.35, 0.024, 10.06, col_int)) as a from vector_expr_table_02 where col_int < 25 AND col_int > 2 AND col_int2 <= 2036166893 group by col_int, col_int2 order by col_int, col_int2;
select col_int, col_int2, sum(abs(-col_int)+abs(-col_int2)) as a from vector_expr_table_02 where col_int < 25 AND col_int > 2 AND col_int2 <= 2036166893 group by col_int, col_int2 order by col_int, col_int2;
select col_int, col_int2, sum(width_bucket(5.35::float, 0.024::float, 10.06::float, col_int)) as a from vector_expr_table_02 where col_int < 25 AND col_int > 2 AND col_int2 <= 1935401906 group by col_int, col_int2 order by col_int, col_int2;
select col_float,avg(col_float) from vector_expr_table_02 group by col_float order by col_float;
select col_float2,avg(col_float2) from vector_expr_table_02 group by col_float2 order by col_float2;
select count(col_int) + 2, avg(col_num) - 3 from vector_expr_table_02;
select count(col_num2),min(col_char),max(col_varchar),sum(col_float),avg(col_num2) from vector_expr_table_02;
select count(col_num2),min(col_char),max(col_varchar),sum(col_float),avg(col_num2) from vector_expr_table_02 group by col_float2 order by col_float2;
select col_int, col_int2, substring(col_varchar, 1, 2), count(*) from vector_expr_table_02 where col_date > '2012-10-1' group by col_int, col_int2, substring(col_varchar, 1, 2) order by col_int, col_int2, 4;
----
--- test 2: Test Case Expression
----
explain (verbose on, costs off) select col_int2, sum(case when col_int in (1, 7, 229, 993, 81, 6) then 1 else 0 end) as a, 'myConstString' from vector_expr_table_02 group by col_int2 order by col_int2;
select col_int2, sum(case when col_int in (1, 7, 229, 993, 81, 6) then 1 else 0 end) as a from vector_expr_table_02 group by col_int2 order by col_int2;
select col_int2, sum(case when col_int < 17 or col_int > 37 then 1 else 0 end) as a from vector_expr_table_02 group by col_int2 order by col_int2;
explain (verbose on, costs off) select col_int, col_int2, sum(case when col_int < 17 AND col_int > 7 AND col_int2 <= 1935401906 then 1 else 0 end) as a from vector_expr_table_02 where col_int < 25 AND col_int > 2 AND col_int2 <= 2036973298 group by col_int, col_int2 order by col_int, col_int2;
explain (verbose on, costs off) select col_int, col_int2, sum(case when col_int < 17 OR (col_int > 37 AND col_int2 > 10) then 1 else 0 end) as a from vector_expr_table_02 where col_int < 19 OR (col_int > 37 AND col_int2 > 2) group by col_int, col_int2 order by col_int, col_int2;
explain (verbose on, costs off) select col_int, col_int2, sum(case when col_int < 17 OR NOT (col_int > 7 AND col_int2 > 2) then 1 else 0 end) as a from vector_expr_table_02 where col_int < 19 OR NOT (col_int > 2 AND col_int2 > 1) AND NOT (col_int > 10 AND col_int2 < 10) group by col_int2, col_int order by col_int, col_int2;
select col_int, col_int2, 'myConstString', sum(case when col_int < 17 AND col_int > 7 AND col_int2 <= 1935401906 then 1 else 0 end) as a, 'my2ndConstString' from vector_expr_table_02 where col_int < 25 AND col_int > 2 AND col_int2 <= 2036973298 group by col_int, col_int2 order by col_int, col_int2;
select col_int, col_int2, sum(case when col_int < 17 AND col_int > 7 AND col_int2 <= 1935401906 then 1 else 0 end) as a from vector_expr_table_02 where col_int < 25 AND col_int > 2 AND col_int2 <= 2036973298 group by col_int, col_int2 order by col_int, col_int2;
select col_int, col_int2, sum(case when col_int < 17 OR (col_int > 37 AND col_int2 > 10) then 1 else 0 end) as a from vector_expr_table_02 where col_int < 19 OR (col_int > 37 AND col_int2 > 2) group by col_int, col_int2 order by col_int, col_int2;
select col_int, col_int2, sum(case when col_int < 17 OR NOT (col_int > 7 AND col_int2 > 2) then 1 else 0 end) as a from vector_expr_table_02 where col_int < 19 OR NOT (col_int > 2 AND col_int2 > 1) AND NOT (col_int > 10 AND col_int2 < 10) group by col_int2, col_int order by col_int, col_int2;
select col_int, col_int2, sum(case when col_int < 17 OR NOT (col_int > 7 AND col_int2 > 2) then 1 else 0 end) as a from vector_expr_table_02 where col_int < 19 OR NOT (col_int > 2 AND col_int2 > 1) AND NOT (col_int > 10 AND col_int2 < 10) group by col_int2, col_int order by col_int, col_int2;
select col_int2, sum(case when col_int < 17 or col_int > 37 then 100*col_num + 10.0*col_num +col_num*col_num2-col_num*col_num2 when col_int > 17 and col_int < 37 then col_num2-col_num else 6 end), sum (col_num-col_num2+col_num/col_num2+10) as a from vector_expr_table_02 group by col_int2 order by col_int2;
select col_char, sum(1) from vector_expr_table_02 where col_char in ('aabccd', 'abccd', 'abbccd') group by col_char order by col_char;
select col_varchar, sum(1) from vector_expr_table_02 where col_varchar in ('aabccd', 'abccd', 'abbccd') group by col_varchar order by col_varchar;
select overlay(col_varchar placing 'test' from 2) from vector_expr_table_02 order by col_varchar limit 1;
----
--- test 3: Test Multi-Level Case Expression
----
--simple one level
explain (verbose on, costs off) select a, b, case
when a = 1 then '1X'
when a = 2 then '2X'
when a = 3 then '3X'
end
from vector_expr_table_03;
select a, b, case
when a = 1 then '1X'
when a = 2 then '2X'
when a = 3 then '3X'
end
from vector_expr_table_03 order by 1, 2;
--one level with default value
select a, b, case
when a = 1 then '1X'
when a = 2 then '2X'
when a = 3 then '3X'
else 'other'
end
from vector_expr_table_03 order by 1, 2;
--simple 2 level
explain (verbose on, costs off)
select a, b, case
when a = 1 then
case
when b = 1 then '11'
when b = 2 then '12'
when b = 3 then '13'
end
when a = 2 then
case
when b = 1 then '21'
when b = 2 then '22'
when b = 3 then '23'
end
end from vector_expr_table_03;
select a, b, case
when a = 1 then
case
when b = 1 then '11'
when b = 2 then '12'
when b = 3 then '13'
end
when a = 2 then
case
when b = 1 then '21'
when b = 2 then '22'
when b = 3 then '23'
end
end from vector_expr_table_03 order by 1, 2;
--2 level with default value
select a, b, case
when a = 1 then
case
when b = 1 then '11'
when b = 2 then '12'
when b = 3 then '13'
else '1X other'
end
when a = 2 then
case
when b = 1 then '21'
when b = 2 then '22'
when b = 3 then '23'
else '2X other'
end
else 'other'
end from vector_expr_table_03 order by 1, 2;
--3 level
select a, b, c, case
when a = 1 then
case
when b = 1 then case
when c = 1 then '111'
when c = 2 then '112'
end
when b = 2 then '12'
when b = 3 then case
when c = 1 then '131'
when c = 3 then '133'
else '13X other'
end
else '1X other'
end
when a = 2 then
case
when b = 1 then '21'
when b = 2 then case
when c = 2 then '222'
when c = 3 then '223'
else '22X other'
end
when b = 3 then '23'
else '2X other'
end
else 'other'
end from vector_expr_table_03 order by 1, 2, 3;
select a, b, case a when true then case b when true then '11' else '10' end else case b when true then '01' else '00' end end from vector_expr_table_05 order by 1, 2;
select a, b, c, case a > b
when true then
case b > ( case c when true then 1 when false then 0 end)
when true then 'a>b b>c'
when false then 'a>b b<=c'
end
when false then
case b > ( case c when true then 1 when false then 0 end)
when true then 'a<=b b>c'
when false then 'a<=b b<=c'
end
end
from vector_expr_table_05 order by 1, 2, 3;
select a, b, c, case a > b
when b > c then
case b > ( case c when true then 1 when false then 0 end)
when true then 'a>b == b>c == 1'
when false then 'a>b == b>c == 0'
end
when b <= c then
case a > ( case c when true then 1 when false then 0 end)
when true then 'a>b == b<=c a>c==1'
when false then 'a>b == b<=c a>c==0'
end
end
from vector_expr_table_05 order by 1, 2, 3;
select a, b, c, case a > b
when true then
case b > ( case c>'b' when true then '1' when false then '0' end)
when true then 'a>b b>c'
when false then 'a>b b<=c'
end
when false then
case b > ( case c <='b' when true then '1' when false then '0' end)
when true then 'a<=b b>c'
when false then 'a<=b b<=c'
end
end
from vector_expr_table_06 order by 1, 2, 3;
select a, b, c, case a > b
when b > c then
case b > ( case c when true then 1 when false then 0 end)
when true then 'a>b == b>c == 1'
when false then 'a>b == b>c == 0'
else 'a>b == b>c'
end
when b <= c then
case a > ( case c when true then 1 when false then 0 end)
when true then 'a>b == b<=c a>c==1'
when false then 'a>b == b<=c a>c==0'
else 'a>b ==b<=c'
end
else 'other'
end
from vector_expr_table_05 order by 1, 2, 3;
----
--- test 4: Scarlar Array OP( ANY & ALL)
----
--OP ANY
explain (verbose on, costs off) select col_int from vector_expr_table_02 where col_int = ANY(array[NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int = ANY(array[NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int = ANY(array[NULL, 0]) order by 1;
select col_int from vector_expr_table_02 where col_int = ANY(array[0, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int = ANY(array[NULL, 1]) order by 1;
select col_int from vector_expr_table_02 where col_int = ANY(array[1, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int > ANY(array[NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int > ANY(array[NULL, 0]) order by 1;
select col_int from vector_expr_table_02 where col_int > ANY(array[0, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int > ANY(array[NULL, 1]) order by 1;
select col_int from vector_expr_table_02 where col_int > ANY(array[1, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int < ANY(array[NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int < ANY(array[NULL, 0]) order by 1;
select col_int from vector_expr_table_02 where col_int < ANY(array[0, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int < ANY(array[NULL, 1]) order by 1;
select col_int from vector_expr_table_02 where col_int < ANY(array[1, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int = ANY(array[1, 2, 3]) order by 1;
select col_int from vector_expr_table_02 where col_int > ANY(array[-1, 2, 0]) order by 1;
select col_int from vector_expr_table_02 where col_int < ANY(array[8, -1, 0]) order by 1;
--OP ALL
select col_int from vector_expr_table_02 where col_int = ALL(array[NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int = ALL(array[NULL, 0]) order by 1;
select col_int from vector_expr_table_02 where col_int = ALL(array[0, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int = ALL(array[NULL, 1]) order by 1;
select col_int from vector_expr_table_02 where col_int = ALL(array[1, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int > ALL(array[NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int > ALL(array[NULL, 0]) order by 1;
select col_int from vector_expr_table_02 where col_int > ALL(array[0, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int > ALL(array[NULL, 1]) order by 1;
select col_int from vector_expr_table_02 where col_int > ALL(array[1, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int < ALL(array[NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int < ALL(array[NULL, 0]) order by 1;
select col_int from vector_expr_table_02 where col_int < ALL(array[0, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int < ALL(array[NULL, 1]) order by 1;
select col_int from vector_expr_table_02 where col_int < ALL(array[1, NULL]) order by 1;
select col_int from vector_expr_table_02 where col_int = ALL(array[1, 2, 3]) order by 1;
select col_int from vector_expr_table_02 where col_int > ALL(array[-1, 2, 0]) order by 1;
select col_int from vector_expr_table_02 where col_int < ALL(array[8, -1, 0]) order by 1;
--in expr
set enable_codegen=off;
select col_tinterval from vector_expr_table_07 where col_tinterval in ('["Sep 4, 1983 23:59:12" "Oct 4, 1983 23:59:12"]', '["May 10, 1947 23:59:12" "Jan 14, 1973 03:14:21"]') order by 1;
select col_interval from vector_expr_table_07 where col_interval in ('2 day 13:34:56', '1 day 18:34:56') order by 1;
select col_timetz from vector_expr_table_07 where col_timetz in ('08:00:30+08', '00:00:30+08', '12:00:30+08') order by 1;
reset enable_codegen;
----
--- test 5: Coalesce Expression
----
select a, b, c, d, coalesce(a, b, c, d) abcd, coalesce(a, b, c) abc, coalesce(a, b) ab, coalesce(a, c) ac, coalesce(b, c) bc, coalesce(a) a, coalesce(b) b, coalesce(c) c, coalesce(d) d from vector_expr_table_04 order by 1, 2, 3, 4;
select a, b, c, coalesce(a, coalesce(a)), coalesce(a, coalesce(a, coalesce(a))), coalesce(a, coalesce(b, coalesce(c))), coalesce(a, coalesce(a, b, c)) from vector_expr_table_04 order by 1, 2, 3;
----
--- test 6: Boolean Expression
----
select a, a is true from vector_expr_table_05 order by a;
select a, a is true from vector_expr_table_05 where a is true order by a;
select a, a is true from vector_expr_table_05 where b is true order by a;
select a, a is not true from vector_expr_table_05 order by a;
select a, a is not true from vector_expr_table_05 where a is not true order by a;
select a, a is not true from vector_expr_table_05 where b is true order by a;
select a, a is false from vector_expr_table_05 order by a;
select a, a is false from vector_expr_table_05 where a is false order by a;
select a, a is false from vector_expr_table_05 where b is false order by a;
select a, a is not false from vector_expr_table_05 order by a;
select a, a is not false from vector_expr_table_05 where a is not false order by a;
select a, a is not false from vector_expr_table_05 where b is false order by a;
select a, a is unknown from vector_expr_table_05 order by a;
select a, a is unknown from vector_expr_table_05 where a is unknown order by a;
select a, a is unknown from vector_expr_table_05 where b is unknown order by a;
select a, a is not unknown from vector_expr_table_05 order by a;
select a, a is not unknown from vector_expr_table_05 where a is not unknown order by a;
select a, a is not unknown from vector_expr_table_05 where b is unknown order by a;
--nvl
select nvl(b, 0) from VECTOR_EXPR_TABLE_05 order by 1;
----
--- test 7: Min-Max Expression
----
select a, b, c, greatest(a::int, b), least(a::int, b), greatest(a, c), least(a, c), greatest(b::bool, c), least(b::bool, c), greatest(a::int, b, c::int), least(a::int, b, c::int) from vector_expr_table_05 order by 1, 2, 3;
select a, b, c, greatest(a, b), least(a, b), greatest(a, c), least(a, c), greatest(b, c), least(b, c), greatest(a, b, c), least(a, b, c) from vector_expr_table_06 order by 1, 2, 3;
SELECT a, GREATEST(CASE WHEN (a > '0') THEN a ELSE ('-1') END, '1') AS greatest FROM vector_expr_table_06 order by 1, 2;
select greatest(a::int, b), least(a::int, b) from vector_expr_table_05 where greatest(a::int, b)*2 > 0 and least(a::int, b)*2<10 order by 1,2;
----
--- test 8: CoerceViaIO Expression
----
select col_int::numeric from vector_expr_table_07 where col_int = 5;
select col_num::int from vector_expr_table_07 where col_int = 5;
select col_int::varchar from vector_expr_table_07 where col_int = 5;
select col_num::varchar from vector_expr_table_07 where col_int = 5;
select col_timestamptz::varchar from vector_expr_table_07 where col_int = 5;
select col_timestamptz::text from vector_expr_table_07 where col_int = 5;
select col_varchar::timestamp with time zone from vector_expr_table_07 where col_int = 5;
select col_char::text from vector_expr_table_07 order by 1;
select col_interval::text from vector_expr_table_07 order by 1;
select col_timetz::text from vector_expr_table_07 order by 1;
select col_tinterval::text from vector_expr_table_07 order by 1;
select (col_tinterval::text)::tinterval from vector_expr_table_07 order by 1;
select (col_timetz::text)::timetz from vector_expr_table_07 order by 1;
select (col_interval::varchar)::interval from vector_expr_table_07 order by 1;
delete from vector_expr_table_07 where col_varchar='2017-09-09 19:45:37';
insert into vector_expr_table_07 values (123, 5, '2017-09-09 19:45:37', '1');
set enable_hashjoin=off;
explain (verbose on, costs off) select * from (select substr(col_varchar, 0,1) col1 from vector_expr_table_07 ) table1 left join vector_expr_table_08 on table1.col1=vector_expr_table_08.col_num;
select * from (select substr(col_varchar, 0,1) col1 from vector_expr_table_07 ) table1 left join vector_expr_table_08 on table1.col1=vector_expr_table_08.col_num where col_num is not null;
reset enable_hashjoin;
----
--- Clean Resource and Tables
----
drop schema vector_expression_engine_first cascade;