if (range != null && range != 0) { builder.addRangeClause(ResourceMetrics.FIELD_NAME_TIMESTAMP, NumericRange.createGreaterThanOrEqualRange( StatsUtil.computeIntervalBeginMicros(range - 1, binSize)));
if (range != null && range != 0) { builder.addRangeClause(ResourceMetrics.FIELD_NAME_TIMESTAMP, NumericRange.createGreaterThanOrEqualRange( StatsUtil.computeIntervalBeginMicros(range - 1, binSize)));
private QueryTask.NumericRange<?> createRange(String num, BinaryVerb op) { // if there's a decimal, treat as double Number d = null; if (num.contains(".")) { d = Double.parseDouble(num); } else { d = Long.parseLong(num); } if (op.equals(BinaryVerb.LT)) { return QueryTask.NumericRange.createLessThanRange(d); } if (op.equals(BinaryVerb.LE)) { return QueryTask.NumericRange.createLessThanOrEqualRange(d); } if (op.equals(BinaryVerb.GT)) { return QueryTask.NumericRange.createGreaterThanRange(d); } if (op.equals(BinaryVerb.GE)) { return QueryTask.NumericRange.createGreaterThanOrEqualRange(d); } if (op.equals(BinaryVerb.EQ)) { return QueryTask.NumericRange.createEqualRange(d); } return null; }
if (q != null) { q.setNumericRange(NumericRange .createGreaterThanOrEqualRange(state.latestSourceUpdateTimeMicros)); } else { Query timeClause = Query.Builder ServiceDocument.FIELD_NAME_UPDATE_TIME_MICROS, NumericRange .createGreaterThanOrEqualRange(state.latestSourceUpdateTimeMicros)) .build(); patch.querySpec.query.addBooleanClause(timeClause);
@Test public void testBooleanWithNumericRanges() throws Throwable { Query expected = new Query(); // The test ($filter name eq 'foo') OR (($filter age le 50) AND ($filter income ge 1000000)) // Top-level OR expected.occurance = Query.Occurance.MUST_OCCUR; // first term Query nameQ = new Query().setTermPropertyName("name").setTermMatchValue("foo"); // second term Query betweenRangesQ = new Query(); // first range NumericRange<?> lessThan50 = QueryTask.NumericRange .createLessThanOrEqualRange((long) 50); betweenRangesQ.addBooleanClause(new Query().setTermPropertyName("age").setNumericRange( lessThan50)); // second range NumericRange<?> greatherThanOrEqual1M = QueryTask.NumericRange .createGreaterThanOrEqualRange((long) 1000000); betweenRangesQ.addBooleanClause(new Query().setTermPropertyName("income").setNumericRange (greatherThanOrEqual1M)); nameQ.occurance = Query.Occurance.SHOULD_OCCUR; betweenRangesQ.occurance = Query.Occurance.SHOULD_OCCUR; expected.addBooleanClause(nameQ); expected.addBooleanClause(betweenRangesQ); String odataFilter = "(name eq foo) or ((age le 50) and (income ge 1000000))"; Query actual = toQuery(odataFilter); assertQueriesEqual(actual, expected); }
@Test public void testBooleanWithNumericRanges() throws Throwable { Query expected = new Query(); // The test ($filter name eq 'foo') OR (($filter age le 50) AND ($filter income ge 1000000)) // Top-level OR expected.occurance = Query.Occurance.MUST_OCCUR; // first term Query nameQ = new Query().setTermPropertyName("name").setTermMatchValue("foo"); // second term Query betweenRangesQ = new Query(); // first range NumericRange<?> lessThan50 = QueryTask.NumericRange .createLessThanOrEqualRange((long) 50); betweenRangesQ.addBooleanClause(new Query().setTermPropertyName("age").setNumericRange( lessThan50)); // second range NumericRange<?> greatherThanOrEqual1M = QueryTask.NumericRange .createGreaterThanOrEqualRange((long) 1000000); betweenRangesQ.addBooleanClause(new Query().setTermPropertyName("income").setNumericRange (greatherThanOrEqual1M)); nameQ.occurance = Query.Occurance.SHOULD_OCCUR; betweenRangesQ.occurance = Query.Occurance.SHOULD_OCCUR; expected.addBooleanClause(nameQ); expected.addBooleanClause(betweenRangesQ); String odataFilter = "(name eq foo) or ((age le 50) and (income ge 1000000))"; Query actual = toQuery(odataFilter); assertQueriesEqual(actual, expected); }