in parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java [903:980]
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.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());
}