1#[derive(Clone, Copy, Debug, PartialEq, Eq)]
17pub enum LogicalTypeId {
18 Null,
19
20 Boolean,
22 Int8,
23 Int16,
24 Int32,
25 Int64,
26 UInt8,
27 UInt16,
28 UInt32,
29 UInt64,
30 Float32,
31 Float64,
32
33 Decimal128,
34
35 String,
37 Binary,
38
39 Date,
43
44 TimestampSecond,
45 TimestampMillisecond,
46 TimestampMicrosecond,
47 TimestampNanosecond,
48 TimeSecond,
50 TimeMillisecond,
51 TimeMicrosecond,
52 TimeNanosecond,
53 DurationSecond,
56 DurationMillisecond,
57 DurationMicrosecond,
58 DurationNanosecond,
59 IntervalYearMonth,
61 IntervalDayTime,
63 IntervalMonthDayNano,
65
66 List,
67 Dictionary,
68 Struct,
69
70 Json,
71
72 Vector,
73}
74
75impl LogicalTypeId {
76 #[cfg(any(test, feature = "test"))]
82 pub fn data_type(&self) -> crate::data_type::ConcreteDataType {
83 use std::sync::Arc;
84
85 use crate::data_type::ConcreteDataType;
86 use crate::types::StructType;
87
88 match self {
89 LogicalTypeId::Null => ConcreteDataType::null_datatype(),
90 LogicalTypeId::Boolean => ConcreteDataType::boolean_datatype(),
91 LogicalTypeId::Int8 => ConcreteDataType::int8_datatype(),
92 LogicalTypeId::Int16 => ConcreteDataType::int16_datatype(),
93 LogicalTypeId::Int32 => ConcreteDataType::int32_datatype(),
94 LogicalTypeId::Int64 => ConcreteDataType::int64_datatype(),
95 LogicalTypeId::UInt8 => ConcreteDataType::uint8_datatype(),
96 LogicalTypeId::UInt16 => ConcreteDataType::uint16_datatype(),
97 LogicalTypeId::UInt32 => ConcreteDataType::uint32_datatype(),
98 LogicalTypeId::UInt64 => ConcreteDataType::uint64_datatype(),
99 LogicalTypeId::Float32 => ConcreteDataType::float32_datatype(),
100 LogicalTypeId::Float64 => ConcreteDataType::float64_datatype(),
101 LogicalTypeId::String => ConcreteDataType::string_datatype(),
102 LogicalTypeId::Binary => ConcreteDataType::binary_datatype(),
103 LogicalTypeId::Date => ConcreteDataType::date_datatype(),
104 LogicalTypeId::TimestampSecond => ConcreteDataType::timestamp_second_datatype(),
105 LogicalTypeId::TimestampMillisecond => {
106 ConcreteDataType::timestamp_millisecond_datatype()
107 }
108 LogicalTypeId::TimestampMicrosecond => {
109 ConcreteDataType::timestamp_microsecond_datatype()
110 }
111 LogicalTypeId::TimestampNanosecond => ConcreteDataType::timestamp_nanosecond_datatype(),
112 LogicalTypeId::List => {
113 ConcreteDataType::list_datatype(Arc::new(ConcreteDataType::null_datatype()))
114 }
115 LogicalTypeId::Struct => {
116 ConcreteDataType::struct_datatype(StructType::new(Arc::new(vec![])))
117 }
118 LogicalTypeId::Dictionary => ConcreteDataType::dictionary_datatype(
119 ConcreteDataType::null_datatype(),
120 ConcreteDataType::null_datatype(),
121 ),
122 LogicalTypeId::TimeSecond => ConcreteDataType::time_second_datatype(),
123 LogicalTypeId::TimeMillisecond => ConcreteDataType::time_millisecond_datatype(),
124 LogicalTypeId::TimeMicrosecond => ConcreteDataType::time_microsecond_datatype(),
125 LogicalTypeId::TimeNanosecond => ConcreteDataType::time_nanosecond_datatype(),
126 LogicalTypeId::IntervalYearMonth => ConcreteDataType::interval_year_month_datatype(),
127 LogicalTypeId::IntervalDayTime => ConcreteDataType::interval_day_time_datatype(),
128 LogicalTypeId::IntervalMonthDayNano => {
129 ConcreteDataType::interval_month_day_nano_datatype()
130 }
131 LogicalTypeId::DurationSecond => ConcreteDataType::duration_second_datatype(),
132 LogicalTypeId::DurationMillisecond => ConcreteDataType::duration_millisecond_datatype(),
133 LogicalTypeId::DurationMicrosecond => ConcreteDataType::duration_microsecond_datatype(),
134 LogicalTypeId::DurationNanosecond => ConcreteDataType::duration_nanosecond_datatype(),
135 LogicalTypeId::Decimal128 => ConcreteDataType::decimal128_default_datatype(),
136 LogicalTypeId::Json => ConcreteDataType::json_datatype(),
137 LogicalTypeId::Vector => ConcreteDataType::vector_default_datatype(),
138 }
139 }
140}