/** * compute the column ordinal as per data is stored * * @param segmentProperties * @param column * @return */ public static int getColumnOrdinal(SegmentProperties segmentProperties, CarbonColumn column) { if (column.isMeasure()) { // as measures are stored at the end after all dimensions and complex dimensions hence add // the last dimension ordinal to measure ordinal. Segment properties will store min max // length in one array on the order normal dimension, complex dimension and then measure return segmentProperties.getLastDimensionColOrdinal() + column.getOrdinal(); } else { return column.getOrdinal(); } }
public static void updateIndexOfColumnExpression(Expression exp, int dimOridnalMax) { // if expression is null, not require to update index. if (exp == null) { return; } if (exp.getChildren() == null || exp.getChildren().size() == 0) { if (exp instanceof ColumnExpression) { ColumnExpression ce = (ColumnExpression) exp; CarbonColumn column = ce.getCarbonColumn(); if (column.isDimension()) { ce.setColIndex(column.getOrdinal()); } else { ce.setColIndex(dimOridnalMax + column.getOrdinal()); } } } else { if (exp.getChildren().size() > 0) { List<Expression> children = exp.getChildren(); for (int i = 0; i < children.size(); i++) { updateIndexOfColumnExpression(children.get(i), dimOridnalMax); } } } }
private void convertComplexDataType(Map<Integer, GenericDataType> dataFieldsWithComplexDataType) { DataField[] srcDataField = configuration.getDataFields(); FieldEncoderFactory fieldConverterFactory = FieldEncoderFactory.getInstance(); String nullFormat = configuration.getDataLoadProperty(DataLoadProcessorConstants.SERIALIZATION_NULL_FORMAT) .toString(); boolean isEmptyBadRecord = Boolean.parseBoolean( configuration.getDataLoadProperty(DataLoadProcessorConstants.IS_EMPTY_DATA_BAD_RECORD) .toString()); for (int i = 0; i < srcDataField.length; i++) { if (srcDataField[i].getColumn().isComplex()) { // create a ComplexDataType dataFieldsWithComplexDataType.put(srcDataField[i].getColumn().getOrdinal(), fieldConverterFactory .createComplexDataType(srcDataField[i], configuration.getTableIdentifier(), null, false, null, i, nullFormat, isEmptyBadRecord)); } } }
for (int i = 0; i < storageColumns.length; i++) { if (storageColumns[i].isDimension()) { if (isFiltlerDimensions[storageColumns[i].getOrdinal()]) { isRequired[i] = true; isFilterRequired[i] = true; filterMap[i] = storageColumns[i].getOrdinal(); if (isFiltlerMeasures[storageColumns[i].getOrdinal()]) { isRequired[i] = true; isFilterRequired[i] = true; filterMap[i] = carbonTable.getDimensionOrdinalMax() + storageColumns[i].getOrdinal();
segmentProperties.getLastDimensionColOrdinal() + columnFromCurrentBlock.getOrdinal()); } else { columnResolvedFilterInfo .setColumnIndexInMinMaxByteArray(columnFromCurrentBlock.getOrdinal());
try { GenericDataType complextType = dataFieldsWithComplexDataType.get(dataFields[i].getColumn().getOrdinal()); complextType.writeByteArray(data[orderOfData[i]], dataOutputStream, logHolder); dataOutputStream.close();
if (columnExpression.isDimension()) { dimColumnEvaluatorInfo = new DimColumnResolvedFilterInfo(); dimColumnEvaluatorInfo.setColumnIndex(columnExpression.getCarbonColumn().getOrdinal()); dimColumnEvaluatorInfo.setRowIndex(index++); dimColumnEvaluatorInfo.setDimension(columnExpression.getDimension()); msrColumnEvalutorInfo.setRowIndex(index++); msrColumnEvalutorInfo .setColumnIndex(columnExpression.getCarbonColumn().getOrdinal()); msrColumnEvalutorInfo.setMeasure(columnExpression.getMeasure()); msrColumnEvalutorInfo.setType(columnExpression.getCarbonColumn().getDataType());
metadata); msrColResolvedFilterInfo.setCarbonColumn(columnList.get(0).getCarbonColumn()); msrColResolvedFilterInfo.setColumnIndex(columnList.get(0).getCarbonColumn().getOrdinal()); msrColResolvedFilterInfo.setType(columnList.get(0).getCarbonColumn().getDataType());
dimColumnEvaluatorInfo = new DimColumnResolvedFilterInfo(); ColumnFilterInfo filterInfo = new ColumnFilterInfo(); dimColumnEvaluatorInfo.setColumnIndex(columnExpression.getCarbonColumn().getOrdinal()); dimColumnEvaluatorInfo.setRowIndex(index++); dimColumnEvaluatorInfo.setDimension(columnExpression.getDimension()); msrColumnEvalutorInfo.setRowIndex(index++); msrColumnEvalutorInfo.setCarbonColumn(columnExpression.getCarbonColumn()); msrColumnEvalutorInfo.setColumnIndex(columnExpression.getCarbonColumn().getOrdinal()); msrColumnEvalutorInfo.setType(columnExpression.getCarbonColumn().getDataType()); msrColumnEvalutorInfo.setMeasureExistsInCurrentSilce(false);