@@ -33,21 +33,34 @@ private SparkTypes() {}
33
33
* Convert a STRUCT Vortex type to a Spark {@link DataType}.
34
34
*/
35
35
public static DataType toDataType (DType dType ) {
36
- return switch (dType .getVariant ()) {
37
- case NULL -> DataTypes .NullType ;
38
- case BOOL -> DataTypes .BooleanType ;
39
- case PRIMITIVE_U8 , PRIMITIVE_I8 -> DataTypes .ByteType ;
40
- case PRIMITIVE_U16 , PRIMITIVE_I16 -> DataTypes .ShortType ;
41
- case PRIMITIVE_U32 , PRIMITIVE_I32 -> DataTypes .IntegerType ;
42
- case PRIMITIVE_U64 , PRIMITIVE_I64 -> DataTypes .LongType ;
43
- case PRIMITIVE_F16 -> {
36
+ switch (dType .getVariant ()) {
37
+ case NULL :
38
+ return DataTypes .NullType ;
39
+ case BOOL :
40
+ return DataTypes .BooleanType ;
41
+ case PRIMITIVE_U8 :
42
+ case PRIMITIVE_I8 :
43
+ return DataTypes .ByteType ;
44
+ case PRIMITIVE_U16 :
45
+ case PRIMITIVE_I16 :
46
+ return DataTypes .ShortType ;
47
+ case PRIMITIVE_U32 :
48
+ case PRIMITIVE_I32 :
49
+ return DataTypes .IntegerType ;
50
+ case PRIMITIVE_U64 :
51
+ case PRIMITIVE_I64 :
52
+ return DataTypes .LongType ;
53
+ case PRIMITIVE_F16 :
44
54
throw new IllegalArgumentException ("Spark does not support f16" );
45
- }
46
- case PRIMITIVE_F32 -> DataTypes .FloatType ;
47
- case PRIMITIVE_F64 -> DataTypes .DoubleType ;
48
- case UTF8 -> DataTypes .StringType ;
49
- case BINARY -> DataTypes .BinaryType ;
50
- case STRUCT -> {
55
+ case PRIMITIVE_F32 :
56
+ return DataTypes .FloatType ;
57
+ case PRIMITIVE_F64 :
58
+ return DataTypes .DoubleType ;
59
+ case UTF8 :
60
+ return DataTypes .StringType ;
61
+ case BINARY :
62
+ return DataTypes .BinaryType ;
63
+ case STRUCT :
51
64
// For each of the inner struct fields, we capture them together here.
52
65
var struct = new StructType ();
53
66
@@ -58,10 +71,10 @@ public static DataType toDataType(DType dType) {
58
71
dType .getFieldNames ().stream (),
59
72
dType .getFieldTypes ().stream (),
60
73
(name , type ) -> struct .add (name , toDataType (type )));
61
- yield struct ;
62
- }
63
- case LIST -> DataTypes .createArrayType (toDataType (dType .getElementType ()), dType .isNullable ());
64
- case EXTENSION -> {
74
+ return struct ;
75
+ case LIST :
76
+ return DataTypes .createArrayType (toDataType (dType .getElementType ()), dType .isNullable ());
77
+ case EXTENSION :
65
78
/*
66
79
* Spark does not have a direct equivalent for many of the temporal types we support in Vortex or Arrow.
67
80
* Notably, there is no DATE type, and timestamps can have at most µs-level precision.
@@ -79,13 +92,14 @@ public static DataType toDataType(DType dType) {
79
92
}
80
93
81
94
if (dType .isDate () || dType .isTimestamp ()) {
82
- yield TimestampType$ .MODULE$ ;
95
+ return TimestampType$ .MODULE$ ;
83
96
}
84
97
85
98
// TODO(aduffy): temporal types
86
99
throw new IllegalArgumentException ("Unsupported non-temporal extension type" );
87
- }
88
- };
100
+ default :
101
+ throw new IllegalArgumentException ("unreachable" );
102
+ }
89
103
}
90
104
91
105
/**
0 commit comments