"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
_sym_db = _symbol_database.Default()
from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from ...substrait.ibis.extensions import extensions_pb2 as substrait_dot_ibis_dot_extensions_dot_extensions__pb2
from ...substrait.ibis import type_pb2 as substrait_dot_ibis_dot_type__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1csubstrait/ibis/algebra.proto\x12\x0esubstrait.ibis\x1a\x19google/protobuf/any.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a*substrait/ibis/extensions/extensions.proto\x1a\x19substrait/ibis/type.proto"\xdf\x06\n\tRelCommon\x12:\n\x06direct\x18\x01 \x01(\x0b2 .substrait.ibis.RelCommon.DirectH\x00R\x06direct\x124\n\x04emit\x18\x02 \x01(\x0b2\x1e.substrait.ibis.RelCommon.EmitH\x00R\x04emit\x122\n\x04hint\x18\x03 \x01(\x0b2\x1e.substrait.ibis.RelCommon.HintR\x04hint\x12[\n\x12advanced_extension\x18\x04 \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension\x1a\x08\n\x06Direct\x1a-\n\x04Emit\x12%\n\x0eoutput_mapping\x18\x01 \x03(\x05R\routputMapping\x1a\x88\x04\n\x04Hint\x12:\n\x05stats\x18\x01 \x01(\x0b2$.substrait.ibis.RelCommon.Hint.StatsR\x05stats\x12P\n\nconstraint\x18\x02 \x01(\x0b20.substrait.ibis.RelCommon.Hint.RuntimeConstraintR\nconstraint\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension\x1a\xa2\x01\n\x05Stats\x12\x1b\n\trow_count\x18\x01 \x01(\x01R\x08rowCount\x12\x1f\n\x0brecord_size\x18\x02 \x01(\x01R\nrecordSize\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension\x1ap\n\x11RuntimeConstraint\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtensionB\x0b\n\temit_kind"\xe6\r\n\x07ReadRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12<\n\x0bbase_schema\x18\x02 \x01(\x0b2\x1b.substrait.ibis.NamedStructR\nbaseSchema\x122\n\x06filter\x18\x03 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x06filter\x12I\n\nprojection\x18\x04 \x01(\x0b2).substrait.ibis.Expression.MaskExpressionR\nprojection\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension\x12K\n\rvirtual_table\x18\x05 \x01(\x0b2$.substrait.ibis.ReadRel.VirtualTableH\x00R\x0cvirtualTable\x12E\n\x0blocal_files\x18\x06 \x01(\x0b2".substrait.ibis.ReadRel.LocalFilesH\x00R\nlocalFiles\x12E\n\x0bnamed_table\x18\x07 \x01(\x0b2".substrait.ibis.ReadRel.NamedTableH\x00R\nnamedTable\x12Q\n\x0fextension_table\x18\x08 \x01(\x0b2&.substrait.ibis.ReadRel.ExtensionTableH\x00R\x0eextensionTable\x1a\x7f\n\nNamedTable\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension\x1aQ\n\x0cVirtualTable\x12A\n\x06values\x18\x01 \x03(\x0b2).substrait.ibis.Expression.Literal.StructR\x06values\x1a>\n\x0eExtensionTable\x12,\n\x06detail\x18\x01 \x01(\x0b2\x14.google.protobuf.AnyR\x06detail\x1a\xbe\x06\n\nLocalFiles\x12D\n\x05items\x18\x01 \x03(\x0b2..substrait.ibis.ReadRel.LocalFiles.FileOrFilesR\x05items\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension\x1a\x8c\x05\n\x0bFileOrFiles\x12\x1b\n\x08uri_path\x18\x01 \x01(\tH\x00R\x07uriPath\x12$\n\ruri_path_glob\x18\x02 \x01(\tH\x00R\x0buriPathGlob\x12\x1b\n\x08uri_file\x18\x03 \x01(\tH\x00R\x07uriFile\x12\x1f\n\nuri_folder\x18\x04 \x01(\tH\x00R\turiFolder\x12\'\n\x0fpartition_index\x18\x06 \x01(\x04R\x0epartitionIndex\x12\x14\n\x05start\x18\x07 \x01(\x04R\x05start\x12\x16\n\x06length\x18\x08 \x01(\x04R\x06length\x12]\n\x07parquet\x18\t \x01(\x0b2A.substrait.ibis.ReadRel.LocalFiles.FileOrFiles.ParquetReadOptionsH\x01R\x07parquet\x12W\n\x05arrow\x18\n \x01(\x0b2?.substrait.ibis.ReadRel.LocalFiles.FileOrFiles.ArrowReadOptionsH\x01R\x05arrow\x12Q\n\x03orc\x18\x0b \x01(\x0b2=.substrait.ibis.ReadRel.LocalFiles.FileOrFiles.OrcReadOptionsH\x01R\x03orc\x124\n\textension\x18\x0c \x01(\x0b2\x14.google.protobuf.AnyH\x01R\textension\x1a\x14\n\x12ParquetReadOptions\x1a\x12\n\x10ArrowReadOptions\x1a\x10\n\x0eOrcReadOptionsB\x0b\n\tpath_typeB\r\n\x0bfile_formatJ\x04\x08\x05\x10\x06R\x06formatB\x0b\n\tread_type"\x85\x02\n\nProjectRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12)\n\x05input\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x05input\x12<\n\x0bexpressions\x18\x03 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\x0bexpressions\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension"\xde\x04\n\x07JoinRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12\'\n\x04left\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x04left\x12)\n\x05right\x18\x03 \x01(\x0b2\x13.substrait.ibis.RelR\x05right\x12:\n\nexpression\x18\x04 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\nexpression\x12D\n\x10post_join_filter\x18\x05 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x0epostJoinFilter\x124\n\x04type\x18\x06 \x01(\x0e2 .substrait.ibis.JoinRel.JoinTypeR\x04type\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension"\xb6\x01\n\x08JoinType\x12\x19\n\x15JOIN_TYPE_UNSPECIFIED\x10\x00\x12\x13\n\x0fJOIN_TYPE_INNER\x10\x01\x12\x13\n\x0fJOIN_TYPE_OUTER\x10\x02\x12\x12\n\x0eJOIN_TYPE_LEFT\x10\x03\x12\x13\n\x0fJOIN_TYPE_RIGHT\x10\x04\x12\x12\n\x0eJOIN_TYPE_SEMI\x10\x05\x12\x12\n\x0eJOIN_TYPE_ANTI\x10\x06\x12\x14\n\x10JOIN_TYPE_SINGLE\x10\x07"\xee\x01\n\x08CrossRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12\'\n\x04left\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x04left\x12)\n\x05right\x18\x03 \x01(\x0b2\x13.substrait.ibis.RelR\x05right\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension"\xf3\x01\n\x08FetchRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12)\n\x05input\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x05input\x12\x16\n\x06offset\x18\x03 \x01(\x03R\x06offset\x12\x14\n\x05count\x18\x04 \x01(\x03R\x05count\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension"\xa7\x04\n\x0cAggregateRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12)\n\x05input\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x05input\x12C\n\tgroupings\x18\x03 \x03(\x0b2%.substrait.ibis.AggregateRel.GroupingR\tgroupings\x12@\n\x08measures\x18\x04 \x03(\x0b2$.substrait.ibis.AggregateRel.MeasureR\x08measures\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension\x1aY\n\x08Grouping\x12M\n\x14grouping_expressions\x18\x01 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\x13groupingExpressions\x1az\n\x07Measure\x12;\n\x07measure\x18\x01 \x01(\x0b2!.substrait.ibis.AggregateFunctionR\x07measure\x122\n\x06filter\x18\x02 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x06filter"\xf5\x01\n\x07SortRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12)\n\x05input\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x05input\x12/\n\x05sorts\x18\x03 \x03(\x0b2\x19.substrait.ibis.SortFieldR\x05sorts\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension"\x80\x02\n\tFilterRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12)\n\x05input\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x05input\x128\n\tcondition\x18\x03 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\tcondition\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension"\xbe\x03\n\x06SetRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12+\n\x06inputs\x18\x02 \x03(\x0b2\x13.substrait.ibis.RelR\x06inputs\x12,\n\x02op\x18\x03 \x01(\x0e2\x1c.substrait.ibis.SetRel.SetOpR\x02op\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension"\xc8\x01\n\x05SetOp\x12\x16\n\x12SET_OP_UNSPECIFIED\x10\x00\x12\x18\n\x14SET_OP_MINUS_PRIMARY\x10\x01\x12\x19\n\x15SET_OP_MINUS_MULTISET\x10\x02\x12\x1f\n\x1bSET_OP_INTERSECTION_PRIMARY\x10\x03\x12 \n\x1cSET_OP_INTERSECTION_MULTISET\x10\x04\x12\x19\n\x15SET_OP_UNION_DISTINCT\x10\x05\x12\x14\n\x10SET_OP_UNION_ALL\x10\x06"\xa0\x01\n\x12ExtensionSingleRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12)\n\x05input\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x05input\x12,\n\x06detail\x18\x03 \x01(\x0b2\x14.google.protobuf.AnyR\x06detail"s\n\x10ExtensionLeafRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12,\n\x06detail\x18\x02 \x01(\x0b2\x14.google.protobuf.AnyR\x06detail"\xa1\x01\n\x11ExtensionMultiRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12+\n\x06inputs\x18\x02 \x03(\x0b2\x13.substrait.ibis.RelR\x06inputs\x12,\n\x06detail\x18\x03 \x01(\x0b2\x14.google.protobuf.AnyR\x06detail"\xd6\t\n\x0bExchangeRel\x121\n\x06common\x18\x01 \x01(\x0b2\x19.substrait.ibis.RelCommonR\x06common\x12)\n\x05input\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x05input\x12\'\n\x0fpartition_count\x18\x03 \x01(\x05R\x0epartitionCount\x12D\n\x07targets\x18\x04 \x03(\x0b2*.substrait.ibis.ExchangeRel.ExchangeTargetR\x07targets\x12W\n\x11scatter_by_fields\x18\x05 \x01(\x0b2).substrait.ibis.ExchangeRel.ScatterFieldsH\x00R\x0fscatterByFields\x12Y\n\rsingle_target\x18\x06 \x01(\x0b22.substrait.ibis.ExchangeRel.SingleBucketExpressionH\x00R\x0csingleTarget\x12V\n\x0cmulti_target\x18\x07 \x01(\x0b21.substrait.ibis.ExchangeRel.MultiBucketExpressionH\x00R\x0bmultiTarget\x12I\n\x0bround_robin\x18\x08 \x01(\x0b2&.substrait.ibis.ExchangeRel.RoundRobinH\x00R\nroundRobin\x12E\n\tbroadcast\x18\t \x01(\x0b2%.substrait.ibis.ExchangeRel.BroadcastH\x00R\tbroadcast\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension\x1aR\n\rScatterFields\x12A\n\x06fields\x18\x01 \x03(\x0b2).substrait.ibis.Expression.FieldReferenceR\x06fields\x1aT\n\x16SingleBucketExpression\x12:\n\nexpression\x18\x01 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\nexpression\x1a\x85\x01\n\x15MultiBucketExpression\x12:\n\nexpression\x18\x01 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\nexpression\x120\n\x14constrained_to_count\x18\x02 \x01(\x08R\x12constrainedToCount\x1a\x0b\n\tBroadcast\x1a"\n\nRoundRobin\x12\x14\n\x05exact\x18\x01 \x01(\x08R\x05exact\x1a\x8a\x01\n\x0eExchangeTarget\x12!\n\x0cpartition_id\x18\x01 \x03(\x05R\x0bpartitionId\x12\x12\n\x03uri\x18\x02 \x01(\tH\x00R\x03uri\x122\n\x08extended\x18\x03 \x01(\x0b2\x14.google.protobuf.AnyH\x00R\x08extendedB\r\n\x0btarget_typeB\x0f\n\rexchange_kind"J\n\x07RelRoot\x12)\n\x05input\x18\x01 \x01(\x0b2\x13.substrait.ibis.RelR\x05input\x12\x14\n\x05names\x18\x02 \x03(\tR\x05names"\xc3\x05\n\x03Rel\x12-\n\x04read\x18\x01 \x01(\x0b2\x17.substrait.ibis.ReadRelH\x00R\x04read\x123\n\x06filter\x18\x02 \x01(\x0b2\x19.substrait.ibis.FilterRelH\x00R\x06filter\x120\n\x05fetch\x18\x03 \x01(\x0b2\x18.substrait.ibis.FetchRelH\x00R\x05fetch\x12<\n\taggregate\x18\x04 \x01(\x0b2\x1c.substrait.ibis.AggregateRelH\x00R\taggregate\x12-\n\x04sort\x18\x05 \x01(\x0b2\x17.substrait.ibis.SortRelH\x00R\x04sort\x12-\n\x04join\x18\x06 \x01(\x0b2\x17.substrait.ibis.JoinRelH\x00R\x04join\x126\n\x07project\x18\x07 \x01(\x0b2\x1a.substrait.ibis.ProjectRelH\x00R\x07project\x12*\n\x03set\x18\x08 \x01(\x0b2\x16.substrait.ibis.SetRelH\x00R\x03set\x12O\n\x10extension_single\x18\t \x01(\x0b2".substrait.ibis.ExtensionSingleRelH\x00R\x0fextensionSingle\x12L\n\x0fextension_multi\x18\n \x01(\x0b2!.substrait.ibis.ExtensionMultiRelH\x00R\x0eextensionMulti\x12I\n\x0eextension_leaf\x18\x0b \x01(\x0b2 .substrait.ibis.ExtensionLeafRelH\x00R\rextensionLeaf\x120\n\x05cross\x18\x0c \x01(\x0b2\x18.substrait.ibis.CrossRelH\x00R\x05crossB\n\n\x08rel_type"\x85\x01\n\x10NamedObjectWrite\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension"?\n\x0fExtensionObject\x12,\n\x06detail\x18\x01 \x01(\x0b2\x14.google.protobuf.AnyR\x06detail"\xc7\x05\n\x06DdlRel\x12E\n\x0cnamed_object\x18\x01 \x01(\x0b2 .substrait.ibis.NamedObjectWriteH\x00R\x0bnamedObject\x12L\n\x10extension_object\x18\x02 \x01(\x0b2\x1f.substrait.ibis.ExtensionObjectH\x00R\x0fextensionObject\x12>\n\x0ctable_schema\x18\x03 \x01(\x0b2\x1b.substrait.ibis.NamedStructR\x0btableSchema\x12P\n\x0etable_defaults\x18\x04 \x01(\x0b2).substrait.ibis.Expression.Literal.StructR\rtableDefaults\x128\n\x06object\x18\x05 \x01(\x0e2 .substrait.ibis.DdlRel.DdlObjectR\x06object\x12,\n\x02op\x18\x06 \x01(\x0e2\x1c.substrait.ibis.DdlRel.DdlOpR\x02op\x12<\n\x0fview_definition\x18\x07 \x01(\x0b2\x13.substrait.ibis.RelR\x0eviewDefinition"R\n\tDdlObject\x12\x1a\n\x16DDL_OBJECT_UNSPECIFIED\x10\x00\x12\x14\n\x10DDL_OBJECT_TABLE\x10\x01\x12\x13\n\x0fDDL_OBJECT_VIEW\x10\x02"\x8d\x01\n\x05DdlOp\x12\x16\n\x12DDL_OP_UNSPECIFIED\x10\x00\x12\x11\n\rDDL_OP_CREATE\x10\x01\x12\x1c\n\x18DDL_OP_CREATE_OR_REPLACE\x10\x02\x12\x10\n\x0cDDL_OP_ALTER\x10\x03\x12\x0f\n\x0bDDL_OP_DROP\x10\x04\x12\x18\n\x14DDL_OP_DROP_IF_EXIST\x10\x05B\x0c\n\nwrite_type"\xe1\x04\n\x08WriteRel\x12C\n\x0bnamed_table\x18\x01 \x01(\x0b2 .substrait.ibis.NamedObjectWriteH\x00R\nnamedTable\x12J\n\x0fextension_table\x18\x02 \x01(\x0b2\x1f.substrait.ibis.ExtensionObjectH\x00R\x0eextensionTable\x12>\n\x0ctable_schema\x18\x03 \x01(\x0b2\x1b.substrait.ibis.NamedStructR\x0btableSchema\x120\n\x02op\x18\x04 \x01(\x0e2 .substrait.ibis.WriteRel.WriteOpR\x02op\x12)\n\x05input\x18\x05 \x01(\x0b2\x13.substrait.ibis.RelR\x05input\x12;\n\x06output\x18\x06 \x01(\x0e2#.substrait.ibis.WriteRel.OutputModeR\x06output"u\n\x07WriteOp\x12\x18\n\x14WRITE_OP_UNSPECIFIED\x10\x00\x12\x13\n\x0fWRITE_OP_INSERT\x10\x01\x12\x13\n\x0fWRITE_OP_DELETE\x10\x02\x12\x13\n\x0fWRITE_OP_UPDATE\x10\x03\x12\x11\n\rWRITE_OP_CTAS\x10\x04"e\n\nOutputMode\x12\x1b\n\x17OUTPUT_MODE_UNSPECIFIED\x10\x00\x12\x19\n\x15OUTPUT_MODE_NO_OUTPUT\x10\x01\x12\x1f\n\x1bOUTPUT_MODE_MODIFIED_TUPLES\x10\x02B\x0c\n\nwrite_type"\xac\x02\n\x10FunctionArgument\x12;\n\x04enum\x18\x01 \x01(\x0b2%.substrait.ibis.FunctionArgument.EnumH\x00R\x04enum\x12*\n\x04type\x18\x02 \x01(\x0b2\x14.substrait.ibis.TypeH\x00R\x04type\x122\n\x05value\x18\x03 \x01(\x0b2\x1a.substrait.ibis.ExpressionH\x00R\x05value\x1ao\n\x04Enum\x12\x1e\n\tspecified\x18\x01 \x01(\tH\x00R\tspecified\x12:\n\x0bunspecified\x18\x02 \x01(\x0b2\x16.google.protobuf.EmptyH\x00R\x0bunspecifiedB\x0b\n\tenum_kindB\n\n\x08arg_type"\xdcP\n\nExpression\x12>\n\x07literal\x18\x01 \x01(\x0b2".substrait.ibis.Expression.LiteralH\x00R\x07literal\x12I\n\tselection\x18\x02 \x01(\x0b2).substrait.ibis.Expression.FieldReferenceH\x00R\tselection\x12T\n\x0fscalar_function\x18\x03 \x01(\x0b2).substrait.ibis.Expression.ScalarFunctionH\x00R\x0escalarFunction\x12T\n\x0fwindow_function\x18\x05 \x01(\x0b2).substrait.ibis.Expression.WindowFunctionH\x00R\x0ewindowFunction\x12<\n\x07if_then\x18\x06 \x01(\x0b2!.substrait.ibis.Expression.IfThenH\x00R\x06ifThen\x12Z\n\x11switch_expression\x18\x07 \x01(\x0b2+.substrait.ibis.Expression.SwitchExpressionH\x00R\x10switchExpression\x12U\n\x10singular_or_list\x18\x08 \x01(\x0b2).substrait.ibis.Expression.SingularOrListH\x00R\x0esingularOrList\x12L\n\rmulti_or_list\x18\t \x01(\x0b2&.substrait.ibis.Expression.MultiOrListH\x00R\x0bmultiOrList\x125\n\x04cast\x18\x0b \x01(\x0b2\x1f.substrait.ibis.Expression.CastH\x00R\x04cast\x12A\n\x08subquery\x18\x0c \x01(\x0b2#.substrait.ibis.Expression.SubqueryH\x00R\x08subquery\x129\n\x04enum\x18\n \x01(\x0b2\x1f.substrait.ibis.Expression.EnumB\x02\x18\x01H\x00R\x04enum\x1a\x8f\x01\n\x04Enum\x12\x1e\n\tspecified\x18\x01 \x01(\tH\x00R\tspecified\x12I\n\x0bunspecified\x18\x02 \x01(\x0b2%.substrait.ibis.Expression.Enum.EmptyH\x00R\x0bunspecified\x1a\x0b\n\x05Empty:\x02\x18\x01:\x02\x18\x01B\x0b\n\tenum_kind\x1a\xf1\x10\n\x07Literal\x12\x1a\n\x07boolean\x18\x01 \x01(\x08H\x00R\x07boolean\x12\x10\n\x02i8\x18\x02 \x01(\x05H\x00R\x02i8\x12\x12\n\x03i16\x18\x03 \x01(\x05H\x00R\x03i16\x12\x12\n\x03i32\x18\x05 \x01(\x05H\x00R\x03i32\x12\x12\n\x03i64\x18\x07 \x01(\x03H\x00R\x03i64\x12\x14\n\x04fp32\x18\n \x01(\x02H\x00R\x04fp32\x12\x14\n\x04fp64\x18\x0b \x01(\x01H\x00R\x04fp64\x12\x18\n\x06string\x18\x0c \x01(\tH\x00R\x06string\x12\x18\n\x06binary\x18\r \x01(\x0cH\x00R\x06binary\x12\x1e\n\ttimestamp\x18\x0e \x01(\x03H\x00R\ttimestamp\x12\x14\n\x04date\x18\x10 \x01(\x05H\x00R\x04date\x12\x14\n\x04time\x18\x11 \x01(\x03H\x00R\x04time\x12m\n\x16interval_year_to_month\x18\x13 \x01(\x0b26.substrait.ibis.Expression.Literal.IntervalYearToMonthH\x00R\x13intervalYearToMonth\x12m\n\x16interval_day_to_second\x18\x14 \x01(\x0b26.substrait.ibis.Expression.Literal.IntervalDayToSecondH\x00R\x13intervalDayToSecond\x12\x1f\n\nfixed_char\x18\x15 \x01(\tH\x00R\tfixedChar\x12G\n\x08var_char\x18\x16 \x01(\x0b2*.substrait.ibis.Expression.Literal.VarCharH\x00R\x07varChar\x12#\n\x0cfixed_binary\x18\x17 \x01(\x0cH\x00R\x0bfixedBinary\x12F\n\x07decimal\x18\x18 \x01(\x0b2*.substrait.ibis.Expression.Literal.DecimalH\x00R\x07decimal\x12C\n\x06struct\x18\x19 \x01(\x0b2).substrait.ibis.Expression.Literal.StructH\x00R\x06struct\x12:\n\x03map\x18\x1a \x01(\x0b2&.substrait.ibis.Expression.Literal.MapH\x00R\x03map\x12#\n\x0ctimestamp_tz\x18\x1b \x01(\x03H\x00R\x0btimestampTz\x12\x14\n\x04uuid\x18\x1c \x01(\x0cH\x00R\x04uuid\x12*\n\x04null\x18\x1d \x01(\x0b2\x14.substrait.ibis.TypeH\x00R\x04null\x12=\n\x04list\x18\x1e \x01(\x0b2\'.substrait.ibis.Expression.Literal.ListH\x00R\x04list\x12:\n\nempty_list\x18\x1f \x01(\x0b2\x19.substrait.ibis.Type.ListH\x00R\temptyList\x127\n\tempty_map\x18  \x01(\x0b2\x18.substrait.ibis.Type.MapH\x00R\x08emptyMap\x12S\n\x0cuser_defined\x18! \x01(\x0b2..substrait.ibis.Expression.Literal.UserDefinedH\x00R\x0buserDefined\x12\x1a\n\x08nullable\x182 \x01(\x08R\x08nullable\x128\n\x18type_variation_reference\x183 \x01(\rR\x16typeVariationReference\x1a7\n\x07VarChar\x12\x14\n\x05value\x18\x01 \x01(\tR\x05value\x12\x16\n\x06length\x18\x02 \x01(\rR\x06length\x1aS\n\x07Decimal\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x1c\n\tprecision\x18\x02 \x01(\x05R\tprecision\x12\x14\n\x05scale\x18\x03 \x01(\x05R\x05scale\x1a\xd1\x01\n\x03Map\x12N\n\nkey_values\x18\x01 \x03(\x0b2/.substrait.ibis.Expression.Literal.Map.KeyValueR\tkeyValues\x1az\n\x08KeyValue\x124\n\x03key\x18\x01 \x01(\x0b2".substrait.ibis.Expression.LiteralR\x03key\x128\n\x05value\x18\x02 \x01(\x0b2".substrait.ibis.Expression.LiteralR\x05value\x1aC\n\x13IntervalYearToMonth\x12\x14\n\x05years\x18\x01 \x01(\x05R\x05years\x12\x16\n\x06months\x18\x02 \x01(\x05R\x06months\x1ag\n\x13IntervalDayToSecond\x12\x12\n\x04days\x18\x01 \x01(\x05R\x04days\x12\x18\n\x07seconds\x18\x02 \x01(\x05R\x07seconds\x12"\n\x0cmicroseconds\x18\x03 \x01(\x05R\x0cmicroseconds\x1aD\n\x06Struct\x12:\n\x06fields\x18\x01 \x03(\x0b2".substrait.ibis.Expression.LiteralR\x06fields\x1aB\n\x04List\x12:\n\x06values\x18\x01 \x03(\x0b2".substrait.ibis.Expression.LiteralR\x06values\x1a\xa9\x01\n\x0bUserDefined\x12%\n\x0etype_reference\x18\x01 \x01(\rR\rtypeReference\x12G\n\x0ftype_parameters\x18\x03 \x03(\x0b2\x1e.substrait.ibis.Type.ParameterR\x0etypeParameters\x12*\n\x05value\x18\x02 \x01(\x0b2\x14.google.protobuf.AnyR\x05valueB\x0e\n\x0cliteral_type\x1a\xea\x01\n\x0eScalarFunction\x12-\n\x12function_reference\x18\x01 \x01(\rR\x11functionReference\x12>\n\targuments\x18\x04 \x03(\x0b2 .substrait.ibis.FunctionArgumentR\targuments\x125\n\x0boutput_type\x18\x03 \x01(\x0b2\x14.substrait.ibis.TypeR\noutputType\x122\n\x04args\x18\x02 \x03(\x0b2\x1a.substrait.ibis.ExpressionB\x02\x18\x01R\x04args\x1a\xf3\x08\n\x0eWindowFunction\x12-\n\x12function_reference\x18\x01 \x01(\rR\x11functionReference\x12>\n\targuments\x18\t \x03(\x0b2 .substrait.ibis.FunctionArgumentR\targuments\x125\n\x0boutput_type\x18\x07 \x01(\x0b2\x14.substrait.ibis.TypeR\noutputType\x126\n\x05phase\x18\x06 \x01(\x0e2 .substrait.ibis.AggregationPhaseR\x05phase\x12/\n\x05sorts\x18\x03 \x03(\x0b2\x19.substrait.ibis.SortFieldR\x05sorts\x12W\n\ninvocation\x18\n \x01(\x0e27.substrait.ibis.AggregateFunction.AggregationInvocationR\ninvocation\x12:\n\npartitions\x18\x02 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\npartitions\x12P\n\x0blower_bound\x18\x05 \x01(\x0b2/.substrait.ibis.Expression.WindowFunction.BoundR\nlowerBound\x12P\n\x0bupper_bound\x18\x04 \x01(\x0b2/.substrait.ibis.Expression.WindowFunction.BoundR\nupperBound\x122\n\x04args\x18\x08 \x03(\x0b2\x1a.substrait.ibis.ExpressionB\x02\x18\x01R\x04args\x1a\xe4\x03\n\x05Bound\x12Y\n\tpreceding\x18\x01 \x01(\x0b29.substrait.ibis.Expression.WindowFunction.Bound.PrecedingH\x00R\tpreceding\x12Y\n\tfollowing\x18\x02 \x01(\x0b29.substrait.ibis.Expression.WindowFunction.Bound.FollowingH\x00R\tfollowing\x12]\n\x0bcurrent_row\x18\x03 \x01(\x0b2:.substrait.ibis.Expression.WindowFunction.Bound.CurrentRowH\x00R\ncurrentRow\x12Y\n\tunbounded\x18\x04 \x01(\x0b29.substrait.ibis.Expression.WindowFunction.Bound.UnboundedH\x00R\tunbounded\x1a#\n\tPreceding\x12\x16\n\x06offset\x18\x01 \x01(\x03R\x06offset\x1a#\n\tFollowing\x12\x16\n\x06offset\x18\x01 \x01(\x03R\x06offset\x1a\x0c\n\nCurrentRow\x1a\x0b\n\tUnboundedB\x06\n\x04kind\x1a\xde\x01\n\x06IfThen\x12<\n\x03ifs\x18\x01 \x03(\x0b2*.substrait.ibis.Expression.IfThen.IfClauseR\x03ifs\x12.\n\x04else\x18\x02 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x04else\x1af\n\x08IfClause\x12*\n\x02if\x18\x01 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x02if\x12.\n\x04then\x18\x02 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x04then\x1a\xbb\x02\n\x04Cast\x12(\n\x04type\x18\x01 \x01(\x0b2\x14.substrait.ibis.TypeR\x04type\x120\n\x05input\x18\x02 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x05input\x12Z\n\x10failure_behavior\x18\x03 \x01(\x0e2/.substrait.ibis.Expression.Cast.FailureBehaviorR\x0ffailureBehavior"{\n\x0fFailureBehavior\x12 \n\x1cFAILURE_BEHAVIOR_UNSPECIFIED\x10\x00\x12 \n\x1cFAILURE_BEHAVIOR_RETURN_NULL\x10\x01\x12$\n FAILURE_BEHAVIOR_THROW_EXCEPTION\x10\x02\x1a\xaa\x02\n\x10SwitchExpression\x120\n\x05match\x18\x03 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x05match\x12E\n\x03ifs\x18\x01 \x03(\x0b23.substrait.ibis.Expression.SwitchExpression.IfValueR\x03ifs\x12.\n\x04else\x18\x02 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x04else\x1am\n\x07IfValue\x122\n\x02if\x18\x01 \x01(\x0b2".substrait.ibis.Expression.LiteralR\x02if\x12.\n\x04then\x18\x02 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x04then\x1ax\n\x0eSingularOrList\x120\n\x05value\x18\x01 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x05value\x124\n\x07options\x18\x02 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\x07options\x1a\xc6\x01\n\x0bMultiOrList\x120\n\x05value\x18\x01 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\x05value\x12G\n\x07options\x18\x02 \x03(\x0b2-.substrait.ibis.Expression.MultiOrList.RecordR\x07options\x1a<\n\x06Record\x122\n\x06fields\x18\x01 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\x06fields\x1a\xa7\x04\n\x10EmbeddedFunction\x128\n\targuments\x18\x01 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\targuments\x125\n\x0boutput_type\x18\x02 \x01(\x0b2\x14.substrait.ibis.TypeR\noutputType\x12x\n\x16python_pickle_function\x18\x03 \x01(\x0b2@.substrait.ibis.Expression.EmbeddedFunction.PythonPickleFunctionH\x00R\x14pythonPickleFunction\x12u\n\x15web_assembly_function\x18\x04 \x01(\x0b2?.substrait.ibis.Expression.EmbeddedFunction.WebAssemblyFunctionH\x00R\x13webAssemblyFunction\x1aV\n\x14PythonPickleFunction\x12\x1a\n\x08function\x18\x01 \x01(\x0cR\x08function\x12"\n\x0cprerequisite\x18\x02 \x03(\tR\x0cprerequisite\x1aQ\n\x13WebAssemblyFunction\x12\x16\n\x06script\x18\x01 \x01(\x0cR\x06script\x12"\n\x0cprerequisite\x18\x02 \x03(\tR\x0cprerequisiteB\x06\n\x04kind\x1a\x8c\x05\n\x10ReferenceSegment\x12M\n\x07map_key\x18\x01 \x01(\x0b22.substrait.ibis.Expression.ReferenceSegment.MapKeyH\x00R\x06mapKey\x12\\\n\x0cstruct_field\x18\x02 \x01(\x0b27.substrait.ibis.Expression.ReferenceSegment.StructFieldH\x00R\x0bstructField\x12\\\n\x0clist_element\x18\x03 \x01(\x0b27.substrait.ibis.Expression.ReferenceSegment.ListElementH\x00R\x0blistElement\x1a\x88\x01\n\x06MapKey\x12;\n\x07map_key\x18\x01 \x01(\x0b2".substrait.ibis.Expression.LiteralR\x06mapKey\x12A\n\x05child\x18\x02 \x01(\x0b2+.substrait.ibis.Expression.ReferenceSegmentR\x05child\x1af\n\x0bStructField\x12\x14\n\x05field\x18\x01 \x01(\x05R\x05field\x12A\n\x05child\x18\x02 \x01(\x0b2+.substrait.ibis.Expression.ReferenceSegmentR\x05child\x1ah\n\x0bListElement\x12\x16\n\x06offset\x18\x01 \x01(\x05R\x06offset\x12A\n\x05child\x18\x02 \x01(\x0b2+.substrait.ibis.Expression.ReferenceSegmentR\x05childB\x10\n\x0ereference_type\x1a\xe3\x0b\n\x0eMaskExpression\x12N\n\x06select\x18\x01 \x01(\x0b26.substrait.ibis.Expression.MaskExpression.StructSelectR\x06select\x128\n\x18maintain_singular_struct\x18\x02 \x01(\x08R\x16maintainSingularStruct\x1a\xf7\x01\n\x06Select\x12P\n\x06struct\x18\x01 \x01(\x0b26.substrait.ibis.Expression.MaskExpression.StructSelectH\x00R\x06struct\x12J\n\x04list\x18\x02 \x01(\x0b24.substrait.ibis.Expression.MaskExpression.ListSelectH\x00R\x04list\x12G\n\x03map\x18\x03 \x01(\x0b23.substrait.ibis.Expression.MaskExpression.MapSelectH\x00R\x03mapB\x06\n\x04type\x1ag\n\x0cStructSelect\x12W\n\x0cstruct_items\x18\x01 \x03(\x0b24.substrait.ibis.Expression.MaskExpression.StructItemR\x0bstructItems\x1aj\n\nStructItem\x12\x14\n\x05field\x18\x01 \x01(\x05R\x05field\x12F\n\x05child\x18\x02 \x01(\x0b20.substrait.ibis.Expression.MaskExpression.SelectR\x05child\x1a\xfa\x03\n\nListSelect\x12a\n\tselection\x18\x01 \x03(\x0b2C.substrait.ibis.Expression.MaskExpression.ListSelect.ListSelectItemR\tselection\x12F\n\x05child\x18\x02 \x01(\x0b20.substrait.ibis.Expression.MaskExpression.SelectR\x05child\x1a\xc0\x02\n\x0eListSelectItem\x12e\n\x04item\x18\x01 \x01(\x0b2O.substrait.ibis.Expression.MaskExpression.ListSelect.ListSelectItem.ListElementH\x00R\x04item\x12e\n\x05slice\x18\x02 \x01(\x0b2M.substrait.ibis.Expression.MaskExpression.ListSelect.ListSelectItem.ListSliceH\x00R\x05slice\x1a#\n\x0bListElement\x12\x14\n\x05field\x18\x01 \x01(\x05R\x05field\x1a3\n\tListSlice\x12\x14\n\x05start\x18\x01 \x01(\x05R\x05start\x12\x10\n\x03end\x18\x02 \x01(\x05R\x03endB\x06\n\x04type\x1a\xfa\x02\n\tMapSelect\x12N\n\x03key\x18\x01 \x01(\x0b2:.substrait.ibis.Expression.MaskExpression.MapSelect.MapKeyH\x00R\x03key\x12f\n\nexpression\x18\x02 \x01(\x0b2D.substrait.ibis.Expression.MaskExpression.MapSelect.MapKeyExpressionH\x00R\nexpression\x12F\n\x05child\x18\x03 \x01(\x0b20.substrait.ibis.Expression.MaskExpression.SelectR\x05child\x1a!\n\x06MapKey\x12\x17\n\x07map_key\x18\x01 \x01(\tR\x06mapKey\x1a@\n\x10MapKeyExpression\x12,\n\x12map_key_expression\x18\x01 \x01(\tR\x10mapKeyExpressionB\x08\n\x06select\x1a\xa6\x04\n\x0eFieldReference\x12X\n\x10direct_reference\x18\x01 \x01(\x0b2+.substrait.ibis.Expression.ReferenceSegmentH\x00R\x0fdirectReference\x12V\n\x10masked_reference\x18\x02 \x01(\x0b2).substrait.ibis.Expression.MaskExpressionH\x00R\x0fmaskedReference\x12<\n\nexpression\x18\x03 \x01(\x0b2\x1a.substrait.ibis.ExpressionH\x01R\nexpression\x12`\n\x0eroot_reference\x18\x04 \x01(\x0b27.substrait.ibis.Expression.FieldReference.RootReferenceH\x01R\rrootReference\x12c\n\x0fouter_reference\x18\x05 \x01(\x0b28.substrait.ibis.Expression.FieldReference.OuterReferenceH\x01R\x0eouterReference\x1a\x0f\n\rRootReference\x1a-\n\x0eOuterReference\x12\x1b\n\tsteps_out\x18\x01 \x01(\rR\x08stepsOutB\x10\n\x0ereference_typeB\x0b\n\troot_type\x1a\xd6\n\n\x08Subquery\x12D\n\x06scalar\x18\x01 \x01(\x0b2*.substrait.ibis.Expression.Subquery.ScalarH\x00R\x06scalar\x12T\n\x0cin_predicate\x18\x02 \x01(\x0b2/.substrait.ibis.Expression.Subquery.InPredicateH\x00R\x0binPredicate\x12W\n\rset_predicate\x18\x03 \x01(\x0b20.substrait.ibis.Expression.Subquery.SetPredicateH\x00R\x0csetPredicate\x12Z\n\x0eset_comparison\x18\x04 \x01(\x0b21.substrait.ibis.Expression.Subquery.SetComparisonH\x00R\rsetComparison\x1a3\n\x06Scalar\x12)\n\x05input\x18\x01 \x01(\x0b2\x13.substrait.ibis.RelR\x05input\x1at\n\x0bInPredicate\x124\n\x07needles\x18\x01 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\x07needles\x12/\n\x08haystack\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x08haystack\x1a\xfb\x01\n\x0cSetPredicate\x12_\n\x0cpredicate_op\x18\x01 \x01(\x0e2<.substrait.ibis.Expression.Subquery.SetPredicate.PredicateOpR\x0bpredicateOp\x12+\n\x06tuples\x18\x02 \x01(\x0b2\x13.substrait.ibis.RelR\x06tuples"]\n\x0bPredicateOp\x12\x1c\n\x18PREDICATE_OP_UNSPECIFIED\x10\x00\x12\x17\n\x13PREDICATE_OP_EXISTS\x10\x01\x12\x17\n\x13PREDICATE_OP_UNIQUE\x10\x02\x1a\xbe\x04\n\rSetComparison\x12`\n\x0creduction_op\x18\x01 \x01(\x0e2=.substrait.ibis.Expression.Subquery.SetComparison.ReductionOpR\x0breductionOp\x12c\n\rcomparison_op\x18\x02 \x01(\x0e2>.substrait.ibis.Expression.Subquery.SetComparison.ComparisonOpR\x0ccomparisonOp\x12.\n\x04left\x18\x03 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x04left\x12)\n\x05right\x18\x04 \x01(\x0b2\x13.substrait.ibis.RelR\x05right"\xb1\x01\n\x0cComparisonOp\x12\x1d\n\x19COMPARISON_OP_UNSPECIFIED\x10\x00\x12\x14\n\x10COMPARISON_OP_EQ\x10\x01\x12\x14\n\x10COMPARISON_OP_NE\x10\x02\x12\x14\n\x10COMPARISON_OP_LT\x10\x03\x12\x14\n\x10COMPARISON_OP_GT\x10\x04\x12\x14\n\x10COMPARISON_OP_LE\x10\x05\x12\x14\n\x10COMPARISON_OP_GE\x10\x06"W\n\x0bReductionOp\x12\x1c\n\x18REDUCTION_OP_UNSPECIFIED\x10\x00\x12\x14\n\x10REDUCTION_OP_ANY\x10\x01\x12\x14\n\x10REDUCTION_OP_ALL\x10\x02B\x0f\n\rsubquery_typeB\n\n\x08rex_type"\xb7\x03\n\tSortField\x12.\n\x04expr\x18\x01 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x04expr\x12G\n\tdirection\x18\x02 \x01(\x0e2\'.substrait.ibis.SortField.SortDirectionH\x00R\tdirection\x12D\n\x1dcomparison_function_reference\x18\x03 \x01(\rH\x00R\x1bcomparisonFunctionReference"\xdd\x01\n\rSortDirection\x12\x1e\n\x1aSORT_DIRECTION_UNSPECIFIED\x10\x00\x12"\n\x1eSORT_DIRECTION_ASC_NULLS_FIRST\x10\x01\x12!\n\x1dSORT_DIRECTION_ASC_NULLS_LAST\x10\x02\x12#\n\x1fSORT_DIRECTION_DESC_NULLS_FIRST\x10\x03\x12"\n\x1eSORT_DIRECTION_DESC_NULLS_LAST\x10\x04\x12\x1c\n\x18SORT_DIRECTION_CLUSTERED\x10\x05B\x0b\n\tsort_kind"\xef\x04\n\x11AggregateFunction\x12-\n\x12function_reference\x18\x01 \x01(\rR\x11functionReference\x12>\n\targuments\x18\x07 \x03(\x0b2 .substrait.ibis.FunctionArgumentR\targuments\x125\n\x0boutput_type\x18\x05 \x01(\x0b2\x14.substrait.ibis.TypeR\noutputType\x126\n\x05phase\x18\x04 \x01(\x0e2 .substrait.ibis.AggregationPhaseR\x05phase\x12/\n\x05sorts\x18\x03 \x03(\x0b2\x19.substrait.ibis.SortFieldR\x05sorts\x12W\n\ninvocation\x18\x06 \x01(\x0e27.substrait.ibis.AggregateFunction.AggregationInvocationR\ninvocation\x122\n\x04args\x18\x02 \x03(\x0b2\x1a.substrait.ibis.ExpressionB\x02\x18\x01R\x04args\x1a7\n\x0cReferenceRel\x12\'\n\x0fsubtree_ordinal\x18\x01 \x01(\x05R\x0esubtreeOrdinal"\x84\x01\n\x15AggregationInvocation\x12&\n"AGGREGATION_INVOCATION_UNSPECIFIED\x10\x00\x12\x1e\n\x1aAGGREGATION_INVOCATION_ALL\x10\x01\x12#\n\x1fAGGREGATION_INVOCATION_DISTINCT\x10\x02*\xef\x01\n\x10AggregationPhase\x12!\n\x1dAGGREGATION_PHASE_UNSPECIFIED\x10\x00\x12-\n)AGGREGATION_PHASE_INITIAL_TO_INTERMEDIATE\x10\x01\x122\n.AGGREGATION_PHASE_INTERMEDIATE_TO_INTERMEDIATE\x10\x02\x12\'\n#AGGREGATION_PHASE_INITIAL_TO_RESULT\x10\x03\x12,\n(AGGREGATION_PHASE_INTERMEDIATE_TO_RESULT\x10\x04B5\n\x17io.substrait.ibis.protoP\x01\xaa\x02\x17Substrait.Ibis.Protobufb\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'substrait.ibis.algebra_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
    DESCRIPTOR._options = None
    DESCRIPTOR._serialized_options = b'\n\x17io.substrait.ibis.protoP\x01\xaa\x02\x17Substrait.Ibis.Protobuf'
    _EXPRESSION_ENUM_EMPTY._options = None
    _EXPRESSION_ENUM_EMPTY._serialized_options = b'\x18\x01'
    _EXPRESSION_ENUM._options = None
    _EXPRESSION_ENUM._serialized_options = b'\x18\x01'
    _EXPRESSION_SCALARFUNCTION.fields_by_name['args']._options = None
    _EXPRESSION_SCALARFUNCTION.fields_by_name['args']._serialized_options = b'\x18\x01'
    _EXPRESSION_WINDOWFUNCTION.fields_by_name['args']._options = None
    _EXPRESSION_WINDOWFUNCTION.fields_by_name['args']._serialized_options = b'\x18\x01'
    _EXPRESSION.fields_by_name['enum']._options = None
    _EXPRESSION.fields_by_name['enum']._serialized_options = b'\x18\x01'
    _AGGREGATEFUNCTION.fields_by_name['args']._options = None
    _AGGREGATEFUNCTION.fields_by_name['args']._serialized_options = b'\x18\x01'
    _AGGREGATIONPHASE._serialized_start = 21385
    _AGGREGATIONPHASE._serialized_end = 21624
    _RELCOMMON._serialized_start = 176
    _RELCOMMON._serialized_end = 1039
    _RELCOMMON_DIRECT._serialized_start = 448
    _RELCOMMON_DIRECT._serialized_end = 456
    _RELCOMMON_EMIT._serialized_start = 458
    _RELCOMMON_EMIT._serialized_end = 503
    _RELCOMMON_HINT._serialized_start = 506
    _RELCOMMON_HINT._serialized_end = 1026
    _RELCOMMON_HINT_STATS._serialized_start = 750
    _RELCOMMON_HINT_STATS._serialized_end = 912
    _RELCOMMON_HINT_RUNTIMECONSTRAINT._serialized_start = 914
    _RELCOMMON_HINT_RUNTIMECONSTRAINT._serialized_end = 1026
    _READREL._serialized_start = 1042
    _READREL._serialized_end = 2808
    _READREL_NAMEDTABLE._serialized_start = 1688
    _READREL_NAMEDTABLE._serialized_end = 1815
    _READREL_VIRTUALTABLE._serialized_start = 1817
    _READREL_VIRTUALTABLE._serialized_end = 1898
    _READREL_EXTENSIONTABLE._serialized_start = 1900
    _READREL_EXTENSIONTABLE._serialized_end = 1962
    _READREL_LOCALFILES._serialized_start = 1965
    _READREL_LOCALFILES._serialized_end = 2795
    _READREL_LOCALFILES_FILEORFILES._serialized_start = 2143
    _READREL_LOCALFILES_FILEORFILES._serialized_end = 2795
    _READREL_LOCALFILES_FILEORFILES_PARQUETREADOPTIONS._serialized_start = 2695
    _READREL_LOCALFILES_FILEORFILES_PARQUETREADOPTIONS._serialized_end = 2715
    _READREL_LOCALFILES_FILEORFILES_ARROWREADOPTIONS._serialized_start = 2717
    _READREL_LOCALFILES_FILEORFILES_ARROWREADOPTIONS._serialized_end = 2735
    _READREL_LOCALFILES_FILEORFILES_ORCREADOPTIONS._serialized_start = 2737
    _READREL_LOCALFILES_FILEORFILES_ORCREADOPTIONS._serialized_end = 2753
    _PROJECTREL._serialized_start = 2811
    _PROJECTREL._serialized_end = 3072
    _JOINREL._serialized_start = 3075
    _JOINREL._serialized_end = 3681
    _JOINREL_JOINTYPE._serialized_start = 3499
    _JOINREL_JOINTYPE._serialized_end = 3681
    _CROSSREL._serialized_start = 3684
    _CROSSREL._serialized_end = 3922
    _FETCHREL._serialized_start = 3925
    _FETCHREL._serialized_end = 4168
    _AGGREGATEREL._serialized_start = 4171
    _AGGREGATEREL._serialized_end = 4722
    _AGGREGATEREL_GROUPING._serialized_start = 4509
    _AGGREGATEREL_GROUPING._serialized_end = 4598
    _AGGREGATEREL_MEASURE._serialized_start = 4600
    _AGGREGATEREL_MEASURE._serialized_end = 4722
    _SORTREL._serialized_start = 4725
    _SORTREL._serialized_end = 4970
    _FILTERREL._serialized_start = 4973
    _FILTERREL._serialized_end = 5229
    _SETREL._serialized_start = 5232
    _SETREL._serialized_end = 5678
    _SETREL_SETOP._serialized_start = 5478
    _SETREL_SETOP._serialized_end = 5678
    _EXTENSIONSINGLEREL._serialized_start = 5681
    _EXTENSIONSINGLEREL._serialized_end = 5841
    _EXTENSIONLEAFREL._serialized_start = 5843
    _EXTENSIONLEAFREL._serialized_end = 5958
    _EXTENSIONMULTIREL._serialized_start = 5961
    _EXTENSIONMULTIREL._serialized_end = 6122
    _EXCHANGEREL._serialized_start = 6125
    _EXCHANGEREL._serialized_end = 7363
    _EXCHANGEREL_SCATTERFIELDS._serialized_start = 6852
    _EXCHANGEREL_SCATTERFIELDS._serialized_end = 6934
    _EXCHANGEREL_SINGLEBUCKETEXPRESSION._serialized_start = 6936
    _EXCHANGEREL_SINGLEBUCKETEXPRESSION._serialized_end = 7020
    _EXCHANGEREL_MULTIBUCKETEXPRESSION._serialized_start = 7023
    _EXCHANGEREL_MULTIBUCKETEXPRESSION._serialized_end = 7156
    _EXCHANGEREL_BROADCAST._serialized_start = 7158
    _EXCHANGEREL_BROADCAST._serialized_end = 7169
    _EXCHANGEREL_ROUNDROBIN._serialized_start = 7171
    _EXCHANGEREL_ROUNDROBIN._serialized_end = 7205
    _EXCHANGEREL_EXCHANGETARGET._serialized_start = 7208
    _EXCHANGEREL_EXCHANGETARGET._serialized_end = 7346
    _RELROOT._serialized_start = 7365
    _RELROOT._serialized_end = 7439
    _REL._serialized_start = 7442
    _REL._serialized_end = 8149
    _NAMEDOBJECTWRITE._serialized_start = 8152
    _NAMEDOBJECTWRITE._serialized_end = 8285
    _EXTENSIONOBJECT._serialized_start = 8287
    _EXTENSIONOBJECT._serialized_end = 8350
    _DDLREL._serialized_start = 8353
    _DDLREL._serialized_end = 9064
    _DDLREL_DDLOBJECT._serialized_start = 8824
    _DDLREL_DDLOBJECT._serialized_end = 8906
    _DDLREL_DDLOP._serialized_start = 8909
    _DDLREL_DDLOP._serialized_end = 9050
    _WRITEREL._serialized_start = 9067
    _WRITEREL._serialized_end = 9676
    _WRITEREL_WRITEOP._serialized_start = 9442
    _WRITEREL_WRITEOP._serialized_end = 9559
    _WRITEREL_OUTPUTMODE._serialized_start = 9561
    _WRITEREL_OUTPUTMODE._serialized_end = 9662
    _FUNCTIONARGUMENT._serialized_start = 9679
    _FUNCTIONARGUMENT._serialized_end = 9979
    _FUNCTIONARGUMENT_ENUM._serialized_start = 9856
    _FUNCTIONARGUMENT_ENUM._serialized_end = 9967
    _EXPRESSION._serialized_start = 9982
    _EXPRESSION._serialized_end = 20314
    _EXPRESSION_ENUM._serialized_start = 10808
    _EXPRESSION_ENUM._serialized_end = 10951
    _EXPRESSION_ENUM_EMPTY._serialized_start = 10923
    _EXPRESSION_ENUM_EMPTY._serialized_end = 10934
    _EXPRESSION_LITERAL._serialized_start = 10954
    _EXPRESSION_LITERAL._serialized_end = 13115
    _EXPRESSION_LITERAL_VARCHAR._serialized_start = 12263
    _EXPRESSION_LITERAL_VARCHAR._serialized_end = 12318
    _EXPRESSION_LITERAL_DECIMAL._serialized_start = 12320
    _EXPRESSION_LITERAL_DECIMAL._serialized_end = 12403
    _EXPRESSION_LITERAL_MAP._serialized_start = 12406
    _EXPRESSION_LITERAL_MAP._serialized_end = 12615
    _EXPRESSION_LITERAL_MAP_KEYVALUE._serialized_start = 12493
    _EXPRESSION_LITERAL_MAP_KEYVALUE._serialized_end = 12615
    _EXPRESSION_LITERAL_INTERVALYEARTOMONTH._serialized_start = 12617
    _EXPRESSION_LITERAL_INTERVALYEARTOMONTH._serialized_end = 12684
    _EXPRESSION_LITERAL_INTERVALDAYTOSECOND._serialized_start = 12686
    _EXPRESSION_LITERAL_INTERVALDAYTOSECOND._serialized_end = 12789
    _EXPRESSION_LITERAL_STRUCT._serialized_start = 12791
    _EXPRESSION_LITERAL_STRUCT._serialized_end = 12859
    _EXPRESSION_LITERAL_LIST._serialized_start = 12861
    _EXPRESSION_LITERAL_LIST._serialized_end = 12927
    _EXPRESSION_LITERAL_USERDEFINED._serialized_start = 12930
    _EXPRESSION_LITERAL_USERDEFINED._serialized_end = 13099
    _EXPRESSION_SCALARFUNCTION._serialized_start = 13118
    _EXPRESSION_SCALARFUNCTION._serialized_end = 13352
    _EXPRESSION_WINDOWFUNCTION._serialized_start = 13355
    _EXPRESSION_WINDOWFUNCTION._serialized_end = 14494
    _EXPRESSION_WINDOWFUNCTION_BOUND._serialized_start = 14010
    _EXPRESSION_WINDOWFUNCTION_BOUND._serialized_end = 14494
    _EXPRESSION_WINDOWFUNCTION_BOUND_PRECEDING._serialized_start = 14387
    _EXPRESSION_WINDOWFUNCTION_BOUND_PRECEDING._serialized_end = 14422
    _EXPRESSION_WINDOWFUNCTION_BOUND_FOLLOWING._serialized_start = 14424
    _EXPRESSION_WINDOWFUNCTION_BOUND_FOLLOWING._serialized_end = 14459
    _EXPRESSION_WINDOWFUNCTION_BOUND_CURRENTROW._serialized_start = 14461
    _EXPRESSION_WINDOWFUNCTION_BOUND_CURRENTROW._serialized_end = 14473
    _EXPRESSION_WINDOWFUNCTION_BOUND_UNBOUNDED._serialized_start = 14475
    _EXPRESSION_WINDOWFUNCTION_BOUND_UNBOUNDED._serialized_end = 14486
    _EXPRESSION_IFTHEN._serialized_start = 14497
    _EXPRESSION_IFTHEN._serialized_end = 14719
    _EXPRESSION_IFTHEN_IFCLAUSE._serialized_start = 14617
    _EXPRESSION_IFTHEN_IFCLAUSE._serialized_end = 14719
    _EXPRESSION_CAST._serialized_start = 14722
    _EXPRESSION_CAST._serialized_end = 15037
    _EXPRESSION_CAST_FAILUREBEHAVIOR._serialized_start = 14914
    _EXPRESSION_CAST_FAILUREBEHAVIOR._serialized_end = 15037
    _EXPRESSION_SWITCHEXPRESSION._serialized_start = 15040
    _EXPRESSION_SWITCHEXPRESSION._serialized_end = 15338
    _EXPRESSION_SWITCHEXPRESSION_IFVALUE._serialized_start = 15229
    _EXPRESSION_SWITCHEXPRESSION_IFVALUE._serialized_end = 15338
    _EXPRESSION_SINGULARORLIST._serialized_start = 15340
    _EXPRESSION_SINGULARORLIST._serialized_end = 15460
    _EXPRESSION_MULTIORLIST._serialized_start = 15463
    _EXPRESSION_MULTIORLIST._serialized_end = 15661
    _EXPRESSION_MULTIORLIST_RECORD._serialized_start = 15601
    _EXPRESSION_MULTIORLIST_RECORD._serialized_end = 15661
    _EXPRESSION_EMBEDDEDFUNCTION._serialized_start = 15664
    _EXPRESSION_EMBEDDEDFUNCTION._serialized_end = 16215
    _EXPRESSION_EMBEDDEDFUNCTION_PYTHONPICKLEFUNCTION._serialized_start = 16038
    _EXPRESSION_EMBEDDEDFUNCTION_PYTHONPICKLEFUNCTION._serialized_end = 16124
    _EXPRESSION_EMBEDDEDFUNCTION_WEBASSEMBLYFUNCTION._serialized_start = 16126
    _EXPRESSION_EMBEDDEDFUNCTION_WEBASSEMBLYFUNCTION._serialized_end = 16207
    _EXPRESSION_REFERENCESEGMENT._serialized_start = 16218
    _EXPRESSION_REFERENCESEGMENT._serialized_end = 16870
    _EXPRESSION_REFERENCESEGMENT_MAPKEY._serialized_start = 16506
    _EXPRESSION_REFERENCESEGMENT_MAPKEY._serialized_end = 16642
    _EXPRESSION_REFERENCESEGMENT_STRUCTFIELD._serialized_start = 16644
    _EXPRESSION_REFERENCESEGMENT_STRUCTFIELD._serialized_end = 16746
    _EXPRESSION_REFERENCESEGMENT_LISTELEMENT._serialized_start = 16748
    _EXPRESSION_REFERENCESEGMENT_LISTELEMENT._serialized_end = 16852
    _EXPRESSION_MASKEXPRESSION._serialized_start = 16873
    _EXPRESSION_MASKEXPRESSION._serialized_end = 18380
    _EXPRESSION_MASKEXPRESSION_SELECT._serialized_start = 17030
    _EXPRESSION_MASKEXPRESSION_SELECT._serialized_end = 17277
    _EXPRESSION_MASKEXPRESSION_STRUCTSELECT._serialized_start = 17279
    _EXPRESSION_MASKEXPRESSION_STRUCTSELECT._serialized_end = 17382
    _EXPRESSION_MASKEXPRESSION_STRUCTITEM._serialized_start = 17384
    _EXPRESSION_MASKEXPRESSION_STRUCTITEM._serialized_end = 17490
    _EXPRESSION_MASKEXPRESSION_LISTSELECT._serialized_start = 17493
    _EXPRESSION_MASKEXPRESSION_LISTSELECT._serialized_end = 17999
    _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM._serialized_start = 17679
    _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM._serialized_end = 17999
    _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTELEMENT._serialized_start = 17903
    _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTELEMENT._serialized_end = 17938
    _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTSLICE._serialized_start = 17940
    _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTSLICE._serialized_end = 17991
    _EXPRESSION_MASKEXPRESSION_MAPSELECT._serialized_start = 18002
    _EXPRESSION_MASKEXPRESSION_MAPSELECT._serialized_end = 18380
    _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEY._serialized_start = 18271
    _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEY._serialized_end = 18304
    _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEYEXPRESSION._serialized_start = 18306
    _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEYEXPRESSION._serialized_end = 18370
    _EXPRESSION_FIELDREFERENCE._serialized_start = 18383
    _EXPRESSION_FIELDREFERENCE._serialized_end = 18933
    _EXPRESSION_FIELDREFERENCE_ROOTREFERENCE._serialized_start = 18840
    _EXPRESSION_FIELDREFERENCE_ROOTREFERENCE._serialized_end = 18855
    _EXPRESSION_FIELDREFERENCE_OUTERREFERENCE._serialized_start = 18857
    _EXPRESSION_FIELDREFERENCE_OUTERREFERENCE._serialized_end = 18902
    _EXPRESSION_SUBQUERY._serialized_start = 18936
    _EXPRESSION_SUBQUERY._serialized_end = 20302
    _EXPRESSION_SUBQUERY_SCALAR._serialized_start = 19285
    _EXPRESSION_SUBQUERY_SCALAR._serialized_end = 19336
    _EXPRESSION_SUBQUERY_INPREDICATE._serialized_start = 19338
    _EXPRESSION_SUBQUERY_INPREDICATE._serialized_end = 19454
    _EXPRESSION_SUBQUERY_SETPREDICATE._serialized_start = 19457
    _EXPRESSION_SUBQUERY_SETPREDICATE._serialized_end = 19708
    _EXPRESSION_SUBQUERY_SETPREDICATE_PREDICATEOP._serialized_start = 19615
    _EXPRESSION_SUBQUERY_SETPREDICATE_PREDICATEOP._serialized_end = 19708
    _EXPRESSION_SUBQUERY_SETCOMPARISON._serialized_start = 19711
    _EXPRESSION_SUBQUERY_SETCOMPARISON._serialized_end = 20285
    _EXPRESSION_SUBQUERY_SETCOMPARISON_COMPARISONOP._serialized_start = 20019
    _EXPRESSION_SUBQUERY_SETCOMPARISON_COMPARISONOP._serialized_end = 20196
    _EXPRESSION_SUBQUERY_SETCOMPARISON_REDUCTIONOP._serialized_start = 20198
    _EXPRESSION_SUBQUERY_SETCOMPARISON_REDUCTIONOP._serialized_end = 20285
    _SORTFIELD._serialized_start = 20317
    _SORTFIELD._serialized_end = 20756
    _SORTFIELD_SORTDIRECTION._serialized_start = 20522
    _SORTFIELD_SORTDIRECTION._serialized_end = 20743
    _AGGREGATEFUNCTION._serialized_start = 20759
    _AGGREGATEFUNCTION._serialized_end = 21382
    _AGGREGATEFUNCTION_REFERENCEREL._serialized_start = 21192
    _AGGREGATEFUNCTION_REFERENCEREL._serialized_end = 21247
    _AGGREGATEFUNCTION_AGGREGATIONINVOCATION._serialized_start = 21250
    _AGGREGATEFUNCTION_AGGREGATIONINVOCATION._serialized_end = 21382