You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by xi...@apache.org on 2018/04/12 17:49:18 UTC
asterixdb git commit: [NO ISSUE][COMP] Fix infinite loop in
CheckFilterExpressionTypeRule
Repository: asterixdb
Updated Branches:
refs/heads/master c1f39fe12 -> 7e08bd15a
[NO ISSUE][COMP] Fix infinite loop in CheckFilterExpressionTypeRule
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
When select condition is a UNION type, but not a BOOLEAN or ANY, this rule
may fall into infinite loop.
Change-Id: Ice4c9aa61658197a7140517d0a770886dfe040ec
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2578
Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dm...@couchbase.com>
Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/7e08bd15
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/7e08bd15
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/7e08bd15
Branch: refs/heads/master
Commit: 7e08bd15a86e8d679e756d01f73ad1a2d11995d7
Parents: c1f39fe
Author: Xikui Wang <xk...@gmail.com>
Authored: Mon Apr 9 17:46:23 2018 -0700
Committer: Xikui Wang <xk...@gmail.com>
Committed: Thu Apr 12 10:48:33 2018 -0700
----------------------------------------------------------------------
.../asterix/optimizer/rules/CheckFilterExpressionTypeRule.java | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/7e08bd15/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckFilterExpressionTypeRule.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckFilterExpressionTypeRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckFilterExpressionTypeRule.java
index ab359bf..444e5bc 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckFilterExpressionTypeRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckFilterExpressionTypeRule.java
@@ -75,11 +75,13 @@ public class CheckFilterExpressionTypeRule implements IAlgebraicRewriteRule {
* @return true if it is; false otherwise.
*/
private boolean isPossibleBoolean(IAType type) {
- while (NonTaggedFormatUtil.isOptional(type)) {
- IAType actualType = ((AUnionType) type).getActualType();
+ IAType checkingType = type;
+ while (NonTaggedFormatUtil.isOptional(checkingType)) {
+ IAType actualType = ((AUnionType) checkingType).getActualType();
if (actualType.getTypeTag() == ATypeTag.BOOLEAN || actualType.getTypeTag() == ATypeTag.ANY) {
return true;
}
+ checkingType = actualType;
}
return false;
}