// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: substrait/type.proto

#include "substrait/type.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>

PROTOBUF_PRAGMA_INIT_SEG
namespace substrait {
constexpr Type_Boolean::Type_Boolean(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_BooleanDefaultTypeInternal {
  constexpr Type_BooleanDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_BooleanDefaultTypeInternal() {}
  union {
    Type_Boolean _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_BooleanDefaultTypeInternal _Type_Boolean_default_instance_;
constexpr Type_I8::Type_I8(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_I8DefaultTypeInternal {
  constexpr Type_I8DefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_I8DefaultTypeInternal() {}
  union {
    Type_I8 _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_I8DefaultTypeInternal _Type_I8_default_instance_;
constexpr Type_I16::Type_I16(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_I16DefaultTypeInternal {
  constexpr Type_I16DefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_I16DefaultTypeInternal() {}
  union {
    Type_I16 _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_I16DefaultTypeInternal _Type_I16_default_instance_;
constexpr Type_I32::Type_I32(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_I32DefaultTypeInternal {
  constexpr Type_I32DefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_I32DefaultTypeInternal() {}
  union {
    Type_I32 _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_I32DefaultTypeInternal _Type_I32_default_instance_;
constexpr Type_I64::Type_I64(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_I64DefaultTypeInternal {
  constexpr Type_I64DefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_I64DefaultTypeInternal() {}
  union {
    Type_I64 _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_I64DefaultTypeInternal _Type_I64_default_instance_;
constexpr Type_FP32::Type_FP32(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_FP32DefaultTypeInternal {
  constexpr Type_FP32DefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_FP32DefaultTypeInternal() {}
  union {
    Type_FP32 _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_FP32DefaultTypeInternal _Type_FP32_default_instance_;
constexpr Type_FP64::Type_FP64(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_FP64DefaultTypeInternal {
  constexpr Type_FP64DefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_FP64DefaultTypeInternal() {}
  union {
    Type_FP64 _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_FP64DefaultTypeInternal _Type_FP64_default_instance_;
constexpr Type_String::Type_String(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_StringDefaultTypeInternal {
  constexpr Type_StringDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_StringDefaultTypeInternal() {}
  union {
    Type_String _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_StringDefaultTypeInternal _Type_String_default_instance_;
constexpr Type_Binary::Type_Binary(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_BinaryDefaultTypeInternal {
  constexpr Type_BinaryDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_BinaryDefaultTypeInternal() {}
  union {
    Type_Binary _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_BinaryDefaultTypeInternal _Type_Binary_default_instance_;
constexpr Type_Timestamp::Type_Timestamp(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_TimestampDefaultTypeInternal {
  constexpr Type_TimestampDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_TimestampDefaultTypeInternal() {}
  union {
    Type_Timestamp _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_TimestampDefaultTypeInternal _Type_Timestamp_default_instance_;
constexpr Type_Date::Type_Date(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_DateDefaultTypeInternal {
  constexpr Type_DateDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_DateDefaultTypeInternal() {}
  union {
    Type_Date _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_DateDefaultTypeInternal _Type_Date_default_instance_;
constexpr Type_Time::Type_Time(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_TimeDefaultTypeInternal {
  constexpr Type_TimeDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_TimeDefaultTypeInternal() {}
  union {
    Type_Time _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_TimeDefaultTypeInternal _Type_Time_default_instance_;
constexpr Type_TimestampTZ::Type_TimestampTZ(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_TimestampTZDefaultTypeInternal {
  constexpr Type_TimestampTZDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_TimestampTZDefaultTypeInternal() {}
  union {
    Type_TimestampTZ _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_TimestampTZDefaultTypeInternal _Type_TimestampTZ_default_instance_;
constexpr Type_IntervalYear::Type_IntervalYear(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_IntervalYearDefaultTypeInternal {
  constexpr Type_IntervalYearDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_IntervalYearDefaultTypeInternal() {}
  union {
    Type_IntervalYear _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_IntervalYearDefaultTypeInternal _Type_IntervalYear_default_instance_;
constexpr Type_IntervalDay::Type_IntervalDay(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_IntervalDayDefaultTypeInternal {
  constexpr Type_IntervalDayDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_IntervalDayDefaultTypeInternal() {}
  union {
    Type_IntervalDay _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_IntervalDayDefaultTypeInternal _Type_IntervalDay_default_instance_;
constexpr Type_UUID::Type_UUID(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_UUIDDefaultTypeInternal {
  constexpr Type_UUIDDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_UUIDDefaultTypeInternal() {}
  union {
    Type_UUID _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_UUIDDefaultTypeInternal _Type_UUID_default_instance_;
constexpr Type_FixedChar::Type_FixedChar(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : length_(0)
  , type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_FixedCharDefaultTypeInternal {
  constexpr Type_FixedCharDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_FixedCharDefaultTypeInternal() {}
  union {
    Type_FixedChar _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_FixedCharDefaultTypeInternal _Type_FixedChar_default_instance_;
constexpr Type_VarChar::Type_VarChar(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : length_(0)
  , type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_VarCharDefaultTypeInternal {
  constexpr Type_VarCharDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_VarCharDefaultTypeInternal() {}
  union {
    Type_VarChar _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_VarCharDefaultTypeInternal _Type_VarChar_default_instance_;
constexpr Type_FixedBinary::Type_FixedBinary(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : length_(0)
  , type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_FixedBinaryDefaultTypeInternal {
  constexpr Type_FixedBinaryDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_FixedBinaryDefaultTypeInternal() {}
  union {
    Type_FixedBinary _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_FixedBinaryDefaultTypeInternal _Type_FixedBinary_default_instance_;
constexpr Type_Decimal::Type_Decimal(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : scale_(0)
  , precision_(0)
  , type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_DecimalDefaultTypeInternal {
  constexpr Type_DecimalDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_DecimalDefaultTypeInternal() {}
  union {
    Type_Decimal _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_DecimalDefaultTypeInternal _Type_Decimal_default_instance_;
constexpr Type_Struct::Type_Struct(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : types_()
  , type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_StructDefaultTypeInternal {
  constexpr Type_StructDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_StructDefaultTypeInternal() {}
  union {
    Type_Struct _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_StructDefaultTypeInternal _Type_Struct_default_instance_;
constexpr Type_List::Type_List(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_(nullptr)
  , type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_ListDefaultTypeInternal {
  constexpr Type_ListDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_ListDefaultTypeInternal() {}
  union {
    Type_List _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_ListDefaultTypeInternal _Type_List_default_instance_;
constexpr Type_Map::Type_Map(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : key_(nullptr)
  , value_(nullptr)
  , type_variation_reference_(0u)
  , nullability_(0)
{}
struct Type_MapDefaultTypeInternal {
  constexpr Type_MapDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Type_MapDefaultTypeInternal() {}
  union {
    Type_Map _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Type_MapDefaultTypeInternal _Type_Map_default_instance_;
constexpr Type::Type(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : _oneof_case_{}{}
struct TypeDefaultTypeInternal {
  constexpr TypeDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~TypeDefaultTypeInternal() {}
  union {
    Type _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT TypeDefaultTypeInternal _Type_default_instance_;
constexpr NamedStruct::NamedStruct(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : names_()
  , struct__(nullptr){}
struct NamedStructDefaultTypeInternal {
  constexpr NamedStructDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~NamedStructDefaultTypeInternal() {}
  union {
    NamedStruct _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT NamedStructDefaultTypeInternal _NamedStruct_default_instance_;
}  // namespace substrait
static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_substrait_2ftype_2eproto[25];
static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_substrait_2ftype_2eproto[1];
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_substrait_2ftype_2eproto = nullptr;

const uint32_t TableStruct_substrait_2ftype_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Boolean, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Boolean, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Boolean, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I8, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I8, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I8, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I16, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I16, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I16, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I32, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I32, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I32, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I64, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I64, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_I64, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FP32, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FP32, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FP32, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FP64, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FP64, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FP64, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_String, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_String, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_String, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Binary, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Binary, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Binary, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Timestamp, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Timestamp, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Timestamp, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Date, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Date, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Date, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Time, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Time, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Time, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_TimestampTZ, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_TimestampTZ, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_TimestampTZ, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_IntervalYear, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_IntervalYear, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_IntervalYear, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_IntervalDay, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_IntervalDay, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_IntervalDay, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_UUID, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_UUID, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_UUID, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FixedChar, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FixedChar, length_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FixedChar, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FixedChar, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_VarChar, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_VarChar, length_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_VarChar, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_VarChar, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FixedBinary, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FixedBinary, length_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FixedBinary, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_FixedBinary, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Decimal, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Decimal, scale_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Decimal, precision_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Decimal, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Decimal, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Struct, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Struct, types_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Struct, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Struct, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_List, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_List, type_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_List, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_List, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Map, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Map, key_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Map, value_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Map, type_variation_reference_),
  PROTOBUF_FIELD_OFFSET(::substrait::Type_Map, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::Type, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::substrait::Type, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  PROTOBUF_FIELD_OFFSET(::substrait::Type, kind_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::NamedStruct, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::NamedStruct, names_),
  PROTOBUF_FIELD_OFFSET(::substrait::NamedStruct, struct__),
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, -1, sizeof(::substrait::Type_Boolean)},
  { 8, -1, -1, sizeof(::substrait::Type_I8)},
  { 16, -1, -1, sizeof(::substrait::Type_I16)},
  { 24, -1, -1, sizeof(::substrait::Type_I32)},
  { 32, -1, -1, sizeof(::substrait::Type_I64)},
  { 40, -1, -1, sizeof(::substrait::Type_FP32)},
  { 48, -1, -1, sizeof(::substrait::Type_FP64)},
  { 56, -1, -1, sizeof(::substrait::Type_String)},
  { 64, -1, -1, sizeof(::substrait::Type_Binary)},
  { 72, -1, -1, sizeof(::substrait::Type_Timestamp)},
  { 80, -1, -1, sizeof(::substrait::Type_Date)},
  { 88, -1, -1, sizeof(::substrait::Type_Time)},
  { 96, -1, -1, sizeof(::substrait::Type_TimestampTZ)},
  { 104, -1, -1, sizeof(::substrait::Type_IntervalYear)},
  { 112, -1, -1, sizeof(::substrait::Type_IntervalDay)},
  { 120, -1, -1, sizeof(::substrait::Type_UUID)},
  { 128, -1, -1, sizeof(::substrait::Type_FixedChar)},
  { 137, -1, -1, sizeof(::substrait::Type_VarChar)},
  { 146, -1, -1, sizeof(::substrait::Type_FixedBinary)},
  { 155, -1, -1, sizeof(::substrait::Type_Decimal)},
  { 165, -1, -1, sizeof(::substrait::Type_Struct)},
  { 174, -1, -1, sizeof(::substrait::Type_List)},
  { 183, -1, -1, sizeof(::substrait::Type_Map)},
  { 193, -1, -1, sizeof(::substrait::Type)},
  { 224, -1, -1, sizeof(::substrait::NamedStruct)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_Boolean_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_I8_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_I16_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_I32_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_I64_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_FP32_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_FP64_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_String_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_Binary_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_Timestamp_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_Date_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_Time_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_TimestampTZ_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_IntervalYear_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_IntervalDay_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_UUID_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_FixedChar_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_VarChar_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_FixedBinary_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_Decimal_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_Struct_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_List_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_Map_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_Type_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_NamedStruct_default_instance_),
};

const char descriptor_table_protodef_substrait_2ftype_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\024substrait/type.proto\022\tsubstrait\"\231$\n\004Ty"
  "pe\022-\n\004bool\030\001 \001(\0132\027.substrait.Type.Boolea"
  "nH\000R\004bool\022$\n\002i8\030\002 \001(\0132\022.substrait.Type.I"
  "8H\000R\002i8\022\'\n\003i16\030\003 \001(\0132\023.substrait.Type.I1"
  "6H\000R\003i16\022\'\n\003i32\030\005 \001(\0132\023.substrait.Type.I"
  "32H\000R\003i32\022\'\n\003i64\030\007 \001(\0132\023.substrait.Type."
  "I64H\000R\003i64\022*\n\004fp32\030\n \001(\0132\024.substrait.Typ"
  "e.FP32H\000R\004fp32\022*\n\004fp64\030\013 \001(\0132\024.substrait"
  ".Type.FP64H\000R\004fp64\0220\n\006string\030\014 \001(\0132\026.sub"
  "strait.Type.StringH\000R\006string\0220\n\006binary\030\r"
  " \001(\0132\026.substrait.Type.BinaryH\000R\006binary\0229"
  "\n\ttimestamp\030\016 \001(\0132\031.substrait.Type.Times"
  "tampH\000R\ttimestamp\022*\n\004date\030\020 \001(\0132\024.substr"
  "ait.Type.DateH\000R\004date\022*\n\004time\030\021 \001(\0132\024.su"
  "bstrait.Type.TimeH\000R\004time\022C\n\rinterval_ye"
  "ar\030\023 \001(\0132\034.substrait.Type.IntervalYearH\000"
  "R\014intervalYear\022@\n\014interval_day\030\024 \001(\0132\033.s"
  "ubstrait.Type.IntervalDayH\000R\013intervalDay"
  "\022@\n\014timestamp_tz\030\035 \001(\0132\033.substrait.Type."
  "TimestampTZH\000R\013timestampTz\022*\n\004uuid\030  \001(\013"
  "2\024.substrait.Type.UUIDH\000R\004uuid\022:\n\nfixed_"
  "char\030\025 \001(\0132\031.substrait.Type.FixedCharH\000R"
  "\tfixedChar\0223\n\007varchar\030\026 \001(\0132\027.substrait."
  "Type.VarCharH\000R\007varchar\022@\n\014fixed_binary\030"
  "\027 \001(\0132\033.substrait.Type.FixedBinaryH\000R\013fi"
  "xedBinary\0223\n\007decimal\030\030 \001(\0132\027.substrait.T"
  "ype.DecimalH\000R\007decimal\0220\n\006struct\030\031 \001(\0132\026"
  ".substrait.Type.StructH\000R\006struct\022*\n\004list"
  "\030\033 \001(\0132\024.substrait.Type.ListH\000R\004list\022\'\n\003"
  "map\030\034 \001(\0132\023.substrait.Type.MapH\000R\003map\022\?\n"
  "\033user_defined_type_reference\030\037 \001(\rH\000R\030us"
  "erDefinedTypeReference\032\202\001\n\007Boolean\0228\n\030ty"
  "pe_variation_reference\030\001 \001(\rR\026typeVariat"
  "ionReference\022=\n\013nullability\030\002 \001(\0162\033.subs"
  "trait.Type.NullabilityR\013nullability\032}\n\002I"
  "8\0228\n\030type_variation_reference\030\001 \001(\rR\026typ"
  "eVariationReference\022=\n\013nullability\030\002 \001(\016"
  "2\033.substrait.Type.NullabilityR\013nullabili"
  "ty\032~\n\003I16\0228\n\030type_variation_reference\030\001 "
  "\001(\rR\026typeVariationReference\022=\n\013nullabili"
  "ty\030\002 \001(\0162\033.substrait.Type.NullabilityR\013n"
  "ullability\032~\n\003I32\0228\n\030type_variation_refe"
  "rence\030\001 \001(\rR\026typeVariationReference\022=\n\013n"
  "ullability\030\002 \001(\0162\033.substrait.Type.Nullab"
  "ilityR\013nullability\032~\n\003I64\0228\n\030type_variat"
  "ion_reference\030\001 \001(\rR\026typeVariationRefere"
  "nce\022=\n\013nullability\030\002 \001(\0162\033.substrait.Typ"
  "e.NullabilityR\013nullability\032\177\n\004FP32\0228\n\030ty"
  "pe_variation_reference\030\001 \001(\rR\026typeVariat"
  "ionReference\022=\n\013nullability\030\002 \001(\0162\033.subs"
  "trait.Type.NullabilityR\013nullability\032\177\n\004F"
  "P64\0228\n\030type_variation_reference\030\001 \001(\rR\026t"
  "ypeVariationReference\022=\n\013nullability\030\002 \001"
  "(\0162\033.substrait.Type.NullabilityR\013nullabi"
  "lity\032\201\001\n\006String\0228\n\030type_variation_refere"
  "nce\030\001 \001(\rR\026typeVariationReference\022=\n\013nul"
  "lability\030\002 \001(\0162\033.substrait.Type.Nullabil"
  "ityR\013nullability\032\201\001\n\006Binary\0228\n\030type_vari"
  "ation_reference\030\001 \001(\rR\026typeVariationRefe"
  "rence\022=\n\013nullability\030\002 \001(\0162\033.substrait.T"
  "ype.NullabilityR\013nullability\032\204\001\n\tTimesta"
  "mp\0228\n\030type_variation_reference\030\001 \001(\rR\026ty"
  "peVariationReference\022=\n\013nullability\030\002 \001("
  "\0162\033.substrait.Type.NullabilityR\013nullabil"
  "ity\032\177\n\004Date\0228\n\030type_variation_reference\030"
  "\001 \001(\rR\026typeVariationReference\022=\n\013nullabi"
  "lity\030\002 \001(\0162\033.substrait.Type.NullabilityR"
  "\013nullability\032\177\n\004Time\0228\n\030type_variation_r"
  "eference\030\001 \001(\rR\026typeVariationReference\022="
  "\n\013nullability\030\002 \001(\0162\033.substrait.Type.Nul"
  "labilityR\013nullability\032\206\001\n\013TimestampTZ\0228\n"
  "\030type_variation_reference\030\001 \001(\rR\026typeVar"
  "iationReference\022=\n\013nullability\030\002 \001(\0162\033.s"
  "ubstrait.Type.NullabilityR\013nullability\032\207"
  "\001\n\014IntervalYear\0228\n\030type_variation_refere"
  "nce\030\001 \001(\rR\026typeVariationReference\022=\n\013nul"
  "lability\030\002 \001(\0162\033.substrait.Type.Nullabil"
  "ityR\013nullability\032\206\001\n\013IntervalDay\0228\n\030type"
  "_variation_reference\030\001 \001(\rR\026typeVariatio"
  "nReference\022=\n\013nullability\030\002 \001(\0162\033.substr"
  "ait.Type.NullabilityR\013nullability\032\177\n\004UUI"
  "D\0228\n\030type_variation_reference\030\001 \001(\rR\026typ"
  "eVariationReference\022=\n\013nullability\030\002 \001(\016"
  "2\033.substrait.Type.NullabilityR\013nullabili"
  "ty\032\234\001\n\tFixedChar\022\026\n\006length\030\001 \001(\005R\006length"
  "\0228\n\030type_variation_reference\030\002 \001(\rR\026type"
  "VariationReference\022=\n\013nullability\030\003 \001(\0162"
  "\033.substrait.Type.NullabilityR\013nullabilit"
  "y\032\232\001\n\007VarChar\022\026\n\006length\030\001 \001(\005R\006length\0228\n"
  "\030type_variation_reference\030\002 \001(\rR\026typeVar"
  "iationReference\022=\n\013nullability\030\003 \001(\0162\033.s"
  "ubstrait.Type.NullabilityR\013nullability\032\236"
  "\001\n\013FixedBinary\022\026\n\006length\030\001 \001(\005R\006length\0228"
  "\n\030type_variation_reference\030\002 \001(\rR\026typeVa"
  "riationReference\022=\n\013nullability\030\003 \001(\0162\033."
  "substrait.Type.NullabilityR\013nullability\032"
  "\266\001\n\007Decimal\022\024\n\005scale\030\001 \001(\005R\005scale\022\034\n\tpre"
  "cision\030\002 \001(\005R\tprecision\0228\n\030type_variatio"
  "n_reference\030\003 \001(\rR\026typeVariationReferenc"
  "e\022=\n\013nullability\030\004 \001(\0162\033.substrait.Type."
  "NullabilityR\013nullability\032\250\001\n\006Struct\022%\n\005t"
  "ypes\030\001 \003(\0132\017.substrait.TypeR\005types\0228\n\030ty"
  "pe_variation_reference\030\002 \001(\rR\026typeVariat"
  "ionReference\022=\n\013nullability\030\003 \001(\0162\033.subs"
  "trait.Type.NullabilityR\013nullability\032\244\001\n\004"
  "List\022#\n\004type\030\001 \001(\0132\017.substrait.TypeR\004typ"
  "e\0228\n\030type_variation_reference\030\002 \001(\rR\026typ"
  "eVariationReference\022=\n\013nullability\030\003 \001(\016"
  "2\033.substrait.Type.NullabilityR\013nullabili"
  "ty\032\310\001\n\003Map\022!\n\003key\030\001 \001(\0132\017.substrait.Type"
  "R\003key\022%\n\005value\030\002 \001(\0132\017.substrait.TypeR\005v"
  "alue\0228\n\030type_variation_reference\030\003 \001(\rR\026"
  "typeVariationReference\022=\n\013nullability\030\004 "
  "\001(\0162\033.substrait.Type.NullabilityR\013nullab"
  "ility\"^\n\013Nullability\022\033\n\027NULLABILITY_UNSP"
  "ECIFIED\020\000\022\030\n\024NULLABILITY_NULLABLE\020\001\022\030\n\024N"
  "ULLABILITY_REQUIRED\020\002B\006\n\004kind\"S\n\013NamedSt"
  "ruct\022\024\n\005names\030\001 \003(\tR\005names\022.\n\006struct\030\002 \001"
  "(\0132\026.substrait.Type.StructR\006structB+\n\022io"
  ".substrait.protoP\001\252\002\022Substrait.Protobufb"
  "\006proto3"
  ;
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_substrait_2ftype_2eproto_once;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_substrait_2ftype_2eproto = {
  false, false, 4807, descriptor_table_protodef_substrait_2ftype_2eproto, "substrait/type.proto", 
  &descriptor_table_substrait_2ftype_2eproto_once, nullptr, 0, 25,
  schemas, file_default_instances, TableStruct_substrait_2ftype_2eproto::offsets,
  file_level_metadata_substrait_2ftype_2eproto, file_level_enum_descriptors_substrait_2ftype_2eproto, file_level_service_descriptors_substrait_2ftype_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* descriptor_table_substrait_2ftype_2eproto_getter() {
  return &descriptor_table_substrait_2ftype_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_substrait_2ftype_2eproto(&descriptor_table_substrait_2ftype_2eproto);
namespace substrait {
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Type_Nullability_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_substrait_2ftype_2eproto);
  return file_level_enum_descriptors_substrait_2ftype_2eproto[0];
}
bool Type_Nullability_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr Type_Nullability Type::NULLABILITY_UNSPECIFIED;
constexpr Type_Nullability Type::NULLABILITY_NULLABLE;
constexpr Type_Nullability Type::NULLABILITY_REQUIRED;
constexpr Type_Nullability Type::Nullability_MIN;
constexpr Type_Nullability Type::Nullability_MAX;
constexpr int Type::Nullability_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

// ===================================================================

class Type_Boolean::_Internal {
 public:
};

Type_Boolean::Type_Boolean(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.Boolean)
}
Type_Boolean::Type_Boolean(const Type_Boolean& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.Boolean)
}

inline void Type_Boolean::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_Boolean::~Type_Boolean() {
  // @@protoc_insertion_point(destructor:substrait.Type.Boolean)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_Boolean::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_Boolean::ArenaDtor(void* object) {
  Type_Boolean* _this = reinterpret_cast< Type_Boolean* >(object);
  (void)_this;
}
void Type_Boolean::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_Boolean::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_Boolean::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.Boolean)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_Boolean::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_Boolean::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.Boolean)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.Boolean)
  return target;
}

size_t Type_Boolean::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.Boolean)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_Boolean::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_Boolean::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_Boolean::GetClassData() const { return &_class_data_; }

void Type_Boolean::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_Boolean *>(to)->MergeFrom(
      static_cast<const Type_Boolean &>(from));
}


void Type_Boolean::MergeFrom(const Type_Boolean& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.Boolean)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_Boolean::CopyFrom(const Type_Boolean& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.Boolean)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_Boolean::IsInitialized() const {
  return true;
}

void Type_Boolean::InternalSwap(Type_Boolean* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_Boolean, nullability_)
      + sizeof(Type_Boolean::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_Boolean, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_Boolean::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[0]);
}

// ===================================================================

class Type_I8::_Internal {
 public:
};

Type_I8::Type_I8(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.I8)
}
Type_I8::Type_I8(const Type_I8& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.I8)
}

inline void Type_I8::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_I8::~Type_I8() {
  // @@protoc_insertion_point(destructor:substrait.Type.I8)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_I8::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_I8::ArenaDtor(void* object) {
  Type_I8* _this = reinterpret_cast< Type_I8* >(object);
  (void)_this;
}
void Type_I8::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_I8::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_I8::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.I8)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_I8::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_I8::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.I8)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.I8)
  return target;
}

size_t Type_I8::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.I8)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_I8::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_I8::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_I8::GetClassData() const { return &_class_data_; }

void Type_I8::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_I8 *>(to)->MergeFrom(
      static_cast<const Type_I8 &>(from));
}


void Type_I8::MergeFrom(const Type_I8& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.I8)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_I8::CopyFrom(const Type_I8& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.I8)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_I8::IsInitialized() const {
  return true;
}

void Type_I8::InternalSwap(Type_I8* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_I8, nullability_)
      + sizeof(Type_I8::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_I8, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_I8::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[1]);
}

// ===================================================================

class Type_I16::_Internal {
 public:
};

Type_I16::Type_I16(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.I16)
}
Type_I16::Type_I16(const Type_I16& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.I16)
}

inline void Type_I16::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_I16::~Type_I16() {
  // @@protoc_insertion_point(destructor:substrait.Type.I16)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_I16::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_I16::ArenaDtor(void* object) {
  Type_I16* _this = reinterpret_cast< Type_I16* >(object);
  (void)_this;
}
void Type_I16::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_I16::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_I16::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.I16)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_I16::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_I16::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.I16)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.I16)
  return target;
}

size_t Type_I16::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.I16)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_I16::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_I16::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_I16::GetClassData() const { return &_class_data_; }

void Type_I16::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_I16 *>(to)->MergeFrom(
      static_cast<const Type_I16 &>(from));
}


void Type_I16::MergeFrom(const Type_I16& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.I16)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_I16::CopyFrom(const Type_I16& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.I16)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_I16::IsInitialized() const {
  return true;
}

void Type_I16::InternalSwap(Type_I16* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_I16, nullability_)
      + sizeof(Type_I16::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_I16, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_I16::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[2]);
}

// ===================================================================

class Type_I32::_Internal {
 public:
};

Type_I32::Type_I32(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.I32)
}
Type_I32::Type_I32(const Type_I32& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.I32)
}

inline void Type_I32::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_I32::~Type_I32() {
  // @@protoc_insertion_point(destructor:substrait.Type.I32)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_I32::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_I32::ArenaDtor(void* object) {
  Type_I32* _this = reinterpret_cast< Type_I32* >(object);
  (void)_this;
}
void Type_I32::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_I32::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_I32::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.I32)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_I32::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_I32::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.I32)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.I32)
  return target;
}

size_t Type_I32::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.I32)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_I32::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_I32::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_I32::GetClassData() const { return &_class_data_; }

void Type_I32::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_I32 *>(to)->MergeFrom(
      static_cast<const Type_I32 &>(from));
}


void Type_I32::MergeFrom(const Type_I32& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.I32)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_I32::CopyFrom(const Type_I32& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.I32)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_I32::IsInitialized() const {
  return true;
}

void Type_I32::InternalSwap(Type_I32* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_I32, nullability_)
      + sizeof(Type_I32::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_I32, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_I32::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[3]);
}

// ===================================================================

class Type_I64::_Internal {
 public:
};

Type_I64::Type_I64(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.I64)
}
Type_I64::Type_I64(const Type_I64& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.I64)
}

inline void Type_I64::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_I64::~Type_I64() {
  // @@protoc_insertion_point(destructor:substrait.Type.I64)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_I64::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_I64::ArenaDtor(void* object) {
  Type_I64* _this = reinterpret_cast< Type_I64* >(object);
  (void)_this;
}
void Type_I64::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_I64::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_I64::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.I64)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_I64::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_I64::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.I64)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.I64)
  return target;
}

size_t Type_I64::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.I64)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_I64::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_I64::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_I64::GetClassData() const { return &_class_data_; }

void Type_I64::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_I64 *>(to)->MergeFrom(
      static_cast<const Type_I64 &>(from));
}


void Type_I64::MergeFrom(const Type_I64& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.I64)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_I64::CopyFrom(const Type_I64& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.I64)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_I64::IsInitialized() const {
  return true;
}

void Type_I64::InternalSwap(Type_I64* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_I64, nullability_)
      + sizeof(Type_I64::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_I64, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_I64::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[4]);
}

// ===================================================================

class Type_FP32::_Internal {
 public:
};

Type_FP32::Type_FP32(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.FP32)
}
Type_FP32::Type_FP32(const Type_FP32& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.FP32)
}

inline void Type_FP32::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_FP32::~Type_FP32() {
  // @@protoc_insertion_point(destructor:substrait.Type.FP32)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_FP32::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_FP32::ArenaDtor(void* object) {
  Type_FP32* _this = reinterpret_cast< Type_FP32* >(object);
  (void)_this;
}
void Type_FP32::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_FP32::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_FP32::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.FP32)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_FP32::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_FP32::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.FP32)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.FP32)
  return target;
}

size_t Type_FP32::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.FP32)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_FP32::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_FP32::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_FP32::GetClassData() const { return &_class_data_; }

void Type_FP32::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_FP32 *>(to)->MergeFrom(
      static_cast<const Type_FP32 &>(from));
}


void Type_FP32::MergeFrom(const Type_FP32& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.FP32)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_FP32::CopyFrom(const Type_FP32& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.FP32)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_FP32::IsInitialized() const {
  return true;
}

void Type_FP32::InternalSwap(Type_FP32* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_FP32, nullability_)
      + sizeof(Type_FP32::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_FP32, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_FP32::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[5]);
}

// ===================================================================

class Type_FP64::_Internal {
 public:
};

Type_FP64::Type_FP64(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.FP64)
}
Type_FP64::Type_FP64(const Type_FP64& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.FP64)
}

inline void Type_FP64::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_FP64::~Type_FP64() {
  // @@protoc_insertion_point(destructor:substrait.Type.FP64)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_FP64::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_FP64::ArenaDtor(void* object) {
  Type_FP64* _this = reinterpret_cast< Type_FP64* >(object);
  (void)_this;
}
void Type_FP64::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_FP64::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_FP64::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.FP64)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_FP64::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_FP64::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.FP64)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.FP64)
  return target;
}

size_t Type_FP64::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.FP64)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_FP64::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_FP64::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_FP64::GetClassData() const { return &_class_data_; }

void Type_FP64::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_FP64 *>(to)->MergeFrom(
      static_cast<const Type_FP64 &>(from));
}


void Type_FP64::MergeFrom(const Type_FP64& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.FP64)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_FP64::CopyFrom(const Type_FP64& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.FP64)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_FP64::IsInitialized() const {
  return true;
}

void Type_FP64::InternalSwap(Type_FP64* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_FP64, nullability_)
      + sizeof(Type_FP64::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_FP64, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_FP64::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[6]);
}

// ===================================================================

class Type_String::_Internal {
 public:
};

Type_String::Type_String(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.String)
}
Type_String::Type_String(const Type_String& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.String)
}

inline void Type_String::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_String::~Type_String() {
  // @@protoc_insertion_point(destructor:substrait.Type.String)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_String::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_String::ArenaDtor(void* object) {
  Type_String* _this = reinterpret_cast< Type_String* >(object);
  (void)_this;
}
void Type_String::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_String::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_String::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.String)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_String::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_String::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.String)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.String)
  return target;
}

size_t Type_String::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.String)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_String::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_String::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_String::GetClassData() const { return &_class_data_; }

void Type_String::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_String *>(to)->MergeFrom(
      static_cast<const Type_String &>(from));
}


void Type_String::MergeFrom(const Type_String& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.String)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_String::CopyFrom(const Type_String& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.String)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_String::IsInitialized() const {
  return true;
}

void Type_String::InternalSwap(Type_String* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_String, nullability_)
      + sizeof(Type_String::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_String, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_String::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[7]);
}

// ===================================================================

class Type_Binary::_Internal {
 public:
};

Type_Binary::Type_Binary(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.Binary)
}
Type_Binary::Type_Binary(const Type_Binary& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.Binary)
}

inline void Type_Binary::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_Binary::~Type_Binary() {
  // @@protoc_insertion_point(destructor:substrait.Type.Binary)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_Binary::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_Binary::ArenaDtor(void* object) {
  Type_Binary* _this = reinterpret_cast< Type_Binary* >(object);
  (void)_this;
}
void Type_Binary::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_Binary::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_Binary::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.Binary)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_Binary::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_Binary::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.Binary)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.Binary)
  return target;
}

size_t Type_Binary::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.Binary)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_Binary::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_Binary::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_Binary::GetClassData() const { return &_class_data_; }

void Type_Binary::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_Binary *>(to)->MergeFrom(
      static_cast<const Type_Binary &>(from));
}


void Type_Binary::MergeFrom(const Type_Binary& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.Binary)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_Binary::CopyFrom(const Type_Binary& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.Binary)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_Binary::IsInitialized() const {
  return true;
}

void Type_Binary::InternalSwap(Type_Binary* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_Binary, nullability_)
      + sizeof(Type_Binary::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_Binary, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_Binary::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[8]);
}

// ===================================================================

class Type_Timestamp::_Internal {
 public:
};

Type_Timestamp::Type_Timestamp(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.Timestamp)
}
Type_Timestamp::Type_Timestamp(const Type_Timestamp& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.Timestamp)
}

inline void Type_Timestamp::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_Timestamp::~Type_Timestamp() {
  // @@protoc_insertion_point(destructor:substrait.Type.Timestamp)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_Timestamp::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_Timestamp::ArenaDtor(void* object) {
  Type_Timestamp* _this = reinterpret_cast< Type_Timestamp* >(object);
  (void)_this;
}
void Type_Timestamp::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_Timestamp::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_Timestamp::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.Timestamp)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_Timestamp::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_Timestamp::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.Timestamp)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.Timestamp)
  return target;
}

size_t Type_Timestamp::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.Timestamp)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_Timestamp::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_Timestamp::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_Timestamp::GetClassData() const { return &_class_data_; }

void Type_Timestamp::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_Timestamp *>(to)->MergeFrom(
      static_cast<const Type_Timestamp &>(from));
}


void Type_Timestamp::MergeFrom(const Type_Timestamp& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.Timestamp)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_Timestamp::CopyFrom(const Type_Timestamp& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.Timestamp)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_Timestamp::IsInitialized() const {
  return true;
}

void Type_Timestamp::InternalSwap(Type_Timestamp* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_Timestamp, nullability_)
      + sizeof(Type_Timestamp::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_Timestamp, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_Timestamp::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[9]);
}

// ===================================================================

class Type_Date::_Internal {
 public:
};

Type_Date::Type_Date(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.Date)
}
Type_Date::Type_Date(const Type_Date& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.Date)
}

inline void Type_Date::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_Date::~Type_Date() {
  // @@protoc_insertion_point(destructor:substrait.Type.Date)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_Date::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_Date::ArenaDtor(void* object) {
  Type_Date* _this = reinterpret_cast< Type_Date* >(object);
  (void)_this;
}
void Type_Date::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_Date::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_Date::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.Date)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_Date::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_Date::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.Date)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.Date)
  return target;
}

size_t Type_Date::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.Date)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_Date::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_Date::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_Date::GetClassData() const { return &_class_data_; }

void Type_Date::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_Date *>(to)->MergeFrom(
      static_cast<const Type_Date &>(from));
}


void Type_Date::MergeFrom(const Type_Date& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.Date)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_Date::CopyFrom(const Type_Date& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.Date)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_Date::IsInitialized() const {
  return true;
}

void Type_Date::InternalSwap(Type_Date* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_Date, nullability_)
      + sizeof(Type_Date::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_Date, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_Date::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[10]);
}

// ===================================================================

class Type_Time::_Internal {
 public:
};

Type_Time::Type_Time(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.Time)
}
Type_Time::Type_Time(const Type_Time& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.Time)
}

inline void Type_Time::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_Time::~Type_Time() {
  // @@protoc_insertion_point(destructor:substrait.Type.Time)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_Time::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_Time::ArenaDtor(void* object) {
  Type_Time* _this = reinterpret_cast< Type_Time* >(object);
  (void)_this;
}
void Type_Time::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_Time::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_Time::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.Time)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_Time::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_Time::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.Time)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.Time)
  return target;
}

size_t Type_Time::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.Time)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_Time::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_Time::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_Time::GetClassData() const { return &_class_data_; }

void Type_Time::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_Time *>(to)->MergeFrom(
      static_cast<const Type_Time &>(from));
}


void Type_Time::MergeFrom(const Type_Time& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.Time)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_Time::CopyFrom(const Type_Time& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.Time)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_Time::IsInitialized() const {
  return true;
}

void Type_Time::InternalSwap(Type_Time* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_Time, nullability_)
      + sizeof(Type_Time::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_Time, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_Time::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[11]);
}

// ===================================================================

class Type_TimestampTZ::_Internal {
 public:
};

Type_TimestampTZ::Type_TimestampTZ(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.TimestampTZ)
}
Type_TimestampTZ::Type_TimestampTZ(const Type_TimestampTZ& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.TimestampTZ)
}

inline void Type_TimestampTZ::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_TimestampTZ::~Type_TimestampTZ() {
  // @@protoc_insertion_point(destructor:substrait.Type.TimestampTZ)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_TimestampTZ::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_TimestampTZ::ArenaDtor(void* object) {
  Type_TimestampTZ* _this = reinterpret_cast< Type_TimestampTZ* >(object);
  (void)_this;
}
void Type_TimestampTZ::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_TimestampTZ::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_TimestampTZ::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.TimestampTZ)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_TimestampTZ::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_TimestampTZ::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.TimestampTZ)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.TimestampTZ)
  return target;
}

size_t Type_TimestampTZ::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.TimestampTZ)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_TimestampTZ::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_TimestampTZ::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_TimestampTZ::GetClassData() const { return &_class_data_; }

void Type_TimestampTZ::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_TimestampTZ *>(to)->MergeFrom(
      static_cast<const Type_TimestampTZ &>(from));
}


void Type_TimestampTZ::MergeFrom(const Type_TimestampTZ& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.TimestampTZ)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_TimestampTZ::CopyFrom(const Type_TimestampTZ& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.TimestampTZ)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_TimestampTZ::IsInitialized() const {
  return true;
}

void Type_TimestampTZ::InternalSwap(Type_TimestampTZ* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_TimestampTZ, nullability_)
      + sizeof(Type_TimestampTZ::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_TimestampTZ, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_TimestampTZ::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[12]);
}

// ===================================================================

class Type_IntervalYear::_Internal {
 public:
};

Type_IntervalYear::Type_IntervalYear(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.IntervalYear)
}
Type_IntervalYear::Type_IntervalYear(const Type_IntervalYear& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.IntervalYear)
}

inline void Type_IntervalYear::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_IntervalYear::~Type_IntervalYear() {
  // @@protoc_insertion_point(destructor:substrait.Type.IntervalYear)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_IntervalYear::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_IntervalYear::ArenaDtor(void* object) {
  Type_IntervalYear* _this = reinterpret_cast< Type_IntervalYear* >(object);
  (void)_this;
}
void Type_IntervalYear::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_IntervalYear::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_IntervalYear::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.IntervalYear)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_IntervalYear::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_IntervalYear::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.IntervalYear)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.IntervalYear)
  return target;
}

size_t Type_IntervalYear::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.IntervalYear)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_IntervalYear::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_IntervalYear::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_IntervalYear::GetClassData() const { return &_class_data_; }

void Type_IntervalYear::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_IntervalYear *>(to)->MergeFrom(
      static_cast<const Type_IntervalYear &>(from));
}


void Type_IntervalYear::MergeFrom(const Type_IntervalYear& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.IntervalYear)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_IntervalYear::CopyFrom(const Type_IntervalYear& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.IntervalYear)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_IntervalYear::IsInitialized() const {
  return true;
}

void Type_IntervalYear::InternalSwap(Type_IntervalYear* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_IntervalYear, nullability_)
      + sizeof(Type_IntervalYear::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_IntervalYear, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_IntervalYear::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[13]);
}

// ===================================================================

class Type_IntervalDay::_Internal {
 public:
};

Type_IntervalDay::Type_IntervalDay(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.IntervalDay)
}
Type_IntervalDay::Type_IntervalDay(const Type_IntervalDay& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.IntervalDay)
}

inline void Type_IntervalDay::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_IntervalDay::~Type_IntervalDay() {
  // @@protoc_insertion_point(destructor:substrait.Type.IntervalDay)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_IntervalDay::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_IntervalDay::ArenaDtor(void* object) {
  Type_IntervalDay* _this = reinterpret_cast< Type_IntervalDay* >(object);
  (void)_this;
}
void Type_IntervalDay::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_IntervalDay::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_IntervalDay::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.IntervalDay)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_IntervalDay::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_IntervalDay::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.IntervalDay)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.IntervalDay)
  return target;
}

size_t Type_IntervalDay::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.IntervalDay)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_IntervalDay::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_IntervalDay::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_IntervalDay::GetClassData() const { return &_class_data_; }

void Type_IntervalDay::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_IntervalDay *>(to)->MergeFrom(
      static_cast<const Type_IntervalDay &>(from));
}


void Type_IntervalDay::MergeFrom(const Type_IntervalDay& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.IntervalDay)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_IntervalDay::CopyFrom(const Type_IntervalDay& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.IntervalDay)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_IntervalDay::IsInitialized() const {
  return true;
}

void Type_IntervalDay::InternalSwap(Type_IntervalDay* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_IntervalDay, nullability_)
      + sizeof(Type_IntervalDay::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_IntervalDay, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_IntervalDay::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[14]);
}

// ===================================================================

class Type_UUID::_Internal {
 public:
};

Type_UUID::Type_UUID(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.UUID)
}
Type_UUID::Type_UUID(const Type_UUID& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.UUID)
}

inline void Type_UUID::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_UUID::~Type_UUID() {
  // @@protoc_insertion_point(destructor:substrait.Type.UUID)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_UUID::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_UUID::ArenaDtor(void* object) {
  Type_UUID* _this = reinterpret_cast< Type_UUID* >(object);
  (void)_this;
}
void Type_UUID::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_UUID::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_UUID::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.UUID)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_UUID::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_UUID::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.UUID)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.UUID)
  return target;
}

size_t Type_UUID::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.UUID)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 type_variation_reference = 1 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 2 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_UUID::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_UUID::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_UUID::GetClassData() const { return &_class_data_; }

void Type_UUID::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_UUID *>(to)->MergeFrom(
      static_cast<const Type_UUID &>(from));
}


void Type_UUID::MergeFrom(const Type_UUID& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.UUID)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_UUID::CopyFrom(const Type_UUID& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.UUID)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_UUID::IsInitialized() const {
  return true;
}

void Type_UUID::InternalSwap(Type_UUID* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_UUID, nullability_)
      + sizeof(Type_UUID::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_UUID, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_UUID::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[15]);
}

// ===================================================================

class Type_FixedChar::_Internal {
 public:
};

Type_FixedChar::Type_FixedChar(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.FixedChar)
}
Type_FixedChar::Type_FixedChar(const Type_FixedChar& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&length_, &from.length_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.FixedChar)
}

inline void Type_FixedChar::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&length_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
}

Type_FixedChar::~Type_FixedChar() {
  // @@protoc_insertion_point(destructor:substrait.Type.FixedChar)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_FixedChar::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_FixedChar::ArenaDtor(void* object) {
  Type_FixedChar* _this = reinterpret_cast< Type_FixedChar* >(object);
  (void)_this;
}
void Type_FixedChar::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_FixedChar::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_FixedChar::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.FixedChar)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&length_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_FixedChar::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 length = 1 [json_name = "length"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          length_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_FixedChar::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.FixedChar)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 length = 1 [json_name = "length"];
  if (this->_internal_length() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_length(), target);
  }

  // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.FixedChar)
  return target;
}

size_t Type_FixedChar::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.FixedChar)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 length = 1 [json_name = "length"];
  if (this->_internal_length() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_length());
  }

  // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_FixedChar::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_FixedChar::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_FixedChar::GetClassData() const { return &_class_data_; }

void Type_FixedChar::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_FixedChar *>(to)->MergeFrom(
      static_cast<const Type_FixedChar &>(from));
}


void Type_FixedChar::MergeFrom(const Type_FixedChar& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.FixedChar)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_length() != 0) {
    _internal_set_length(from._internal_length());
  }
  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_FixedChar::CopyFrom(const Type_FixedChar& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.FixedChar)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_FixedChar::IsInitialized() const {
  return true;
}

void Type_FixedChar::InternalSwap(Type_FixedChar* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_FixedChar, nullability_)
      + sizeof(Type_FixedChar::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_FixedChar, length_)>(
          reinterpret_cast<char*>(&length_),
          reinterpret_cast<char*>(&other->length_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_FixedChar::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[16]);
}

// ===================================================================

class Type_VarChar::_Internal {
 public:
};

Type_VarChar::Type_VarChar(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.VarChar)
}
Type_VarChar::Type_VarChar(const Type_VarChar& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&length_, &from.length_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.VarChar)
}

inline void Type_VarChar::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&length_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
}

Type_VarChar::~Type_VarChar() {
  // @@protoc_insertion_point(destructor:substrait.Type.VarChar)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_VarChar::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_VarChar::ArenaDtor(void* object) {
  Type_VarChar* _this = reinterpret_cast< Type_VarChar* >(object);
  (void)_this;
}
void Type_VarChar::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_VarChar::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_VarChar::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.VarChar)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&length_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_VarChar::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 length = 1 [json_name = "length"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          length_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_VarChar::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.VarChar)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 length = 1 [json_name = "length"];
  if (this->_internal_length() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_length(), target);
  }

  // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.VarChar)
  return target;
}

size_t Type_VarChar::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.VarChar)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 length = 1 [json_name = "length"];
  if (this->_internal_length() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_length());
  }

  // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_VarChar::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_VarChar::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_VarChar::GetClassData() const { return &_class_data_; }

void Type_VarChar::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_VarChar *>(to)->MergeFrom(
      static_cast<const Type_VarChar &>(from));
}


void Type_VarChar::MergeFrom(const Type_VarChar& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.VarChar)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_length() != 0) {
    _internal_set_length(from._internal_length());
  }
  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_VarChar::CopyFrom(const Type_VarChar& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.VarChar)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_VarChar::IsInitialized() const {
  return true;
}

void Type_VarChar::InternalSwap(Type_VarChar* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_VarChar, nullability_)
      + sizeof(Type_VarChar::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_VarChar, length_)>(
          reinterpret_cast<char*>(&length_),
          reinterpret_cast<char*>(&other->length_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_VarChar::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[17]);
}

// ===================================================================

class Type_FixedBinary::_Internal {
 public:
};

Type_FixedBinary::Type_FixedBinary(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.FixedBinary)
}
Type_FixedBinary::Type_FixedBinary(const Type_FixedBinary& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&length_, &from.length_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.FixedBinary)
}

inline void Type_FixedBinary::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&length_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
}

Type_FixedBinary::~Type_FixedBinary() {
  // @@protoc_insertion_point(destructor:substrait.Type.FixedBinary)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_FixedBinary::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_FixedBinary::ArenaDtor(void* object) {
  Type_FixedBinary* _this = reinterpret_cast< Type_FixedBinary* >(object);
  (void)_this;
}
void Type_FixedBinary::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_FixedBinary::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_FixedBinary::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.FixedBinary)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&length_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_FixedBinary::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 length = 1 [json_name = "length"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          length_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_FixedBinary::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.FixedBinary)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 length = 1 [json_name = "length"];
  if (this->_internal_length() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_length(), target);
  }

  // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.FixedBinary)
  return target;
}

size_t Type_FixedBinary::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.FixedBinary)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 length = 1 [json_name = "length"];
  if (this->_internal_length() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_length());
  }

  // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_FixedBinary::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_FixedBinary::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_FixedBinary::GetClassData() const { return &_class_data_; }

void Type_FixedBinary::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_FixedBinary *>(to)->MergeFrom(
      static_cast<const Type_FixedBinary &>(from));
}


void Type_FixedBinary::MergeFrom(const Type_FixedBinary& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.FixedBinary)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_length() != 0) {
    _internal_set_length(from._internal_length());
  }
  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_FixedBinary::CopyFrom(const Type_FixedBinary& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.FixedBinary)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_FixedBinary::IsInitialized() const {
  return true;
}

void Type_FixedBinary::InternalSwap(Type_FixedBinary* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_FixedBinary, nullability_)
      + sizeof(Type_FixedBinary::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_FixedBinary, length_)>(
          reinterpret_cast<char*>(&length_),
          reinterpret_cast<char*>(&other->length_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_FixedBinary::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[18]);
}

// ===================================================================

class Type_Decimal::_Internal {
 public:
};

Type_Decimal::Type_Decimal(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.Decimal)
}
Type_Decimal::Type_Decimal(const Type_Decimal& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&scale_, &from.scale_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&scale_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.Decimal)
}

inline void Type_Decimal::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&scale_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&scale_)) + sizeof(nullability_));
}

Type_Decimal::~Type_Decimal() {
  // @@protoc_insertion_point(destructor:substrait.Type.Decimal)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_Decimal::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_Decimal::ArenaDtor(void* object) {
  Type_Decimal* _this = reinterpret_cast< Type_Decimal* >(object);
  (void)_this;
}
void Type_Decimal::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_Decimal::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_Decimal::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.Decimal)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&scale_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&scale_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_Decimal::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 scale = 1 [json_name = "scale"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          scale_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 precision = 2 [json_name = "precision"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          precision_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 type_variation_reference = 3 [json_name = "typeVariationReference"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_Decimal::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.Decimal)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 scale = 1 [json_name = "scale"];
  if (this->_internal_scale() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_scale(), target);
  }

  // int32 precision = 2 [json_name = "precision"];
  if (this->_internal_precision() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_precision(), target);
  }

  // uint32 type_variation_reference = 3 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      4, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.Decimal)
  return target;
}

size_t Type_Decimal::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.Decimal)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 scale = 1 [json_name = "scale"];
  if (this->_internal_scale() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_scale());
  }

  // int32 precision = 2 [json_name = "precision"];
  if (this->_internal_precision() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_precision());
  }

  // uint32 type_variation_reference = 3 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_Decimal::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_Decimal::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_Decimal::GetClassData() const { return &_class_data_; }

void Type_Decimal::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_Decimal *>(to)->MergeFrom(
      static_cast<const Type_Decimal &>(from));
}


void Type_Decimal::MergeFrom(const Type_Decimal& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.Decimal)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_scale() != 0) {
    _internal_set_scale(from._internal_scale());
  }
  if (from._internal_precision() != 0) {
    _internal_set_precision(from._internal_precision());
  }
  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_Decimal::CopyFrom(const Type_Decimal& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.Decimal)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_Decimal::IsInitialized() const {
  return true;
}

void Type_Decimal::InternalSwap(Type_Decimal* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_Decimal, nullability_)
      + sizeof(Type_Decimal::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_Decimal, scale_)>(
          reinterpret_cast<char*>(&scale_),
          reinterpret_cast<char*>(&other->scale_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_Decimal::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[19]);
}

// ===================================================================

class Type_Struct::_Internal {
 public:
};

Type_Struct::Type_Struct(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  types_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.Struct)
}
Type_Struct::Type_Struct(const Type_Struct& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      types_(from.types_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.Struct)
}

inline void Type_Struct::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_variation_reference_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
}

Type_Struct::~Type_Struct() {
  // @@protoc_insertion_point(destructor:substrait.Type.Struct)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_Struct::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Type_Struct::ArenaDtor(void* object) {
  Type_Struct* _this = reinterpret_cast< Type_Struct* >(object);
  (void)_this;
}
void Type_Struct::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_Struct::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_Struct::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.Struct)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  types_.Clear();
  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_Struct::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .substrait.Type types = 1 [json_name = "types"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_types(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_Struct::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.Struct)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .substrait.Type types = 1 [json_name = "types"];
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_types_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_types(i), target, stream);
  }

  // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.Struct)
  return target;
}

size_t Type_Struct::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.Struct)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .substrait.Type types = 1 [json_name = "types"];
  total_size += 1UL * this->_internal_types_size();
  for (const auto& msg : this->types_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_Struct::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_Struct::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_Struct::GetClassData() const { return &_class_data_; }

void Type_Struct::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_Struct *>(to)->MergeFrom(
      static_cast<const Type_Struct &>(from));
}


void Type_Struct::MergeFrom(const Type_Struct& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.Struct)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  types_.MergeFrom(from.types_);
  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_Struct::CopyFrom(const Type_Struct& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.Struct)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_Struct::IsInitialized() const {
  return true;
}

void Type_Struct::InternalSwap(Type_Struct* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  types_.InternalSwap(&other->types_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_Struct, nullability_)
      + sizeof(Type_Struct::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_Struct, type_variation_reference_)>(
          reinterpret_cast<char*>(&type_variation_reference_),
          reinterpret_cast<char*>(&other->type_variation_reference_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_Struct::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[20]);
}

// ===================================================================

class Type_List::_Internal {
 public:
  static const ::substrait::Type& type(const Type_List* msg);
};

const ::substrait::Type&
Type_List::_Internal::type(const Type_List* msg) {
  return *msg->type_;
}
Type_List::Type_List(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.List)
}
Type_List::Type_List(const Type_List& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_type()) {
    type_ = new ::substrait::Type(*from.type_);
  } else {
    type_ = nullptr;
  }
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.List)
}

inline void Type_List::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_)) + sizeof(nullability_));
}

Type_List::~Type_List() {
  // @@protoc_insertion_point(destructor:substrait.Type.List)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_List::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete type_;
}

void Type_List::ArenaDtor(void* object) {
  Type_List* _this = reinterpret_cast< Type_List* >(object);
  (void)_this;
}
void Type_List::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_List::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_List::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.List)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && type_ != nullptr) {
    delete type_;
  }
  type_ = nullptr;
  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_List::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .substrait.Type type = 1 [json_name = "type"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_type(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_List::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.List)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .substrait.Type type = 1 [json_name = "type"];
  if (this->_internal_has_type()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::type(this), target, stream);
  }

  // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.List)
  return target;
}

size_t Type_List::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.List)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .substrait.Type type = 1 [json_name = "type"];
  if (this->_internal_has_type()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *type_);
  }

  // uint32 type_variation_reference = 2 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_List::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_List::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_List::GetClassData() const { return &_class_data_; }

void Type_List::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_List *>(to)->MergeFrom(
      static_cast<const Type_List &>(from));
}


void Type_List::MergeFrom(const Type_List& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.List)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_type()) {
    _internal_mutable_type()->::substrait::Type::MergeFrom(from._internal_type());
  }
  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_List::CopyFrom(const Type_List& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.List)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_List::IsInitialized() const {
  return true;
}

void Type_List::InternalSwap(Type_List* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_List, nullability_)
      + sizeof(Type_List::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_List, type_)>(
          reinterpret_cast<char*>(&type_),
          reinterpret_cast<char*>(&other->type_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_List::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[21]);
}

// ===================================================================

class Type_Map::_Internal {
 public:
  static const ::substrait::Type& key(const Type_Map* msg);
  static const ::substrait::Type& value(const Type_Map* msg);
};

const ::substrait::Type&
Type_Map::_Internal::key(const Type_Map* msg) {
  return *msg->key_;
}
const ::substrait::Type&
Type_Map::_Internal::value(const Type_Map* msg) {
  return *msg->value_;
}
Type_Map::Type_Map(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type.Map)
}
Type_Map::Type_Map(const Type_Map& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_key()) {
    key_ = new ::substrait::Type(*from.key_);
  } else {
    key_ = nullptr;
  }
  if (from._internal_has_value()) {
    value_ = new ::substrait::Type(*from.value_);
  } else {
    value_ = nullptr;
  }
  ::memcpy(&type_variation_reference_, &from.type_variation_reference_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.Type.Map)
}

inline void Type_Map::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&key_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&key_)) + sizeof(nullability_));
}

Type_Map::~Type_Map() {
  // @@protoc_insertion_point(destructor:substrait.Type.Map)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type_Map::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete key_;
  if (this != internal_default_instance()) delete value_;
}

void Type_Map::ArenaDtor(void* object) {
  Type_Map* _this = reinterpret_cast< Type_Map* >(object);
  (void)_this;
}
void Type_Map::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type_Map::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type_Map::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type.Map)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && key_ != nullptr) {
    delete key_;
  }
  key_ = nullptr;
  if (GetArenaForAllocation() == nullptr && value_ != nullptr) {
    delete value_;
  }
  value_ = nullptr;
  ::memset(&type_variation_reference_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&type_variation_reference_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type_Map::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .substrait.Type key = 1 [json_name = "key"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_key(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type value = 2 [json_name = "value"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_value(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 type_variation_reference = 3 [json_name = "typeVariationReference"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          type_variation_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type_Map::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type.Map)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .substrait.Type key = 1 [json_name = "key"];
  if (this->_internal_has_key()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::key(this), target, stream);
  }

  // .substrait.Type value = 2 [json_name = "value"];
  if (this->_internal_has_value()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::value(this), target, stream);
  }

  // uint32 type_variation_reference = 3 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_type_variation_reference(), target);
  }

  // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      4, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type.Map)
  return target;
}

size_t Type_Map::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type.Map)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .substrait.Type key = 1 [json_name = "key"];
  if (this->_internal_has_key()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *key_);
  }

  // .substrait.Type value = 2 [json_name = "value"];
  if (this->_internal_has_value()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *value_);
  }

  // uint32 type_variation_reference = 3 [json_name = "typeVariationReference"];
  if (this->_internal_type_variation_reference() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_type_variation_reference());
  }

  // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type_Map::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type_Map::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type_Map::GetClassData() const { return &_class_data_; }

void Type_Map::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type_Map *>(to)->MergeFrom(
      static_cast<const Type_Map &>(from));
}


void Type_Map::MergeFrom(const Type_Map& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type.Map)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_key()) {
    _internal_mutable_key()->::substrait::Type::MergeFrom(from._internal_key());
  }
  if (from._internal_has_value()) {
    _internal_mutable_value()->::substrait::Type::MergeFrom(from._internal_value());
  }
  if (from._internal_type_variation_reference() != 0) {
    _internal_set_type_variation_reference(from._internal_type_variation_reference());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type_Map::CopyFrom(const Type_Map& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type.Map)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type_Map::IsInitialized() const {
  return true;
}

void Type_Map::InternalSwap(Type_Map* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Type_Map, nullability_)
      + sizeof(Type_Map::nullability_)
      - PROTOBUF_FIELD_OFFSET(Type_Map, key_)>(
          reinterpret_cast<char*>(&key_),
          reinterpret_cast<char*>(&other->key_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Type_Map::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[22]);
}

// ===================================================================

class Type::_Internal {
 public:
  static const ::substrait::Type_Boolean& bool_(const Type* msg);
  static const ::substrait::Type_I8& i8(const Type* msg);
  static const ::substrait::Type_I16& i16(const Type* msg);
  static const ::substrait::Type_I32& i32(const Type* msg);
  static const ::substrait::Type_I64& i64(const Type* msg);
  static const ::substrait::Type_FP32& fp32(const Type* msg);
  static const ::substrait::Type_FP64& fp64(const Type* msg);
  static const ::substrait::Type_String& string(const Type* msg);
  static const ::substrait::Type_Binary& binary(const Type* msg);
  static const ::substrait::Type_Timestamp& timestamp(const Type* msg);
  static const ::substrait::Type_Date& date(const Type* msg);
  static const ::substrait::Type_Time& time(const Type* msg);
  static const ::substrait::Type_IntervalYear& interval_year(const Type* msg);
  static const ::substrait::Type_IntervalDay& interval_day(const Type* msg);
  static const ::substrait::Type_TimestampTZ& timestamp_tz(const Type* msg);
  static const ::substrait::Type_UUID& uuid(const Type* msg);
  static const ::substrait::Type_FixedChar& fixed_char(const Type* msg);
  static const ::substrait::Type_VarChar& varchar(const Type* msg);
  static const ::substrait::Type_FixedBinary& fixed_binary(const Type* msg);
  static const ::substrait::Type_Decimal& decimal(const Type* msg);
  static const ::substrait::Type_Struct& struct_(const Type* msg);
  static const ::substrait::Type_List& list(const Type* msg);
  static const ::substrait::Type_Map& map(const Type* msg);
};

const ::substrait::Type_Boolean&
Type::_Internal::bool_(const Type* msg) {
  return *msg->kind_.bool__;
}
const ::substrait::Type_I8&
Type::_Internal::i8(const Type* msg) {
  return *msg->kind_.i8_;
}
const ::substrait::Type_I16&
Type::_Internal::i16(const Type* msg) {
  return *msg->kind_.i16_;
}
const ::substrait::Type_I32&
Type::_Internal::i32(const Type* msg) {
  return *msg->kind_.i32_;
}
const ::substrait::Type_I64&
Type::_Internal::i64(const Type* msg) {
  return *msg->kind_.i64_;
}
const ::substrait::Type_FP32&
Type::_Internal::fp32(const Type* msg) {
  return *msg->kind_.fp32_;
}
const ::substrait::Type_FP64&
Type::_Internal::fp64(const Type* msg) {
  return *msg->kind_.fp64_;
}
const ::substrait::Type_String&
Type::_Internal::string(const Type* msg) {
  return *msg->kind_.string_;
}
const ::substrait::Type_Binary&
Type::_Internal::binary(const Type* msg) {
  return *msg->kind_.binary_;
}
const ::substrait::Type_Timestamp&
Type::_Internal::timestamp(const Type* msg) {
  return *msg->kind_.timestamp_;
}
const ::substrait::Type_Date&
Type::_Internal::date(const Type* msg) {
  return *msg->kind_.date_;
}
const ::substrait::Type_Time&
Type::_Internal::time(const Type* msg) {
  return *msg->kind_.time_;
}
const ::substrait::Type_IntervalYear&
Type::_Internal::interval_year(const Type* msg) {
  return *msg->kind_.interval_year_;
}
const ::substrait::Type_IntervalDay&
Type::_Internal::interval_day(const Type* msg) {
  return *msg->kind_.interval_day_;
}
const ::substrait::Type_TimestampTZ&
Type::_Internal::timestamp_tz(const Type* msg) {
  return *msg->kind_.timestamp_tz_;
}
const ::substrait::Type_UUID&
Type::_Internal::uuid(const Type* msg) {
  return *msg->kind_.uuid_;
}
const ::substrait::Type_FixedChar&
Type::_Internal::fixed_char(const Type* msg) {
  return *msg->kind_.fixed_char_;
}
const ::substrait::Type_VarChar&
Type::_Internal::varchar(const Type* msg) {
  return *msg->kind_.varchar_;
}
const ::substrait::Type_FixedBinary&
Type::_Internal::fixed_binary(const Type* msg) {
  return *msg->kind_.fixed_binary_;
}
const ::substrait::Type_Decimal&
Type::_Internal::decimal(const Type* msg) {
  return *msg->kind_.decimal_;
}
const ::substrait::Type_Struct&
Type::_Internal::struct_(const Type* msg) {
  return *msg->kind_.struct__;
}
const ::substrait::Type_List&
Type::_Internal::list(const Type* msg) {
  return *msg->kind_.list_;
}
const ::substrait::Type_Map&
Type::_Internal::map(const Type* msg) {
  return *msg->kind_.map_;
}
void Type::set_allocated_bool_(::substrait::Type_Boolean* bool_) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (bool_) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_Boolean>::GetOwningArena(bool_);
    if (message_arena != submessage_arena) {
      bool_ = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, bool_, submessage_arena);
    }
    set_has_bool_();
    kind_.bool__ = bool_;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.bool)
}
void Type::set_allocated_i8(::substrait::Type_I8* i8) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (i8) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_I8>::GetOwningArena(i8);
    if (message_arena != submessage_arena) {
      i8 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, i8, submessage_arena);
    }
    set_has_i8();
    kind_.i8_ = i8;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.i8)
}
void Type::set_allocated_i16(::substrait::Type_I16* i16) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (i16) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_I16>::GetOwningArena(i16);
    if (message_arena != submessage_arena) {
      i16 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, i16, submessage_arena);
    }
    set_has_i16();
    kind_.i16_ = i16;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.i16)
}
void Type::set_allocated_i32(::substrait::Type_I32* i32) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (i32) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_I32>::GetOwningArena(i32);
    if (message_arena != submessage_arena) {
      i32 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, i32, submessage_arena);
    }
    set_has_i32();
    kind_.i32_ = i32;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.i32)
}
void Type::set_allocated_i64(::substrait::Type_I64* i64) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (i64) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_I64>::GetOwningArena(i64);
    if (message_arena != submessage_arena) {
      i64 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, i64, submessage_arena);
    }
    set_has_i64();
    kind_.i64_ = i64;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.i64)
}
void Type::set_allocated_fp32(::substrait::Type_FP32* fp32) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (fp32) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_FP32>::GetOwningArena(fp32);
    if (message_arena != submessage_arena) {
      fp32 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, fp32, submessage_arena);
    }
    set_has_fp32();
    kind_.fp32_ = fp32;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.fp32)
}
void Type::set_allocated_fp64(::substrait::Type_FP64* fp64) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (fp64) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_FP64>::GetOwningArena(fp64);
    if (message_arena != submessage_arena) {
      fp64 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, fp64, submessage_arena);
    }
    set_has_fp64();
    kind_.fp64_ = fp64;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.fp64)
}
void Type::set_allocated_string(::substrait::Type_String* string) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (string) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_String>::GetOwningArena(string);
    if (message_arena != submessage_arena) {
      string = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, string, submessage_arena);
    }
    set_has_string();
    kind_.string_ = string;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.string)
}
void Type::set_allocated_binary(::substrait::Type_Binary* binary) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (binary) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_Binary>::GetOwningArena(binary);
    if (message_arena != submessage_arena) {
      binary = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, binary, submessage_arena);
    }
    set_has_binary();
    kind_.binary_ = binary;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.binary)
}
void Type::set_allocated_timestamp(::substrait::Type_Timestamp* timestamp) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (timestamp) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_Timestamp>::GetOwningArena(timestamp);
    if (message_arena != submessage_arena) {
      timestamp = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, timestamp, submessage_arena);
    }
    set_has_timestamp();
    kind_.timestamp_ = timestamp;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.timestamp)
}
void Type::set_allocated_date(::substrait::Type_Date* date) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (date) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_Date>::GetOwningArena(date);
    if (message_arena != submessage_arena) {
      date = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, date, submessage_arena);
    }
    set_has_date();
    kind_.date_ = date;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.date)
}
void Type::set_allocated_time(::substrait::Type_Time* time) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (time) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_Time>::GetOwningArena(time);
    if (message_arena != submessage_arena) {
      time = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, time, submessage_arena);
    }
    set_has_time();
    kind_.time_ = time;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.time)
}
void Type::set_allocated_interval_year(::substrait::Type_IntervalYear* interval_year) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (interval_year) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_IntervalYear>::GetOwningArena(interval_year);
    if (message_arena != submessage_arena) {
      interval_year = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, interval_year, submessage_arena);
    }
    set_has_interval_year();
    kind_.interval_year_ = interval_year;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.interval_year)
}
void Type::set_allocated_interval_day(::substrait::Type_IntervalDay* interval_day) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (interval_day) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_IntervalDay>::GetOwningArena(interval_day);
    if (message_arena != submessage_arena) {
      interval_day = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, interval_day, submessage_arena);
    }
    set_has_interval_day();
    kind_.interval_day_ = interval_day;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.interval_day)
}
void Type::set_allocated_timestamp_tz(::substrait::Type_TimestampTZ* timestamp_tz) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (timestamp_tz) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_TimestampTZ>::GetOwningArena(timestamp_tz);
    if (message_arena != submessage_arena) {
      timestamp_tz = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, timestamp_tz, submessage_arena);
    }
    set_has_timestamp_tz();
    kind_.timestamp_tz_ = timestamp_tz;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.timestamp_tz)
}
void Type::set_allocated_uuid(::substrait::Type_UUID* uuid) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (uuid) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_UUID>::GetOwningArena(uuid);
    if (message_arena != submessage_arena) {
      uuid = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, uuid, submessage_arena);
    }
    set_has_uuid();
    kind_.uuid_ = uuid;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.uuid)
}
void Type::set_allocated_fixed_char(::substrait::Type_FixedChar* fixed_char) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (fixed_char) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_FixedChar>::GetOwningArena(fixed_char);
    if (message_arena != submessage_arena) {
      fixed_char = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, fixed_char, submessage_arena);
    }
    set_has_fixed_char();
    kind_.fixed_char_ = fixed_char;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.fixed_char)
}
void Type::set_allocated_varchar(::substrait::Type_VarChar* varchar) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (varchar) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_VarChar>::GetOwningArena(varchar);
    if (message_arena != submessage_arena) {
      varchar = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, varchar, submessage_arena);
    }
    set_has_varchar();
    kind_.varchar_ = varchar;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.varchar)
}
void Type::set_allocated_fixed_binary(::substrait::Type_FixedBinary* fixed_binary) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (fixed_binary) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_FixedBinary>::GetOwningArena(fixed_binary);
    if (message_arena != submessage_arena) {
      fixed_binary = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, fixed_binary, submessage_arena);
    }
    set_has_fixed_binary();
    kind_.fixed_binary_ = fixed_binary;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.fixed_binary)
}
void Type::set_allocated_decimal(::substrait::Type_Decimal* decimal) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (decimal) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_Decimal>::GetOwningArena(decimal);
    if (message_arena != submessage_arena) {
      decimal = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, decimal, submessage_arena);
    }
    set_has_decimal();
    kind_.decimal_ = decimal;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.decimal)
}
void Type::set_allocated_struct_(::substrait::Type_Struct* struct_) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (struct_) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_Struct>::GetOwningArena(struct_);
    if (message_arena != submessage_arena) {
      struct_ = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, struct_, submessage_arena);
    }
    set_has_struct_();
    kind_.struct__ = struct_;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.struct)
}
void Type::set_allocated_list(::substrait::Type_List* list) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (list) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_List>::GetOwningArena(list);
    if (message_arena != submessage_arena) {
      list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, list, submessage_arena);
    }
    set_has_list();
    kind_.list_ = list;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.list)
}
void Type::set_allocated_map(::substrait::Type_Map* map) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (map) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::Type_Map>::GetOwningArena(map);
    if (message_arena != submessage_arena) {
      map = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, map, submessage_arena);
    }
    set_has_map();
    kind_.map_ = map;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.map)
}
Type::Type(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.Type)
}
Type::Type(const Type& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  clear_has_kind();
  switch (from.kind_case()) {
    case kBool: {
      _internal_mutable_bool_()->::substrait::Type_Boolean::MergeFrom(from._internal_bool_());
      break;
    }
    case kI8: {
      _internal_mutable_i8()->::substrait::Type_I8::MergeFrom(from._internal_i8());
      break;
    }
    case kI16: {
      _internal_mutable_i16()->::substrait::Type_I16::MergeFrom(from._internal_i16());
      break;
    }
    case kI32: {
      _internal_mutable_i32()->::substrait::Type_I32::MergeFrom(from._internal_i32());
      break;
    }
    case kI64: {
      _internal_mutable_i64()->::substrait::Type_I64::MergeFrom(from._internal_i64());
      break;
    }
    case kFp32: {
      _internal_mutable_fp32()->::substrait::Type_FP32::MergeFrom(from._internal_fp32());
      break;
    }
    case kFp64: {
      _internal_mutable_fp64()->::substrait::Type_FP64::MergeFrom(from._internal_fp64());
      break;
    }
    case kString: {
      _internal_mutable_string()->::substrait::Type_String::MergeFrom(from._internal_string());
      break;
    }
    case kBinary: {
      _internal_mutable_binary()->::substrait::Type_Binary::MergeFrom(from._internal_binary());
      break;
    }
    case kTimestamp: {
      _internal_mutable_timestamp()->::substrait::Type_Timestamp::MergeFrom(from._internal_timestamp());
      break;
    }
    case kDate: {
      _internal_mutable_date()->::substrait::Type_Date::MergeFrom(from._internal_date());
      break;
    }
    case kTime: {
      _internal_mutable_time()->::substrait::Type_Time::MergeFrom(from._internal_time());
      break;
    }
    case kIntervalYear: {
      _internal_mutable_interval_year()->::substrait::Type_IntervalYear::MergeFrom(from._internal_interval_year());
      break;
    }
    case kIntervalDay: {
      _internal_mutable_interval_day()->::substrait::Type_IntervalDay::MergeFrom(from._internal_interval_day());
      break;
    }
    case kTimestampTz: {
      _internal_mutable_timestamp_tz()->::substrait::Type_TimestampTZ::MergeFrom(from._internal_timestamp_tz());
      break;
    }
    case kUuid: {
      _internal_mutable_uuid()->::substrait::Type_UUID::MergeFrom(from._internal_uuid());
      break;
    }
    case kFixedChar: {
      _internal_mutable_fixed_char()->::substrait::Type_FixedChar::MergeFrom(from._internal_fixed_char());
      break;
    }
    case kVarchar: {
      _internal_mutable_varchar()->::substrait::Type_VarChar::MergeFrom(from._internal_varchar());
      break;
    }
    case kFixedBinary: {
      _internal_mutable_fixed_binary()->::substrait::Type_FixedBinary::MergeFrom(from._internal_fixed_binary());
      break;
    }
    case kDecimal: {
      _internal_mutable_decimal()->::substrait::Type_Decimal::MergeFrom(from._internal_decimal());
      break;
    }
    case kStruct: {
      _internal_mutable_struct_()->::substrait::Type_Struct::MergeFrom(from._internal_struct_());
      break;
    }
    case kList: {
      _internal_mutable_list()->::substrait::Type_List::MergeFrom(from._internal_list());
      break;
    }
    case kMap: {
      _internal_mutable_map()->::substrait::Type_Map::MergeFrom(from._internal_map());
      break;
    }
    case kUserDefinedTypeReference: {
      _internal_set_user_defined_type_reference(from._internal_user_defined_type_reference());
      break;
    }
    case KIND_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:substrait.Type)
}

inline void Type::SharedCtor() {
clear_has_kind();
}

Type::~Type() {
  // @@protoc_insertion_point(destructor:substrait.Type)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Type::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_kind()) {
    clear_kind();
  }
}

void Type::ArenaDtor(void* object) {
  Type* _this = reinterpret_cast< Type* >(object);
  (void)_this;
}
void Type::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Type::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Type::clear_kind() {
// @@protoc_insertion_point(one_of_clear_start:substrait.Type)
  switch (kind_case()) {
    case kBool: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.bool__;
      }
      break;
    }
    case kI8: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.i8_;
      }
      break;
    }
    case kI16: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.i16_;
      }
      break;
    }
    case kI32: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.i32_;
      }
      break;
    }
    case kI64: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.i64_;
      }
      break;
    }
    case kFp32: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.fp32_;
      }
      break;
    }
    case kFp64: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.fp64_;
      }
      break;
    }
    case kString: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.string_;
      }
      break;
    }
    case kBinary: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.binary_;
      }
      break;
    }
    case kTimestamp: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.timestamp_;
      }
      break;
    }
    case kDate: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.date_;
      }
      break;
    }
    case kTime: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.time_;
      }
      break;
    }
    case kIntervalYear: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.interval_year_;
      }
      break;
    }
    case kIntervalDay: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.interval_day_;
      }
      break;
    }
    case kTimestampTz: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.timestamp_tz_;
      }
      break;
    }
    case kUuid: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.uuid_;
      }
      break;
    }
    case kFixedChar: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.fixed_char_;
      }
      break;
    }
    case kVarchar: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.varchar_;
      }
      break;
    }
    case kFixedBinary: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.fixed_binary_;
      }
      break;
    }
    case kDecimal: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.decimal_;
      }
      break;
    }
    case kStruct: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.struct__;
      }
      break;
    }
    case kList: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.list_;
      }
      break;
    }
    case kMap: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.map_;
      }
      break;
    }
    case kUserDefinedTypeReference: {
      // No need to clear
      break;
    }
    case KIND_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = KIND_NOT_SET;
}


void Type::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.Type)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_kind();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Type::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .substrait.Type.Boolean bool = 1 [json_name = "bool"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_bool_(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.I8 i8 = 2 [json_name = "i8"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_i8(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.I16 i16 = 3 [json_name = "i16"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_i16(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.I32 i32 = 5 [json_name = "i32"];
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_i32(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.I64 i64 = 7 [json_name = "i64"];
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_i64(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.FP32 fp32 = 10 [json_name = "fp32"];
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr = ctx->ParseMessage(_internal_mutable_fp32(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.FP64 fp64 = 11 [json_name = "fp64"];
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr = ctx->ParseMessage(_internal_mutable_fp64(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.String string = 12 [json_name = "string"];
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_string(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Binary binary = 13 [json_name = "binary"];
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          ptr = ctx->ParseMessage(_internal_mutable_binary(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Timestamp timestamp = 14 [json_name = "timestamp"];
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          ptr = ctx->ParseMessage(_internal_mutable_timestamp(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Date date = 16 [json_name = "date"];
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 130)) {
          ptr = ctx->ParseMessage(_internal_mutable_date(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Time time = 17 [json_name = "time"];
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 138)) {
          ptr = ctx->ParseMessage(_internal_mutable_time(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.IntervalYear interval_year = 19 [json_name = "intervalYear"];
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 154)) {
          ptr = ctx->ParseMessage(_internal_mutable_interval_year(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.IntervalDay interval_day = 20 [json_name = "intervalDay"];
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 162)) {
          ptr = ctx->ParseMessage(_internal_mutable_interval_day(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.FixedChar fixed_char = 21 [json_name = "fixedChar"];
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 170)) {
          ptr = ctx->ParseMessage(_internal_mutable_fixed_char(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.VarChar varchar = 22 [json_name = "varchar"];
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 178)) {
          ptr = ctx->ParseMessage(_internal_mutable_varchar(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.FixedBinary fixed_binary = 23 [json_name = "fixedBinary"];
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 186)) {
          ptr = ctx->ParseMessage(_internal_mutable_fixed_binary(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Decimal decimal = 24 [json_name = "decimal"];
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 194)) {
          ptr = ctx->ParseMessage(_internal_mutable_decimal(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Struct struct = 25 [json_name = "struct"];
      case 25:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 202)) {
          ptr = ctx->ParseMessage(_internal_mutable_struct_(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.List list = 27 [json_name = "list"];
      case 27:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 218)) {
          ptr = ctx->ParseMessage(_internal_mutable_list(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Map map = 28 [json_name = "map"];
      case 28:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 226)) {
          ptr = ctx->ParseMessage(_internal_mutable_map(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.TimestampTZ timestamp_tz = 29 [json_name = "timestampTz"];
      case 29:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 234)) {
          ptr = ctx->ParseMessage(_internal_mutable_timestamp_tz(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 user_defined_type_reference = 31 [json_name = "userDefinedTypeReference"];
      case 31:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 248)) {
          _internal_set_user_defined_type_reference(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.UUID uuid = 32 [json_name = "uuid"];
      case 32:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 2)) {
          ptr = ctx->ParseMessage(_internal_mutable_uuid(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Type::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.Type)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .substrait.Type.Boolean bool = 1 [json_name = "bool"];
  if (_internal_has_bool_()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::bool_(this), target, stream);
  }

  // .substrait.Type.I8 i8 = 2 [json_name = "i8"];
  if (_internal_has_i8()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::i8(this), target, stream);
  }

  // .substrait.Type.I16 i16 = 3 [json_name = "i16"];
  if (_internal_has_i16()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::i16(this), target, stream);
  }

  // .substrait.Type.I32 i32 = 5 [json_name = "i32"];
  if (_internal_has_i32()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        5, _Internal::i32(this), target, stream);
  }

  // .substrait.Type.I64 i64 = 7 [json_name = "i64"];
  if (_internal_has_i64()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        7, _Internal::i64(this), target, stream);
  }

  // .substrait.Type.FP32 fp32 = 10 [json_name = "fp32"];
  if (_internal_has_fp32()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        10, _Internal::fp32(this), target, stream);
  }

  // .substrait.Type.FP64 fp64 = 11 [json_name = "fp64"];
  if (_internal_has_fp64()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        11, _Internal::fp64(this), target, stream);
  }

  // .substrait.Type.String string = 12 [json_name = "string"];
  if (_internal_has_string()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        12, _Internal::string(this), target, stream);
  }

  // .substrait.Type.Binary binary = 13 [json_name = "binary"];
  if (_internal_has_binary()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        13, _Internal::binary(this), target, stream);
  }

  // .substrait.Type.Timestamp timestamp = 14 [json_name = "timestamp"];
  if (_internal_has_timestamp()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        14, _Internal::timestamp(this), target, stream);
  }

  // .substrait.Type.Date date = 16 [json_name = "date"];
  if (_internal_has_date()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        16, _Internal::date(this), target, stream);
  }

  // .substrait.Type.Time time = 17 [json_name = "time"];
  if (_internal_has_time()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        17, _Internal::time(this), target, stream);
  }

  // .substrait.Type.IntervalYear interval_year = 19 [json_name = "intervalYear"];
  if (_internal_has_interval_year()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        19, _Internal::interval_year(this), target, stream);
  }

  // .substrait.Type.IntervalDay interval_day = 20 [json_name = "intervalDay"];
  if (_internal_has_interval_day()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        20, _Internal::interval_day(this), target, stream);
  }

  // .substrait.Type.FixedChar fixed_char = 21 [json_name = "fixedChar"];
  if (_internal_has_fixed_char()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        21, _Internal::fixed_char(this), target, stream);
  }

  // .substrait.Type.VarChar varchar = 22 [json_name = "varchar"];
  if (_internal_has_varchar()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        22, _Internal::varchar(this), target, stream);
  }

  // .substrait.Type.FixedBinary fixed_binary = 23 [json_name = "fixedBinary"];
  if (_internal_has_fixed_binary()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        23, _Internal::fixed_binary(this), target, stream);
  }

  // .substrait.Type.Decimal decimal = 24 [json_name = "decimal"];
  if (_internal_has_decimal()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        24, _Internal::decimal(this), target, stream);
  }

  // .substrait.Type.Struct struct = 25 [json_name = "struct"];
  if (_internal_has_struct_()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        25, _Internal::struct_(this), target, stream);
  }

  // .substrait.Type.List list = 27 [json_name = "list"];
  if (_internal_has_list()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        27, _Internal::list(this), target, stream);
  }

  // .substrait.Type.Map map = 28 [json_name = "map"];
  if (_internal_has_map()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        28, _Internal::map(this), target, stream);
  }

  // .substrait.Type.TimestampTZ timestamp_tz = 29 [json_name = "timestampTz"];
  if (_internal_has_timestamp_tz()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        29, _Internal::timestamp_tz(this), target, stream);
  }

  // uint32 user_defined_type_reference = 31 [json_name = "userDefinedTypeReference"];
  if (_internal_has_user_defined_type_reference()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(31, this->_internal_user_defined_type_reference(), target);
  }

  // .substrait.Type.UUID uuid = 32 [json_name = "uuid"];
  if (_internal_has_uuid()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        32, _Internal::uuid(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.Type)
  return target;
}

size_t Type::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.Type)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (kind_case()) {
    // .substrait.Type.Boolean bool = 1 [json_name = "bool"];
    case kBool: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.bool__);
      break;
    }
    // .substrait.Type.I8 i8 = 2 [json_name = "i8"];
    case kI8: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.i8_);
      break;
    }
    // .substrait.Type.I16 i16 = 3 [json_name = "i16"];
    case kI16: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.i16_);
      break;
    }
    // .substrait.Type.I32 i32 = 5 [json_name = "i32"];
    case kI32: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.i32_);
      break;
    }
    // .substrait.Type.I64 i64 = 7 [json_name = "i64"];
    case kI64: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.i64_);
      break;
    }
    // .substrait.Type.FP32 fp32 = 10 [json_name = "fp32"];
    case kFp32: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.fp32_);
      break;
    }
    // .substrait.Type.FP64 fp64 = 11 [json_name = "fp64"];
    case kFp64: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.fp64_);
      break;
    }
    // .substrait.Type.String string = 12 [json_name = "string"];
    case kString: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.string_);
      break;
    }
    // .substrait.Type.Binary binary = 13 [json_name = "binary"];
    case kBinary: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.binary_);
      break;
    }
    // .substrait.Type.Timestamp timestamp = 14 [json_name = "timestamp"];
    case kTimestamp: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.timestamp_);
      break;
    }
    // .substrait.Type.Date date = 16 [json_name = "date"];
    case kDate: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.date_);
      break;
    }
    // .substrait.Type.Time time = 17 [json_name = "time"];
    case kTime: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.time_);
      break;
    }
    // .substrait.Type.IntervalYear interval_year = 19 [json_name = "intervalYear"];
    case kIntervalYear: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.interval_year_);
      break;
    }
    // .substrait.Type.IntervalDay interval_day = 20 [json_name = "intervalDay"];
    case kIntervalDay: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.interval_day_);
      break;
    }
    // .substrait.Type.TimestampTZ timestamp_tz = 29 [json_name = "timestampTz"];
    case kTimestampTz: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.timestamp_tz_);
      break;
    }
    // .substrait.Type.UUID uuid = 32 [json_name = "uuid"];
    case kUuid: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.uuid_);
      break;
    }
    // .substrait.Type.FixedChar fixed_char = 21 [json_name = "fixedChar"];
    case kFixedChar: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.fixed_char_);
      break;
    }
    // .substrait.Type.VarChar varchar = 22 [json_name = "varchar"];
    case kVarchar: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.varchar_);
      break;
    }
    // .substrait.Type.FixedBinary fixed_binary = 23 [json_name = "fixedBinary"];
    case kFixedBinary: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.fixed_binary_);
      break;
    }
    // .substrait.Type.Decimal decimal = 24 [json_name = "decimal"];
    case kDecimal: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.decimal_);
      break;
    }
    // .substrait.Type.Struct struct = 25 [json_name = "struct"];
    case kStruct: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.struct__);
      break;
    }
    // .substrait.Type.List list = 27 [json_name = "list"];
    case kList: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.list_);
      break;
    }
    // .substrait.Type.Map map = 28 [json_name = "map"];
    case kMap: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.map_);
      break;
    }
    // uint32 user_defined_type_reference = 31 [json_name = "userDefinedTypeReference"];
    case kUserDefinedTypeReference: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_user_defined_type_reference());
      break;
    }
    case KIND_NOT_SET: {
      break;
    }
  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Type::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Type::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Type::GetClassData() const { return &_class_data_; }

void Type::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Type *>(to)->MergeFrom(
      static_cast<const Type &>(from));
}


void Type::MergeFrom(const Type& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.Type)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.kind_case()) {
    case kBool: {
      _internal_mutable_bool_()->::substrait::Type_Boolean::MergeFrom(from._internal_bool_());
      break;
    }
    case kI8: {
      _internal_mutable_i8()->::substrait::Type_I8::MergeFrom(from._internal_i8());
      break;
    }
    case kI16: {
      _internal_mutable_i16()->::substrait::Type_I16::MergeFrom(from._internal_i16());
      break;
    }
    case kI32: {
      _internal_mutable_i32()->::substrait::Type_I32::MergeFrom(from._internal_i32());
      break;
    }
    case kI64: {
      _internal_mutable_i64()->::substrait::Type_I64::MergeFrom(from._internal_i64());
      break;
    }
    case kFp32: {
      _internal_mutable_fp32()->::substrait::Type_FP32::MergeFrom(from._internal_fp32());
      break;
    }
    case kFp64: {
      _internal_mutable_fp64()->::substrait::Type_FP64::MergeFrom(from._internal_fp64());
      break;
    }
    case kString: {
      _internal_mutable_string()->::substrait::Type_String::MergeFrom(from._internal_string());
      break;
    }
    case kBinary: {
      _internal_mutable_binary()->::substrait::Type_Binary::MergeFrom(from._internal_binary());
      break;
    }
    case kTimestamp: {
      _internal_mutable_timestamp()->::substrait::Type_Timestamp::MergeFrom(from._internal_timestamp());
      break;
    }
    case kDate: {
      _internal_mutable_date()->::substrait::Type_Date::MergeFrom(from._internal_date());
      break;
    }
    case kTime: {
      _internal_mutable_time()->::substrait::Type_Time::MergeFrom(from._internal_time());
      break;
    }
    case kIntervalYear: {
      _internal_mutable_interval_year()->::substrait::Type_IntervalYear::MergeFrom(from._internal_interval_year());
      break;
    }
    case kIntervalDay: {
      _internal_mutable_interval_day()->::substrait::Type_IntervalDay::MergeFrom(from._internal_interval_day());
      break;
    }
    case kTimestampTz: {
      _internal_mutable_timestamp_tz()->::substrait::Type_TimestampTZ::MergeFrom(from._internal_timestamp_tz());
      break;
    }
    case kUuid: {
      _internal_mutable_uuid()->::substrait::Type_UUID::MergeFrom(from._internal_uuid());
      break;
    }
    case kFixedChar: {
      _internal_mutable_fixed_char()->::substrait::Type_FixedChar::MergeFrom(from._internal_fixed_char());
      break;
    }
    case kVarchar: {
      _internal_mutable_varchar()->::substrait::Type_VarChar::MergeFrom(from._internal_varchar());
      break;
    }
    case kFixedBinary: {
      _internal_mutable_fixed_binary()->::substrait::Type_FixedBinary::MergeFrom(from._internal_fixed_binary());
      break;
    }
    case kDecimal: {
      _internal_mutable_decimal()->::substrait::Type_Decimal::MergeFrom(from._internal_decimal());
      break;
    }
    case kStruct: {
      _internal_mutable_struct_()->::substrait::Type_Struct::MergeFrom(from._internal_struct_());
      break;
    }
    case kList: {
      _internal_mutable_list()->::substrait::Type_List::MergeFrom(from._internal_list());
      break;
    }
    case kMap: {
      _internal_mutable_map()->::substrait::Type_Map::MergeFrom(from._internal_map());
      break;
    }
    case kUserDefinedTypeReference: {
      _internal_set_user_defined_type_reference(from._internal_user_defined_type_reference());
      break;
    }
    case KIND_NOT_SET: {
      break;
    }
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Type::CopyFrom(const Type& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.Type)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Type::IsInitialized() const {
  return true;
}

void Type::InternalSwap(Type* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(kind_, other->kind_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata Type::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[23]);
}

// ===================================================================

class NamedStruct::_Internal {
 public:
  static const ::substrait::Type_Struct& struct_(const NamedStruct* msg);
};

const ::substrait::Type_Struct&
NamedStruct::_Internal::struct_(const NamedStruct* msg) {
  return *msg->struct__;
}
NamedStruct::NamedStruct(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  names_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.NamedStruct)
}
NamedStruct::NamedStruct(const NamedStruct& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      names_(from.names_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_struct_()) {
    struct__ = new ::substrait::Type_Struct(*from.struct__);
  } else {
    struct__ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:substrait.NamedStruct)
}

inline void NamedStruct::SharedCtor() {
struct__ = nullptr;
}

NamedStruct::~NamedStruct() {
  // @@protoc_insertion_point(destructor:substrait.NamedStruct)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void NamedStruct::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete struct__;
}

void NamedStruct::ArenaDtor(void* object) {
  NamedStruct* _this = reinterpret_cast< NamedStruct* >(object);
  (void)_this;
}
void NamedStruct::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void NamedStruct::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void NamedStruct::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.NamedStruct)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  names_.Clear();
  if (GetArenaForAllocation() == nullptr && struct__ != nullptr) {
    delete struct__;
  }
  struct__ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* NamedStruct::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated string names = 1 [json_name = "names"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_names();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "substrait.NamedStruct.names"));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Struct struct = 2 [json_name = "struct"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_struct_(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* NamedStruct::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.NamedStruct)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated string names = 1 [json_name = "names"];
  for (int i = 0, n = this->_internal_names_size(); i < n; i++) {
    const auto& s = this->_internal_names(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "substrait.NamedStruct.names");
    target = stream->WriteString(1, s, target);
  }

  // .substrait.Type.Struct struct = 2 [json_name = "struct"];
  if (this->_internal_has_struct_()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::struct_(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.NamedStruct)
  return target;
}

size_t NamedStruct::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.NamedStruct)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string names = 1 [json_name = "names"];
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(names_.size());
  for (int i = 0, n = names_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      names_.Get(i));
  }

  // .substrait.Type.Struct struct = 2 [json_name = "struct"];
  if (this->_internal_has_struct_()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *struct__);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData NamedStruct::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    NamedStruct::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*NamedStruct::GetClassData() const { return &_class_data_; }

void NamedStruct::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<NamedStruct *>(to)->MergeFrom(
      static_cast<const NamedStruct &>(from));
}


void NamedStruct::MergeFrom(const NamedStruct& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.NamedStruct)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  names_.MergeFrom(from.names_);
  if (from._internal_has_struct_()) {
    _internal_mutable_struct_()->::substrait::Type_Struct::MergeFrom(from._internal_struct_());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void NamedStruct::CopyFrom(const NamedStruct& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:substrait.NamedStruct)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool NamedStruct::IsInitialized() const {
  return true;
}

void NamedStruct::InternalSwap(NamedStruct* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  names_.InternalSwap(&other->names_);
  swap(struct__, other->struct__);
}

::PROTOBUF_NAMESPACE_ID::Metadata NamedStruct::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2ftype_2eproto_getter, &descriptor_table_substrait_2ftype_2eproto_once,
      file_level_metadata_substrait_2ftype_2eproto[24]);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace substrait
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::substrait::Type_Boolean* Arena::CreateMaybeMessage< ::substrait::Type_Boolean >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_Boolean >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_I8* Arena::CreateMaybeMessage< ::substrait::Type_I8 >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_I8 >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_I16* Arena::CreateMaybeMessage< ::substrait::Type_I16 >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_I16 >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_I32* Arena::CreateMaybeMessage< ::substrait::Type_I32 >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_I32 >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_I64* Arena::CreateMaybeMessage< ::substrait::Type_I64 >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_I64 >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_FP32* Arena::CreateMaybeMessage< ::substrait::Type_FP32 >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_FP32 >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_FP64* Arena::CreateMaybeMessage< ::substrait::Type_FP64 >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_FP64 >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_String* Arena::CreateMaybeMessage< ::substrait::Type_String >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_String >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_Binary* Arena::CreateMaybeMessage< ::substrait::Type_Binary >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_Binary >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_Timestamp* Arena::CreateMaybeMessage< ::substrait::Type_Timestamp >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_Timestamp >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_Date* Arena::CreateMaybeMessage< ::substrait::Type_Date >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_Date >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_Time* Arena::CreateMaybeMessage< ::substrait::Type_Time >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_Time >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_TimestampTZ* Arena::CreateMaybeMessage< ::substrait::Type_TimestampTZ >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_TimestampTZ >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_IntervalYear* Arena::CreateMaybeMessage< ::substrait::Type_IntervalYear >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_IntervalYear >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_IntervalDay* Arena::CreateMaybeMessage< ::substrait::Type_IntervalDay >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_IntervalDay >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_UUID* Arena::CreateMaybeMessage< ::substrait::Type_UUID >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_UUID >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_FixedChar* Arena::CreateMaybeMessage< ::substrait::Type_FixedChar >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_FixedChar >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_VarChar* Arena::CreateMaybeMessage< ::substrait::Type_VarChar >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_VarChar >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_FixedBinary* Arena::CreateMaybeMessage< ::substrait::Type_FixedBinary >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_FixedBinary >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_Decimal* Arena::CreateMaybeMessage< ::substrait::Type_Decimal >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_Decimal >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_Struct* Arena::CreateMaybeMessage< ::substrait::Type_Struct >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_Struct >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_List* Arena::CreateMaybeMessage< ::substrait::Type_List >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_List >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type_Map* Arena::CreateMaybeMessage< ::substrait::Type_Map >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type_Map >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::Type* Arena::CreateMaybeMessage< ::substrait::Type >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::Type >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::NamedStruct* Arena::CreateMaybeMessage< ::substrait::NamedStruct >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::NamedStruct >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>
