/* * 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;