final TblColRef literalCol = getRawColumn(function); final Dictionary<String> rawColDict = dictionaryMap.get(literalCol); final int literalTupleIdx = tupleInfo.hasColumn(literalCol) ? tupleInfo.getColumnIndex(literalCol) : -1;
public void setReturnTupleInfo(RelDataType rowType, ColumnRowType columnRowType) { TupleInfo info = new TupleInfo(); List<RelDataTypeField> fieldList = rowType.getFieldList(); for (int i = 0; i < fieldList.size(); i++) { RelDataTypeField field = fieldList.get(i); TblColRef col = columnRowType == null ? null : columnRowType.getColumnByIndex(i); info.setField(field.getName(), col, i); } this.returnTupleInfo = info; }
public List<String> getAllFields() { return info.getAllFields(); }
public DictionaryEnumerator(OLAPContext olapContext) { Preconditions.checkArgument(olapContext.allColumns.size() == 1, "The query should only relate to one column"); dictCol = olapContext.allColumns.iterator().next(); Preconditions.checkArgument(ifColumnHaveDictionary(dictCol, olapContext.realization, false), "The column " + dictCol + " should be encoded as dictionary for " + olapContext.realization); dictList = getAllDictionaries(dictCol, olapContext.realization); current = new Object[olapContext.returnTupleInfo.size()]; dictColIdx = olapContext.returnTupleInfo.getColumnIndex(dictCol); reset(); logger.info("Will use DictionaryEnumerator to answer query which is only related to column " + dictCol); }
tupleIdx[i] = tupleInfo.hasColumn(dim) ? tupleInfo.getColumnIndex(dim) : -1; i++; if (metric.needRewrite()) { String rewriteFieldName = metric.getRewriteFieldName(); tupleIdx[i] = tupleInfo.hasField(rewriteFieldName) ? tupleInfo.getFieldIndex(rewriteFieldName) : -1; } else { tupleIdx[i] = tupleInfo.hasColumn(col) ? tupleInfo.getColumnIndex(col) : -1;
public Object getValue(String fieldName) { int index = info.getFieldIndex(fieldName); return values[index]; }
public Object getValue(TblColRef col) { int index = info.getColumnIndex(col); return values[index]; }
public HiveEnumerator(OLAPContext olapContext) { this.olapContext = olapContext; this.current = new Object[olapContext.returnTupleInfo.size()]; }
public boolean hasColumn(TblColRef column) { return info.hasColumn(column); }
public List<TblColRef> getAllColumns() { return info.getAllColumns(); }
public String getFieldName(TblColRef col) { return info.getFieldName(col); }
public TblColRef getFieldColumn(String fieldName) { return info.getColumn(fieldName); }
for (int i = 0; i < literalCols.size(); i++) { TblColRef colRef = literalCols.get(i); literalTupleIdx[i] = tupleInfo.hasColumn(colRef) ? tupleInfo.getColumnIndex(colRef) : -1; ParameterDesc.newInstance(numericCol), numericCol.getType().toString()); String sumFieldName = sumFunc.getRewriteFieldName(); numericTupleIdx = tupleInfo.hasField(sumFieldName) ? tupleInfo.getFieldIndex(sumFieldName) : -1; } else { FunctionDesc countFunction = FunctionDesc.newInstance(FunctionDesc.FUNC_COUNT, ParameterDesc.newInstance("1"), "bigint"); numericTupleIdx = tupleInfo.getFieldIndex(countFunction.getRewriteFieldName());
public TblColRef getColumn(String fieldName) { int idx = getFieldIndex(fieldName); return columns.get(idx); }
public DictionaryEnumerator(OLAPContext olapContext) { Preconditions.checkArgument(olapContext.allColumns.size() == 1, "The query should only relate to one column"); dictCol = olapContext.allColumns.iterator().next(); Preconditions.checkArgument(ifColumnHaveDictionary(dictCol, olapContext.realization, false), "The column " + dictCol + " should be encoded as dictionary for " + olapContext.realization); dictList = getAllDictionaries(dictCol, olapContext.realization); current = new Object[olapContext.returnTupleInfo.size()]; dictColIdx = olapContext.returnTupleInfo.getColumnIndex(dictCol); reset(); logger.info("Will use DictionaryEnumerator to answer query which is only related to column " + dictCol); }
public Object getValue(TblColRef col) { int index = info.getColumnIndex(col); return values[index]; }
public Tuple(TupleInfo info) { this.info = info; this.values = new Object[info.size()]; }
public boolean hasColumn(TblColRef column) { return info.hasColumn(column); }
public List<TblColRef> getAllColumns() { return info.getAllColumns(); }
public String getFieldName(TblColRef col) { return info.getFieldName(col); }