private static void analyzeRelationalOpNode(ExprRelationalOpNode relNode, QueryGraph queryGraph) { if (((relNode.getChildNodes()[0] instanceof ExprIdentNode)) && ((relNode.getChildNodes()[1] instanceof ExprIdentNode))) { ExprIdentNode identNodeLeft = (ExprIdentNode) relNode.getChildNodes()[0]; ExprIdentNode identNodeRight = (ExprIdentNode) relNode.getChildNodes()[1]; if (identNodeLeft.getStreamId() != identNodeRight.getStreamId()) { queryGraph.addRelationalOpStrict( identNodeLeft.getStreamId(), identNodeLeft.getResolvedPropertyName(), identNodeLeft, identNodeRight.getStreamId(), identNodeRight.getResolvedPropertyName(), identNodeRight, relNode.getRelationalOpEnum()); } return; } int indexedStream = -1; String indexedProp = null; ExprNode exprNodeNoIdent = null; RelationalOpEnum relop = relNode.getRelationalOpEnum(); if (relNode.getChildNodes()[0] instanceof ExprIdentNode) { ExprIdentNode identNode = (ExprIdentNode) relNode.getChildNodes()[0]; indexedStream = identNode.getStreamId(); indexedProp = identNode.getResolvedPropertyName(); exprNodeNoIdent = relNode.getChildNodes()[1]; } else if (relNode.getChildNodes()[1] instanceof ExprIdentNode) { ExprIdentNode identNode = (ExprIdentNode) relNode.getChildNodes()[1]; indexedStream = identNode.getStreamId(); indexedProp = identNode.getResolvedPropertyName(); exprNodeNoIdent = relNode.getChildNodes()[0]; relop = relop.reversed(); } if (indexedStream == -1) { return; // require property of right/left side of equals } EligibilityDesc eligibility = EligibilityUtil.verifyInputStream(exprNodeNoIdent, indexedStream); if (!eligibility.getEligibility().isEligible()) { return; } queryGraph.addRelationalOp( indexedStream, indexedProp, eligibility.getStreamNum(), exprNodeNoIdent, relop); }