Re: Review Request 59808: Enhance HiveFilterSetOpTransposeRule to remove union branches

2017-06-19 Thread pengcheng xiong

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/59808/
---

(Updated June 19, 2017, 6:11 p.m.)


Review request for hive and Ashutosh Chauhan.


Repository: hive-git


Description
---

HIVE-16797


Diffs (updated)
-

  itests/src/test/resources/testconfiguration.properties 1f6939bc91 
  
ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
 3ee29e0482 
  
ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionMergeRule.java
 PRE-CREATION 
  ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java 348331e052 
  ql/src/test/queries/clientpositive/filter_union.q PRE-CREATION 
  ql/src/test/queries/clientpositive/perf/query11.q PRE-CREATION 
  ql/src/test/results/clientpositive/filter_aggr.q.out db7dcaed3f 
  ql/src/test/results/clientpositive/filter_union.q.out PRE-CREATION 
  ql/src/test/results/clientpositive/llap/explainuser_1.q.out 8b04bc9261 
  ql/src/test/results/clientpositive/llap/explainuser_2.q.out e3f70b097f 
  ql/src/test/results/clientpositive/llap/filter_union.q.out PRE-CREATION 
  ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out 5382c42412 
  ql/src/test/results/clientpositive/llap/tez_union_multiinsert.q.out 
14e8e4389f 
  ql/src/test/results/clientpositive/perf/query11.q.out PRE-CREATION 
  ql/src/test/results/clientpositive/perf/query14.q.out 048a17f92f 
  ql/src/test/results/clientpositive/perf/query23.q.out 1fd8cb4f25 
  ql/src/test/results/clientpositive/perf/query33.q.out c1a5fa28ed 
  ql/src/test/results/clientpositive/perf/query4.q.out 1b2048649a 
  ql/src/test/results/clientpositive/perf/query5.q.out a3f2d58fec 
  ql/src/test/results/clientpositive/perf/query56.q.out 4ec7201fa7 
  ql/src/test/results/clientpositive/perf/query60.q.out 12d8cdd9b4 
  ql/src/test/results/clientpositive/perf/query71.q.out 44658081b5 
  ql/src/test/results/clientpositive/perf/query74.q.out bb4a71e6ce 
  ql/src/test/results/clientpositive/perf/query76.q.out dcd5004166 
  ql/src/test/results/clientpositive/perf/query77.q.out d46ba6b13c 
  ql/src/test/results/clientpositive/perf/query80.q.out 3cf41f3fed 
  ql/src/test/results/clientpositive/spark/union30.q.out 12eda1d3b6 
  ql/src/test/results/clientpositive/tez/explainanalyze_2.q.out f6844c4a38 
  ql/src/test/results/clientpositive/union24.q.out d6b1a79b20 
  ql/src/test/results/clientpositive/union30.q.out 26a27c8e15 
  ql/src/test/results/clientpositive/union34.q.out 9d593315af 
  ql/src/test/results/clientpositive/unionall_unbalancedppd.q.out b3e128a3d6 


Diff: https://reviews.apache.org/r/59808/diff/3/

Changes: https://reviews.apache.org/r/59808/diff/2-3/


Testing
---


Thanks,

pengcheng xiong



Re: Review Request 59808: Enhance HiveFilterSetOpTransposeRule to remove union branches

2017-06-19 Thread pengcheng xiong


> On June 18, 2017, 8:30 p.m., Ashutosh Chauhan wrote:
> > ql/src/test/results/clientpositive/filter_union.q.out
> > Lines 39-43 (patched)
> > 
> >
> > Metadataonly optimizer should have kicked in and turned this to null 
> > scan. Seems like it didn't. Can you confirm with explain extended?

Yes, it is kicked in. I have updated the q file to show explain extended. As 
you will see, for 2 branches out of 4 branches, nullscan is kicking in.


- pengcheng


---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/59808/#review178162
---


On June 10, 2017, 9:57 p.m., pengcheng xiong wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/59808/
> ---
> 
> (Updated June 10, 2017, 9:57 p.m.)
> 
> 
> Review request for hive and Ashutosh Chauhan.
> 
> 
> Repository: hive-git
> 
> 
> Description
> ---
> 
> HIVE-16797
> 
> 
> Diffs
> -
> 
>   
> ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
>  3ee29e0482 
>   
> ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionMergeRule.java
>  PRE-CREATION 
>   ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java 348331e052 
>   ql/src/test/queries/clientpositive/filter_union.q PRE-CREATION 
>   ql/src/test/queries/clientpositive/perf/query11.q PRE-CREATION 
>   ql/src/test/results/clientpositive/filter_aggr.q.out db7dcaed3f 
>   ql/src/test/results/clientpositive/filter_union.q.out PRE-CREATION 
>   ql/src/test/results/clientpositive/llap/explainuser_1.q.out 8b04bc9261 
>   ql/src/test/results/clientpositive/llap/explainuser_2.q.out e3f70b097f 
>   ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out 5382c42412 
>   ql/src/test/results/clientpositive/llap/tez_union_multiinsert.q.out 
> 14e8e4389f 
>   ql/src/test/results/clientpositive/perf/query11.q.out PRE-CREATION 
>   ql/src/test/results/clientpositive/perf/query14.q.out 048a17f92f 
>   ql/src/test/results/clientpositive/perf/query23.q.out 1fd8cb4f25 
>   ql/src/test/results/clientpositive/perf/query33.q.out c1a5fa28ed 
>   ql/src/test/results/clientpositive/perf/query4.q.out 1b2048649a 
>   ql/src/test/results/clientpositive/perf/query5.q.out a3f2d58fec 
>   ql/src/test/results/clientpositive/perf/query56.q.out 4ec7201fa7 
>   ql/src/test/results/clientpositive/perf/query60.q.out 12d8cdd9b4 
>   ql/src/test/results/clientpositive/perf/query71.q.out 44658081b5 
>   ql/src/test/results/clientpositive/perf/query74.q.out bb4a71e6ce 
>   ql/src/test/results/clientpositive/perf/query76.q.out dcd5004166 
>   ql/src/test/results/clientpositive/perf/query77.q.out d46ba6b13c 
>   ql/src/test/results/clientpositive/perf/query80.q.out 3cf41f3fed 
>   ql/src/test/results/clientpositive/spark/union30.q.out 12eda1d3b6 
>   ql/src/test/results/clientpositive/tez/explainanalyze_2.q.out f6844c4a38 
>   ql/src/test/results/clientpositive/union24.q.out d6b1a79b20 
>   ql/src/test/results/clientpositive/union30.q.out 26a27c8e15 
>   ql/src/test/results/clientpositive/union34.q.out 9d593315af 
>   ql/src/test/results/clientpositive/unionall_unbalancedppd.q.out b3e128a3d6 
> 
> 
> Diff: https://reviews.apache.org/r/59808/diff/2/
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> pengcheng xiong
> 
>



Re: Review Request 59808: Enhance HiveFilterSetOpTransposeRule to remove union branches

2017-06-18 Thread Ashutosh Chauhan

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/59808/#review178162
---




ql/src/test/results/clientpositive/filter_union.q.out
Lines 39-43 (patched)


Metadataonly optimizer should have kicked in and turned this to null scan. 
Seems like it didn't. Can you confirm with explain extended?


- Ashutosh Chauhan


On June 10, 2017, 9:57 p.m., pengcheng xiong wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/59808/
> ---
> 
> (Updated June 10, 2017, 9:57 p.m.)
> 
> 
> Review request for hive and Ashutosh Chauhan.
> 
> 
> Repository: hive-git
> 
> 
> Description
> ---
> 
> HIVE-16797
> 
> 
> Diffs
> -
> 
>   
> ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
>  3ee29e0482 
>   
> ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionMergeRule.java
>  PRE-CREATION 
>   ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java 348331e052 
>   ql/src/test/queries/clientpositive/filter_union.q PRE-CREATION 
>   ql/src/test/queries/clientpositive/perf/query11.q PRE-CREATION 
>   ql/src/test/results/clientpositive/filter_aggr.q.out db7dcaed3f 
>   ql/src/test/results/clientpositive/filter_union.q.out PRE-CREATION 
>   ql/src/test/results/clientpositive/llap/explainuser_1.q.out 8b04bc9261 
>   ql/src/test/results/clientpositive/llap/explainuser_2.q.out e3f70b097f 
>   ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out 5382c42412 
>   ql/src/test/results/clientpositive/llap/tez_union_multiinsert.q.out 
> 14e8e4389f 
>   ql/src/test/results/clientpositive/perf/query11.q.out PRE-CREATION 
>   ql/src/test/results/clientpositive/perf/query14.q.out 048a17f92f 
>   ql/src/test/results/clientpositive/perf/query23.q.out 1fd8cb4f25 
>   ql/src/test/results/clientpositive/perf/query33.q.out c1a5fa28ed 
>   ql/src/test/results/clientpositive/perf/query4.q.out 1b2048649a 
>   ql/src/test/results/clientpositive/perf/query5.q.out a3f2d58fec 
>   ql/src/test/results/clientpositive/perf/query56.q.out 4ec7201fa7 
>   ql/src/test/results/clientpositive/perf/query60.q.out 12d8cdd9b4 
>   ql/src/test/results/clientpositive/perf/query71.q.out 44658081b5 
>   ql/src/test/results/clientpositive/perf/query74.q.out bb4a71e6ce 
>   ql/src/test/results/clientpositive/perf/query76.q.out dcd5004166 
>   ql/src/test/results/clientpositive/perf/query77.q.out d46ba6b13c 
>   ql/src/test/results/clientpositive/perf/query80.q.out 3cf41f3fed 
>   ql/src/test/results/clientpositive/spark/union30.q.out 12eda1d3b6 
>   ql/src/test/results/clientpositive/tez/explainanalyze_2.q.out f6844c4a38 
>   ql/src/test/results/clientpositive/union24.q.out d6b1a79b20 
>   ql/src/test/results/clientpositive/union30.q.out 26a27c8e15 
>   ql/src/test/results/clientpositive/union34.q.out 9d593315af 
>   ql/src/test/results/clientpositive/unionall_unbalancedppd.q.out b3e128a3d6 
> 
> 
> Diff: https://reviews.apache.org/r/59808/diff/2/
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> pengcheng xiong
> 
>



Re: Review Request 59808: Enhance HiveFilterSetOpTransposeRule to remove union branches

2017-06-18 Thread pengcheng xiong


> On June 12, 2017, 10:41 p.m., Ashutosh Chauhan wrote:
> > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
> > Lines 102 (patched)
> > 
> >
> > It might be better to call simplify(RexNode) so as not to miss 
> > simplificaiton on operands other than And.

IMHO, the pulled constant and the condition from the filter are composed as 
"AND" relationship and there is no other options.


> On June 12, 2017, 10:41 p.m., Ashutosh Chauhan wrote:
> > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionMergeRule.java
> > Lines 42 (patched)
> > 
> >
> > Should it extend UnionMergeRule instead and pass on HiveRelBuilder? If 
> > UnionMergeRule doesnt accept RelBuilder, please create a calcite jira.

HiveRelBuilder is not enough. Calcite UnionMergeRule has a bug. It will fail on 
union30.q. I will file a Calcite bug for it.


- pengcheng


---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/59808/#review177678
---


On June 10, 2017, 9:57 p.m., pengcheng xiong wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/59808/
> ---
> 
> (Updated June 10, 2017, 9:57 p.m.)
> 
> 
> Review request for hive and Ashutosh Chauhan.
> 
> 
> Repository: hive-git
> 
> 
> Description
> ---
> 
> HIVE-16797
> 
> 
> Diffs
> -
> 
>   
> ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
>  3ee29e0482 
>   
> ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionMergeRule.java
>  PRE-CREATION 
>   ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java 348331e052 
>   ql/src/test/queries/clientpositive/filter_union.q PRE-CREATION 
>   ql/src/test/queries/clientpositive/perf/query11.q PRE-CREATION 
>   ql/src/test/results/clientpositive/filter_aggr.q.out db7dcaed3f 
>   ql/src/test/results/clientpositive/filter_union.q.out PRE-CREATION 
>   ql/src/test/results/clientpositive/llap/explainuser_1.q.out 8b04bc9261 
>   ql/src/test/results/clientpositive/llap/explainuser_2.q.out e3f70b097f 
>   ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out 5382c42412 
>   ql/src/test/results/clientpositive/llap/tez_union_multiinsert.q.out 
> 14e8e4389f 
>   ql/src/test/results/clientpositive/perf/query11.q.out PRE-CREATION 
>   ql/src/test/results/clientpositive/perf/query14.q.out 048a17f92f 
>   ql/src/test/results/clientpositive/perf/query23.q.out 1fd8cb4f25 
>   ql/src/test/results/clientpositive/perf/query33.q.out c1a5fa28ed 
>   ql/src/test/results/clientpositive/perf/query4.q.out 1b2048649a 
>   ql/src/test/results/clientpositive/perf/query5.q.out a3f2d58fec 
>   ql/src/test/results/clientpositive/perf/query56.q.out 4ec7201fa7 
>   ql/src/test/results/clientpositive/perf/query60.q.out 12d8cdd9b4 
>   ql/src/test/results/clientpositive/perf/query71.q.out 44658081b5 
>   ql/src/test/results/clientpositive/perf/query74.q.out bb4a71e6ce 
>   ql/src/test/results/clientpositive/perf/query76.q.out dcd5004166 
>   ql/src/test/results/clientpositive/perf/query77.q.out d46ba6b13c 
>   ql/src/test/results/clientpositive/perf/query80.q.out 3cf41f3fed 
>   ql/src/test/results/clientpositive/spark/union30.q.out 12eda1d3b6 
>   ql/src/test/results/clientpositive/tez/explainanalyze_2.q.out f6844c4a38 
>   ql/src/test/results/clientpositive/union24.q.out d6b1a79b20 
>   ql/src/test/results/clientpositive/union30.q.out 26a27c8e15 
>   ql/src/test/results/clientpositive/union34.q.out 9d593315af 
>   ql/src/test/results/clientpositive/unionall_unbalancedppd.q.out b3e128a3d6 
> 
> 
> Diff: https://reviews.apache.org/r/59808/diff/2/
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> pengcheng xiong
> 
>



Re: Review Request 59808: Enhance HiveFilterSetOpTransposeRule to remove union branches

2017-06-12 Thread Ashutosh Chauhan

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/59808/#review177678
---




ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
Line 28 (original), 45 (patched)


Comment:
This rule rewrites Fil
|
  Union
  /   \
 Op1   Op2
 
 to
  Union
/\
FIL
| |
  Op1  Op2
  
 
 It additionally can remove branch(es) of filter if its able to determine 
that they are going to generate empty result set.



ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
Lines 73 (patched)


Good to add reason for why its overridden?
which is to do branch elimination



ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
Lines 102 (patched)


It might be better to call simplify(RexNode) so as not to miss 
simplificaiton on operands other than And.



ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
Lines 124 (patched)


Comment: We assume alwaysFalse filter will get pushed down to TS so this 
branch so it won't read any data.



ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionMergeRule.java
Lines 42 (patched)


Should it extend UnionMergeRule instead and pass on HiveRelBuilder? If 
UnionMergeRule doesnt accept RelBuilder, please create a calcite jira.



ql/src/test/queries/clientpositive/filter_union.q
Lines 1 (patched)


Instead of CliDriver, can you add this to LlapCliDriver?



ql/src/test/queries/clientpositive/filter_union.q
Lines 2 (patched)


Also, add hive.optimize.metadataonly=true; That should quick in some of 
these queries.



ql/src/test/results/clientpositive/perf/query4.q.out
Lines 240-275 (original)


Pretty cool !


- Ashutosh Chauhan


On June 10, 2017, 9:57 p.m., pengcheng xiong wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/59808/
> ---
> 
> (Updated June 10, 2017, 9:57 p.m.)
> 
> 
> Review request for hive and Ashutosh Chauhan.
> 
> 
> Repository: hive-git
> 
> 
> Description
> ---
> 
> HIVE-16797
> 
> 
> Diffs
> -
> 
>   
> ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
>  3ee29e0482 
>   
> ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionMergeRule.java
>  PRE-CREATION 
>   ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java 348331e052 
>   ql/src/test/queries/clientpositive/filter_union.q PRE-CREATION 
>   ql/src/test/queries/clientpositive/perf/query11.q PRE-CREATION 
>   ql/src/test/results/clientpositive/filter_aggr.q.out db7dcaed3f 
>   ql/src/test/results/clientpositive/filter_union.q.out PRE-CREATION 
>   ql/src/test/results/clientpositive/llap/explainuser_1.q.out 8b04bc9261 
>   ql/src/test/results/clientpositive/llap/explainuser_2.q.out e3f70b097f 
>   ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out 5382c42412 
>   ql/src/test/results/clientpositive/llap/tez_union_multiinsert.q.out 
> 14e8e4389f 
>   ql/src/test/results/clientpositive/perf/query11.q.out PRE-CREATION 
>   ql/src/test/results/clientpositive/perf/query14.q.out 048a17f92f 
>   ql/src/test/results/clientpositive/perf/query23.q.out 1fd8cb4f25 
>   ql/src/test/results/clientpositive/perf/query33.q.out c1a5fa28ed 
>   ql/src/test/results/clientpositive/perf/query4.q.out 1b2048649a 
>   ql/src/test/results/clientpositive/perf/query5.q.out a3f2d58fec 
>   ql/src/test/results/clientpositive/perf/query56.q.out 4ec7201fa7 
>   ql/src/test/results/clientpositive/perf/query60.q.out 12d8cdd9b4 
>   ql/src/test/results/clientpositive/perf/query71.q.out 44658081b5 
>   ql/src/test/results/clientpositive/perf/query74.q.out bb4a71e6ce 
>   ql/src/test/results/clientpositive/perf/query76.q.out dcd5004166 
>   ql/src/test/results/clientpositive/perf/query77.q.out d46ba6b13c 
>   ql/src/test/results/clientpositive/perf/query80.q.out 3cf41f3fed 
>   ql/src/test/results/clientpositive/spark/union30.q.out 12eda1d3b6 
>   

Re: Review Request 59808: Enhance HiveFilterSetOpTransposeRule to remove union branches

2017-06-10 Thread pengcheng xiong

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/59808/
---

(Updated June 10, 2017, 9:57 p.m.)


Review request for hive and Ashutosh Chauhan.


Repository: hive-git


Description
---

HIVE-16797


Diffs (updated)
-

  
ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java
 3ee29e0482 
  
ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionMergeRule.java
 PRE-CREATION 
  ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java 348331e052 
  ql/src/test/queries/clientpositive/filter_union.q PRE-CREATION 
  ql/src/test/queries/clientpositive/perf/query11.q PRE-CREATION 
  ql/src/test/results/clientpositive/filter_aggr.q.out db7dcaed3f 
  ql/src/test/results/clientpositive/filter_union.q.out PRE-CREATION 
  ql/src/test/results/clientpositive/llap/explainuser_1.q.out 8b04bc9261 
  ql/src/test/results/clientpositive/llap/explainuser_2.q.out e3f70b097f 
  ql/src/test/results/clientpositive/llap/orc_ppd_basic.q.out 5382c42412 
  ql/src/test/results/clientpositive/llap/tez_union_multiinsert.q.out 
14e8e4389f 
  ql/src/test/results/clientpositive/perf/query11.q.out PRE-CREATION 
  ql/src/test/results/clientpositive/perf/query14.q.out 048a17f92f 
  ql/src/test/results/clientpositive/perf/query23.q.out 1fd8cb4f25 
  ql/src/test/results/clientpositive/perf/query33.q.out c1a5fa28ed 
  ql/src/test/results/clientpositive/perf/query4.q.out 1b2048649a 
  ql/src/test/results/clientpositive/perf/query5.q.out a3f2d58fec 
  ql/src/test/results/clientpositive/perf/query56.q.out 4ec7201fa7 
  ql/src/test/results/clientpositive/perf/query60.q.out 12d8cdd9b4 
  ql/src/test/results/clientpositive/perf/query71.q.out 44658081b5 
  ql/src/test/results/clientpositive/perf/query74.q.out bb4a71e6ce 
  ql/src/test/results/clientpositive/perf/query76.q.out dcd5004166 
  ql/src/test/results/clientpositive/perf/query77.q.out d46ba6b13c 
  ql/src/test/results/clientpositive/perf/query80.q.out 3cf41f3fed 
  ql/src/test/results/clientpositive/spark/union30.q.out 12eda1d3b6 
  ql/src/test/results/clientpositive/tez/explainanalyze_2.q.out f6844c4a38 
  ql/src/test/results/clientpositive/union24.q.out d6b1a79b20 
  ql/src/test/results/clientpositive/union30.q.out 26a27c8e15 
  ql/src/test/results/clientpositive/union34.q.out 9d593315af 
  ql/src/test/results/clientpositive/unionall_unbalancedppd.q.out b3e128a3d6 


Diff: https://reviews.apache.org/r/59808/diff/2/

Changes: https://reviews.apache.org/r/59808/diff/1-2/


Testing
---


Thanks,

pengcheng xiong