in parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java [968:1072]
private static SortOrder sortOrder(PrimitiveType primitive) {
LogicalTypeAnnotation annotation = primitive.getLogicalTypeAnnotation();
if (annotation != null) {
return annotation
.accept(new LogicalTypeAnnotation.LogicalTypeAnnotationVisitor<SortOrder>() {
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.IntLogicalTypeAnnotation intLogicalType) {
return intLogicalType.isSigned() ? of(SortOrder.SIGNED) : of(SortOrder.UNSIGNED);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.IntervalLogicalTypeAnnotation intervalLogicalType) {
return of(SortOrder.UNKNOWN);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.DateLogicalTypeAnnotation dateLogicalType) {
return of(SortOrder.SIGNED);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.EnumLogicalTypeAnnotation enumLogicalType) {
return of(SortOrder.UNSIGNED);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.BsonLogicalTypeAnnotation bsonLogicalType) {
return of(SortOrder.UNSIGNED);
}
@Override
public Optional<SortOrder> visit(UUIDLogicalTypeAnnotation uuidLogicalType) {
return of(SortOrder.UNSIGNED);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.JsonLogicalTypeAnnotation jsonLogicalType) {
return of(SortOrder.UNSIGNED);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.StringLogicalTypeAnnotation stringLogicalType) {
return of(SortOrder.UNSIGNED);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.Float16LogicalTypeAnnotation float16LogicalType) {
return of(SortOrder.SIGNED);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.UnknownLogicalTypeAnnotation unknownLogicalTypeAnnotation) {
return of(SortOrder.UNKNOWN);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.DecimalLogicalTypeAnnotation decimalLogicalType) {
return of(SortOrder.UNKNOWN);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.MapKeyValueTypeAnnotation mapKeyValueLogicalType) {
return of(SortOrder.UNKNOWN);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.MapLogicalTypeAnnotation mapLogicalType) {
return of(SortOrder.UNKNOWN);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.ListLogicalTypeAnnotation listLogicalType) {
return of(SortOrder.UNKNOWN);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.TimeLogicalTypeAnnotation timeLogicalType) {
return of(SortOrder.SIGNED);
}
@Override
public Optional<SortOrder> visit(
LogicalTypeAnnotation.TimestampLogicalTypeAnnotation timestampLogicalType) {
return of(SortOrder.SIGNED);
}
})
.orElse(defaultSortOrder(primitive.getPrimitiveTypeName()));
}
return defaultSortOrder(primitive.getPrimitiveTypeName());
}