if (query == null || query.getANDExprList() == null || query.getANDExprList().isEmpty()) return IndexType.NON_CLUSTER_INDEX; if (rowkeys != null) { for(ANDExpression andExpr : query.getANDExprList()) { indexfieldMap.clear(); for(AtomicExpression ae : andExpr.getAtomicExprList()) { final String value = indexfieldMap.get(partitions[i]); if (value == null) { throw new IllegalArgumentException("Partition " + partitions[i] + " is not defined in the query: " + query.toString());
TerminalNode node = ctx.AND(); if (node != null) { ORExpression newORExpr = new ORExpression(); for (ANDExpression left : orExprLeft.getANDExprList()) { for (ANDExpression right : orExprRight.getANDExprList()) { ANDExpression tmp = new ANDExpression(); tmp.getAtomicExprList().addAll(left.getAtomicExprList()); tmp.getAtomicExprList().addAll(right.getAtomicExprList()); newORExpr.getANDExprList().add(tmp); ORExpression newORExpr = new ORExpression(); for (ANDExpression andExpr : orExprLeft.getANDExprList()) { newORExpr.getANDExprList().add(andExpr); for (ANDExpression andExpr : orExprRight.getANDExprList()) { newORExpr.getANDExprList().add(andExpr);
for (ANDExpression andExpr : orExpr.getANDExprList()) { partitionKeyValueMap.clear(); for (AtomicExpression ae : andExpr.getAtomicExprList()) {
public void exitFilter(EagleFilterParser.FilterContext ctx) { // print all relations (KeyValueFilter AND KeyValueFilter) OR (KeyValueFilter AND KeyValueFilter) OR (KeyValueFilter AND KeyValueFilter)" ORExpression orExpr = stack.peek(); if (LOG.isDebugEnabled()) { LOG.debug(orExpr.toString()); } }
for(ANDExpression andExpr : _orExpr.getANDExprList()) { partitionKeyValueMap.clear(); for(AtomicExpression ae : andExpr.getAtomicExprList()) {
public void exitFilter(EagleFilterParser.FilterContext ctx){ // print all relations (KeyValueFilter AND KeyValueFilter) OR (KeyValueFilter AND KeyValueFilter) OR (KeyValueFilter AND KeyValueFilter)" ORExpression orExpr = _stack.peek(); if(LOG.isDebugEnabled()) LOG.debug(orExpr.toString()); }
if (query == null || query.getANDExprList() == null || query.getANDExprList().isEmpty()) { return IndexType.NON_CLUSTER_INDEX; for (ANDExpression andExpr : query.getANDExprList()) { indexfieldMap.clear(); for (AtomicExpression ae : andExpr.getAtomicExprList()) { throw new IllegalArgumentException("Partition " + partitions[i] + " is not defined in the query: " + query.toString());
@Override public Criterion build() { Criterion orCriterion = null; for(ANDExpression andExpression:expression.getANDExprList()){ Criterion andCriterion = null; for(AtomicExpression atomicExpression : andExpression.getAtomicExprList()){ Criterion atomicCriterion = toAtomicCriterion(atomicExpression); if(andCriterion == null){ andCriterion = atomicCriterion; }else{ andCriterion = andCriterion.and(atomicCriterion); } } if(andCriterion!=null){ if(orCriterion == null){ orCriterion = andCriterion; }else{ orCriterion = orCriterion.or(andCriterion); } } } return orCriterion; }
TerminalNode node = ctx.AND(); if(node != null){ ORExpression newORExpr = new ORExpression(); for(ANDExpression left : orExprLeft.getANDExprList()){ for(ANDExpression right : orExprRight.getANDExprList()){ ANDExpression tmp = new ANDExpression(); tmp.getAtomicExprList().addAll(left.getAtomicExprList()); tmp.getAtomicExprList().addAll(right.getAtomicExprList()); newORExpr.getANDExprList().add(tmp); ORExpression newORExpr = new ORExpression(); for(ANDExpression andExpr : orExprLeft.getANDExprList()){ newORExpr.getANDExprList().add(andExpr); for(ANDExpression andExpr : orExprRight.getANDExprList()){ newORExpr.getANDExprList().add(andExpr);
} catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } LOG.info(or.toString()); Assert.assertEquals("(@cluster=\"abc\") OR (@host=\"dc123.xyz.com\" AND @datacenter=\"dc1\")", or.toString()); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } LOG.info(or.toString()); Assert.assertEquals("(@cluster=\"abc\" AND @host=\"dc123.xyz.com\" AND @datacenter=\"dc1\")", or.toString()); Assert.fail(ex.getMessage()); LOG.info(or.toString()); Assert.assertEquals("(@cluster=\"abc\" AND @datacenter=\"dc1\") OR (@host=\"dc123.xyz.com\" AND @datacenter=\"dc1\")", or.toString()); Assert.fail(ex.getMessage()); LOG.info(or.toString()); Assert.assertEquals("(@cluster=\"abc\" AND @datacenter=\"dc1\") OR (@cluster=\"abc\" AND @cluster=\"bcd\") OR (@host=\"dc123.xyz.com\" AND @datacenter=\"dc1\") OR (@host=\"dc123.xyz.com\" AND @cluster=\"bcd\")", or.toString()); Assert.fail(ex.getMessage()); LOG.info(or.toString()); Assert.assertEquals("(@cluster=\"abc\" AND @datacenter=\"dc1\" AND @cluster=\"bcd\") OR (@host=\"dc123.xyz.com\" AND @datacenter=\"dc1\" AND @cluster=\"bcd\")", or.toString());
@Test public void testSingleExpression() { String query = "@cluster=\"a\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@cluster", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("a", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("=", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); LOG.info(or.toString()); Assert.assertEquals("(@cluster=\"a\")", or.toString()); }
@Override public Criterion build() { Criterion orCriterion = null; for(ANDExpression andExpression:expression.getANDExprList()){ Criterion andCriterion = null; for(AtomicExpression atomicExpression : andExpression.getAtomicExprList()){ Criterion atomicCriterion = toAtomicCriterion(atomicExpression); if(andCriterion == null){ andCriterion = atomicCriterion; }else{ andCriterion = andCriterion.and(atomicCriterion); } } if(andCriterion!=null){ if(orCriterion == null){ orCriterion = andCriterion; }else{ orCriterion = orCriterion.or(andCriterion); } } } return orCriterion; }
ORExpression orExpr = new ORExpression(); ANDExpression andExpr = new ANDExpression(); andExpr.getAtomicExprList().add(kv); orExpr.getANDExprList().add(andExpr); _stack.push(orExpr);
private StreamReader selectQueryReader() throws InstantiationException, IllegalAccessException { final ORExpression query = condition.getQueryExpression(); IndexDefinition[] indexDefs = entityDef.getIndexes(); // Index just works with query condition if (indexDefs != null && condition.getQueryExpression()!=null) { List<byte[]> rowkeys = new ArrayList<>(); for (IndexDefinition index : indexDefs) { // Check unique index first if (index.isUnique()) { final IndexDefinition.IndexType type = index.canGoThroughIndex(query, rowkeys); if (!IndexDefinition.IndexType.NON_INDEX.equals(type)) { LOG.info("Selectd query unique index " + index.getIndexName() + " for query: " + condition.getQueryExpression()); return new UniqueIndexStreamReader(index, condition, rowkeys); } } } for (IndexDefinition index : indexDefs) { // Check non-clustered index if (!index.isUnique()) { final IndexDefinition.IndexType type = index.canGoThroughIndex(query, rowkeys); if (!IndexDefinition.IndexType.NON_INDEX.equals(type)) { LOG.info("Selectd query non clustered index " + index.getIndexName() + " for query: " + condition.getQueryExpression().toString()); return new NonClusteredIndexStreamReader(index, condition, rowkeys); } } } } return new GenericEntityScanStreamReader(entityDef, condition, this.prefix); }
@Test public void testLessOrEqualExpression() { String query = "@field1<=\"1\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@field1", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("1", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("<=", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); LOG.info(or.toString()); Assert.assertEquals("(@field1<=\"1\")", or.toString()); }
@Test public void testContainQuery() { String query = "@name contains \"jame\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@name", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("jame", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("CONTAINS", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); Assert.assertEquals(TokenType.STRING, or.getANDExprList().get(0).getAtomicExprList().get(0).getValueType()); }
ORExpression orExpr = new ORExpression(); ANDExpression andExpr = new ANDExpression(); andExpr.getAtomicExprList().add(kv); orExpr.getANDExprList().add(andExpr); stack.push(orExpr);
if (!IndexDefinition.IndexType.NON_INDEX.equals(type)) { LOG.info("Selectd query non clustered index " + index.getIndexName() + " for query: " + condition.getQueryExpression().toString()); return new NonClusteredIndexStreamReader(index, condition, rowkeys);
@Test public void testLessThanExpression() { String query = "@field1<\"1\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@field1", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("1", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("<", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); LOG.info(or.toString()); Assert.assertEquals("(@field1<\"1\")", or.toString()); }
@Test public void testNumberQuery() { String query = "@field1 >= -1.234"; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@field1", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals(-1.234, Double.parseDouble(or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()), 0.0001); Assert.assertEquals(">=", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); Assert.assertEquals(TokenType.NUMBER, or.getANDExprList().get(0).getAtomicExprList().get(0).getValueType()); }