blob: 888d6c94c8182ddfc97dd9eaf3cde8a068c988bc [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# substrait::{ExtensionTypeVariation, ExtensionType}s
# for wrapping types which appear in the arrow type system but
# are not first-class in substrait. These include:
# - null
# - unsigned integers
# - half-precision floating point numbers
# - 32-bit times and 64-bit dates
# - timestamps with units other than microseconds
# - timestamps with timezones other than UTC
# - 256-bit decimals
# - sparse and dense unions
# - dictionary encoded types
# - durations
# - string and binary with 64 bit offsets
# - list with 64-bit offsets
# - interval<months: i32>
# - interval<days: i32, millis: i32>
# - interval<months: i32, days: i32, nanos: i64>
# - arrow::ExtensionTypes
#
# Note that not all of these are currently implemented. In particular, these
# extension types are currently not parameterizable in Substrait, which means
# among other things that we can't declare dictionary type here at all since
# we'd have to declare a different dictionary type for all encoded types
# (but that is an infinite space). Similarly, we would have to declare a
# timestamp variation for all possible timezone strings.
type_variations:
- parent: i8
name: u8
description: an unsigned 8 bit integer
functions: SEPARATE
- parent: i16
name: u16
description: an unsigned 16 bit integer
functions: SEPARATE
- parent: i32
name: u32
description: an unsigned 32 bit integer
functions: SEPARATE
- parent: i64
name: u64
description: an unsigned 64 bit integer
functions: SEPARATE
- parent: i16
name: fp16
description: a 16 bit floating point number
functions: SEPARATE
types:
- name: "null"
structure: {}
- name: interval_month
structure:
months: i32
- name: interval_day_milli
structure:
days: i32
millis: i32
- name: interval_month_day_nano
structure:
months: i32
days: i32
nanos: i64