private BitSet getFilteredIndexesForMeasures(ColumnPage columnPage, int numerOfRows) { BitSet bitSet = new BitSet(numerOfRows); Object[] filterValues = this.msrFilterRangeValues; DataType msrType = msrColEvalutorInfoList.get(0).getType(); SerializableComparator comparator = Comparator.getComparatorByDataTypeForMeasure(msrType); BitSet nullBitSet = columnPage.getNullBits(); for (int i = 0; i < filterValues.length; i++) { if (filterValues[i] == null) { for (int j = nullBitSet.nextSetBit(0); j >= 0; j = nullBitSet.nextSetBit(j + 1)) { bitSet.set(j); } continue; } for (int startIndex = 0; startIndex < numerOfRows; startIndex++) { if (!nullBitSet.get(startIndex)) { Object msrValue = DataTypeUtil .getMeasureObjectBasedOnDataType(columnPage, startIndex, msrType, msrColEvalutorInfoList.get(0).getMeasure()); if (comparator.compare(msrValue, filterValues[i]) > 0) { // This is a match. bitSet.set(startIndex); } } } } return bitSet; }
private BitSet getFilteredIndexesForMeasures(ColumnPage columnPage, int numerOfRows) { BitSet bitSet = new BitSet(numerOfRows); Object[] filterValues = this.msrFilterRangeValues; DataType msrType = msrColEvalutorInfoList.get(0).getType(); SerializableComparator comparator = Comparator.getComparatorByDataTypeForMeasure(msrType); BitSet nullBitSet = columnPage.getNullBits(); for (int i = 0; i < filterValues.length; i++) { if (filterValues[i] == null) { for (int j = nullBitSet.nextSetBit(0); j >= 0; j = nullBitSet.nextSetBit(j + 1)) { bitSet.set(j); } continue; } for (int startIndex = 0; startIndex < numerOfRows; startIndex++) { if (!nullBitSet.get(startIndex)) { Object msrValue = DataTypeUtil .getMeasureObjectBasedOnDataType(columnPage, startIndex, msrType, msrColEvalutorInfoList.get(0).getMeasure()); if (comparator.compare(msrValue, filterValues[i]) < 0) { // This is a match. bitSet.set(startIndex); } } } } return bitSet; }
private BitSet getFilteredIndexesForMeasures(ColumnPage columnPage, int numerOfRows) { BitSet bitSet = new BitSet(numerOfRows); Object[] filterValues = this.msrFilterRangeValues; DataType msrType = msrColEvalutorInfoList.get(0).getType(); SerializableComparator comparator = Comparator.getComparatorByDataTypeForMeasure(msrType); BitSet nullBitSet = columnPage.getNullBits(); for (int i = 0; i < filterValues.length; i++) { if (filterValues[i] == null) { for (int j = nullBitSet.nextSetBit(0); j >= 0; j = nullBitSet.nextSetBit(j + 1)) { bitSet.set(j); } continue; } for (int startIndex = 0; startIndex < numerOfRows; startIndex++) { if (!nullBitSet.get(startIndex)) { Object msrValue = DataTypeUtil .getMeasureObjectBasedOnDataType(columnPage, startIndex, msrType, msrColEvalutorInfoList.get(0).getMeasure()); if (comparator.compare(msrValue, filterValues[i]) >= 0) { // This is a match. bitSet.set(startIndex); } } } } return bitSet; }
private BitSet getFilteredIndexesForMeasures(ColumnPage columnPage, int numerOfRows) { BitSet bitSet = new BitSet(numerOfRows); Object[] filterValues = this.msrFilterRangeValues; DataType msrType = msrColEvalutorInfoList.get(0).getType(); SerializableComparator comparator = Comparator.getComparatorByDataTypeForMeasure(msrType); BitSet nullBitSet = columnPage.getNullBits(); for (int i = 0; i < filterValues.length; i++) { if (filterValues[i] == null) { for (int j = nullBitSet.nextSetBit(0); j >= 0; j = nullBitSet.nextSetBit(j + 1)) { bitSet.set(j); } continue; } for (int startIndex = 0; startIndex < numerOfRows; startIndex++) { if (!nullBitSet.get(startIndex)) { Object msrValue = DataTypeUtil .getMeasureObjectBasedOnDataType(columnPage, startIndex, msrType, msrColEvalutorInfoList.get(0).getMeasure()); if (comparator.compare(msrValue, filterValues[i]) <= 0) { // This is a match. bitSet.set(startIndex); } } } } return bitSet; }
msrType, msrColumnEvaluatorInfo.getMeasure());
RowLevelRangeGrtrThanEquaToFilterExecuterImpl( List<DimColumnResolvedFilterInfo> dimColEvaluatorInfoList, List<MeasureColumnResolvedFilterInfo> msrColEvalutorInfoList, Expression exp, AbsoluteTableIdentifier tableIdentifier, byte[][] filterRangeValues, Object[] msrFilterRangeValues, SegmentProperties segmentProperties) { super(dimColEvaluatorInfoList, msrColEvalutorInfoList, exp, tableIdentifier, segmentProperties, null); this.filterRangeValues = filterRangeValues; this.msrFilterRangeValues = msrFilterRangeValues; if (!msrColEvalutorInfoList.isEmpty()) { CarbonMeasure measure = this.msrColEvalutorInfoList.get(0).getMeasure(); comparator = Comparator.getComparatorByDataTypeForMeasure(measure.getDataType()); } if (isDimensionPresentInCurrentBlock[0] == true) { isNaturalSorted = dimColEvaluatorInfoList.get(0).getDimension().isUseInvertedIndex() && dimColEvaluatorInfoList.get(0).getDimension().isSortColumn(); } ifDefaultValueMatchesFilter(); }
public RowLevelRangeLessThanFilterExecuterImpl( List<DimColumnResolvedFilterInfo> dimColEvaluatorInfoList, List<MeasureColumnResolvedFilterInfo> msrColEvalutorInfoList, Expression exp, AbsoluteTableIdentifier tableIdentifier, byte[][] filterRangeValues, Object[] msrFilterRangeValues, SegmentProperties segmentProperties) { super(dimColEvaluatorInfoList, msrColEvalutorInfoList, exp, tableIdentifier, segmentProperties, null); this.filterRangeValues = filterRangeValues; this.msrFilterRangeValues = msrFilterRangeValues; if (!msrColEvalutorInfoList.isEmpty()) { CarbonMeasure measure = this.msrColEvalutorInfoList.get(0).getMeasure(); comparator = Comparator.getComparatorByDataTypeForMeasure(measure.getDataType()); } ifDefaultValueMatchesFilter(); if (isDimensionPresentInCurrentBlock[0]) { isNaturalSorted = dimColEvaluatorInfoList.get(0).getDimension().isUseInvertedIndex() && dimColEvaluatorInfoList.get(0).getDimension().isSortColumn(); } }
public RowLevelRangeLessThanEqualFilterExecuterImpl( List<DimColumnResolvedFilterInfo> dimColEvaluatorInfoList, List<MeasureColumnResolvedFilterInfo> msrColEvalutorInfoList, Expression exp, AbsoluteTableIdentifier tableIdentifier, byte[][] filterRangeValues, Object[] msrFilterRangeValues, SegmentProperties segmentProperties) { super(dimColEvaluatorInfoList, msrColEvalutorInfoList, exp, tableIdentifier, segmentProperties, null); this.filterRangeValues = filterRangeValues; this.msrFilterRangeValues = msrFilterRangeValues; if (!msrColEvalutorInfoList.isEmpty()) { CarbonMeasure measure = this.msrColEvalutorInfoList.get(0).getMeasure(); comparator = Comparator.getComparatorByDataTypeForMeasure(measure.getDataType()); } ifDefaultValueMatchesFilter(); if (isDimensionPresentInCurrentBlock[0]) { isNaturalSorted = dimColEvaluatorInfoList.get(0).getDimension().isUseInvertedIndex() && dimColEvaluatorInfoList.get(0).getDimension().isSortColumn(); } }
RowLevelRangeGrtThanFiterExecuterImpl(List<DimColumnResolvedFilterInfo> dimColEvaluatorInfoList, List<MeasureColumnResolvedFilterInfo> msrColEvalutorInfoList, Expression exp, AbsoluteTableIdentifier tableIdentifier, byte[][] filterRangeValues, Object[] msrFilterRangeValues, SegmentProperties segmentProperties) { super(dimColEvaluatorInfoList, msrColEvalutorInfoList, exp, tableIdentifier, segmentProperties, null); this.filterRangeValues = filterRangeValues; this.msrFilterRangeValues = msrFilterRangeValues; if (!this.msrColEvalutorInfoList.isEmpty()) { CarbonMeasure measure = this.msrColEvalutorInfoList.get(0).getMeasure(); comparator = Comparator.getComparatorByDataTypeForMeasure(measure.getDataType()); } if (isDimensionPresentInCurrentBlock[0]) { isNaturalSorted = dimColEvaluatorInfoList.get(0).getDimension().isUseInvertedIndex() && dimColEvaluatorInfoList.get(0).getDimension().isSortColumn(); } ifDefaultValueMatchesFilter(); }
@Override public boolean applyFilter(RowIntf value, int dimOrdinalMax) throws FilterUnsupportedException, IOException { if (isDimensionPresentInCurrentBlock[0]) { byte[] col = (byte[]) value.getVal(dimColEvaluatorInfoList.get(0).getDimension().getOrdinal()); return ByteUtil.compare(filterRangeValues[0], col) <= 0; } if (isMeasurePresentInCurrentBlock[0]) { Object col = value.getVal(msrColEvalutorInfoList.get(0).getMeasure().getOrdinal() + dimOrdinalMax); return comparator.compare(msrFilterRangeValues[0], col) <= 0; } return false; }
@Override public boolean applyFilter(RowIntf value, int dimOrdinalMax) throws FilterUnsupportedException, IOException { if (isDimensionPresentInCurrentBlock[0]) { byte[] col = (byte[]) value.getVal(dimColEvaluatorInfoList.get(0).getDimension().getOrdinal()); return ByteUtil.compare(filterRangeValues[0], col) < 0; } if (isMeasurePresentInCurrentBlock[0]) { Object col = value.getVal(msrColEvalutorInfoList.get(0).getMeasure().getOrdinal() + dimOrdinalMax); return comparator.compare(msrFilterRangeValues[0], col) < 0; } return false; }
@Override public boolean applyFilter(RowIntf value, int dimOrdinalMax) throws FilterUnsupportedException, IOException { if (isDimensionPresentInCurrentBlock[0]) { byte[] col = (byte[]) value.getVal(dimColEvaluatorInfoList.get(0).getDimension().getOrdinal()); return ByteUtil.compare(filterRangeValues[0], col) > 0; } if (isMeasurePresentInCurrentBlock[0]) { Object col = value.getVal(msrColEvalutorInfoList.get(0).getMeasure().getOrdinal() + dimOrdinalMax); return comparator.compare(msrFilterRangeValues[0], col) > 0; } return false; }
@Override public boolean applyFilter(RowIntf value, int dimOrdinalMax) throws FilterUnsupportedException, IOException { if (isDimensionPresentInCurrentBlock[0]) { byte[] col = (byte[]) value.getVal(dimColEvaluatorInfoList.get(0).getDimension().getOrdinal()); return ByteUtil.compare(filterRangeValues[0], col) >= 0; } if (isMeasurePresentInCurrentBlock[0]) { Object col = value.getVal(msrColEvalutorInfoList.get(0).getMeasure().getOrdinal() + dimOrdinalMax); return comparator.compare(msrFilterRangeValues[0], col) >= 0; } return false; }
msrType, msrColumnEvaluatorInfo.getMeasure());
CarbonMeasure measure = this.msrColEvalutorInfoList.get(0).getMeasure(); byte[] defaultValue = measure.getDefaultValue(); SerializableComparator comparatorTmp =
@Override public boolean applyFilter(RowIntf value, int dimOrdinalMax) { if (isDimensionPresentInCurrentBlock) { byte[][] filterValues = dimColumnExecuterInfo.getExcludeFilterKeys(); byte[] col = (byte[])value.getVal(dimColEvaluatorInfo.getDimension().getOrdinal()); for (int i = 0; i < filterValues.length; i++) { if (0 == ByteUtil.UnsafeComparer.INSTANCE.compareTo(col, 0, col.length, filterValues[i], 0, filterValues[i].length)) { return false; } } } else if (isMeasurePresentInCurrentBlock) { Object[] filterValues = msrColumnExecutorInfo.getFilterKeys(); Object col = value.getVal(msrColumnEvaluatorInfo.getMeasure().getOrdinal() + dimOrdinalMax); for (int i = 0; i < filterValues.length; i++) { if (filterValues[i] == null) { if (null == col) { return false; } continue; } if (comparator.compare(col, filterValues[i]) == 0) { return false; } } } return true; }
boolean isDefaultValuePresentInFilterValues = false; ColumnFilterInfo filterValues = measureColumnResolvedFilterInfo.getFilterValues(); CarbonMeasure measure = measureColumnResolvedFilterInfo.getMeasure(); SerializableComparator comparator = Comparator.getComparatorByDataTypeForMeasure(measure.getDataType());
@Override public boolean applyFilter(RowIntf value, int dimOrdinalMax) { if (isDimensionPresentInCurrentBlock) { byte[][] filterValues = dimColumnExecuterInfo.getFilterKeys(); byte[] col = (byte[])value.getVal(dimColumnEvaluatorInfo.getDimension().getOrdinal()); for (int i = 0; i < filterValues.length; i++) { if (0 == ByteUtil.UnsafeComparer.INSTANCE.compareTo(col, 0, col.length, filterValues[i], 0, filterValues[i].length)) { return true; } } } else if (isMeasurePresentInCurrentBlock) { Object[] filterValues = msrColumnExecutorInfo.getFilterKeys(); Object col = value.getVal(msrColumnEvaluatorInfo.getMeasure().getOrdinal() + dimOrdinalMax); for (int i = 0; i < filterValues.length; i++) { if (filterValues[i] == null) { if (null == col) { return true; } continue; } if (comparator.compare(col, filterValues[i]) == 0) { return true; } } } return false; }
public ExcludeFilterExecuterImpl(DimColumnResolvedFilterInfo dimColEvaluatorInfo, MeasureColumnResolvedFilterInfo msrColumnEvaluatorInfo, SegmentProperties segmentProperties, boolean isMeasure) { this.segmentProperties = segmentProperties; if (!isMeasure) { this.dimColEvaluatorInfo = dimColEvaluatorInfo; dimColumnExecuterInfo = new DimColumnExecuterFilterInfo(); FilterUtil.prepareKeysFromSurrogates(dimColEvaluatorInfo.getFilterValues(), segmentProperties, dimColEvaluatorInfo.getDimension(), dimColumnExecuterInfo, null, null); isDimensionPresentInCurrentBlock = true; isNaturalSorted = dimColEvaluatorInfo.getDimension().isUseInvertedIndex() && dimColEvaluatorInfo .getDimension().isSortColumn(); } else { this.msrColumnEvaluatorInfo = msrColumnEvaluatorInfo; msrColumnExecutorInfo = new MeasureColumnExecuterFilterInfo(); FilterUtil .prepareKeysFromSurrogates(msrColumnEvaluatorInfo.getFilterValues(), segmentProperties, null, null, msrColumnEvaluatorInfo.getMeasure(), msrColumnExecutorInfo); isMeasurePresentInCurrentBlock = true; DataType msrType = FilterUtil.getMeasureDataType(msrColumnEvaluatorInfo); comparator = Comparator.getComparatorByDataTypeForMeasure(msrType); } }
public IncludeFilterExecuterImpl(DimColumnResolvedFilterInfo dimColumnEvaluatorInfo, MeasureColumnResolvedFilterInfo msrColumnEvaluatorInfo, SegmentProperties segmentProperties, boolean isMeasure) { this.segmentProperties = segmentProperties; if (!isMeasure) { this.dimColumnEvaluatorInfo = dimColumnEvaluatorInfo; dimColumnExecuterInfo = new DimColumnExecuterFilterInfo(); FilterUtil .prepareKeysFromSurrogates(dimColumnEvaluatorInfo.getFilterValues(), segmentProperties, dimColumnEvaluatorInfo.getDimension(), dimColumnExecuterInfo, null, null); isDimensionPresentInCurrentBlock = true; isNaturalSorted = dimColumnEvaluatorInfo.getDimension().isUseInvertedIndex() && dimColumnEvaluatorInfo .getDimension().isSortColumn(); } else { this.msrColumnEvaluatorInfo = msrColumnEvaluatorInfo; msrColumnExecutorInfo = new MeasureColumnExecuterFilterInfo(); comparator = Comparator.getComparatorByDataTypeForMeasure( FilterUtil.getMeasureDataType(msrColumnEvaluatorInfo)); FilterUtil .prepareKeysFromSurrogates(msrColumnEvaluatorInfo.getFilterValues(), segmentProperties, null, null, msrColumnEvaluatorInfo.getMeasure(), msrColumnExecutorInfo); isMeasurePresentInCurrentBlock = true; } }