Skip to content

Commit f1ff963

Browse files
committed
Add builtin types
1 parent e0923e2 commit f1ff963

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed
+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Licensed to the Apache Software Foundation (ASF) under one
2+
// or more contributor license agreements. See the NOTICE file
3+
// distributed with this work for additional information
4+
// regarding copyright ownership. The ASF licenses this file
5+
// to you under the Apache License, Version 2.0 (the
6+
// "License"); you may not use this file except in compliance
7+
// with the License. You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
18+
use crate::types::{LogicalTypeRef, NativeType};
19+
use std::sync::{Arc, LazyLock};
20+
21+
macro_rules! singleton {
22+
($name:ident, $ty:ident) => {
23+
#[doc = concat!("Singleton instance of a logical type representing [`NativeType::", stringify!($ty), "`].")]
24+
pub static $name: LazyLock<LogicalTypeRef> =
25+
LazyLock::new(|| Arc::new(NativeType::$ty));
26+
};
27+
}
28+
29+
singleton!(LOGICAL_NULL, Null);
30+
singleton!(LOGICAL_BOOLEAN, Boolean);
31+
singleton!(LOGICAL_INT8, Int8);
32+
singleton!(LOGICAL_INT16, Int16);
33+
singleton!(LOGICAL_INT32, Int32);
34+
singleton!(LOGICAL_INT64, Int64);
35+
singleton!(LOGICAL_UINT8, UInt8);
36+
singleton!(LOGICAL_UINT16, UInt16);
37+
singleton!(LOGICAL_UINT32, UInt32);
38+
singleton!(LOGICAL_UINT64, UInt64);
39+
singleton!(LOGICAL_FLOAT16, Float16);
40+
singleton!(LOGICAL_FLOAT32, Float32);
41+
singleton!(LOGICAL_FLOAT64, Float64);
42+
singleton!(LOGICAL_DATE, Date);
43+
singleton!(LOGICAL_BINARY, Binary);
44+
singleton!(LOGICAL_STRING, String);

datafusion/common/src/types/mod.rs

+2
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18+
mod builtin;
1819
mod field;
1920
mod logical;
2021
mod native;
2122

23+
pub use builtin::*;
2224
pub use field::*;
2325
pub use logical::*;
2426
pub use native::*;

0 commit comments

Comments
 (0)