private CompareTupleFilter(CompareTupleFilter another) { super(new ArrayList<TupleFilter>(another.children), another.operator); this.column = another.column; this.firstCondValue = another.getFirstValue(); this.function = another.getFunction(); this.conditionValues = new HashSet<Object>(); this.conditionValues.addAll(another.conditionValues); this.dynamicVariables = new HashMap<String, Object>(); this.dynamicVariables.putAll(another.dynamicVariables); }
private void findMustEqualColsAndValues(TupleFilter filter, Collection<TblColRef> lookingForCols, HashMap<TblColRef, Object> result) { if (filter instanceof CompareTupleFilter) { CompareTupleFilter comp = (CompareTupleFilter) filter; TblColRef col = comp.getColumn(); if (lookingForCols.contains(col)) { if (comp.getOperator() == FilterOperatorEnum.EQ) result.put(col, comp.getFirstValue()); else if (comp.getOperator() == FilterOperatorEnum.ISNULL) result.put(col, null); } return; } if (filter instanceof LogicalTupleFilter) { LogicalTupleFilter logic = (LogicalTupleFilter) filter; if (logic.getOperator() == FilterOperatorEnum.AND) { for (TupleFilter child : logic.getChildren()) findMustEqualColsAndValues(child, lookingForCols, result); } return; } }
Object computedVal = builtInFunctionTupleFilter.invokeFunction(dictVal); Class clazz = Primitives.wrap(computedVal.getClass()); Object targetVal = compTupleFilter.getFirstValue(); if (Primitives.isWrapperType(clazz)) targetVal = clazz.cast(clazz.getDeclaredMethod("valueOf", String.class).invoke(null, compTupleFilter.getFirstValue()));
String filterVal = toString(comp.getFirstValue());
@Test public void basicTest() { TableDesc t1 = TableDesc.mockup("DEFAULT.TEST_KYLIN_FACT"); TblColRef column = TblColRef.mockup(t1, 2, "CAL_DT", "date"); CompareTupleFilter compareFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.EQ); ColumnTupleFilter columnFilter = new ColumnTupleFilter(column); compareFilter.addChild(columnFilter); ConstantTupleFilter constantFilter = null; constantFilter = new ConstantTupleFilter("946684800000"); compareFilter.addChild(constantFilter); TimeConditionLiteralsReplacer filterDecorator = new TimeConditionLiteralsReplacer(compareFilter); byte[] bytes = TupleFilterSerializer.serialize(compareFilter, filterDecorator, DictCodeSystem.INSTANCE); CompareTupleFilter compareTupleFilter = (CompareTupleFilter) TupleFilterSerializer.deserialize(bytes, DictCodeSystem.INSTANCE); Assert.assertEquals("2000-01-01", compareTupleFilter.getFirstValue()); } }
Object firstValue = compareTupleFilter.getFirstValue(); long t; switch (compareTupleFilter.getOperator()) {
private ConciseSet evalCompareLTE(CompareTupleFilter filter) { int id = Dictionary.stringToDictId(filter.getFirstValue()); return collectRange(filter.getColumn(), null, id); }
private ConciseSet evalCompareLT(CompareTupleFilter filter) { int id = Dictionary.stringToDictId(filter.getFirstValue()); return collectRange(filter.getColumn(), null, id - 1); }
private ConciseSet evalCompareGT(CompareTupleFilter filter) { int id = Dictionary.stringToDictId(filter.getFirstValue()); return collectRange(filter.getColumn(), id + 1, null); }
private ConciseSet evalCompareGTE(CompareTupleFilter filter) { int id = Dictionary.stringToDictId(filter.getFirstValue()); return collectRange(filter.getColumn(), id, null); }
private ConciseSet evalCompareEqual(CompareTupleFilter filter) { int id = Dictionary.stringToDictId(filter.getFirstValue()); ConciseSet bitMap = provider.getBitMap(filter.getColumn(), id, id); if (bitMap == null) return null; return bitMap.clone(); // NOTE the clone() to void messing provider's cache }
private CompareTupleFilter(CompareTupleFilter another) { super(new ArrayList<TupleFilter>(another.children), another.operator); this.column = another.column; this.firstCondValue = another.getFirstValue(); this.function = another.getFunction(); this.conditionValues = new HashSet<Object>(); this.conditionValues.addAll(another.conditionValues); this.dynamicVariables = new HashMap<String, Object>(); this.dynamicVariables.putAll(another.dynamicVariables); }
private void findMustEqualColsAndValues(TupleFilter filter, Collection<TblColRef> lookingForCols, HashMap<TblColRef, Object> result) { if (filter instanceof CompareTupleFilter) { CompareTupleFilter comp = (CompareTupleFilter) filter; TblColRef col = comp.getColumn(); if (lookingForCols.contains(col)) { if (comp.getOperator() == FilterOperatorEnum.EQ) result.put(col, comp.getFirstValue()); else if (comp.getOperator() == FilterOperatorEnum.ISNULL) result.put(col, null); } return; } if (filter instanceof LogicalTupleFilter) { LogicalTupleFilter logic = (LogicalTupleFilter) filter; if (logic.getOperator() == FilterOperatorEnum.AND) { for (TupleFilter child : logic.getChildren()) findMustEqualColsAndValues(child, lookingForCols, result); } return; } }
Object computedVal = builtInFunctionTupleFilter.invokeFunction(dictVal); Class clazz = Primitives.wrap(computedVal.getClass()); Object targetVal = compTupleFilter.getFirstValue(); if (Primitives.isWrapperType(clazz)) targetVal = clazz.cast(clazz.getDeclaredMethod("valueOf", String.class).invoke(null, compTupleFilter.getFirstValue()));
String filterVal = toString(comp.getFirstValue());
Object firstValue = compareTupleFilter.getFirstValue(); long t; switch (compareTupleFilter.getOperator()) {