/** * Returns true for fixed length DataTypes. * @param dataType * @return */ public static boolean isFixedSizeDataType(DataType dataType) { if (dataType == DataTypes.STRING || dataType == DataTypes.VARCHAR || DataTypes.isDecimal(dataType)) { return false; } else { return true; } }
private boolean isColumnPageBasedOnDataType(int columnPageIndex) { DataType dataType = complexColumnInfoList.get(columnPageIndex).getColumnDataTypes(); if ((complexColumnInfoList.get(columnPageIndex).isNoDictionary() && !((DataTypes.isStructType(dataType) || DataTypes.isArrayType(dataType) || DataTypes.isMapType(dataType) || (dataType == DataTypes.STRING) || (dataType == DataTypes.VARCHAR) || (dataType == DataTypes.DATE) || DataTypes.isDecimal(dataType))))) { // For all these above condition the ColumnPage should be Taken as BYTE_ARRAY // for all other cases make Column Page Based on each DataType. return true; } else { return false; } }
return DataTypes.DOUBLE; case DECIMAL: return DataTypes.createDecimalType(precision, scale); case TIMESTAMP: return DataTypes.TIMESTAMP; return DataTypes.DATE; case ARRAY: return DataTypes.createDefaultArrayType(); case STRUCT: return DataTypes.createDefaultStructType(); case MAP: return DataTypes.createDefaultMapType(); case VARCHAR: return DataTypes.VARCHAR;
return DataTypes.DOUBLE; case DECIMAL: return DataTypes.createDefaultDecimalType(); case DATE: return DataTypes.DATE; return DataTypes.TIMESTAMP; case ARRAY: return DataTypes.createDefaultArrayType(); case STRUCT: return DataTypes.createDefaultStructType(); case MAP: return DataTypes.createDefaultMapType(); case VARCHAR: return DataTypes.VARCHAR;
private void initComplexTypeChildren() { if (getDataType().isComplexType()) { StructField subFields = prepareSubFields(getFieldName(), getDataType()); if (DataTypes.isArrayType(getDataType()) || DataTypes.isMapType(getDataType())) { children = subFields.getChildren(); } else if (DataTypes.isStructType(getDataType())) { children = ((StructType) subFields.getDataType()).getFields(); } } }
ColumnSchema carbonColumn = carbonColumns[i]; DataType dataType = carbonColumn.getDataType(); if (org.apache.carbondata.core.metadata.datatype.DataTypes.isDecimal(dataType)) { fields.add(new StructField(carbonColumn.getColumnName(), new DecimalType(carbonColumn.getPrecision(), carbonColumn.getScale()), true, Metadata.empty())); } else if (org.apache.carbondata.core.metadata.datatype.DataTypes.isStructType(dataType)) { fields.add( new StructField( true, Metadata.empty())); } else if (org.apache.carbondata.core.metadata.datatype.DataTypes.isArrayType(dataType)) { fields.add( new StructField(
if (DataTypes.isArrayType(type)) { ArrayList array = (ArrayList) childObject; if (array.size() == 0) { } else if (DataTypes.isStructType(type)) { Map<String, Object> childFieldsMap = (Map<String, Object>) childObject; int size = column.getNumberOfChild();
if (DataTypes.isArrayType(dataType)) { List<StructField> arrayFields = new ArrayList<>(); StructField arrayField = prepareSubFields(fieldName, ((ArrayType) dataType).getElementType()); arrayFields.add(arrayField); return new StructField(fieldName, DataTypes.createArrayType(arrayField.getDataType()), arrayFields); } else if (DataTypes.isStructType(dataType)) { List<StructField> structFields = new ArrayList<>(); List<StructField> fields = ((StructType) dataType).getFields(); structFields.add(prepareSubFields(field.getFieldName(), field.getDataType())); return new StructField(fieldName, DataTypes.createStructType(structFields), structFields); } else if (DataTypes.isMapType(dataType)) { mapFields.add(valueField); StructField field = new StructField(fieldName + ".val", DataTypes.createStructType(mapFields)); MapType mapDataType = DataTypes.createMapType(keyField.getDataType(), field.getDataType()); List<StructField> mapStructField = new ArrayList<>(); mapStructField.add(field);
private static void updateDecimalType(TableInfo tableInfo) { List<ColumnSchema> deserializedColumns = tableInfo.getFactTable().getListOfColumns(); for (ColumnSchema column : deserializedColumns) { DataType dataType = column.getDataType(); if (DataTypes.isDecimal(dataType)) { column.setDataType(DataTypes.createDecimalType(column.getPrecision(), column.getScale())); } } if (tableInfo.getFactTable().getPartitionInfo() != null) { List<ColumnSchema> partitionColumns = tableInfo.getFactTable().getPartitionInfo().getColumnSchemaList(); for (ColumnSchema column : partitionColumns) { DataType dataType = column.getDataType(); if (DataTypes.isDecimal(dataType)) { column.setDataType(DataTypes.createDecimalType(column.getPrecision(), column.getScale())); } } } }
@Override public void readFields(DataInput in) throws IOException { this.fieldName = in.readUTF(); this.schemaDataType = DataTypes.valueOf(in.readByte()); this.columnType = ColumnType.valueOf(in.readByte()); int scale = in.readInt(); int precision = in.readInt(); if (DataTypes.isDecimal(this.schemaDataType)) { DecimalType decimalType = (DecimalType) this.schemaDataType; decimalType.setPrecision(precision); decimalType.setScale(scale); } } }
public static DataType getMeasureDataType( MeasureColumnResolvedFilterInfo msrColumnEvaluatorInfo) { if (msrColumnEvaluatorInfo.getType() == DataTypes.BOOLEAN) { return DataTypes.BOOLEAN; } else if (msrColumnEvaluatorInfo.getType() == DataTypes.SHORT) { return DataTypes.SHORT; } else if (msrColumnEvaluatorInfo.getType() == DataTypes.INT) { return DataTypes.INT; } else if (msrColumnEvaluatorInfo.getType() == DataTypes.LONG) { return DataTypes.LONG; } else if (msrColumnEvaluatorInfo.getType() == DataTypes.FLOAT) { return DataTypes.FLOAT; } else if (msrColumnEvaluatorInfo.getType() == DataTypes.BYTE) { return DataTypes.BYTE; } else if (DataTypes.isDecimal(msrColumnEvaluatorInfo.getType())) { return DataTypes.createDefaultDecimalType(); } else { return DataTypes.DOUBLE; } }
this.type = DataTypes.DOUBLE; } else if (type.equalsIgnoreCase("array")) { this.type = DataTypes.createDefaultArrayType(); } else if (type.equalsIgnoreCase("struct")) { this.type = DataTypes.createDefaultStructType(); } else if (type.equalsIgnoreCase("map")) { this.type = DataTypes.createDefaultMapType(); } else { throw new IllegalArgumentException("unsupported data type: " + type);
@Override public void setRow(DataMapRow row, int ordinal) { assert (DataTypes.isStructType(schemas[ordinal].getDataType())); data[ordinal] = row; }
keyValueFields.add(valueField); StructField mapKeyValueField = new StructField(fieldName + ".val", DataTypes.createStructType(keyValueFields)); DataTypes.createMapType(DataTypes.STRING, mapKeyValueField.getDataType()); List<StructField> mapStructFields = new ArrayList<>(); mapStructFields.add(mapKeyValueField); return (new StructField(fieldName, DataTypes.createStructType(structSubFields))); case ARRAY: getMappingDataTypeForCollectionRecord(fieldName, childSchema.getElementType()); if (subType != null) { return (new StructField(fieldName, DataTypes.createArrayType(subType))); } else { return null; return (new StructField(fieldName, DataTypes.createStructType(structSubTypes))); case BYTES: int precision = ((LogicalTypes.Decimal) childSchema.getLogicalType()).getPrecision(); int scale = ((LogicalTypes.Decimal) childSchema.getLogicalType()).getScale(); return new StructField(fieldName, DataTypes.createDecimalType(precision, scale)); } else { throw new UnsupportedOperationException(
return DataTypes.createStructType(structSubFields); case ARRAY: getMappingDataTypeForCollectionRecord(fieldName, childSchema.getElementType()); if (subType != null) { return DataTypes.createArrayType(subType); } else { return null; return DataTypes.createStructType(unionFields); case BYTES: int precision = ((LogicalTypes.Decimal) childSchema.getLogicalType()).getPrecision(); int scale = ((LogicalTypes.Decimal) childSchema.getLogicalType()).getScale(); return DataTypes.createDecimalType(precision, scale); } else { throw new UnsupportedOperationException(
MapType mapType = DataTypes.createMapType(DataTypes.STRING, valueType); mapSubFields.add(keyValueField); return new Field(fieldName, mapType, mapSubFields); int precision = ((LogicalTypes.Decimal) childSchema.getLogicalType()).getPrecision(); int scale = ((LogicalTypes.Decimal) childSchema.getLogicalType()).getScale(); return new Field(fieldName, DataTypes.createDecimalType(precision, scale)); } else { throw new UnsupportedOperationException(
/** * Create a new column page for decimal page */ public static ColumnPage newDecimalColumnPage(ColumnPageEncoderMeta meta, byte[] lvEncodedBytes, int actualDataLength) throws MemoryException { TableSpec.ColumnSpec columnSpec = meta.getColumnSpec(); DecimalConverterFactory.DecimalConverter decimalConverter = DecimalConverterFactory.INSTANCE.getDecimalConverter(columnSpec.getPrecision(), columnSpec.getScale()); int size = decimalConverter.getSize(); if (size < 0) { return getLVBytesColumnPage(columnSpec, lvEncodedBytes, DataTypes.createDecimalType(columnSpec.getPrecision(), columnSpec.getScale()), CarbonCommonConstants.INT_SIZE_IN_BYTE, meta.getCompressorName()); } else { // Here the size is always fixed. return getDecimalColumnPage(meta, lvEncodedBytes, size, actualDataLength); } }
String nullFormat, int depth) { DataType dataType = carbonColumn.getDataType(); if (DataTypes.isArrayType(dataType) || DataTypes.isMapType(dataType)) { List<CarbonDimension> listOfChildDimensions = ((CarbonDimension) carbonColumn).getListOfChildDimensions(); } else if (DataTypes.isStructType(dataType)) { List<CarbonDimension> dimensions = ((CarbonDimension) carbonColumn).getListOfChildDimensions();
private Object jsonToCarbonObject(Map<String, Object> jsonNodeMap, CarbonColumn column) { DataType type = column.getDataType(); if (DataTypes.isArrayType(type)) { CarbonDimension carbonDimension = (CarbonDimension) column; ArrayList array = (ArrayList) jsonNodeMap.get(extractChildColumnName(column)); } else if (DataTypes.isStructType(type)) { CarbonDimension carbonDimension = (CarbonDimension) column; int size = carbonDimension.getNumberOfChild();
fields[msr.getOrdinal()] = new StructField(msr.getColumnName(), msr.getMeasure().getDataType()); } else if (DataTypes.isDecimal(dataType)) { fields[msr.getOrdinal()] = new StructField(msr.getColumnName(), DataTypes.createDecimalType(msr.getMeasure().getPrecision(), msr.getMeasure().getScale())); } else {