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

mahesh 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 003eaeb  HIVE-25864 : Hive query optimisation creates wrong plan for 
predicate pushdown with windowing function (Mahesh Kumar Behera, reviewed by 
Zoltan Haindrich)
003eaeb is described below

commit 003eaeb294203c45b0626978765d3ef4265604af
Author: mahesh kumar behera <[email protected]>
AuthorDate: Thu Jan 20 17:23:33 2022 +0530

    HIVE-25864 : Hive query optimisation creates wrong plan for predicate 
pushdown with windowing function (Mahesh Kumar Behera, reviewed by Zoltan 
Haindrich)
---
 .../rules/HiveFilterProjectTransposeRule.java      |   4 +-
 .../test/queries/clientpositive/ppd_windowing3.q   |  73 ++++
 .../clientpositive/llap/ppd_windowing3.q.out       | 454 +++++++++++++++++++++
 3 files changed, 529 insertions(+), 2 deletions(-)

diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterProjectTransposeRule.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterProjectTransposeRule.java
index 02b4a53..47aae3f 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterProjectTransposeRule.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterProjectTransposeRule.java
@@ -169,7 +169,7 @@ public class HiveFilterProjectTransposeRule extends 
FilterProjectTransposeRule {
             RexNode newCondition = RelOptUtil.pushPastProject(ce, origproject);
             if 
(HiveCalciteUtil.isDeterministicFuncWithSingleInputRef(newCondition,
                 commonPartitionKeys)) {
-              newPartKeyFilConds.add(newCondition);
+              newPartKeyFilConds.add(ce);
             } else {
               unpushedFilConds.add(ce);
             }
@@ -200,7 +200,7 @@ public class HiveFilterProjectTransposeRule extends 
FilterProjectTransposeRule {
   private static RelNode getNewProject(RexNode filterCondToPushBelowProj, 
RexNode unPushedFilCondAboveProj, Project oldProj,
       RelDataTypeFactory typeFactory, RelBuilder relBuilder) {
 
-    // convert the filter to one that references the child of the project
+    // convert the filter to one that references the child of the project.
     RexNode newPushedCondition = 
RelOptUtil.pushPastProject(filterCondToPushBelowProj, oldProj);
 
     // Remove cast of BOOLEAN NOT NULL to BOOLEAN or vice versa. Filter accepts
diff --git a/ql/src/test/queries/clientpositive/ppd_windowing3.q 
b/ql/src/test/queries/clientpositive/ppd_windowing3.q
new file mode 100644
index 0000000..aa94a38
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/ppd_windowing3.q
@@ -0,0 +1,73 @@
+
+CREATE TABLE package_order (
+    order_num string,
+    vin_id string,
+    package_start_dt string);
+
+CREATE TABLE package_order_gsp (order_num string,
+                    cust_acct_sk decimal(38,0),
+                     to_vin string,
+                      cancellation_dt string,
+                       confirmation_num string);
+
+insert into package_order values ('1', 'DEADBEAF', '2022-01-22');
+insert into package_order values ('1', 'DEADBEAF', '2022-01-22');
+insert into package_order values ('1', 'DEADBEAF1', '2022-01-23');
+insert into package_order values ('1', 'DEADBEAF1', '2022-01-23');
+insert into package_order_gsp values ('1', 1.1, '1', null, '1');
+
+set hive.cbo.enable = false;
+set hive.explain.user=false;
+
+explain select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF';
+
+select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF';
+
+set hive.cbo.enable = true;
+
+explain select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF';
+
+select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF';
+
+select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id != 'DEADBEAF';
+
diff --git a/ql/src/test/results/clientpositive/llap/ppd_windowing3.q.out 
b/ql/src/test/results/clientpositive/llap/ppd_windowing3.q.out
new file mode 100644
index 0000000..2bc6af4
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/ppd_windowing3.q.out
@@ -0,0 +1,454 @@
+PREHOOK: query: CREATE TABLE package_order (
+    order_num string,
+    vin_id string,
+    package_start_dt string)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@package_order
+POSTHOOK: query: CREATE TABLE package_order (
+    order_num string,
+    vin_id string,
+    package_start_dt string)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@package_order
+PREHOOK: query: CREATE TABLE package_order_gsp (order_num string,
+                    cust_acct_sk decimal(38,0),
+                     to_vin string,
+                      cancellation_dt string,
+                       confirmation_num string)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@package_order_gsp
+POSTHOOK: query: CREATE TABLE package_order_gsp (order_num string,
+                    cust_acct_sk decimal(38,0),
+                     to_vin string,
+                      cancellation_dt string,
+                       confirmation_num string)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@package_order_gsp
+PREHOOK: query: insert into package_order values ('1', 'DEADBEAF', 
'2022-01-22')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@package_order
+POSTHOOK: query: insert into package_order values ('1', 'DEADBEAF', 
'2022-01-22')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@package_order
+POSTHOOK: Lineage: package_order.order_num SCRIPT []
+POSTHOOK: Lineage: package_order.package_start_dt SCRIPT []
+POSTHOOK: Lineage: package_order.vin_id SCRIPT []
+PREHOOK: query: insert into package_order values ('1', 'DEADBEAF', 
'2022-01-22')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@package_order
+POSTHOOK: query: insert into package_order values ('1', 'DEADBEAF', 
'2022-01-22')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@package_order
+POSTHOOK: Lineage: package_order.order_num SCRIPT []
+POSTHOOK: Lineage: package_order.package_start_dt SCRIPT []
+POSTHOOK: Lineage: package_order.vin_id SCRIPT []
+PREHOOK: query: insert into package_order values ('1', 'DEADBEAF1', 
'2022-01-23')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@package_order
+POSTHOOK: query: insert into package_order values ('1', 'DEADBEAF1', 
'2022-01-23')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@package_order
+POSTHOOK: Lineage: package_order.order_num SCRIPT []
+POSTHOOK: Lineage: package_order.package_start_dt SCRIPT []
+POSTHOOK: Lineage: package_order.vin_id SCRIPT []
+PREHOOK: query: insert into package_order values ('1', 'DEADBEAF1', 
'2022-01-23')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@package_order
+POSTHOOK: query: insert into package_order values ('1', 'DEADBEAF1', 
'2022-01-23')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@package_order
+POSTHOOK: Lineage: package_order.order_num SCRIPT []
+POSTHOOK: Lineage: package_order.package_start_dt SCRIPT []
+POSTHOOK: Lineage: package_order.vin_id SCRIPT []
+PREHOOK: query: insert into package_order_gsp values ('1', 1.1, '1', null, '1')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@package_order_gsp
+POSTHOOK: query: insert into package_order_gsp values ('1', 1.1, '1', null, 
'1')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@package_order_gsp
+POSTHOOK: Lineage: package_order_gsp.cancellation_dt EXPRESSION []
+POSTHOOK: Lineage: package_order_gsp.confirmation_num SCRIPT []
+POSTHOOK: Lineage: package_order_gsp.cust_acct_sk SCRIPT []
+POSTHOOK: Lineage: package_order_gsp.order_num SCRIPT []
+POSTHOOK: Lineage: package_order_gsp.to_vin SCRIPT []
+PREHOOK: query: explain select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@package_order
+PREHOOK: Input: default@package_order_gsp
+#### A masked pattern was here ####
+POSTHOOK: query: explain select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@package_order
+POSTHOOK: Input: default@package_order_gsp
+#### A masked pattern was here ####
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+#### A masked pattern was here ####
+      Edges:
+        Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: su
+                  filterExpr: (confirmation_num is not null and 
cancellation_dt is null) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 169 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  Filter Operator
+                    predicate: (confirmation_num is not null and 
cancellation_dt is null) (type: boolean)
+                    Statistics: Num rows: 1 Data size: 169 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Reduce Output Operator
+                      key expressions: confirmation_num (type: string)
+                      null sort order: z
+                      sort order: +
+                      Map-reduce partition columns: confirmation_num (type: 
string)
+                      Statistics: Num rows: 1 Data size: 169 Basic stats: 
COMPLETE Column stats: COMPLETE
+            Execution mode: vectorized, llap
+            LLAP IO: all inputs
+        Map 4 
+            Map Operator Tree:
+                TableScan
+                  alias: t1
+                  filterExpr: order_num is not null (type: boolean)
+                  Statistics: Num rows: 4 Data size: 1088 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: order_num is not null (type: boolean)
+                    Statistics: Num rows: 4 Data size: 1088 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Reduce Output Operator
+                      key expressions: order_num (type: string)
+                      null sort order: z
+                      sort order: +
+                      Map-reduce partition columns: order_num (type: string)
+                      Statistics: Num rows: 4 Data size: 1088 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      value expressions: vin_id (type: string), 
package_start_dt (type: string)
+            Execution mode: vectorized, llap
+            LLAP IO: all inputs
+        Reducer 2 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Merge Join Operator
+                condition map:
+                     Inner Join 0 to 1
+                keys:
+                  0 confirmation_num (type: string)
+                  1 order_num (type: string)
+                outputColumnNames: _col10, _col11
+                Statistics: Num rows: 4 Data size: 748 Basic stats: COMPLETE 
Column stats: COMPLETE
+                Reduce Output Operator
+                  key expressions: _col10 (type: string), _col11 (type: string)
+                  null sort order: aa
+                  sort order: +-
+                  Map-reduce partition columns: _col10 (type: string)
+                  Statistics: Num rows: 4 Data size: 748 Basic stats: COMPLETE 
Column stats: COMPLETE
+        Reducer 3 
+            Execution mode: vectorized, llap
+            Reduce Operator Tree:
+              Select Operator
+                expressions: KEY.reducesinkkey0 (type: string), 
KEY.reducesinkkey1 (type: string)
+                outputColumnNames: _col10, _col11
+                Statistics: Num rows: 4 Data size: 748 Basic stats: COMPLETE 
Column stats: COMPLETE
+                PTF Operator
+                  Function definitions:
+                      Input definition
+                        input alias: ptf_0
+                        output shape: _col10: string, _col11: string
+                        type: WINDOWING
+                      Windowing table definition
+                        input alias: ptf_1
+                        name: windowingtablefunction
+                        order by: _col11 DESC NULLS FIRST
+                        partition by: _col10
+                        raw input shape:
+                        window functions:
+                            window function definition
+                              alias: row_number_window_0
+                              name: row_number
+                              window function: GenericUDAFRowNumberEvaluator
+                              window frame: ROWS PRECEDING(MAX)~FOLLOWING(MAX)
+                              isPivotResult: true
+                  Statistics: Num rows: 4 Data size: 748 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  Filter Operator
+                    predicate: (_col10 = 'DEADBEAF') (type: boolean)
+                    Statistics: Num rows: 2 Data size: 374 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: 'DEADBEAF' (type: string), 
row_number_window_0 (type: int)
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 2 Data size: 374 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      File Output Operator
+                        compressed: false
+                        Statistics: Num rows: 2 Data size: 374 Basic stats: 
COMPLETE Column stats: COMPLETE
+                        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
+
+PREHOOK: query: select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@package_order
+PREHOOK: Input: default@package_order_gsp
+#### A masked pattern was here ####
+POSTHOOK: query: select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@package_order
+POSTHOOK: Input: default@package_order_gsp
+#### A masked pattern was here ####
+DEADBEAF       1
+DEADBEAF       2
+PREHOOK: query: explain select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@package_order
+PREHOOK: Input: default@package_order_gsp
+#### A masked pattern was here ####
+POSTHOOK: query: explain select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@package_order
+POSTHOOK: Input: default@package_order_gsp
+#### A masked pattern was here ####
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+#### A masked pattern was here ####
+      Edges:
+        Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: su
+                  filterExpr: (cancellation_dt is null and confirmation_num is 
not null) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 169 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  Filter Operator
+                    predicate: (cancellation_dt is null and confirmation_num 
is not null) (type: boolean)
+                    Statistics: Num rows: 1 Data size: 169 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: confirmation_num (type: string)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 1 Data size: 85 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: string)
+                        null sort order: z
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: string)
+                        Statistics: Num rows: 1 Data size: 85 Basic stats: 
COMPLETE Column stats: COMPLETE
+            Execution mode: vectorized, llap
+            LLAP IO: all inputs
+        Map 4 
+            Map Operator Tree:
+                TableScan
+                  alias: t1
+                  filterExpr: ((vin_id = 'DEADBEAF') and order_num is not 
null) (type: boolean)
+                  Statistics: Num rows: 4 Data size: 1088 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: ((vin_id = 'DEADBEAF') and order_num is not 
null) (type: boolean)
+                    Statistics: Num rows: 2 Data size: 544 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: order_num (type: string), package_start_dt 
(type: string)
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 2 Data size: 358 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: string)
+                        null sort order: z
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: string)
+                        Statistics: Num rows: 2 Data size: 358 Basic stats: 
COMPLETE Column stats: COMPLETE
+                        value expressions: _col1 (type: string)
+            Execution mode: vectorized, llap
+            LLAP IO: all inputs
+        Reducer 2 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Merge Join Operator
+                condition map:
+                     Inner Join 0 to 1
+                keys:
+                  0 _col0 (type: string)
+                  1 _col0 (type: string)
+                outputColumnNames: _col2
+                Statistics: Num rows: 2 Data size: 188 Basic stats: COMPLETE 
Column stats: COMPLETE
+                Reduce Output Operator
+                  key expressions: 'DEADBEAF' (type: string), _col2 (type: 
string)
+                  null sort order: aa
+                  sort order: +-
+                  Map-reduce partition columns: 'DEADBEAF' (type: string)
+                  Statistics: Num rows: 2 Data size: 188 Basic stats: COMPLETE 
Column stats: COMPLETE
+        Reducer 3 
+            Execution mode: vectorized, llap
+            Reduce Operator Tree:
+              Select Operator
+                expressions: KEY.reducesinkkey1 (type: string)
+                outputColumnNames: _col2
+                Statistics: Num rows: 2 Data size: 188 Basic stats: COMPLETE 
Column stats: COMPLETE
+                PTF Operator
+                  Function definitions:
+                      Input definition
+                        input alias: ptf_0
+                        output shape: _col2: string
+                        type: WINDOWING
+                      Windowing table definition
+                        input alias: ptf_1
+                        name: windowingtablefunction
+                        order by: _col2 DESC NULLS FIRST
+                        partition by: 'DEADBEAF'
+                        raw input shape:
+                        window functions:
+                            window function definition
+                              alias: row_number_window_0
+                              name: row_number
+                              window function: GenericUDAFRowNumberEvaluator
+                              window frame: ROWS PRECEDING(MAX)~FOLLOWING(MAX)
+                              isPivotResult: true
+                  Statistics: Num rows: 2 Data size: 188 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  Select Operator
+                    expressions: 'DEADBEAF' (type: string), 
row_number_window_0 (type: int)
+                    outputColumnNames: _col0, _col1
+                    Statistics: Num rows: 2 Data size: 192 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    File Output Operator
+                      compressed: false
+                      Statistics: Num rows: 2 Data size: 192 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      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
+
+PREHOOK: query: select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@package_order
+PREHOOK: Input: default@package_order_gsp
+#### A masked pattern was here ####
+POSTHOOK: query: select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id='DEADBEAF'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@package_order
+POSTHOOK: Input: default@package_order_gsp
+#### A masked pattern was here ####
+DEADBEAF       1
+DEADBEAF       2
+PREHOOK: query: select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id != 'DEADBEAF'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@package_order
+PREHOOK: Input: default@package_order_gsp
+#### A masked pattern was here ####
+POSTHOOK: query: select *
+from (
+select t1.vin_id, row_number()over(partition by t1.vin_id order by 
package_start_dt desc) rn
+from package_order_gsp su
+inner join package_order t1
+on su.confirmation_num=t1.order_num
+where su.cancellation_dt is null
+) tt
+where tt.vin_id != 'DEADBEAF'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@package_order
+POSTHOOK: Input: default@package_order_gsp
+#### A masked pattern was here ####
+DEADBEAF1      1
+DEADBEAF1      2

Reply via email to