/** * Extract the data type stored in Pinot for the given Avro field. */ public static FieldSpec.DataType extractFieldDataType(Field field) { try { org.apache.avro.Schema fieldSchema = extractSupportedSchema(field.schema()); org.apache.avro.Schema.Type fieldType = fieldSchema.getType(); if (fieldType == org.apache.avro.Schema.Type.ARRAY) { return FieldSpec.DataType.valueOf(extractSupportedSchema(fieldSchema.getElementType()).getType()); } else { return FieldSpec.DataType.valueOf(fieldType); } } catch (Exception e) { throw new RuntimeException("Caught exception while extracting data type from field: " + field.name(), e); } }
public static DataType getColumnType(Field field) { org.apache.avro.Schema fieldSchema = field.schema(); fieldSchema = extractSchemaFromUnionIfNeeded(fieldSchema); final Type type = fieldSchema.getType(); if (type == Type.ARRAY) { org.apache.avro.Schema elementSchema = extractSchemaFromUnionIfNeeded(fieldSchema.getElementType()); if (elementSchema.getType() == Type.RECORD) { if (elementSchema.getFields().size() == 1) { elementSchema = elementSchema.getFields().get(0).schema(); } else { throw new RuntimeException("More than one schema in Multi-value column!"); } elementSchema = extractSchemaFromUnionIfNeeded(elementSchema); } return DataType.valueOf(elementSchema.getType()); } else { return DataType.valueOf(type); } }
public static DataType getColumnType(Field field) { org.apache.avro.Schema fieldSchema = field.schema(); fieldSchema = extractSchemaFromUnionIfNeeded(fieldSchema); final Type type = fieldSchema.getType(); if (type == Type.ARRAY) { org.apache.avro.Schema elementSchema = extractSchemaFromUnionIfNeeded(fieldSchema.getElementType()); if (elementSchema.getType() == Type.RECORD) { if (elementSchema.getFields().size() == 1) { elementSchema = elementSchema.getFields().get(0).schema(); } else { throw new RuntimeException("More than one schema in Multi-value column!"); } elementSchema = extractSchemaFromUnionIfNeeded(elementSchema); } return DataType.valueOf(elementSchema.getType()); } else { return DataType.valueOf(type); } }
builder.setTotalRawDocs(config.getInt(getKeyFor(column, TOTAL_RAW_DOCS), totalDocs)); builder.setTotalAggDocs(config.getInt(getKeyFor(column, TOTAL_AGG_DOCS), 0)); DataType dataType = DataType.valueOf(config.getString(getKeyFor(column, DATA_TYPE)).toUpperCase()); builder.setDataType(dataType); builder.setBitsPerElement(config.getInt(getKeyFor(column, BITS_PER_ELEMENT)));
/** * Test all {@link FieldSpec.DataType}. */ @Test public void testDataType() { Assert.assertEquals(INT.getStoredType(), INT); Assert.assertEquals(LONG.getStoredType(), LONG); Assert.assertEquals(FLOAT.getStoredType(), FLOAT); Assert.assertEquals(DOUBLE.getStoredType(), DOUBLE); Assert.assertEquals(BOOLEAN.getStoredType(), STRING); Assert.assertEquals(STRING.getStoredType(), STRING); Assert.assertEquals(BYTES.getStoredType(), BYTES); Assert.assertEquals(INT.size(), Integer.BYTES); Assert.assertEquals(LONG.size(), Long.BYTES); Assert.assertEquals(FLOAT.size(), Float.BYTES); Assert.assertEquals(DOUBLE.size(), Double.BYTES); Assert.assertEquals(FieldSpec.DataType.valueOf(Schema.Type.INT), INT); Assert.assertEquals(FieldSpec.DataType.valueOf(Schema.Type.LONG), LONG); Assert.assertEquals(FieldSpec.DataType.valueOf(Schema.Type.FLOAT), FLOAT); Assert.assertEquals(FieldSpec.DataType.valueOf(Schema.Type.DOUBLE), DOUBLE); Assert.assertEquals(FieldSpec.DataType.valueOf(Schema.Type.BOOLEAN), STRING); Assert.assertEquals(FieldSpec.DataType.valueOf(Schema.Type.STRING), STRING); Assert.assertEquals(FieldSpec.DataType.valueOf(Schema.Type.ENUM), STRING); Assert.assertEquals(FieldSpec.DataType.valueOf(Schema.Type.BYTES), BYTES); }