You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ab...@apache.org on 2019/07/10 17:36:59 UTC

[hive] branch master updated: HIVE-21437: Vectorization: Decimal64 division with integer columns (Attila Magyar via Laszlo Bodor)

This is an automated email from the ASF dual-hosted git repository.

abstractdog pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 505a733  HIVE-21437: Vectorization: Decimal64 division with integer columns (Attila Magyar via Laszlo Bodor)
505a733 is described below

commit 505a73304587692ca06c9f4270a12d1dabd787b4
Author: Attila Magyar <am...@hortonworks.com>
AuthorDate: Wed Jul 10 19:16:57 2019 +0200

    HIVE-21437: Vectorization: Decimal64 division with integer columns (Attila Magyar via Laszlo Bodor)
    
    Signed-off-by: Laszlo Bodor <bo...@gmail.com>
---
 .../ColumnDivideScalarDecimal.txt                  |   6 +-
 .../expressions/ConstantVectorExpression.java      |  19 +++
 .../hive/ql/optimizer/physical/Vectorizer.java     |  10 +-
 .../vector_decimal_col_scalar_division.q           |  20 +++
 .../results/clientpositive/perf/spark/query4.q.out |   6 +
 .../perf/tez/constraints/query4.q.out              | 180 ++++++++++----------
 .../results/clientpositive/perf/tez/query4.q.out   | 182 ++++++++++-----------
 .../vector_decimal_col_scalar_division.q.out       | 137 ++++++++++++++++
 8 files changed, 376 insertions(+), 184 deletions(-)

diff --git a/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt b/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt
index 0bd7c00..1a1918d 100644
--- a/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt
+++ b/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt
@@ -72,7 +72,7 @@ public class <ClassName> extends VectorExpression {
     int[] sel = batch.selected;
     boolean[] inputIsNull = inputColVector.isNull;
     boolean[] outputIsNull = outputColVector.isNull;
-;
+
     HiveDecimalWritable[] vector = inputColVector.vector;
     HiveDecimalWritable[] outputVector = outputColVector.vector;
 
@@ -165,6 +165,10 @@ public class <ClassName> extends VectorExpression {
     }
   }
 
+  public HiveDecimal getValue() {
+    return value;
+  }
+
   @Override
   public String vectorExpressionParameters() {
     return getColumnParamString(0, colNum) + ", val " + value.toString();
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java
index 0a16e08..94a07d3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java
@@ -439,6 +439,25 @@ public class ConstantVectorExpression extends VectorExpression {
     return intervalDayTimeValue;
   }
 
+  public Object getValue() {
+    switch (type) {
+    case LONG:
+      return getLongValue();
+    case DOUBLE:
+      return getDoubleValue();
+    case BYTES:
+      return getBytesValue();
+    case DECIMAL:
+      return getDecimalValue();
+    case TIMESTAMP:
+      return getTimestampValue();
+    case INTERVAL_DAY_TIME:
+      return getIntervalDayTimeValue();
+    default:
+      throw new RuntimeException("Unexpected column vector type " + type);
+    }
+  }
+
   public void setStructValue(Object structValue) throws HiveException {
     StructTypeInfo structTypeInfo = (StructTypeInfo) outputTypeInfo;
     ArrayList<TypeInfo> fieldTypeInfoList = structTypeInfo.getAllStructFieldTypeInfos();
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
index b97a3a2..cbb3df0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
@@ -42,6 +42,7 @@ import java.util.regex.Pattern;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedInputFormatInterface;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.DecimalColDivideDecimalScalar;
 import org.apache.hadoop.hive.ql.exec.vector.reducesink.*;
 import org.apache.hadoop.hive.ql.exec.vector.udf.VectorUDFArgDesc;
 import org.apache.hadoop.hive.ql.io.AcidUtils;
@@ -4781,9 +4782,14 @@ public class Vectorizer implements PhysicalPlanResolver {
             }
           }
         } else {
+          Object[] arguments;
           int argumentCount = children.length + (parent.getOutputColumnNum() == -1 ? 0 : 1);
-          Object[] arguments = new Object[argumentCount];
-          // new input column numbers
+          if (parent instanceof DecimalColDivideDecimalScalar) {
+            arguments = new Object[argumentCount + 1];
+            arguments[children.length] = ((DecimalColDivideDecimalScalar) parent).getValue();
+          } else {
+            arguments = new Object[argumentCount];
+          }
           for (int i = 0; i < children.length; i++) {
             VectorExpression vce = children[i];
             arguments[i] = vce.getOutputColumnNum();
diff --git a/ql/src/test/queries/clientpositive/vector_decimal_col_scalar_division.q b/ql/src/test/queries/clientpositive/vector_decimal_col_scalar_division.q
new file mode 100644
index 0000000..6ac7bd3
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/vector_decimal_col_scalar_division.q
@@ -0,0 +1,20 @@
+CREATE temporary TABLE `catalog_Sales`(
+  `cs_quantity` int,
+  `cs_wholesale_cost` decimal(7,2),
+  `cs_list_price` decimal(7,2),
+  `cs_sales_price` decimal(7,2),
+  `cs_ext_discount_amt` decimal(7,2),
+  `cs_ext_sales_price` decimal(7,2),
+  `cs_ext_wholesale_cost` decimal(7,2),
+  `cs_ext_list_price` decimal(7,2),
+  `cs_ext_tax` decimal(7,2),
+  `cs_coupon_amt` decimal(7,2),
+  `cs_ext_ship_cost` decimal(7,2),
+  `cs_net_paid` decimal(7,2),
+  `cs_net_paid_inc_tax` decimal(7,2),
+  `cs_net_paid_inc_ship` decimal(7,2),
+  `cs_net_paid_inc_ship_tax` decimal(7,2),
+  `cs_net_profit` decimal(7,2))
+ ;
+
+explain vectorization detail select max((((cs_ext_list_price - cs_ext_wholesale_cost) - cs_ext_discount_amt) + cs_ext_sales_price) / 2) from catalog_sales;
diff --git a/ql/src/test/results/clientpositive/perf/spark/query4.q.out b/ql/src/test/results/clientpositive/perf/spark/query4.q.out
index a7e317c..c9ac6f1 100644
--- a/ql/src/test/results/clientpositive/perf/spark/query4.q.out
+++ b/ql/src/test/results/clientpositive/perf/spark/query4.q.out
@@ -275,6 +275,7 @@ STAGE PLANS:
                         Map-reduce partition columns: _col0 (type: int)
                         Statistics: Num rows: 287989836 Data size: 38999608952 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col1 (type: int), _col2 (type: decimal(14,6))
+            Execution mode: vectorized
         Map 13 
             Map Operator Tree:
                 TableScan
@@ -333,6 +334,7 @@ STAGE PLANS:
                         Map-reduce partition columns: _col0 (type: int)
                         Statistics: Num rows: 144002668 Data size: 19580198212 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col1 (type: int), _col2 (type: decimal(14,6))
+            Execution mode: vectorized
         Map 19 
             Map Operator Tree:
                 TableScan
@@ -391,6 +393,7 @@ STAGE PLANS:
                         Map-reduce partition columns: _col0 (type: int)
                         Statistics: Num rows: 287989836 Data size: 38999608952 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col1 (type: int), _col2 (type: decimal(14,6))
+            Execution mode: vectorized
         Map 25 
             Map Operator Tree:
                 TableScan
@@ -449,6 +452,7 @@ STAGE PLANS:
                         Map-reduce partition columns: _col0 (type: int)
                         Statistics: Num rows: 575995635 Data size: 50814502088 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col1 (type: int), _col2 (type: decimal(14,6))
+            Execution mode: vectorized
         Map 31 
             Map Operator Tree:
                 TableScan
@@ -507,6 +511,7 @@ STAGE PLANS:
                         Map-reduce partition columns: _col0 (type: int)
                         Statistics: Num rows: 144002668 Data size: 19580198212 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col1 (type: int), _col2 (type: decimal(14,6))
+            Execution mode: vectorized
         Map 37 
             Map Operator Tree:
                 TableScan
@@ -604,6 +609,7 @@ STAGE PLANS:
                         Map-reduce partition columns: _col0 (type: int)
                         Statistics: Num rows: 575995635 Data size: 50814502088 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col1 (type: int), _col2 (type: decimal(14,6))
+            Execution mode: vectorized
         Reducer 10 
             Reduce Operator Tree:
               Join Operator
diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/query4.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/query4.q.out
index 293b281..c9cb57b 100644
--- a/ql/src/test/results/clientpositive/perf/tez/constraints/query4.q.out
+++ b/ql/src/test/results/clientpositive/perf/tez/constraints/query4.q.out
@@ -271,10 +271,10 @@ Stage-0
     limit:100
     Stage-1
       Reducer 10 vectorized
-      File Output Operator [FS_550]
-        Limit [LIM_549] (rows=100 width=85)
+      File Output Operator [FS_562]
+        Limit [LIM_561] (rows=100 width=85)
           Number of rows:100
-          Select Operator [SEL_548] (rows=7323197 width=85)
+          Select Operator [SEL_560] (rows=7323197 width=85)
             Output:["_col0"]
           <-Reducer 9 [SIMPLE_EDGE]
             SHUFFLE [RS_135]
@@ -283,13 +283,13 @@ Stage-0
                 Filter Operator [FIL_133] (rows=7323197 width=537)
                   predicate:CASE WHEN (_col4 is not null) THEN (CASE WHEN (_col7) THEN (((_col9 / _col6) > (_col14 / _col4))) ELSE (false) END) ELSE (false) END
                   Merge Join Operator [MERGEJOIN_466] (rows=14646395 width=537)
-                    Conds:RS_130._col3=RS_547._col0(Inner),Output:["_col4","_col6","_col7","_col9","_col13","_col14"]
+                    Conds:RS_130._col3=RS_559._col0(Inner),Output:["_col4","_col6","_col7","_col9","_col13","_col14"]
                   <-Reducer 30 [SIMPLE_EDGE] vectorized
-                    SHUFFLE [RS_547]
+                    SHUFFLE [RS_559]
                       PartitionCols:_col0
-                      Select Operator [SEL_546] (rows=80000000 width=297)
+                      Select Operator [SEL_558] (rows=80000000 width=297)
                         Output:["_col0","_col1","_col2"]
-                        Group By Operator [GBY_545] (rows=80000000 width=764)
+                        Group By Operator [GBY_557] (rows=80000000 width=764)
                           Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                         <-Reducer 29 [SIMPLE_EDGE]
                           SHUFFLE [RS_114]
@@ -297,11 +297,11 @@ Stage-0
                             Group By Operator [GBY_113] (rows=80000000 width=764)
                               Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                               Merge Join Operator [MERGEJOIN_461] (rows=187573258 width=764)
-                                Conds:RS_109._col1=RS_503._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                Conds:RS_109._col1=RS_505._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                               <-Map 38 [SIMPLE_EDGE] vectorized
-                                SHUFFLE [RS_503]
+                                SHUFFLE [RS_505]
                                   PartitionCols:_col0
-                                  Select Operator [SEL_502] (rows=80000000 width=656)
+                                  Select Operator [SEL_504] (rows=80000000 width=656)
                                     Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
                                     TableScan [TS_104] (rows=80000000 width=656)
                                       default@customer,customer,Tbl:COMPLETE,Col:COMPLETE,Output:["c_customer_sk","c_customer_id","c_first_name","c_last_name","c_preferred_cust_flag","c_birth_country","c_login","c_email_address"]
@@ -309,7 +309,7 @@ Stage-0
                                 SHUFFLE [RS_109]
                                   PartitionCols:_col1
                                   Merge Join Operator [MERGEJOIN_460] (rows=187573258 width=115)
-                                    Conds:RS_106._col0=RS_475._col0(Inner),Output:["_col1","_col2"]
+                                    Conds:RS_556._col0=RS_475._col0(Inner),Output:["_col1","_col2"]
                                   <-Map 31 [SIMPLE_EDGE] vectorized
                                     PARTITION_ONLY_SHUFFLE [RS_475]
                                       PartitionCols:_col0
@@ -319,18 +319,18 @@ Stage-0
                                           predicate:(d_year = 2002)
                                           TableScan [TS_101] (rows=73049 width=8)
                                             default@date_dim,date_dim,Tbl:COMPLETE,Col:COMPLETE,Output:["d_date_sk","d_year"]
-                                  <-Map 27 [SIMPLE_EDGE]
-                                    SHUFFLE [RS_106]
+                                  <-Map 27 [SIMPLE_EDGE] vectorized
+                                    SHUFFLE [RS_556]
                                       PartitionCols:_col0
-                                      Select Operator [SEL_100] (rows=525327388 width=119)
+                                      Select Operator [SEL_555] (rows=525327388 width=119)
                                         Output:["_col0","_col1","_col2"]
-                                        Filter Operator [FIL_244] (rows=525327388 width=435)
+                                        Filter Operator [FIL_554] (rows=525327388 width=435)
                                           predicate:(ss_sold_date_sk is not null and ss_customer_sk is not null and ss_sold_date_sk BETWEEN DynamicValue(RS_107_date_dim_d_date_sk_min) AND DynamicValue(RS_107_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, DynamicValue(RS_107_date_dim_d_date_sk_bloom_filter)))
                                           TableScan [TS_98] (rows=575995635 width=435)
                                             default@store_sales,store_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ss_sold_date_sk","ss_customer_sk","ss_ext_discount_amt","ss_ext_sales_price","ss_ext_wholesale_cost","ss_ext_list_price"]
                                           <-Reducer 32 [BROADCAST_EDGE] vectorized
-                                            BROADCAST [RS_543]
-                                              Group By Operator [GBY_542] (rows=1 width=12)
+                                            BROADCAST [RS_553]
+                                              Group By Operator [GBY_552] (rows=1 width=12)
                                                 Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)","bloom_filter(VALUE._col2, expectedEntries=1000000)"]
                                               <-Map 31 [CUSTOM_SIMPLE_EDGE] vectorized
                                                 PARTITION_ONLY_SHUFFLE [RS_493]
@@ -345,13 +345,13 @@ Stage-0
                       Filter Operator [FIL_129] (rows=12248093 width=668)
                         predicate:CASE WHEN (_col2) THEN (CASE WHEN (_col7) THEN (((_col9 / _col6) > (_col11 / _col1))) ELSE (false) END) ELSE (false) END
                         Merge Join Operator [MERGEJOIN_465] (rows=24496187 width=668)
-                          Conds:RS_126._col3=RS_541._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col9","_col11"]
+                          Conds:RS_126._col3=RS_551._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col9","_col11"]
                         <-Reducer 26 [SIMPLE_EDGE] vectorized
-                          SHUFFLE [RS_541]
+                          SHUFFLE [RS_551]
                             PartitionCols:_col0
-                            Select Operator [SEL_540] (rows=51391963 width=212)
+                            Select Operator [SEL_550] (rows=51391963 width=212)
                               Output:["_col0","_col1"]
-                              Group By Operator [GBY_539] (rows=51391963 width=764)
+                              Group By Operator [GBY_549] (rows=51391963 width=764)
                                 Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                               <-Reducer 25 [SIMPLE_EDGE]
                                 SHUFFLE [RS_95]
@@ -359,32 +359,32 @@ Stage-0
                                   Group By Operator [GBY_94] (rows=51391963 width=764)
                                     Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                                     Merge Join Operator [MERGEJOIN_459] (rows=51391963 width=764)
-                                      Conds:RS_90._col1=RS_504._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                      Conds:RS_90._col1=RS_506._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                                     <-Map 38 [SIMPLE_EDGE] vectorized
-                                      SHUFFLE [RS_504]
+                                      SHUFFLE [RS_506]
                                         PartitionCols:_col0
-                                         Please refer to the previous Select Operator [SEL_502]
+                                         Please refer to the previous Select Operator [SEL_504]
                                     <-Reducer 24 [SIMPLE_EDGE]
                                       SHUFFLE [RS_90]
                                         PartitionCols:_col1
                                         Merge Join Operator [MERGEJOIN_458] (rows=51391963 width=115)
-                                          Conds:RS_87._col0=RS_477._col0(Inner),Output:["_col1","_col2"]
+                                          Conds:RS_548._col0=RS_477._col0(Inner),Output:["_col1","_col2"]
                                         <-Map 31 [SIMPLE_EDGE] vectorized
                                           PARTITION_ONLY_SHUFFLE [RS_477]
                                             PartitionCols:_col0
                                              Please refer to the previous Select Operator [SEL_471]
-                                        <-Map 23 [SIMPLE_EDGE]
-                                          SHUFFLE [RS_87]
+                                        <-Map 23 [SIMPLE_EDGE] vectorized
+                                          SHUFFLE [RS_548]
                                             PartitionCols:_col0
-                                            Select Operator [SEL_81] (rows=143930993 width=119)
+                                            Select Operator [SEL_547] (rows=143930993 width=119)
                                               Output:["_col0","_col1","_col2"]
-                                              Filter Operator [FIL_241] (rows=143930993 width=455)
+                                              Filter Operator [FIL_546] (rows=143930993 width=455)
                                                 predicate:(ws_bill_customer_sk is not null and ws_sold_date_sk is not null and ws_sold_date_sk BETWEEN DynamicValue(RS_88_date_dim_d_date_sk_min) AND DynamicValue(RS_88_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, DynamicValue(RS_88_date_dim_d_date_sk_bloom_filter)))
                                                 TableScan [TS_79] (rows=144002668 width=455)
                                                   default@web_sales,web_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ws_sold_date_sk","ws_bill_customer_sk","ws_ext_discount_amt","ws_ext_sales_price","ws_ext_wholesale_cost","ws_ext_list_price"]
                                                 <-Reducer 33 [BROADCAST_EDGE] vectorized
-                                                  BROADCAST [RS_537]
-                                                    Group By Operator [GBY_536] (rows=1 width=12)
+                                                  BROADCAST [RS_545]
+                                                    Group By Operator [GBY_544] (rows=1 width=12)
                                                       Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)","bloom_filter(VALUE._col2, expectedEntries=1000000)"]
                                                     <-Map 31 [CUSTOM_SIMPLE_EDGE] vectorized
                                                       PARTITION_ONLY_SHUFFLE [RS_494]
@@ -397,13 +397,13 @@ Stage-0
                           FORWARD [RS_126]
                             PartitionCols:_col3
                             Merge Join Operator [MERGEJOIN_464] (rows=20485012 width=556)
-                              Conds:RS_123._col3=RS_535._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col9"]
+                              Conds:RS_123._col3=RS_543._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col9"]
                             <-Reducer 22 [SIMPLE_EDGE] vectorized
-                              SHUFFLE [RS_535]
+                              SHUFFLE [RS_543]
                                 PartitionCols:_col0
-                                Select Operator [SEL_534] (rows=80000000 width=212)
+                                Select Operator [SEL_542] (rows=80000000 width=212)
                                   Output:["_col0","_col1"]
-                                  Group By Operator [GBY_533] (rows=80000000 width=764)
+                                  Group By Operator [GBY_541] (rows=80000000 width=764)
                                     Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                                   <-Reducer 21 [SIMPLE_EDGE]
                                     SHUFFLE [RS_76]
@@ -411,32 +411,32 @@ Stage-0
                                       Group By Operator [GBY_75] (rows=80000000 width=764)
                                         Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                                         Merge Join Operator [MERGEJOIN_457] (rows=101084444 width=764)
-                                          Conds:RS_71._col1=RS_505._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                          Conds:RS_71._col1=RS_507._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                                         <-Map 38 [SIMPLE_EDGE] vectorized
-                                          SHUFFLE [RS_505]
+                                          SHUFFLE [RS_507]
                                             PartitionCols:_col0
-                                             Please refer to the previous Select Operator [SEL_502]
+                                             Please refer to the previous Select Operator [SEL_504]
                                         <-Reducer 20 [SIMPLE_EDGE]
                                           SHUFFLE [RS_71]
                                             PartitionCols:_col1
                                             Merge Join Operator [MERGEJOIN_456] (rows=101084444 width=115)
-                                              Conds:RS_68._col0=RS_479._col0(Inner),Output:["_col1","_col2"]
+                                              Conds:RS_540._col0=RS_479._col0(Inner),Output:["_col1","_col2"]
                                             <-Map 31 [SIMPLE_EDGE] vectorized
                                               PARTITION_ONLY_SHUFFLE [RS_479]
                                                 PartitionCols:_col0
                                                  Please refer to the previous Select Operator [SEL_471]
-                                            <-Map 19 [SIMPLE_EDGE]
-                                              SHUFFLE [RS_68]
+                                            <-Map 19 [SIMPLE_EDGE] vectorized
+                                              SHUFFLE [RS_540]
                                                 PartitionCols:_col0
-                                                Select Operator [SEL_62] (rows=285117831 width=119)
+                                                Select Operator [SEL_539] (rows=285117831 width=119)
                                                   Output:["_col0","_col1","_col2"]
-                                                  Filter Operator [FIL_238] (rows=285117831 width=453)
+                                                  Filter Operator [FIL_538] (rows=285117831 width=453)
                                                     predicate:(cs_sold_date_sk is not null and cs_bill_customer_sk is not null and cs_sold_date_sk BETWEEN DynamicValue(RS_69_date_dim_d_date_sk_min) AND DynamicValue(RS_69_date_dim_d_date_sk_max) and in_bloom_filter(cs_sold_date_sk, DynamicValue(RS_69_date_dim_d_date_sk_bloom_filter)))
                                                     TableScan [TS_60] (rows=287989836 width=453)
                                                       default@catalog_sales,catalog_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["cs_sold_date_sk","cs_bill_customer_sk","cs_ext_discount_amt","cs_ext_sales_price","cs_ext_wholesale_cost","cs_ext_list_price"]
                                                     <-Reducer 34 [BROADCAST_EDGE] vectorized
-                                                      BROADCAST [RS_531]
-                                                        Group By Operator [GBY_530] (rows=1 width=12)
+                                                      BROADCAST [RS_537]
+                                                        Group By Operator [GBY_536] (rows=1 width=12)
                                                           Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)","bloom_filter(VALUE._col2, expectedEntries=1000000)"]
                                                         <-Map 31 [CUSTOM_SIMPLE_EDGE] vectorized
                                                           PARTITION_ONLY_SHUFFLE [RS_495]
@@ -449,17 +449,17 @@ Stage-0
                               FORWARD [RS_123]
                                 PartitionCols:_col3
                                 Merge Join Operator [MERGEJOIN_463] (rows=17130654 width=444)
-                                  Conds:RS_120._col3=RS_529._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7"]
+                                  Conds:RS_120._col3=RS_535._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7"]
                                 <-Reducer 18 [SIMPLE_EDGE] vectorized
-                                  SHUFFLE [RS_529]
+                                  SHUFFLE [RS_535]
                                     PartitionCols:_col0
-                                    Select Operator [SEL_528] (rows=26666666 width=216)
+                                    Select Operator [SEL_534] (rows=26666666 width=216)
                                       Output:["_col0","_col1","_col2"]
-                                      Filter Operator [FIL_527] (rows=26666666 width=212)
+                                      Filter Operator [FIL_533] (rows=26666666 width=212)
                                         predicate:(_col7 > 0)
-                                        Select Operator [SEL_526] (rows=80000000 width=212)
+                                        Select Operator [SEL_532] (rows=80000000 width=212)
                                           Output:["_col0","_col7"]
-                                          Group By Operator [GBY_525] (rows=80000000 width=764)
+                                          Group By Operator [GBY_531] (rows=80000000 width=764)
                                             Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                                           <-Reducer 17 [SIMPLE_EDGE]
                                             SHUFFLE [RS_56]
@@ -467,16 +467,16 @@ Stage-0
                                               Group By Operator [GBY_55] (rows=80000000 width=764)
                                                 Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                                                 Merge Join Operator [MERGEJOIN_455] (rows=101084444 width=764)
-                                                  Conds:RS_51._col1=RS_508._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                                  Conds:RS_51._col1=RS_510._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                                                 <-Map 38 [SIMPLE_EDGE] vectorized
-                                                  SHUFFLE [RS_508]
+                                                  SHUFFLE [RS_510]
                                                     PartitionCols:_col0
-                                                     Please refer to the previous Select Operator [SEL_502]
+                                                     Please refer to the previous Select Operator [SEL_504]
                                                 <-Reducer 16 [SIMPLE_EDGE]
                                                   SHUFFLE [RS_51]
                                                     PartitionCols:_col1
                                                     Merge Join Operator [MERGEJOIN_454] (rows=101084444 width=115)
-                                                      Conds:RS_48._col0=RS_485._col0(Inner),Output:["_col1","_col2"]
+                                                      Conds:RS_530._col0=RS_485._col0(Inner),Output:["_col1","_col2"]
                                                     <-Map 31 [SIMPLE_EDGE] vectorized
                                                       PARTITION_ONLY_SHUFFLE [RS_485]
                                                         PartitionCols:_col0
@@ -485,18 +485,18 @@ Stage-0
                                                           Filter Operator [FIL_470] (rows=652 width=8)
                                                             predicate:(d_year = 2001)
                                                              Please refer to the previous TableScan [TS_101]
-                                                    <-Map 15 [SIMPLE_EDGE]
-                                                      SHUFFLE [RS_48]
+                                                    <-Map 15 [SIMPLE_EDGE] vectorized
+                                                      SHUFFLE [RS_530]
                                                         PartitionCols:_col0
-                                                        Select Operator [SEL_42] (rows=285117831 width=119)
+                                                        Select Operator [SEL_529] (rows=285117831 width=119)
                                                           Output:["_col0","_col1","_col2"]
-                                                          Filter Operator [FIL_235] (rows=285117831 width=453)
+                                                          Filter Operator [FIL_528] (rows=285117831 width=453)
                                                             predicate:(cs_sold_date_sk is not null and cs_bill_customer_sk is not null and cs_sold_date_sk BETWEEN DynamicValue(RS_49_date_dim_d_date_sk_min) AND DynamicValue(RS_49_date_dim_d_date_sk_max) and in_bloom_filter(cs_sold_date_sk, DynamicValue(RS_49_date_dim_d_date_sk_bloom_filter)))
                                                             TableScan [TS_40] (rows=287989836 width=453)
                                                               default@catalog_sales,catalog_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["cs_sold_date_sk","cs_bill_customer_sk","cs_ext_discount_amt","cs_ext_sales_price","cs_ext_wholesale_cost","cs_ext_list_price"]
                                                             <-Reducer 37 [BROADCAST_EDGE] vectorized
-                                                              BROADCAST [RS_523]
-                                                                Group By Operator [GBY_522] (rows=1 width=12)
+                                                              BROADCAST [RS_527]
+                                                                Group By Operator [GBY_526] (rows=1 width=12)
                                                                   Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)","bloom_filter(VALUE._col2, expectedEntries=1000000)"]
                                                                 <-Map 31 [CUSTOM_SIMPLE_EDGE] vectorized
                                                                   PARTITION_ONLY_SHUFFLE [RS_498]
@@ -509,17 +509,17 @@ Stage-0
                                   FORWARD [RS_120]
                                     PartitionCols:_col3
                                     Merge Join Operator [MERGEJOIN_462] (rows=17130654 width=328)
-                                      Conds:RS_513._col0=RS_521._col0(Inner),Output:["_col1","_col2","_col3","_col4"]
+                                      Conds:RS_515._col0=RS_525._col0(Inner),Output:["_col1","_col2","_col3","_col4"]
                                     <-Reducer 14 [SIMPLE_EDGE] vectorized
-                                      SHUFFLE [RS_521]
+                                      SHUFFLE [RS_525]
                                         PartitionCols:_col0
-                                        Select Operator [SEL_520] (rows=26666666 width=212)
+                                        Select Operator [SEL_524] (rows=26666666 width=212)
                                           Output:["_col0","_col1"]
-                                          Filter Operator [FIL_519] (rows=26666666 width=212)
+                                          Filter Operator [FIL_523] (rows=26666666 width=212)
                                             predicate:(_col7 > 0)
-                                            Select Operator [SEL_518] (rows=80000000 width=212)
+                                            Select Operator [SEL_522] (rows=80000000 width=212)
                                               Output:["_col0","_col7"]
-                                              Group By Operator [GBY_517] (rows=80000000 width=764)
+                                              Group By Operator [GBY_521] (rows=80000000 width=764)
                                                 Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                                               <-Reducer 13 [SIMPLE_EDGE]
                                                 SHUFFLE [RS_36]
@@ -527,16 +527,16 @@ Stage-0
                                                   Group By Operator [GBY_35] (rows=80000000 width=764)
                                                     Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                                                     Merge Join Operator [MERGEJOIN_453] (rows=187573258 width=764)
-                                                      Conds:RS_31._col1=RS_507._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                                      Conds:RS_31._col1=RS_509._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                                                     <-Map 38 [SIMPLE_EDGE] vectorized
-                                                      SHUFFLE [RS_507]
+                                                      SHUFFLE [RS_509]
                                                         PartitionCols:_col0
-                                                         Please refer to the previous Select Operator [SEL_502]
+                                                         Please refer to the previous Select Operator [SEL_504]
                                                     <-Reducer 12 [SIMPLE_EDGE]
                                                       SHUFFLE [RS_31]
                                                         PartitionCols:_col1
                                                         Merge Join Operator [MERGEJOIN_452] (rows=187573258 width=115)
-                                                          Conds:RS_28._col0=RS_483._col0(Inner),Output:["_col1","_col2"]
+                                                          Conds:RS_520._col0=RS_483._col0(Inner),Output:["_col1","_col2"]
                                                         <-Map 31 [SIMPLE_EDGE] vectorized
                                                           PARTITION_ONLY_SHUFFLE [RS_483]
                                                             PartitionCols:_col0
@@ -545,18 +545,18 @@ Stage-0
                                                               Filter Operator [FIL_469] (rows=652 width=8)
                                                                 predicate:(d_year = 2001)
                                                                  Please refer to the previous TableScan [TS_101]
-                                                        <-Map 11 [SIMPLE_EDGE]
-                                                          SHUFFLE [RS_28]
+                                                        <-Map 11 [SIMPLE_EDGE] vectorized
+                                                          SHUFFLE [RS_520]
                                                             PartitionCols:_col0
-                                                            Select Operator [SEL_22] (rows=525327388 width=119)
+                                                            Select Operator [SEL_519] (rows=525327388 width=119)
                                                               Output:["_col0","_col1","_col2"]
-                                                              Filter Operator [FIL_232] (rows=525327388 width=435)
+                                                              Filter Operator [FIL_518] (rows=525327388 width=435)
                                                                 predicate:(ss_sold_date_sk is not null and ss_customer_sk is not null and ss_sold_date_sk BETWEEN DynamicValue(RS_29_date_dim_d_date_sk_min) AND DynamicValue(RS_29_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, DynamicValue(RS_29_date_dim_d_date_sk_bloom_filter)))
                                                                 TableScan [TS_20] (rows=575995635 width=435)
                                                                   default@store_sales,store_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ss_sold_date_sk","ss_customer_sk","ss_ext_discount_amt","ss_ext_sales_price","ss_ext_wholesale_cost","ss_ext_list_price"]
                                                                 <-Reducer 36 [BROADCAST_EDGE] vectorized
-                                                                  BROADCAST [RS_515]
-                                                                    Group By Operator [GBY_514] (rows=1 width=12)
+                                                                  BROADCAST [RS_517]
+                                                                    Group By Operator [GBY_516] (rows=1 width=12)
                                                                       Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)","bloom_filter(VALUE._col2, expectedEntries=1000000)"]
                                                                     <-Map 31 [CUSTOM_SIMPLE_EDGE] vectorized
                                                                       PARTITION_ONLY_SHUFFLE [RS_497]
@@ -566,15 +566,15 @@ Stage-0
                                                                             Output:["_col0"]
                                                                              Please refer to the previous Select Operator [SEL_473]
                                     <-Reducer 4 [SIMPLE_EDGE] vectorized
-                                      SHUFFLE [RS_513]
+                                      SHUFFLE [RS_515]
                                         PartitionCols:_col0
-                                        Select Operator [SEL_512] (rows=17130654 width=216)
+                                        Select Operator [SEL_514] (rows=17130654 width=216)
                                           Output:["_col0","_col1","_col2"]
-                                          Filter Operator [FIL_511] (rows=17130654 width=212)
+                                          Filter Operator [FIL_513] (rows=17130654 width=212)
                                             predicate:(_col7 > 0)
-                                            Select Operator [SEL_510] (rows=51391963 width=212)
+                                            Select Operator [SEL_512] (rows=51391963 width=212)
                                               Output:["_col0","_col7"]
-                                              Group By Operator [GBY_509] (rows=51391963 width=764)
+                                              Group By Operator [GBY_511] (rows=51391963 width=764)
                                                 Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                                               <-Reducer 3 [SIMPLE_EDGE]
                                                 SHUFFLE [RS_16]
@@ -582,16 +582,16 @@ Stage-0
                                                   Group By Operator [GBY_15] (rows=51391963 width=764)
                                                     Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                                                     Merge Join Operator [MERGEJOIN_451] (rows=51391963 width=764)
-                                                      Conds:RS_11._col1=RS_506._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                                      Conds:RS_11._col1=RS_508._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                                                     <-Map 38 [SIMPLE_EDGE] vectorized
-                                                      SHUFFLE [RS_506]
+                                                      SHUFFLE [RS_508]
                                                         PartitionCols:_col0
-                                                         Please refer to the previous Select Operator [SEL_502]
+                                                         Please refer to the previous Select Operator [SEL_504]
                                                     <-Reducer 2 [SIMPLE_EDGE]
                                                       SHUFFLE [RS_11]
                                                         PartitionCols:_col1
                                                         Merge Join Operator [MERGEJOIN_450] (rows=51391963 width=115)
-                                                          Conds:RS_8._col0=RS_481._col0(Inner),Output:["_col1","_col2"]
+                                                          Conds:RS_503._col0=RS_481._col0(Inner),Output:["_col1","_col2"]
                                                         <-Map 31 [SIMPLE_EDGE] vectorized
                                                           PARTITION_ONLY_SHUFFLE [RS_481]
                                                             PartitionCols:_col0
@@ -600,12 +600,12 @@ Stage-0
                                                               Filter Operator [FIL_468] (rows=652 width=8)
                                                                 predicate:(d_year = 2001)
                                                                  Please refer to the previous TableScan [TS_101]
-                                                        <-Map 1 [SIMPLE_EDGE]
-                                                          SHUFFLE [RS_8]
+                                                        <-Map 1 [SIMPLE_EDGE] vectorized
+                                                          SHUFFLE [RS_503]
                                                             PartitionCols:_col0
-                                                            Select Operator [SEL_2] (rows=143930993 width=119)
+                                                            Select Operator [SEL_502] (rows=143930993 width=119)
                                                               Output:["_col0","_col1","_col2"]
-                                                              Filter Operator [FIL_229] (rows=143930993 width=455)
+                                                              Filter Operator [FIL_501] (rows=143930993 width=455)
                                                                 predicate:(ws_bill_customer_sk is not null and ws_sold_date_sk is not null and ws_sold_date_sk BETWEEN DynamicValue(RS_9_date_dim_d_date_sk_min) AND DynamicValue(RS_9_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, DynamicValue(RS_9_date_dim_d_date_sk_bloom_filter)))
                                                                 TableScan [TS_0] (rows=144002668 width=455)
                                                                   default@web_sales,web_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ws_sold_date_sk","ws_bill_customer_sk","ws_ext_discount_amt","ws_ext_sales_price","ws_ext_wholesale_cost","ws_ext_list_price"]
diff --git a/ql/src/test/results/clientpositive/perf/tez/query4.q.out b/ql/src/test/results/clientpositive/perf/tez/query4.q.out
index 47515ed..8f4760c 100644
--- a/ql/src/test/results/clientpositive/perf/tez/query4.q.out
+++ b/ql/src/test/results/clientpositive/perf/tez/query4.q.out
@@ -271,10 +271,10 @@ Stage-0
     limit:100
     Stage-1
       Reducer 10 vectorized
-      File Output Operator [FS_557]
-        Limit [LIM_556] (rows=100 width=85)
+      File Output Operator [FS_569]
+        Limit [LIM_568] (rows=100 width=85)
           Number of rows:100
-          Select Operator [SEL_555] (rows=7323197 width=85)
+          Select Operator [SEL_567] (rows=7323197 width=85)
             Output:["_col0"]
           <-Reducer 9 [SIMPLE_EDGE]
             SHUFFLE [RS_141]
@@ -283,13 +283,13 @@ Stage-0
                 Filter Operator [FIL_139] (rows=7323197 width=537)
                   predicate:CASE WHEN (_col3 is not null) THEN (CASE WHEN (_col9) THEN (((_col11 / _col8) > (_col14 / _col3))) ELSE (false) END) ELSE (false) END
                   Merge Join Operator [MERGEJOIN_472] (rows=14646395 width=537)
-                    Conds:RS_136._col2=RS_554._col0(Inner),Output:["_col3","_col8","_col9","_col11","_col13","_col14"]
+                    Conds:RS_136._col2=RS_566._col0(Inner),Output:["_col3","_col8","_col9","_col11","_col13","_col14"]
                   <-Reducer 30 [SIMPLE_EDGE] vectorized
-                    SHUFFLE [RS_554]
+                    SHUFFLE [RS_566]
                       PartitionCols:_col0
-                      Select Operator [SEL_553] (rows=80000000 width=297)
+                      Select Operator [SEL_565] (rows=80000000 width=297)
                         Output:["_col0","_col1","_col2"]
-                        Group By Operator [GBY_552] (rows=80000000 width=764)
+                        Group By Operator [GBY_564] (rows=80000000 width=764)
                           Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                         <-Reducer 29 [SIMPLE_EDGE]
                           SHUFFLE [RS_120]
@@ -297,13 +297,13 @@ Stage-0
                             Group By Operator [GBY_119] (rows=80000000 width=764)
                               Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                               Merge Join Operator [MERGEJOIN_467] (rows=187573258 width=764)
-                                Conds:RS_115._col1=RS_510._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                Conds:RS_115._col1=RS_512._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                               <-Map 38 [SIMPLE_EDGE] vectorized
-                                SHUFFLE [RS_510]
+                                SHUFFLE [RS_512]
                                   PartitionCols:_col0
-                                  Select Operator [SEL_509] (rows=80000000 width=656)
+                                  Select Operator [SEL_511] (rows=80000000 width=656)
                                     Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
-                                    Filter Operator [FIL_508] (rows=80000000 width=656)
+                                    Filter Operator [FIL_510] (rows=80000000 width=656)
                                       predicate:(c_customer_sk is not null and c_customer_id is not null)
                                       TableScan [TS_109] (rows=80000000 width=656)
                                         default@customer,customer,Tbl:COMPLETE,Col:COMPLETE,Output:["c_customer_sk","c_customer_id","c_first_name","c_last_name","c_preferred_cust_flag","c_birth_country","c_login","c_email_address"]
@@ -311,7 +311,7 @@ Stage-0
                                 SHUFFLE [RS_115]
                                   PartitionCols:_col1
                                   Merge Join Operator [MERGEJOIN_466] (rows=187573258 width=115)
-                                    Conds:RS_112._col0=RS_481._col0(Inner),Output:["_col1","_col2"]
+                                    Conds:RS_563._col0=RS_481._col0(Inner),Output:["_col1","_col2"]
                                   <-Map 31 [SIMPLE_EDGE] vectorized
                                     PARTITION_ONLY_SHUFFLE [RS_481]
                                       PartitionCols:_col0
@@ -321,18 +321,18 @@ Stage-0
                                           predicate:((d_year = 2002) and d_date_sk is not null)
                                           TableScan [TS_106] (rows=73049 width=8)
                                             default@date_dim,date_dim,Tbl:COMPLETE,Col:COMPLETE,Output:["d_date_sk","d_year"]
-                                  <-Map 27 [SIMPLE_EDGE]
-                                    SHUFFLE [RS_112]
+                                  <-Map 27 [SIMPLE_EDGE] vectorized
+                                    SHUFFLE [RS_563]
                                       PartitionCols:_col0
-                                      Select Operator [SEL_105] (rows=525327388 width=119)
+                                      Select Operator [SEL_562] (rows=525327388 width=119)
                                         Output:["_col0","_col1","_col2"]
-                                        Filter Operator [FIL_250] (rows=525327388 width=435)
+                                        Filter Operator [FIL_561] (rows=525327388 width=435)
                                           predicate:(ss_sold_date_sk is not null and ss_customer_sk is not null and ss_sold_date_sk BETWEEN DynamicValue(RS_113_date_dim_d_date_sk_min) AND DynamicValue(RS_113_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, DynamicValue(RS_113_date_dim_d_date_sk_bloom_filter)))
                                           TableScan [TS_103] (rows=575995635 width=435)
                                             default@store_sales,store_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ss_sold_date_sk","ss_customer_sk","ss_ext_discount_amt","ss_ext_sales_price","ss_ext_wholesale_cost","ss_ext_list_price"]
                                           <-Reducer 32 [BROADCAST_EDGE] vectorized
-                                            BROADCAST [RS_550]
-                                              Group By Operator [GBY_549] (rows=1 width=12)
+                                            BROADCAST [RS_560]
+                                              Group By Operator [GBY_559] (rows=1 width=12)
                                                 Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)","bloom_filter(VALUE._col2, expectedEntries=1000000)"]
                                               <-Map 31 [CUSTOM_SIMPLE_EDGE] vectorized
                                                 PARTITION_ONLY_SHUFFLE [RS_499]
@@ -347,13 +347,13 @@ Stage-0
                       Filter Operator [FIL_135] (rows=12248093 width=668)
                         predicate:CASE WHEN (_col6) THEN (CASE WHEN (_col9) THEN (((_col11 / _col8) > (_col1 / _col5))) ELSE (false) END) ELSE (false) END
                         Merge Join Operator [MERGEJOIN_471] (rows=24496186 width=668)
-                          Conds:RS_132._col2=RS_548._col0(Inner),Output:["_col1","_col2","_col3","_col5","_col6","_col8","_col9","_col11"]
+                          Conds:RS_132._col2=RS_558._col0(Inner),Output:["_col1","_col2","_col3","_col5","_col6","_col8","_col9","_col11"]
                         <-Reducer 26 [SIMPLE_EDGE] vectorized
-                          SHUFFLE [RS_548]
+                          SHUFFLE [RS_558]
                             PartitionCols:_col0
-                            Select Operator [SEL_547] (rows=80000000 width=212)
+                            Select Operator [SEL_557] (rows=80000000 width=212)
                               Output:["_col0","_col1"]
-                              Group By Operator [GBY_546] (rows=80000000 width=764)
+                              Group By Operator [GBY_556] (rows=80000000 width=764)
                                 Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                               <-Reducer 25 [SIMPLE_EDGE]
                                 SHUFFLE [RS_100]
@@ -361,32 +361,32 @@ Stage-0
                                   Group By Operator [GBY_99] (rows=80000000 width=764)
                                     Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                                     Merge Join Operator [MERGEJOIN_465] (rows=101084444 width=764)
-                                      Conds:RS_95._col1=RS_511._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                      Conds:RS_95._col1=RS_513._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                                     <-Map 38 [SIMPLE_EDGE] vectorized
-                                      SHUFFLE [RS_511]
+                                      SHUFFLE [RS_513]
                                         PartitionCols:_col0
-                                         Please refer to the previous Select Operator [SEL_509]
+                                         Please refer to the previous Select Operator [SEL_511]
                                     <-Reducer 24 [SIMPLE_EDGE]
                                       SHUFFLE [RS_95]
                                         PartitionCols:_col1
                                         Merge Join Operator [MERGEJOIN_464] (rows=101084444 width=115)
-                                          Conds:RS_92._col0=RS_483._col0(Inner),Output:["_col1","_col2"]
+                                          Conds:RS_555._col0=RS_483._col0(Inner),Output:["_col1","_col2"]
                                         <-Map 31 [SIMPLE_EDGE] vectorized
                                           PARTITION_ONLY_SHUFFLE [RS_483]
                                             PartitionCols:_col0
                                              Please refer to the previous Select Operator [SEL_477]
-                                        <-Map 23 [SIMPLE_EDGE]
-                                          SHUFFLE [RS_92]
+                                        <-Map 23 [SIMPLE_EDGE] vectorized
+                                          SHUFFLE [RS_555]
                                             PartitionCols:_col0
-                                            Select Operator [SEL_85] (rows=285117831 width=119)
+                                            Select Operator [SEL_554] (rows=285117831 width=119)
                                               Output:["_col0","_col1","_col2"]
-                                              Filter Operator [FIL_247] (rows=285117831 width=453)
+                                              Filter Operator [FIL_553] (rows=285117831 width=453)
                                                 predicate:(cs_sold_date_sk is not null and cs_bill_customer_sk is not null and cs_sold_date_sk BETWEEN DynamicValue(RS_93_date_dim_d_date_sk_min) AND DynamicValue(RS_93_date_dim_d_date_sk_max) and in_bloom_filter(cs_sold_date_sk, DynamicValue(RS_93_date_dim_d_date_sk_bloom_filter)))
                                                 TableScan [TS_83] (rows=287989836 width=453)
                                                   default@catalog_sales,catalog_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["cs_sold_date_sk","cs_bill_customer_sk","cs_ext_discount_amt","cs_ext_sales_price","cs_ext_wholesale_cost","cs_ext_list_price"]
                                                 <-Reducer 33 [BROADCAST_EDGE] vectorized
-                                                  BROADCAST [RS_544]
-                                                    Group By Operator [GBY_543] (rows=1 width=12)
+                                                  BROADCAST [RS_552]
+                                                    Group By Operator [GBY_551] (rows=1 width=12)
                                                       Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)","bloom_filter(VALUE._col2, expectedEntries=1000000)"]
                                                     <-Map 31 [CUSTOM_SIMPLE_EDGE] vectorized
                                                       PARTITION_ONLY_SHUFFLE [RS_500]
@@ -399,17 +399,17 @@ Stage-0
                           FORWARD [RS_132]
                             PartitionCols:_col2
                             Merge Join Operator [MERGEJOIN_470] (rows=20485011 width=556)
-                              Conds:RS_129._col2=RS_542._col0(Inner),Output:["_col1","_col2","_col3","_col5","_col6","_col8","_col9"]
+                              Conds:RS_129._col2=RS_550._col0(Inner),Output:["_col1","_col2","_col3","_col5","_col6","_col8","_col9"]
                             <-Reducer 22 [SIMPLE_EDGE] vectorized
-                              SHUFFLE [RS_542]
+                              SHUFFLE [RS_550]
                                 PartitionCols:_col0
-                                Select Operator [SEL_541] (rows=26666666 width=216)
+                                Select Operator [SEL_549] (rows=26666666 width=216)
                                   Output:["_col0","_col1","_col2"]
-                                  Filter Operator [FIL_540] (rows=26666666 width=212)
+                                  Filter Operator [FIL_548] (rows=26666666 width=212)
                                     predicate:(_col7 > 0)
-                                    Select Operator [SEL_539] (rows=80000000 width=212)
+                                    Select Operator [SEL_547] (rows=80000000 width=212)
                                       Output:["_col0","_col7"]
-                                      Group By Operator [GBY_538] (rows=80000000 width=764)
+                                      Group By Operator [GBY_546] (rows=80000000 width=764)
                                         Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                                       <-Reducer 21 [SIMPLE_EDGE]
                                         SHUFFLE [RS_79]
@@ -417,16 +417,16 @@ Stage-0
                                           Group By Operator [GBY_78] (rows=80000000 width=764)
                                             Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                                             Merge Join Operator [MERGEJOIN_463] (rows=101084444 width=764)
-                                              Conds:RS_74._col1=RS_515._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                              Conds:RS_74._col1=RS_517._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                                             <-Map 38 [SIMPLE_EDGE] vectorized
-                                              SHUFFLE [RS_515]
+                                              SHUFFLE [RS_517]
                                                 PartitionCols:_col0
-                                                 Please refer to the previous Select Operator [SEL_509]
+                                                 Please refer to the previous Select Operator [SEL_511]
                                             <-Reducer 20 [SIMPLE_EDGE]
                                               SHUFFLE [RS_74]
                                                 PartitionCols:_col1
                                                 Merge Join Operator [MERGEJOIN_462] (rows=101084444 width=115)
-                                                  Conds:RS_71._col0=RS_491._col0(Inner),Output:["_col1","_col2"]
+                                                  Conds:RS_545._col0=RS_491._col0(Inner),Output:["_col1","_col2"]
                                                 <-Map 31 [SIMPLE_EDGE] vectorized
                                                   PARTITION_ONLY_SHUFFLE [RS_491]
                                                     PartitionCols:_col0
@@ -435,18 +435,18 @@ Stage-0
                                                       Filter Operator [FIL_476] (rows=652 width=8)
                                                         predicate:((d_year = 2001) and d_date_sk is not null)
                                                          Please refer to the previous TableScan [TS_106]
-                                                <-Map 19 [SIMPLE_EDGE]
-                                                  SHUFFLE [RS_71]
+                                                <-Map 19 [SIMPLE_EDGE] vectorized
+                                                  SHUFFLE [RS_545]
                                                     PartitionCols:_col0
-                                                    Select Operator [SEL_64] (rows=285117831 width=119)
+                                                    Select Operator [SEL_544] (rows=285117831 width=119)
                                                       Output:["_col0","_col1","_col2"]
-                                                      Filter Operator [FIL_244] (rows=285117831 width=453)
+                                                      Filter Operator [FIL_543] (rows=285117831 width=453)
                                                         predicate:(cs_sold_date_sk is not null and cs_bill_customer_sk is not null and cs_sold_date_sk BETWEEN DynamicValue(RS_72_date_dim_d_date_sk_min) AND DynamicValue(RS_72_date_dim_d_date_sk_max) and in_bloom_filter(cs_sold_date_sk, DynamicValue(RS_72_date_dim_d_date_sk_bloom_filter)))
                                                         TableScan [TS_62] (rows=287989836 width=453)
                                                           default@catalog_sales,catalog_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["cs_sold_date_sk","cs_bill_customer_sk","cs_ext_discount_amt","cs_ext_sales_price","cs_ext_wholesale_cost","cs_ext_list_price"]
                                                         <-Reducer 37 [BROADCAST_EDGE] vectorized
-                                                          BROADCAST [RS_536]
-                                                            Group By Operator [GBY_535] (rows=1 width=12)
+                                                          BROADCAST [RS_542]
+                                                            Group By Operator [GBY_541] (rows=1 width=12)
                                                               Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)","bloom_filter(VALUE._col2, expectedEntries=1000000)"]
                                                             <-Map 31 [CUSTOM_SIMPLE_EDGE] vectorized
                                                               PARTITION_ONLY_SHUFFLE [RS_504]
@@ -459,17 +459,17 @@ Stage-0
                               FORWARD [RS_129]
                                 PartitionCols:_col2
                                 Merge Join Operator [MERGEJOIN_469] (rows=20485011 width=440)
-                                  Conds:RS_126._col2=RS_534._col0(Inner),Output:["_col1","_col2","_col3","_col5","_col6"]
+                                  Conds:RS_126._col2=RS_540._col0(Inner),Output:["_col1","_col2","_col3","_col5","_col6"]
                                 <-Reducer 18 [SIMPLE_EDGE] vectorized
-                                  SHUFFLE [RS_534]
+                                  SHUFFLE [RS_540]
                                     PartitionCols:_col0
-                                    Select Operator [SEL_533] (rows=17130654 width=216)
+                                    Select Operator [SEL_539] (rows=17130654 width=216)
                                       Output:["_col0","_col1","_col2"]
-                                      Filter Operator [FIL_532] (rows=17130654 width=212)
+                                      Filter Operator [FIL_538] (rows=17130654 width=212)
                                         predicate:(_col7 > 0)
-                                        Select Operator [SEL_531] (rows=51391963 width=212)
+                                        Select Operator [SEL_537] (rows=51391963 width=212)
                                           Output:["_col0","_col7"]
-                                          Group By Operator [GBY_530] (rows=51391963 width=764)
+                                          Group By Operator [GBY_536] (rows=51391963 width=764)
                                             Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                                           <-Reducer 17 [SIMPLE_EDGE]
                                             SHUFFLE [RS_58]
@@ -477,16 +477,16 @@ Stage-0
                                               Group By Operator [GBY_57] (rows=51391963 width=764)
                                                 Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                                                 Merge Join Operator [MERGEJOIN_461] (rows=51391963 width=764)
-                                                  Conds:RS_53._col1=RS_514._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                                  Conds:RS_53._col1=RS_516._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                                                 <-Map 38 [SIMPLE_EDGE] vectorized
-                                                  SHUFFLE [RS_514]
+                                                  SHUFFLE [RS_516]
                                                     PartitionCols:_col0
-                                                     Please refer to the previous Select Operator [SEL_509]
+                                                     Please refer to the previous Select Operator [SEL_511]
                                                 <-Reducer 16 [SIMPLE_EDGE]
                                                   SHUFFLE [RS_53]
                                                     PartitionCols:_col1
                                                     Merge Join Operator [MERGEJOIN_460] (rows=51391963 width=115)
-                                                      Conds:RS_50._col0=RS_489._col0(Inner),Output:["_col1","_col2"]
+                                                      Conds:RS_535._col0=RS_489._col0(Inner),Output:["_col1","_col2"]
                                                     <-Map 31 [SIMPLE_EDGE] vectorized
                                                       PARTITION_ONLY_SHUFFLE [RS_489]
                                                         PartitionCols:_col0
@@ -495,18 +495,18 @@ Stage-0
                                                           Filter Operator [FIL_475] (rows=652 width=8)
                                                             predicate:((d_year = 2001) and d_date_sk is not null)
                                                              Please refer to the previous TableScan [TS_106]
-                                                    <-Map 15 [SIMPLE_EDGE]
-                                                      SHUFFLE [RS_50]
+                                                    <-Map 15 [SIMPLE_EDGE] vectorized
+                                                      SHUFFLE [RS_535]
                                                         PartitionCols:_col0
-                                                        Select Operator [SEL_43] (rows=143930993 width=119)
+                                                        Select Operator [SEL_534] (rows=143930993 width=119)
                                                           Output:["_col0","_col1","_col2"]
-                                                          Filter Operator [FIL_241] (rows=143930993 width=455)
+                                                          Filter Operator [FIL_533] (rows=143930993 width=455)
                                                             predicate:(ws_bill_customer_sk is not null and ws_sold_date_sk is not null and ws_sold_date_sk BETWEEN DynamicValue(RS_51_date_dim_d_date_sk_min) AND DynamicValue(RS_51_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, DynamicValue(RS_51_date_dim_d_date_sk_bloom_filter)))
                                                             TableScan [TS_41] (rows=144002668 width=455)
                                                               default@web_sales,web_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ws_sold_date_sk","ws_bill_customer_sk","ws_ext_discount_amt","ws_ext_sales_price","ws_ext_wholesale_cost","ws_ext_list_price"]
                                                             <-Reducer 36 [BROADCAST_EDGE] vectorized
-                                                              BROADCAST [RS_528]
-                                                                Group By Operator [GBY_527] (rows=1 width=12)
+                                                              BROADCAST [RS_532]
+                                                                Group By Operator [GBY_531] (rows=1 width=12)
                                                                   Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)","bloom_filter(VALUE._col2, expectedEntries=1000000)"]
                                                                 <-Map 31 [CUSTOM_SIMPLE_EDGE] vectorized
                                                                   PARTITION_ONLY_SHUFFLE [RS_503]
@@ -519,17 +519,17 @@ Stage-0
                                   FORWARD [RS_126]
                                     PartitionCols:_col2
                                     Merge Join Operator [MERGEJOIN_468] (rows=31888273 width=324)
-                                      Conds:RS_518._col0=RS_526._col0(Inner),Output:["_col1","_col2","_col3"]
+                                      Conds:RS_520._col0=RS_530._col0(Inner),Output:["_col1","_col2","_col3"]
                                     <-Reducer 14 [SIMPLE_EDGE] vectorized
-                                      SHUFFLE [RS_526]
+                                      SHUFFLE [RS_530]
                                         PartitionCols:_col0
-                                        Select Operator [SEL_525] (rows=26666666 width=212)
+                                        Select Operator [SEL_529] (rows=26666666 width=212)
                                           Output:["_col0","_col1"]
-                                          Filter Operator [FIL_524] (rows=26666666 width=212)
+                                          Filter Operator [FIL_528] (rows=26666666 width=212)
                                             predicate:(_col7 > 0)
-                                            Select Operator [SEL_523] (rows=80000000 width=212)
+                                            Select Operator [SEL_527] (rows=80000000 width=212)
                                               Output:["_col0","_col7"]
-                                              Group By Operator [GBY_522] (rows=80000000 width=764)
+                                              Group By Operator [GBY_526] (rows=80000000 width=764)
                                                 Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                                               <-Reducer 13 [SIMPLE_EDGE]
                                                 SHUFFLE [RS_37]
@@ -537,16 +537,16 @@ Stage-0
                                                   Group By Operator [GBY_36] (rows=80000000 width=764)
                                                     Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                                                     Merge Join Operator [MERGEJOIN_459] (rows=187573258 width=764)
-                                                      Conds:RS_32._col1=RS_513._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                                      Conds:RS_32._col1=RS_515._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                                                     <-Map 38 [SIMPLE_EDGE] vectorized
-                                                      SHUFFLE [RS_513]
+                                                      SHUFFLE [RS_515]
                                                         PartitionCols:_col0
-                                                         Please refer to the previous Select Operator [SEL_509]
+                                                         Please refer to the previous Select Operator [SEL_511]
                                                     <-Reducer 12 [SIMPLE_EDGE]
                                                       SHUFFLE [RS_32]
                                                         PartitionCols:_col1
                                                         Merge Join Operator [MERGEJOIN_458] (rows=187573258 width=115)
-                                                          Conds:RS_29._col0=RS_487._col0(Inner),Output:["_col1","_col2"]
+                                                          Conds:RS_525._col0=RS_487._col0(Inner),Output:["_col1","_col2"]
                                                         <-Map 31 [SIMPLE_EDGE] vectorized
                                                           PARTITION_ONLY_SHUFFLE [RS_487]
                                                             PartitionCols:_col0
@@ -555,18 +555,18 @@ Stage-0
                                                               Filter Operator [FIL_474] (rows=652 width=8)
                                                                 predicate:((d_year = 2001) and d_date_sk is not null)
                                                                  Please refer to the previous TableScan [TS_106]
-                                                        <-Map 11 [SIMPLE_EDGE]
-                                                          SHUFFLE [RS_29]
+                                                        <-Map 11 [SIMPLE_EDGE] vectorized
+                                                          SHUFFLE [RS_525]
                                                             PartitionCols:_col0
-                                                            Select Operator [SEL_22] (rows=525327388 width=119)
+                                                            Select Operator [SEL_524] (rows=525327388 width=119)
                                                               Output:["_col0","_col1","_col2"]
-                                                              Filter Operator [FIL_238] (rows=525327388 width=435)
+                                                              Filter Operator [FIL_523] (rows=525327388 width=435)
                                                                 predicate:(ss_sold_date_sk is not null and ss_customer_sk is not null and ss_sold_date_sk BETWEEN DynamicValue(RS_30_date_dim_d_date_sk_min) AND DynamicValue(RS_30_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, DynamicValue(RS_30_date_dim_d_date_sk_bloom_filter)))
                                                                 TableScan [TS_20] (rows=575995635 width=435)
                                                                   default@store_sales,store_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ss_sold_date_sk","ss_customer_sk","ss_ext_discount_amt","ss_ext_sales_price","ss_ext_wholesale_cost","ss_ext_list_price"]
                                                                 <-Reducer 35 [BROADCAST_EDGE] vectorized
-                                                                  BROADCAST [RS_520]
-                                                                    Group By Operator [GBY_519] (rows=1 width=12)
+                                                                  BROADCAST [RS_522]
+                                                                    Group By Operator [GBY_521] (rows=1 width=12)
                                                                       Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)","bloom_filter(VALUE._col2, expectedEntries=1000000)"]
                                                                     <-Map 31 [CUSTOM_SIMPLE_EDGE] vectorized
                                                                       PARTITION_ONLY_SHUFFLE [RS_502]
@@ -576,11 +576,11 @@ Stage-0
                                                                             Output:["_col0"]
                                                                              Please refer to the previous Select Operator [SEL_478]
                                     <-Reducer 4 [SIMPLE_EDGE] vectorized
-                                      SHUFFLE [RS_518]
+                                      SHUFFLE [RS_520]
                                         PartitionCols:_col0
-                                        Select Operator [SEL_517] (rows=51391963 width=212)
+                                        Select Operator [SEL_519] (rows=51391963 width=212)
                                           Output:["_col0","_col1"]
-                                          Group By Operator [GBY_516] (rows=51391963 width=764)
+                                          Group By Operator [GBY_518] (rows=51391963 width=764)
                                             Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6
                                           <-Reducer 3 [SIMPLE_EDGE]
                                             SHUFFLE [RS_17]
@@ -588,26 +588,26 @@ Stage-0
                                               Group By Operator [GBY_16] (rows=51391963 width=764)
                                                 Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col2)"],keys:_col5, _col6, _col7, _col8, _col9, _col10, _col11
                                                 Merge Join Operator [MERGEJOIN_457] (rows=51391963 width=764)
-                                                  Conds:RS_12._col1=RS_512._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+                                                  Conds:RS_12._col1=RS_514._col0(Inner),Output:["_col2","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
                                                 <-Map 38 [SIMPLE_EDGE] vectorized
-                                                  SHUFFLE [RS_512]
+                                                  SHUFFLE [RS_514]
                                                     PartitionCols:_col0
-                                                     Please refer to the previous Select Operator [SEL_509]
+                                                     Please refer to the previous Select Operator [SEL_511]
                                                 <-Reducer 2 [SIMPLE_EDGE]
                                                   SHUFFLE [RS_12]
                                                     PartitionCols:_col1
                                                     Merge Join Operator [MERGEJOIN_456] (rows=51391963 width=115)
-                                                      Conds:RS_9._col0=RS_485._col0(Inner),Output:["_col1","_col2"]
+                                                      Conds:RS_509._col0=RS_485._col0(Inner),Output:["_col1","_col2"]
                                                     <-Map 31 [SIMPLE_EDGE] vectorized
                                                       PARTITION_ONLY_SHUFFLE [RS_485]
                                                         PartitionCols:_col0
                                                          Please refer to the previous Select Operator [SEL_477]
-                                                    <-Map 1 [SIMPLE_EDGE]
-                                                      SHUFFLE [RS_9]
+                                                    <-Map 1 [SIMPLE_EDGE] vectorized
+                                                      SHUFFLE [RS_509]
                                                         PartitionCols:_col0
-                                                        Select Operator [SEL_2] (rows=143930993 width=119)
+                                                        Select Operator [SEL_508] (rows=143930993 width=119)
                                                           Output:["_col0","_col1","_col2"]
-                                                          Filter Operator [FIL_235] (rows=143930993 width=455)
+                                                          Filter Operator [FIL_507] (rows=143930993 width=455)
                                                             predicate:(ws_bill_customer_sk is not null and ws_sold_date_sk is not null and ws_sold_date_sk BETWEEN DynamicValue(RS_10_date_dim_d_date_sk_min) AND DynamicValue(RS_10_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, DynamicValue(RS_10_date_dim_d_date_sk_bloom_filter)))
                                                             TableScan [TS_0] (rows=144002668 width=455)
                                                               default@web_sales,web_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ws_sold_date_sk","ws_bill_customer_sk","ws_ext_discount_amt","ws_ext_sales_price","ws_ext_wholesale_cost","ws_ext_list_price"]
diff --git a/ql/src/test/results/clientpositive/vector_decimal_col_scalar_division.q.out b/ql/src/test/results/clientpositive/vector_decimal_col_scalar_division.q.out
new file mode 100644
index 0000000..7ce87e6
--- /dev/null
+++ b/ql/src/test/results/clientpositive/vector_decimal_col_scalar_division.q.out
@@ -0,0 +1,137 @@
+PREHOOK: query: CREATE temporary TABLE `catalog_Sales`(
+  `cs_quantity` int,
+  `cs_wholesale_cost` decimal(7,2),
+  `cs_list_price` decimal(7,2),
+  `cs_sales_price` decimal(7,2),
+  `cs_ext_discount_amt` decimal(7,2),
+  `cs_ext_sales_price` decimal(7,2),
+  `cs_ext_wholesale_cost` decimal(7,2),
+  `cs_ext_list_price` decimal(7,2),
+  `cs_ext_tax` decimal(7,2),
+  `cs_coupon_amt` decimal(7,2),
+  `cs_ext_ship_cost` decimal(7,2),
+  `cs_net_paid` decimal(7,2),
+  `cs_net_paid_inc_tax` decimal(7,2),
+  `cs_net_paid_inc_ship` decimal(7,2),
+  `cs_net_paid_inc_ship_tax` decimal(7,2),
+  `cs_net_profit` decimal(7,2))
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@catalog_Sales
+POSTHOOK: query: CREATE temporary TABLE `catalog_Sales`(
+  `cs_quantity` int,
+  `cs_wholesale_cost` decimal(7,2),
+  `cs_list_price` decimal(7,2),
+  `cs_sales_price` decimal(7,2),
+  `cs_ext_discount_amt` decimal(7,2),
+  `cs_ext_sales_price` decimal(7,2),
+  `cs_ext_wholesale_cost` decimal(7,2),
+  `cs_ext_list_price` decimal(7,2),
+  `cs_ext_tax` decimal(7,2),
+  `cs_coupon_amt` decimal(7,2),
+  `cs_ext_ship_cost` decimal(7,2),
+  `cs_net_paid` decimal(7,2),
+  `cs_net_paid_inc_tax` decimal(7,2),
+  `cs_net_paid_inc_ship` decimal(7,2),
+  `cs_net_paid_inc_ship_tax` decimal(7,2),
+  `cs_net_profit` decimal(7,2))
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@catalog_Sales
+PREHOOK: query: explain vectorization detail select max((((cs_ext_list_price - cs_ext_wholesale_cost) - cs_ext_discount_amt) + cs_ext_sales_price) / 2) from catalog_sales
+PREHOOK: type: QUERY
+PREHOOK: Input: default@catalog_sales
+#### A masked pattern was here ####
+POSTHOOK: query: explain vectorization detail select max((((cs_ext_list_price - cs_ext_wholesale_cost) - cs_ext_discount_amt) + cs_ext_sales_price) / 2) from catalog_sales
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@catalog_sales
+#### A masked pattern was here ####
+PLAN VECTORIZATION:
+  enabled: true
+  enabledConditionsMet: [hive.vectorized.execution.enabled IS true]
+
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: catalog_sales
+            Statistics: Num rows: 1 Data size: 448 Basic stats: COMPLETE Column stats: NONE
+            TableScan Vectorization:
+                native: true
+                vectorizationSchemaColumns: [0:cs_quantity:int, 1:cs_wholesale_cost:decimal(7,2)/DECIMAL_64, 2:cs_list_price:decimal(7,2)/DECIMAL_64, 3:cs_sales_price:decimal(7,2)/DECIMAL_64, 4:cs_ext_discount_amt:decimal(7,2)/DECIMAL_64, 5:cs_ext_sales_price:decimal(7,2)/DECIMAL_64, 6:cs_ext_wholesale_cost:decimal(7,2)/DECIMAL_64, 7:cs_ext_list_price:decimal(7,2)/DECIMAL_64, 8:cs_ext_tax:decimal(7,2)/DECIMAL_64, 9:cs_coupon_amt:decimal(7,2)/DECIMAL_64, 10:cs_ext_ship_cost:decimal(7,2)/D [...]
+            Select Operator
+              expressions: ((((cs_ext_list_price - cs_ext_wholesale_cost) - cs_ext_discount_amt) + cs_ext_sales_price) / 2) (type: decimal(14,6))
+              outputColumnNames: _col0
+              Select Vectorization:
+                  className: VectorSelectOperator
+                  native: true
+                  projectedOutputColumnNums: [20]
+                  selectExpressions: DecimalColDivideDecimalScalar(col 21:decimal(10,2), val 2)(children: ConvertDecimal64ToDecimal(col 19:decimal(10,2)/DECIMAL_64)(children: Decimal64ColAddDecimal64Column(col 18:decimal(9,2)/DECIMAL_64, col 5:decimal(7,2)/DECIMAL_64)(children: Decimal64ColSubtractDecimal64Column(col 17:decimal(8,2)/DECIMAL_64, col 4:decimal(7,2)/DECIMAL_64)(children: Decimal64ColSubtractDecimal64Column(col 7:decimal(7,2)/DECIMAL_64, col 6:decimal(7,2)/DECIMAL_64) -> 17: [...]
+              Statistics: Num rows: 1 Data size: 448 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: max(_col0)
+                Group By Vectorization:
+                    aggregators: VectorUDAFMaxDecimal(col 20:decimal(14,6)) -> decimal(14,6)
+                    className: VectorGroupByOperator
+                    groupByMode: HASH
+                    native: false
+                    vectorProcessingMode: HASH
+                    projectedOutputColumnNums: [0]
+                minReductionHashAggr: 0.99
+                mode: hash
+                outputColumnNames: _col0
+                Statistics: Num rows: 1 Data size: 560 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  sort order: 
+                  Reduce Sink Vectorization:
+                      className: VectorReduceSinkOperator
+                      native: false
+                      nativeConditionsMet: hive.vectorized.execution.reducesink.new.enabled IS true, No PTF TopN IS true, No DISTINCT columns IS true, BinarySortableSerDe for keys IS true, LazyBinarySerDe for values IS true
+                      nativeConditionsNotMet: hive.execution.engine mr IN [tez, spark] IS false
+                  Statistics: Num rows: 1 Data size: 560 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: decimal(14,6))
+      Execution mode: vectorized
+      Map Vectorization:
+          enabled: true
+          enabledConditionsMet: hive.vectorized.use.vector.serde.deserialize IS true
+          inputFormatFeatureSupport: [DECIMAL_64]
+          featureSupportInUse: [DECIMAL_64]
+          inputFileFormats: org.apache.hadoop.mapred.TextInputFormat
+          allNative: false
+          usesVectorUDFAdaptor: false
+          vectorized: true
+          rowBatchContext:
+              dataColumnCount: 16
+              includeColumns: [4, 5, 6, 7]
+              dataColumns: cs_quantity:int, cs_wholesale_cost:decimal(7,2)/DECIMAL_64, cs_list_price:decimal(7,2)/DECIMAL_64, cs_sales_price:decimal(7,2)/DECIMAL_64, cs_ext_discount_amt:decimal(7,2)/DECIMAL_64, cs_ext_sales_price:decimal(7,2)/DECIMAL_64, cs_ext_wholesale_cost:decimal(7,2)/DECIMAL_64, cs_ext_list_price:decimal(7,2)/DECIMAL_64, cs_ext_tax:decimal(7,2)/DECIMAL_64, cs_coupon_amt:decimal(7,2)/DECIMAL_64, cs_ext_ship_cost:decimal(7,2)/DECIMAL_64, cs_net_paid:decimal(7,2)/DECIM [...]
+              partitionColumnCount: 0
+              scratchColumnTypeNames: [decimal(8,2)/DECIMAL_64, decimal(9,2)/DECIMAL_64, decimal(10,2)/DECIMAL_64, decimal(14,6), decimal(10,2)]
+      Reduce Vectorization:
+          enabled: false
+          enableConditionsMet: hive.vectorized.execution.reduce.enabled IS true
+          enableConditionsNotMet: hive.execution.engine mr IN [tez, spark] IS false
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: max(VALUE._col0)
+          mode: mergepartial
+          outputColumnNames: _col0
+          Statistics: Num rows: 1 Data size: 560 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 1 Data size: 560 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+