diff --git a/ibis_substrait/proto/substrait/ibis/__init__.pyi b/ibis_substrait/proto/substrait/ibis/__init__.pyi index c97e102f..83c7726e 100644 --- a/ibis_substrait/proto/substrait/ibis/__init__.pyi +++ b/ibis_substrait/proto/substrait/ibis/__init__.pyi @@ -1,8 +1,9 @@ -from . import parameterized_types_pb2 -from . import capabilities_pb2 +from . import extensions +from . import extended_expression_pb2 from . import function_pb2 from . import plan_pb2 +from . import capabilities_pb2 from . import type_pb2 +from . import parameterized_types_pb2 from . import algebra_pb2 from . import type_expressions_pb2 -from . import extensions diff --git a/ibis_substrait/proto/substrait/ibis/algebra_pb2.py b/ibis_substrait/proto/substrait/ibis/algebra_pb2.py index d0527c7f..0ba6f19b 100644 --- a/ibis_substrait/proto/substrait/ibis/algebra_pb2.py +++ b/ibis_substrait/proto/substrait/ibis/algebra_pb2.py @@ -7,7 +7,7 @@ from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__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*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"\x99\x0f\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\x12H\n\x12best_effort_filter\x18\x0b \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x10bestEffortFilter\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\xa7\x07\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\xf5\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\x12T\n\x04dwrf\x18\r \x01(\x0b2>.substrait.ibis.ReadRel.LocalFiles.FileOrFiles.DwrfReadOptionsH\x01R\x04dwrf\x1a\x14\n\x12ParquetReadOptions\x1a\x12\n\x10ArrowReadOptions\x1a\x10\n\x0eOrcReadOptions\x1a\x11\n\x0fDwrfReadOptionsB\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"\x94\x01\n\x10FunctionArgument\x12\x14\n\x04enum\x18\x01 \x01(\tH\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\x05valueB\n\n\x08arg_type"D\n\x0eFunctionOption\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1e\n\npreference\x18\x02 \x03(\tR\npreference"\xf7V\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\x12;\n\x06nested\x18\r \x01(\x0b2!.substrait.ibis.Expression.NestedH\x00R\x06nested\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\xe7\x04\n\x06Nested\x12\x1a\n\x08nullable\x18\x01 \x01(\x08R\x08nullable\x128\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12B\n\x06struct\x18\x03 \x01(\x0b2(.substrait.ibis.Expression.Nested.StructH\x00R\x06struct\x12<\n\x04list\x18\x04 \x01(\x0b2&.substrait.ibis.Expression.Nested.ListH\x00R\x04list\x129\n\x03map\x18\x05 \x01(\x0b2%.substrait.ibis.Expression.Nested.MapH\x00R\x03map\x1a\xc0\x01\n\x03Map\x12M\n\nkey_values\x18\x01 \x03(\x0b2..substrait.ibis.Expression.Nested.Map.KeyValueR\tkeyValues\x1aj\n\x08KeyValue\x12,\n\x03key\x18\x01 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x03key\x120\n\x05value\x18\x02 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x05value\x1a<\n\x06Struct\x122\n\x06fields\x18\x01 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\x06fields\x1a:\n\x04List\x122\n\x06values\x18\x01 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\x06valuesB\r\n\x0bnested_type\x1a\xa4\x02\n\x0eScalarFunction\x12-\n\x12function_reference\x18\x01 \x01(\rR\x11functionReference\x12>\n\targuments\x18\x04 \x03(\x0b2 .substrait.ibis.FunctionArgumentR\targuments\x128\n\x07options\x18\x05 \x03(\x0b2\x1e.substrait.ibis.FunctionOptionR\x07options\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\xad\t\n\x0eWindowFunction\x12-\n\x12function_reference\x18\x01 \x01(\rR\x11functionReference\x12>\n\targuments\x18\t \x03(\x0b2 .substrait.ibis.FunctionArgumentR\targuments\x128\n\x07options\x18\x0b \x03(\x0b2\x1e.substrait.ibis.FunctionOptionR\x07options\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"\xa9\x05\n\x11AggregateFunction\x12-\n\x12function_reference\x18\x01 \x01(\rR\x11functionReference\x12>\n\targuments\x18\x07 \x03(\x0b2 .substrait.ibis.FunctionArgumentR\targuments\x128\n\x07options\x18\x08 \x03(\x0b2\x1e.substrait.ibis.FunctionOptionR\x07options\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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1csubstrait/ibis/algebra.proto\x12\x0esubstrait.ibis\x1a\x19google/protobuf/any.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"\x99\x0f\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\x12H\n\x12best_effort_filter\x18\x0b \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x10bestEffortFilter\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\xa7\x07\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\xf5\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\x12T\n\x04dwrf\x18\r \x01(\x0b2>.substrait.ibis.ReadRel.LocalFiles.FileOrFiles.DwrfReadOptionsH\x01R\x04dwrf\x1a\x14\n\x12ParquetReadOptions\x1a\x12\n\x10ArrowReadOptions\x1a\x10\n\x0eOrcReadOptions\x1a\x11\n\x0fDwrfReadOptionsB\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"\xbe\x06\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\x05cross\x12:\n\thash_join\x18\r \x01(\x0b2\x1b.substrait.ibis.HashJoinRelH\x00R\x08hashJoin\x12=\n\nmerge_join\x18\x0e \x01(\x0b2\x1c.substrait.ibis.MergeJoinRelH\x00R\tmergeJoinB\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"\xe4\x05\n\x0bHashJoinRel\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\x12F\n\tleft_keys\x18\x04 \x03(\x0b2).substrait.ibis.Expression.FieldReferenceR\x08leftKeys\x12H\n\nright_keys\x18\x05 \x03(\x0b2).substrait.ibis.Expression.FieldReferenceR\trightKeys\x12D\n\x10post_join_filter\x18\x06 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x0epostJoinFilter\x128\n\x04type\x18\x07 \x01(\x0e2$.substrait.ibis.HashJoinRel.JoinTypeR\x04type\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension"\xde\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\x17\n\x13JOIN_TYPE_LEFT_SEMI\x10\x05\x12\x18\n\x14JOIN_TYPE_RIGHT_SEMI\x10\x06\x12\x17\n\x13JOIN_TYPE_LEFT_ANTI\x10\x07\x12\x18\n\x14JOIN_TYPE_RIGHT_ANTI\x10\x08"\xe6\x05\n\x0cMergeJoinRel\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\x12F\n\tleft_keys\x18\x04 \x03(\x0b2).substrait.ibis.Expression.FieldReferenceR\x08leftKeys\x12H\n\nright_keys\x18\x05 \x03(\x0b2).substrait.ibis.Expression.FieldReferenceR\trightKeys\x12D\n\x10post_join_filter\x18\x06 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x0epostJoinFilter\x129\n\x04type\x18\x07 \x01(\x0e2%.substrait.ibis.MergeJoinRel.JoinTypeR\x04type\x12[\n\x12advanced_extension\x18\n \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x11advancedExtension"\xde\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\x17\n\x13JOIN_TYPE_LEFT_SEMI\x10\x05\x12\x18\n\x14JOIN_TYPE_RIGHT_SEMI\x10\x06\x12\x17\n\x13JOIN_TYPE_LEFT_ANTI\x10\x07\x12\x18\n\x14JOIN_TYPE_RIGHT_ANTI\x10\x08"\x94\x01\n\x10FunctionArgument\x12\x14\n\x04enum\x18\x01 \x01(\tH\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\x05valueB\n\n\x08arg_type"D\n\x0eFunctionOption\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1e\n\npreference\x18\x02 \x03(\tR\npreference"\xf7V\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\x12;\n\x06nested\x18\r \x01(\x0b2!.substrait.ibis.Expression.NestedH\x00R\x06nested\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\xe7\x04\n\x06Nested\x12\x1a\n\x08nullable\x18\x01 \x01(\x08R\x08nullable\x128\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12B\n\x06struct\x18\x03 \x01(\x0b2(.substrait.ibis.Expression.Nested.StructH\x00R\x06struct\x12<\n\x04list\x18\x04 \x01(\x0b2&.substrait.ibis.Expression.Nested.ListH\x00R\x04list\x129\n\x03map\x18\x05 \x01(\x0b2%.substrait.ibis.Expression.Nested.MapH\x00R\x03map\x1a\xc0\x01\n\x03Map\x12M\n\nkey_values\x18\x01 \x03(\x0b2..substrait.ibis.Expression.Nested.Map.KeyValueR\tkeyValues\x1aj\n\x08KeyValue\x12,\n\x03key\x18\x01 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x03key\x120\n\x05value\x18\x02 \x01(\x0b2\x1a.substrait.ibis.ExpressionR\x05value\x1a<\n\x06Struct\x122\n\x06fields\x18\x01 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\x06fields\x1a:\n\x04List\x122\n\x06values\x18\x01 \x03(\x0b2\x1a.substrait.ibis.ExpressionR\x06valuesB\r\n\x0bnested_type\x1a\xa4\x02\n\x0eScalarFunction\x12-\n\x12function_reference\x18\x01 \x01(\rR\x11functionReference\x12>\n\targuments\x18\x04 \x03(\x0b2 .substrait.ibis.FunctionArgumentR\targuments\x128\n\x07options\x18\x05 \x03(\x0b2\x1e.substrait.ibis.FunctionOptionR\x07options\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\xad\t\n\x0eWindowFunction\x12-\n\x12function_reference\x18\x01 \x01(\rR\x11functionReference\x12>\n\targuments\x18\t \x03(\x0b2 .substrait.ibis.FunctionArgumentR\targuments\x128\n\x07options\x18\x0b \x03(\x0b2\x1e.substrait.ibis.FunctionOptionR\x07options\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"\xa9\x05\n\x11AggregateFunction\x12-\n\x12function_reference\x18\x01 \x01(\rR\x11functionReference\x12>\n\targuments\x18\x07 \x03(\x0b2 .substrait.ibis.FunctionArgumentR\targuments\x128\n\x07options\x18\x08 \x03(\x0b2\x1e.substrait.ibis.FunctionOptionR\x07options\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: @@ -25,8 +25,8 @@ _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 = 22306 - _AGGREGATIONPHASE._serialized_end = 22545 + _AGGREGATIONPHASE._serialized_start = 23917 + _AGGREGATIONPHASE._serialized_end = 24156 _RELCOMMON._serialized_start = 147 _RELCOMMON._serialized_end = 1010 _RELCOMMON_DIRECT._serialized_start = 419 @@ -106,160 +106,168 @@ _RELROOT._serialized_start = 7515 _RELROOT._serialized_end = 7589 _REL._serialized_start = 7592 - _REL._serialized_end = 8299 - _NAMEDOBJECTWRITE._serialized_start = 8302 - _NAMEDOBJECTWRITE._serialized_end = 8435 - _EXTENSIONOBJECT._serialized_start = 8437 - _EXTENSIONOBJECT._serialized_end = 8500 - _DDLREL._serialized_start = 8503 - _DDLREL._serialized_end = 9214 - _DDLREL_DDLOBJECT._serialized_start = 8974 - _DDLREL_DDLOBJECT._serialized_end = 9056 - _DDLREL_DDLOP._serialized_start = 9059 - _DDLREL_DDLOP._serialized_end = 9200 - _WRITEREL._serialized_start = 9217 - _WRITEREL._serialized_end = 9826 - _WRITEREL_WRITEOP._serialized_start = 9592 - _WRITEREL_WRITEOP._serialized_end = 9709 - _WRITEREL_OUTPUTMODE._serialized_start = 9711 - _WRITEREL_OUTPUTMODE._serialized_end = 9812 - _FUNCTIONARGUMENT._serialized_start = 9829 - _FUNCTIONARGUMENT._serialized_end = 9977 - _FUNCTIONOPTION._serialized_start = 9979 - _FUNCTIONOPTION._serialized_end = 10047 - _EXPRESSION._serialized_start = 10050 - _EXPRESSION._serialized_end = 21177 - _EXPRESSION_ENUM._serialized_start = 10937 - _EXPRESSION_ENUM._serialized_end = 11080 - _EXPRESSION_ENUM_EMPTY._serialized_start = 11052 - _EXPRESSION_ENUM_EMPTY._serialized_end = 11063 - _EXPRESSION_LITERAL._serialized_start = 11083 - _EXPRESSION_LITERAL._serialized_end = 13244 - _EXPRESSION_LITERAL_VARCHAR._serialized_start = 12392 - _EXPRESSION_LITERAL_VARCHAR._serialized_end = 12447 - _EXPRESSION_LITERAL_DECIMAL._serialized_start = 12449 - _EXPRESSION_LITERAL_DECIMAL._serialized_end = 12532 - _EXPRESSION_LITERAL_MAP._serialized_start = 12535 - _EXPRESSION_LITERAL_MAP._serialized_end = 12744 - _EXPRESSION_LITERAL_MAP_KEYVALUE._serialized_start = 12622 - _EXPRESSION_LITERAL_MAP_KEYVALUE._serialized_end = 12744 - _EXPRESSION_LITERAL_INTERVALYEARTOMONTH._serialized_start = 12746 - _EXPRESSION_LITERAL_INTERVALYEARTOMONTH._serialized_end = 12813 - _EXPRESSION_LITERAL_INTERVALDAYTOSECOND._serialized_start = 12815 - _EXPRESSION_LITERAL_INTERVALDAYTOSECOND._serialized_end = 12918 - _EXPRESSION_LITERAL_STRUCT._serialized_start = 12920 - _EXPRESSION_LITERAL_STRUCT._serialized_end = 12988 - _EXPRESSION_LITERAL_LIST._serialized_start = 12990 - _EXPRESSION_LITERAL_LIST._serialized_end = 13056 - _EXPRESSION_LITERAL_USERDEFINED._serialized_start = 13059 - _EXPRESSION_LITERAL_USERDEFINED._serialized_end = 13228 - _EXPRESSION_NESTED._serialized_start = 13247 - _EXPRESSION_NESTED._serialized_end = 13862 - _EXPRESSION_NESTED_MAP._serialized_start = 13533 - _EXPRESSION_NESTED_MAP._serialized_end = 13725 - _EXPRESSION_NESTED_MAP_KEYVALUE._serialized_start = 13619 - _EXPRESSION_NESTED_MAP_KEYVALUE._serialized_end = 13725 - _EXPRESSION_NESTED_STRUCT._serialized_start = 13727 - _EXPRESSION_NESTED_STRUCT._serialized_end = 13787 - _EXPRESSION_NESTED_LIST._serialized_start = 13789 - _EXPRESSION_NESTED_LIST._serialized_end = 13847 - _EXPRESSION_SCALARFUNCTION._serialized_start = 13865 - _EXPRESSION_SCALARFUNCTION._serialized_end = 14157 - _EXPRESSION_WINDOWFUNCTION._serialized_start = 14160 - _EXPRESSION_WINDOWFUNCTION._serialized_end = 15357 - _EXPRESSION_WINDOWFUNCTION_BOUND._serialized_start = 14873 - _EXPRESSION_WINDOWFUNCTION_BOUND._serialized_end = 15357 - _EXPRESSION_WINDOWFUNCTION_BOUND_PRECEDING._serialized_start = 15250 - _EXPRESSION_WINDOWFUNCTION_BOUND_PRECEDING._serialized_end = 15285 - _EXPRESSION_WINDOWFUNCTION_BOUND_FOLLOWING._serialized_start = 15287 - _EXPRESSION_WINDOWFUNCTION_BOUND_FOLLOWING._serialized_end = 15322 - _EXPRESSION_WINDOWFUNCTION_BOUND_CURRENTROW._serialized_start = 15324 - _EXPRESSION_WINDOWFUNCTION_BOUND_CURRENTROW._serialized_end = 15336 - _EXPRESSION_WINDOWFUNCTION_BOUND_UNBOUNDED._serialized_start = 15338 - _EXPRESSION_WINDOWFUNCTION_BOUND_UNBOUNDED._serialized_end = 15349 - _EXPRESSION_IFTHEN._serialized_start = 15360 - _EXPRESSION_IFTHEN._serialized_end = 15582 - _EXPRESSION_IFTHEN_IFCLAUSE._serialized_start = 15480 - _EXPRESSION_IFTHEN_IFCLAUSE._serialized_end = 15582 - _EXPRESSION_CAST._serialized_start = 15585 - _EXPRESSION_CAST._serialized_end = 15900 - _EXPRESSION_CAST_FAILUREBEHAVIOR._serialized_start = 15777 - _EXPRESSION_CAST_FAILUREBEHAVIOR._serialized_end = 15900 - _EXPRESSION_SWITCHEXPRESSION._serialized_start = 15903 - _EXPRESSION_SWITCHEXPRESSION._serialized_end = 16201 - _EXPRESSION_SWITCHEXPRESSION_IFVALUE._serialized_start = 16092 - _EXPRESSION_SWITCHEXPRESSION_IFVALUE._serialized_end = 16201 - _EXPRESSION_SINGULARORLIST._serialized_start = 16203 - _EXPRESSION_SINGULARORLIST._serialized_end = 16323 - _EXPRESSION_MULTIORLIST._serialized_start = 16326 - _EXPRESSION_MULTIORLIST._serialized_end = 16524 - _EXPRESSION_MULTIORLIST_RECORD._serialized_start = 16464 - _EXPRESSION_MULTIORLIST_RECORD._serialized_end = 16524 - _EXPRESSION_EMBEDDEDFUNCTION._serialized_start = 16527 - _EXPRESSION_EMBEDDEDFUNCTION._serialized_end = 17078 - _EXPRESSION_EMBEDDEDFUNCTION_PYTHONPICKLEFUNCTION._serialized_start = 16901 - _EXPRESSION_EMBEDDEDFUNCTION_PYTHONPICKLEFUNCTION._serialized_end = 16987 - _EXPRESSION_EMBEDDEDFUNCTION_WEBASSEMBLYFUNCTION._serialized_start = 16989 - _EXPRESSION_EMBEDDEDFUNCTION_WEBASSEMBLYFUNCTION._serialized_end = 17070 - _EXPRESSION_REFERENCESEGMENT._serialized_start = 17081 - _EXPRESSION_REFERENCESEGMENT._serialized_end = 17733 - _EXPRESSION_REFERENCESEGMENT_MAPKEY._serialized_start = 17369 - _EXPRESSION_REFERENCESEGMENT_MAPKEY._serialized_end = 17505 - _EXPRESSION_REFERENCESEGMENT_STRUCTFIELD._serialized_start = 17507 - _EXPRESSION_REFERENCESEGMENT_STRUCTFIELD._serialized_end = 17609 - _EXPRESSION_REFERENCESEGMENT_LISTELEMENT._serialized_start = 17611 - _EXPRESSION_REFERENCESEGMENT_LISTELEMENT._serialized_end = 17715 - _EXPRESSION_MASKEXPRESSION._serialized_start = 17736 - _EXPRESSION_MASKEXPRESSION._serialized_end = 19243 - _EXPRESSION_MASKEXPRESSION_SELECT._serialized_start = 17893 - _EXPRESSION_MASKEXPRESSION_SELECT._serialized_end = 18140 - _EXPRESSION_MASKEXPRESSION_STRUCTSELECT._serialized_start = 18142 - _EXPRESSION_MASKEXPRESSION_STRUCTSELECT._serialized_end = 18245 - _EXPRESSION_MASKEXPRESSION_STRUCTITEM._serialized_start = 18247 - _EXPRESSION_MASKEXPRESSION_STRUCTITEM._serialized_end = 18353 - _EXPRESSION_MASKEXPRESSION_LISTSELECT._serialized_start = 18356 - _EXPRESSION_MASKEXPRESSION_LISTSELECT._serialized_end = 18862 - _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM._serialized_start = 18542 - _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM._serialized_end = 18862 - _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTELEMENT._serialized_start = 18766 - _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTELEMENT._serialized_end = 18801 - _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTSLICE._serialized_start = 18803 - _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTSLICE._serialized_end = 18854 - _EXPRESSION_MASKEXPRESSION_MAPSELECT._serialized_start = 18865 - _EXPRESSION_MASKEXPRESSION_MAPSELECT._serialized_end = 19243 - _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEY._serialized_start = 19134 - _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEY._serialized_end = 19167 - _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEYEXPRESSION._serialized_start = 19169 - _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEYEXPRESSION._serialized_end = 19233 - _EXPRESSION_FIELDREFERENCE._serialized_start = 19246 - _EXPRESSION_FIELDREFERENCE._serialized_end = 19796 - _EXPRESSION_FIELDREFERENCE_ROOTREFERENCE._serialized_start = 19703 - _EXPRESSION_FIELDREFERENCE_ROOTREFERENCE._serialized_end = 19718 - _EXPRESSION_FIELDREFERENCE_OUTERREFERENCE._serialized_start = 19720 - _EXPRESSION_FIELDREFERENCE_OUTERREFERENCE._serialized_end = 19765 - _EXPRESSION_SUBQUERY._serialized_start = 19799 - _EXPRESSION_SUBQUERY._serialized_end = 21165 - _EXPRESSION_SUBQUERY_SCALAR._serialized_start = 20148 - _EXPRESSION_SUBQUERY_SCALAR._serialized_end = 20199 - _EXPRESSION_SUBQUERY_INPREDICATE._serialized_start = 20201 - _EXPRESSION_SUBQUERY_INPREDICATE._serialized_end = 20317 - _EXPRESSION_SUBQUERY_SETPREDICATE._serialized_start = 20320 - _EXPRESSION_SUBQUERY_SETPREDICATE._serialized_end = 20571 - _EXPRESSION_SUBQUERY_SETPREDICATE_PREDICATEOP._serialized_start = 20478 - _EXPRESSION_SUBQUERY_SETPREDICATE_PREDICATEOP._serialized_end = 20571 - _EXPRESSION_SUBQUERY_SETCOMPARISON._serialized_start = 20574 - _EXPRESSION_SUBQUERY_SETCOMPARISON._serialized_end = 21148 - _EXPRESSION_SUBQUERY_SETCOMPARISON_COMPARISONOP._serialized_start = 20882 - _EXPRESSION_SUBQUERY_SETCOMPARISON_COMPARISONOP._serialized_end = 21059 - _EXPRESSION_SUBQUERY_SETCOMPARISON_REDUCTIONOP._serialized_start = 21061 - _EXPRESSION_SUBQUERY_SETCOMPARISON_REDUCTIONOP._serialized_end = 21148 - _SORTFIELD._serialized_start = 21180 - _SORTFIELD._serialized_end = 21619 - _SORTFIELD_SORTDIRECTION._serialized_start = 21385 - _SORTFIELD_SORTDIRECTION._serialized_end = 21606 - _AGGREGATEFUNCTION._serialized_start = 21622 - _AGGREGATEFUNCTION._serialized_end = 22303 - _AGGREGATEFUNCTION_REFERENCEREL._serialized_start = 22113 - _AGGREGATEFUNCTION_REFERENCEREL._serialized_end = 22168 - _AGGREGATEFUNCTION_AGGREGATIONINVOCATION._serialized_start = 22171 - _AGGREGATEFUNCTION_AGGREGATIONINVOCATION._serialized_end = 22303 \ No newline at end of file + _REL._serialized_end = 8422 + _NAMEDOBJECTWRITE._serialized_start = 8425 + _NAMEDOBJECTWRITE._serialized_end = 8558 + _EXTENSIONOBJECT._serialized_start = 8560 + _EXTENSIONOBJECT._serialized_end = 8623 + _DDLREL._serialized_start = 8626 + _DDLREL._serialized_end = 9337 + _DDLREL_DDLOBJECT._serialized_start = 9097 + _DDLREL_DDLOBJECT._serialized_end = 9179 + _DDLREL_DDLOP._serialized_start = 9182 + _DDLREL_DDLOP._serialized_end = 9323 + _WRITEREL._serialized_start = 9340 + _WRITEREL._serialized_end = 9949 + _WRITEREL_WRITEOP._serialized_start = 9715 + _WRITEREL_WRITEOP._serialized_end = 9832 + _WRITEREL_OUTPUTMODE._serialized_start = 9834 + _WRITEREL_OUTPUTMODE._serialized_end = 9935 + _HASHJOINREL._serialized_start = 9952 + _HASHJOINREL._serialized_end = 10692 + _HASHJOINREL_JOINTYPE._serialized_start = 10470 + _HASHJOINREL_JOINTYPE._serialized_end = 10692 + _MERGEJOINREL._serialized_start = 10695 + _MERGEJOINREL._serialized_end = 11437 + _MERGEJOINREL_JOINTYPE._serialized_start = 10470 + _MERGEJOINREL_JOINTYPE._serialized_end = 10692 + _FUNCTIONARGUMENT._serialized_start = 11440 + _FUNCTIONARGUMENT._serialized_end = 11588 + _FUNCTIONOPTION._serialized_start = 11590 + _FUNCTIONOPTION._serialized_end = 11658 + _EXPRESSION._serialized_start = 11661 + _EXPRESSION._serialized_end = 22788 + _EXPRESSION_ENUM._serialized_start = 12548 + _EXPRESSION_ENUM._serialized_end = 12691 + _EXPRESSION_ENUM_EMPTY._serialized_start = 12663 + _EXPRESSION_ENUM_EMPTY._serialized_end = 12674 + _EXPRESSION_LITERAL._serialized_start = 12694 + _EXPRESSION_LITERAL._serialized_end = 14855 + _EXPRESSION_LITERAL_VARCHAR._serialized_start = 14003 + _EXPRESSION_LITERAL_VARCHAR._serialized_end = 14058 + _EXPRESSION_LITERAL_DECIMAL._serialized_start = 14060 + _EXPRESSION_LITERAL_DECIMAL._serialized_end = 14143 + _EXPRESSION_LITERAL_MAP._serialized_start = 14146 + _EXPRESSION_LITERAL_MAP._serialized_end = 14355 + _EXPRESSION_LITERAL_MAP_KEYVALUE._serialized_start = 14233 + _EXPRESSION_LITERAL_MAP_KEYVALUE._serialized_end = 14355 + _EXPRESSION_LITERAL_INTERVALYEARTOMONTH._serialized_start = 14357 + _EXPRESSION_LITERAL_INTERVALYEARTOMONTH._serialized_end = 14424 + _EXPRESSION_LITERAL_INTERVALDAYTOSECOND._serialized_start = 14426 + _EXPRESSION_LITERAL_INTERVALDAYTOSECOND._serialized_end = 14529 + _EXPRESSION_LITERAL_STRUCT._serialized_start = 14531 + _EXPRESSION_LITERAL_STRUCT._serialized_end = 14599 + _EXPRESSION_LITERAL_LIST._serialized_start = 14601 + _EXPRESSION_LITERAL_LIST._serialized_end = 14667 + _EXPRESSION_LITERAL_USERDEFINED._serialized_start = 14670 + _EXPRESSION_LITERAL_USERDEFINED._serialized_end = 14839 + _EXPRESSION_NESTED._serialized_start = 14858 + _EXPRESSION_NESTED._serialized_end = 15473 + _EXPRESSION_NESTED_MAP._serialized_start = 15144 + _EXPRESSION_NESTED_MAP._serialized_end = 15336 + _EXPRESSION_NESTED_MAP_KEYVALUE._serialized_start = 15230 + _EXPRESSION_NESTED_MAP_KEYVALUE._serialized_end = 15336 + _EXPRESSION_NESTED_STRUCT._serialized_start = 15338 + _EXPRESSION_NESTED_STRUCT._serialized_end = 15398 + _EXPRESSION_NESTED_LIST._serialized_start = 15400 + _EXPRESSION_NESTED_LIST._serialized_end = 15458 + _EXPRESSION_SCALARFUNCTION._serialized_start = 15476 + _EXPRESSION_SCALARFUNCTION._serialized_end = 15768 + _EXPRESSION_WINDOWFUNCTION._serialized_start = 15771 + _EXPRESSION_WINDOWFUNCTION._serialized_end = 16968 + _EXPRESSION_WINDOWFUNCTION_BOUND._serialized_start = 16484 + _EXPRESSION_WINDOWFUNCTION_BOUND._serialized_end = 16968 + _EXPRESSION_WINDOWFUNCTION_BOUND_PRECEDING._serialized_start = 16861 + _EXPRESSION_WINDOWFUNCTION_BOUND_PRECEDING._serialized_end = 16896 + _EXPRESSION_WINDOWFUNCTION_BOUND_FOLLOWING._serialized_start = 16898 + _EXPRESSION_WINDOWFUNCTION_BOUND_FOLLOWING._serialized_end = 16933 + _EXPRESSION_WINDOWFUNCTION_BOUND_CURRENTROW._serialized_start = 16935 + _EXPRESSION_WINDOWFUNCTION_BOUND_CURRENTROW._serialized_end = 16947 + _EXPRESSION_WINDOWFUNCTION_BOUND_UNBOUNDED._serialized_start = 16949 + _EXPRESSION_WINDOWFUNCTION_BOUND_UNBOUNDED._serialized_end = 16960 + _EXPRESSION_IFTHEN._serialized_start = 16971 + _EXPRESSION_IFTHEN._serialized_end = 17193 + _EXPRESSION_IFTHEN_IFCLAUSE._serialized_start = 17091 + _EXPRESSION_IFTHEN_IFCLAUSE._serialized_end = 17193 + _EXPRESSION_CAST._serialized_start = 17196 + _EXPRESSION_CAST._serialized_end = 17511 + _EXPRESSION_CAST_FAILUREBEHAVIOR._serialized_start = 17388 + _EXPRESSION_CAST_FAILUREBEHAVIOR._serialized_end = 17511 + _EXPRESSION_SWITCHEXPRESSION._serialized_start = 17514 + _EXPRESSION_SWITCHEXPRESSION._serialized_end = 17812 + _EXPRESSION_SWITCHEXPRESSION_IFVALUE._serialized_start = 17703 + _EXPRESSION_SWITCHEXPRESSION_IFVALUE._serialized_end = 17812 + _EXPRESSION_SINGULARORLIST._serialized_start = 17814 + _EXPRESSION_SINGULARORLIST._serialized_end = 17934 + _EXPRESSION_MULTIORLIST._serialized_start = 17937 + _EXPRESSION_MULTIORLIST._serialized_end = 18135 + _EXPRESSION_MULTIORLIST_RECORD._serialized_start = 18075 + _EXPRESSION_MULTIORLIST_RECORD._serialized_end = 18135 + _EXPRESSION_EMBEDDEDFUNCTION._serialized_start = 18138 + _EXPRESSION_EMBEDDEDFUNCTION._serialized_end = 18689 + _EXPRESSION_EMBEDDEDFUNCTION_PYTHONPICKLEFUNCTION._serialized_start = 18512 + _EXPRESSION_EMBEDDEDFUNCTION_PYTHONPICKLEFUNCTION._serialized_end = 18598 + _EXPRESSION_EMBEDDEDFUNCTION_WEBASSEMBLYFUNCTION._serialized_start = 18600 + _EXPRESSION_EMBEDDEDFUNCTION_WEBASSEMBLYFUNCTION._serialized_end = 18681 + _EXPRESSION_REFERENCESEGMENT._serialized_start = 18692 + _EXPRESSION_REFERENCESEGMENT._serialized_end = 19344 + _EXPRESSION_REFERENCESEGMENT_MAPKEY._serialized_start = 18980 + _EXPRESSION_REFERENCESEGMENT_MAPKEY._serialized_end = 19116 + _EXPRESSION_REFERENCESEGMENT_STRUCTFIELD._serialized_start = 19118 + _EXPRESSION_REFERENCESEGMENT_STRUCTFIELD._serialized_end = 19220 + _EXPRESSION_REFERENCESEGMENT_LISTELEMENT._serialized_start = 19222 + _EXPRESSION_REFERENCESEGMENT_LISTELEMENT._serialized_end = 19326 + _EXPRESSION_MASKEXPRESSION._serialized_start = 19347 + _EXPRESSION_MASKEXPRESSION._serialized_end = 20854 + _EXPRESSION_MASKEXPRESSION_SELECT._serialized_start = 19504 + _EXPRESSION_MASKEXPRESSION_SELECT._serialized_end = 19751 + _EXPRESSION_MASKEXPRESSION_STRUCTSELECT._serialized_start = 19753 + _EXPRESSION_MASKEXPRESSION_STRUCTSELECT._serialized_end = 19856 + _EXPRESSION_MASKEXPRESSION_STRUCTITEM._serialized_start = 19858 + _EXPRESSION_MASKEXPRESSION_STRUCTITEM._serialized_end = 19964 + _EXPRESSION_MASKEXPRESSION_LISTSELECT._serialized_start = 19967 + _EXPRESSION_MASKEXPRESSION_LISTSELECT._serialized_end = 20473 + _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM._serialized_start = 20153 + _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM._serialized_end = 20473 + _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTELEMENT._serialized_start = 20377 + _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTELEMENT._serialized_end = 20412 + _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTSLICE._serialized_start = 20414 + _EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTSLICE._serialized_end = 20465 + _EXPRESSION_MASKEXPRESSION_MAPSELECT._serialized_start = 20476 + _EXPRESSION_MASKEXPRESSION_MAPSELECT._serialized_end = 20854 + _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEY._serialized_start = 20745 + _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEY._serialized_end = 20778 + _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEYEXPRESSION._serialized_start = 20780 + _EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEYEXPRESSION._serialized_end = 20844 + _EXPRESSION_FIELDREFERENCE._serialized_start = 20857 + _EXPRESSION_FIELDREFERENCE._serialized_end = 21407 + _EXPRESSION_FIELDREFERENCE_ROOTREFERENCE._serialized_start = 21314 + _EXPRESSION_FIELDREFERENCE_ROOTREFERENCE._serialized_end = 21329 + _EXPRESSION_FIELDREFERENCE_OUTERREFERENCE._serialized_start = 21331 + _EXPRESSION_FIELDREFERENCE_OUTERREFERENCE._serialized_end = 21376 + _EXPRESSION_SUBQUERY._serialized_start = 21410 + _EXPRESSION_SUBQUERY._serialized_end = 22776 + _EXPRESSION_SUBQUERY_SCALAR._serialized_start = 21759 + _EXPRESSION_SUBQUERY_SCALAR._serialized_end = 21810 + _EXPRESSION_SUBQUERY_INPREDICATE._serialized_start = 21812 + _EXPRESSION_SUBQUERY_INPREDICATE._serialized_end = 21928 + _EXPRESSION_SUBQUERY_SETPREDICATE._serialized_start = 21931 + _EXPRESSION_SUBQUERY_SETPREDICATE._serialized_end = 22182 + _EXPRESSION_SUBQUERY_SETPREDICATE_PREDICATEOP._serialized_start = 22089 + _EXPRESSION_SUBQUERY_SETPREDICATE_PREDICATEOP._serialized_end = 22182 + _EXPRESSION_SUBQUERY_SETCOMPARISON._serialized_start = 22185 + _EXPRESSION_SUBQUERY_SETCOMPARISON._serialized_end = 22759 + _EXPRESSION_SUBQUERY_SETCOMPARISON_COMPARISONOP._serialized_start = 22493 + _EXPRESSION_SUBQUERY_SETCOMPARISON_COMPARISONOP._serialized_end = 22670 + _EXPRESSION_SUBQUERY_SETCOMPARISON_REDUCTIONOP._serialized_start = 22672 + _EXPRESSION_SUBQUERY_SETCOMPARISON_REDUCTIONOP._serialized_end = 22759 + _SORTFIELD._serialized_start = 22791 + _SORTFIELD._serialized_end = 23230 + _SORTFIELD_SORTDIRECTION._serialized_start = 22996 + _SORTFIELD_SORTDIRECTION._serialized_end = 23217 + _AGGREGATEFUNCTION._serialized_start = 23233 + _AGGREGATEFUNCTION._serialized_end = 23914 + _AGGREGATEFUNCTION_REFERENCEREL._serialized_start = 23724 + _AGGREGATEFUNCTION_REFERENCEREL._serialized_end = 23779 + _AGGREGATEFUNCTION_AGGREGATIONINVOCATION._serialized_start = 23782 + _AGGREGATEFUNCTION_AGGREGATIONINVOCATION._serialized_end = 23914 \ No newline at end of file diff --git a/ibis_substrait/proto/substrait/ibis/algebra_pb2.pyi b/ibis_substrait/proto/substrait/ibis/algebra_pb2.pyi index 00ae4ccb..118d239f 100644 --- a/ibis_substrait/proto/substrait/ibis/algebra_pb2.pyi +++ b/ibis_substrait/proto/substrait/ibis/algebra_pb2.pyi @@ -1097,6 +1097,8 @@ class Rel(google.protobuf.message.Message): EXTENSION_MULTI_FIELD_NUMBER: builtins.int EXTENSION_LEAF_FIELD_NUMBER: builtins.int CROSS_FIELD_NUMBER: builtins.int + HASH_JOIN_FIELD_NUMBER: builtins.int + MERGE_JOIN_FIELD_NUMBER: builtins.int @property def read(self) -> global___ReadRel: @@ -1146,16 +1148,24 @@ class Rel(google.protobuf.message.Message): def cross(self) -> global___CrossRel: ... - def __init__(self, *, read: global___ReadRel | None=..., filter: global___FilterRel | None=..., fetch: global___FetchRel | None=..., aggregate: global___AggregateRel | None=..., sort: global___SortRel | None=..., join: global___JoinRel | None=..., project: global___ProjectRel | None=..., set: global___SetRel | None=..., extension_single: global___ExtensionSingleRel | None=..., extension_multi: global___ExtensionMultiRel | None=..., extension_leaf: global___ExtensionLeafRel | None=..., cross: global___CrossRel | None=...) -> None: + @property + def hash_join(self) -> global___HashJoinRel: + """Physical relations""" + + @property + def merge_join(self) -> global___MergeJoinRel: ... - def HasField(self, field_name: typing_extensions.Literal['aggregate', b'aggregate', 'cross', b'cross', 'extension_leaf', b'extension_leaf', 'extension_multi', b'extension_multi', 'extension_single', b'extension_single', 'fetch', b'fetch', 'filter', b'filter', 'join', b'join', 'project', b'project', 'read', b'read', 'rel_type', b'rel_type', 'set', b'set', 'sort', b'sort']) -> builtins.bool: + def __init__(self, *, read: global___ReadRel | None=..., filter: global___FilterRel | None=..., fetch: global___FetchRel | None=..., aggregate: global___AggregateRel | None=..., sort: global___SortRel | None=..., join: global___JoinRel | None=..., project: global___ProjectRel | None=..., set: global___SetRel | None=..., extension_single: global___ExtensionSingleRel | None=..., extension_multi: global___ExtensionMultiRel | None=..., extension_leaf: global___ExtensionLeafRel | None=..., cross: global___CrossRel | None=..., hash_join: global___HashJoinRel | None=..., merge_join: global___MergeJoinRel | None=...) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal['aggregate', b'aggregate', 'cross', b'cross', 'extension_leaf', b'extension_leaf', 'extension_multi', b'extension_multi', 'extension_single', b'extension_single', 'fetch', b'fetch', 'filter', b'filter', 'join', b'join', 'project', b'project', 'read', b'read', 'rel_type', b'rel_type', 'set', b'set', 'sort', b'sort']) -> None: + def HasField(self, field_name: typing_extensions.Literal['aggregate', b'aggregate', 'cross', b'cross', 'extension_leaf', b'extension_leaf', 'extension_multi', b'extension_multi', 'extension_single', b'extension_single', 'fetch', b'fetch', 'filter', b'filter', 'hash_join', b'hash_join', 'join', b'join', 'merge_join', b'merge_join', 'project', b'project', 'read', b'read', 'rel_type', b'rel_type', 'set', b'set', 'sort', b'sort']) -> builtins.bool: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal['rel_type', b'rel_type']) -> typing_extensions.Literal['read', 'filter', 'fetch', 'aggregate', 'sort', 'join', 'project', 'set', 'extension_single', 'extension_multi', 'extension_leaf', 'cross'] | None: + def ClearField(self, field_name: typing_extensions.Literal['aggregate', b'aggregate', 'cross', b'cross', 'extension_leaf', b'extension_leaf', 'extension_multi', b'extension_multi', 'extension_single', b'extension_single', 'fetch', b'fetch', 'filter', b'filter', 'hash_join', b'hash_join', 'join', b'join', 'merge_join', b'merge_join', 'project', b'project', 'read', b'read', 'rel_type', b'rel_type', 'set', b'set', 'sort', b'sort']) -> None: + ... + + def WhichOneof(self, oneof_group: typing_extensions.Literal['rel_type', b'rel_type']) -> typing_extensions.Literal['read', 'filter', 'fetch', 'aggregate', 'sort', 'join', 'project', 'set', 'extension_single', 'extension_multi', 'extension_leaf', 'cross', 'hash_join', 'merge_join'] | None: ... global___Rel = Rel @@ -1406,6 +1416,168 @@ class WriteRel(google.protobuf.message.Message): ... global___WriteRel = WriteRel +class HashJoinRel(google.protobuf.message.Message): + """The hash equijoin join operator will build a hash table out of the right input based on a set of join keys. + It will then probe that hash table for incoming inputs, finding matches. + """ + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _JoinType: + ValueType = typing.NewType('ValueType', builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _JoinTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[HashJoinRel._JoinType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + JOIN_TYPE_UNSPECIFIED: HashJoinRel._JoinType.ValueType + JOIN_TYPE_INNER: HashJoinRel._JoinType.ValueType + JOIN_TYPE_OUTER: HashJoinRel._JoinType.ValueType + JOIN_TYPE_LEFT: HashJoinRel._JoinType.ValueType + JOIN_TYPE_RIGHT: HashJoinRel._JoinType.ValueType + JOIN_TYPE_LEFT_SEMI: HashJoinRel._JoinType.ValueType + JOIN_TYPE_RIGHT_SEMI: HashJoinRel._JoinType.ValueType + JOIN_TYPE_LEFT_ANTI: HashJoinRel._JoinType.ValueType + JOIN_TYPE_RIGHT_ANTI: HashJoinRel._JoinType.ValueType + + class JoinType(_JoinType, metaclass=_JoinTypeEnumTypeWrapper): + ... + JOIN_TYPE_UNSPECIFIED: HashJoinRel.JoinType.ValueType + JOIN_TYPE_INNER: HashJoinRel.JoinType.ValueType + JOIN_TYPE_OUTER: HashJoinRel.JoinType.ValueType + JOIN_TYPE_LEFT: HashJoinRel.JoinType.ValueType + JOIN_TYPE_RIGHT: HashJoinRel.JoinType.ValueType + JOIN_TYPE_LEFT_SEMI: HashJoinRel.JoinType.ValueType + JOIN_TYPE_RIGHT_SEMI: HashJoinRel.JoinType.ValueType + JOIN_TYPE_LEFT_ANTI: HashJoinRel.JoinType.ValueType + JOIN_TYPE_RIGHT_ANTI: HashJoinRel.JoinType.ValueType + COMMON_FIELD_NUMBER: builtins.int + LEFT_FIELD_NUMBER: builtins.int + RIGHT_FIELD_NUMBER: builtins.int + LEFT_KEYS_FIELD_NUMBER: builtins.int + RIGHT_KEYS_FIELD_NUMBER: builtins.int + POST_JOIN_FILTER_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + ADVANCED_EXTENSION_FIELD_NUMBER: builtins.int + + @property + def common(self) -> global___RelCommon: + ... + + @property + def left(self) -> global___Rel: + ... + + @property + def right(self) -> global___Rel: + ... + + @property + def left_keys(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Expression.FieldReference]: + ... + + @property + def right_keys(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Expression.FieldReference]: + ... + + @property + def post_join_filter(self) -> global___Expression: + ... + type: global___HashJoinRel.JoinType.ValueType + + @property + def advanced_extension(self) -> substrait.ibis.extensions.extensions_pb2.AdvancedExtension: + ... + + def __init__(self, *, common: global___RelCommon | None=..., left: global___Rel | None=..., right: global___Rel | None=..., left_keys: collections.abc.Iterable[global___Expression.FieldReference] | None=..., right_keys: collections.abc.Iterable[global___Expression.FieldReference] | None=..., post_join_filter: global___Expression | None=..., type: global___HashJoinRel.JoinType.ValueType=..., advanced_extension: substrait.ibis.extensions.extensions_pb2.AdvancedExtension | None=...) -> None: + ... + + def HasField(self, field_name: typing_extensions.Literal['advanced_extension', b'advanced_extension', 'common', b'common', 'left', b'left', 'post_join_filter', b'post_join_filter', 'right', b'right']) -> builtins.bool: + ... + + def ClearField(self, field_name: typing_extensions.Literal['advanced_extension', b'advanced_extension', 'common', b'common', 'left', b'left', 'left_keys', b'left_keys', 'post_join_filter', b'post_join_filter', 'right', b'right', 'right_keys', b'right_keys', 'type', b'type']) -> None: + ... +global___HashJoinRel = HashJoinRel + +class MergeJoinRel(google.protobuf.message.Message): + """The merge equijoin does a join by taking advantage of two sets that are sorted on the join keys. + This allows the join operation to be done in a streaming fashion. + """ + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _JoinType: + ValueType = typing.NewType('ValueType', builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _JoinTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[MergeJoinRel._JoinType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + JOIN_TYPE_UNSPECIFIED: MergeJoinRel._JoinType.ValueType + JOIN_TYPE_INNER: MergeJoinRel._JoinType.ValueType + JOIN_TYPE_OUTER: MergeJoinRel._JoinType.ValueType + JOIN_TYPE_LEFT: MergeJoinRel._JoinType.ValueType + JOIN_TYPE_RIGHT: MergeJoinRel._JoinType.ValueType + JOIN_TYPE_LEFT_SEMI: MergeJoinRel._JoinType.ValueType + JOIN_TYPE_RIGHT_SEMI: MergeJoinRel._JoinType.ValueType + JOIN_TYPE_LEFT_ANTI: MergeJoinRel._JoinType.ValueType + JOIN_TYPE_RIGHT_ANTI: MergeJoinRel._JoinType.ValueType + + class JoinType(_JoinType, metaclass=_JoinTypeEnumTypeWrapper): + ... + JOIN_TYPE_UNSPECIFIED: MergeJoinRel.JoinType.ValueType + JOIN_TYPE_INNER: MergeJoinRel.JoinType.ValueType + JOIN_TYPE_OUTER: MergeJoinRel.JoinType.ValueType + JOIN_TYPE_LEFT: MergeJoinRel.JoinType.ValueType + JOIN_TYPE_RIGHT: MergeJoinRel.JoinType.ValueType + JOIN_TYPE_LEFT_SEMI: MergeJoinRel.JoinType.ValueType + JOIN_TYPE_RIGHT_SEMI: MergeJoinRel.JoinType.ValueType + JOIN_TYPE_LEFT_ANTI: MergeJoinRel.JoinType.ValueType + JOIN_TYPE_RIGHT_ANTI: MergeJoinRel.JoinType.ValueType + COMMON_FIELD_NUMBER: builtins.int + LEFT_FIELD_NUMBER: builtins.int + RIGHT_FIELD_NUMBER: builtins.int + LEFT_KEYS_FIELD_NUMBER: builtins.int + RIGHT_KEYS_FIELD_NUMBER: builtins.int + POST_JOIN_FILTER_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + ADVANCED_EXTENSION_FIELD_NUMBER: builtins.int + + @property + def common(self) -> global___RelCommon: + ... + + @property + def left(self) -> global___Rel: + ... + + @property + def right(self) -> global___Rel: + ... + + @property + def left_keys(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Expression.FieldReference]: + ... + + @property + def right_keys(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Expression.FieldReference]: + ... + + @property + def post_join_filter(self) -> global___Expression: + ... + type: global___MergeJoinRel.JoinType.ValueType + + @property + def advanced_extension(self) -> substrait.ibis.extensions.extensions_pb2.AdvancedExtension: + ... + + def __init__(self, *, common: global___RelCommon | None=..., left: global___Rel | None=..., right: global___Rel | None=..., left_keys: collections.abc.Iterable[global___Expression.FieldReference] | None=..., right_keys: collections.abc.Iterable[global___Expression.FieldReference] | None=..., post_join_filter: global___Expression | None=..., type: global___MergeJoinRel.JoinType.ValueType=..., advanced_extension: substrait.ibis.extensions.extensions_pb2.AdvancedExtension | None=...) -> None: + ... + + def HasField(self, field_name: typing_extensions.Literal['advanced_extension', b'advanced_extension', 'common', b'common', 'left', b'left', 'post_join_filter', b'post_join_filter', 'right', b'right']) -> builtins.bool: + ... + + def ClearField(self, field_name: typing_extensions.Literal['advanced_extension', b'advanced_extension', 'common', b'common', 'left', b'left', 'left_keys', b'left_keys', 'post_join_filter', b'post_join_filter', 'right', b'right', 'right_keys', b'right_keys', 'type', b'type']) -> None: + ... +global___MergeJoinRel = MergeJoinRel + class FunctionArgument(google.protobuf.message.Message): """The argument of a function""" DESCRIPTOR: google.protobuf.descriptor.Descriptor diff --git a/ibis_substrait/proto/substrait/ibis/extended_expression_pb2.py b/ibis_substrait/proto/substrait/ibis/extended_expression_pb2.py new file mode 100644 index 00000000..bb756171 --- /dev/null +++ b/ibis_substrait/proto/substrait/ibis/extended_expression_pb2.py @@ -0,0 +1,20 @@ +"""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 ...substrait.ibis import algebra_pb2 as substrait_dot_ibis_dot_algebra__pb2 +from ...substrait.ibis.extensions import extensions_pb2 as substrait_dot_ibis_dot_extensions_dot_extensions__pb2 +from ...substrait.ibis import plan_pb2 as substrait_dot_ibis_dot_plan__pb2 +from ...substrait.ibis import type_pb2 as substrait_dot_ibis_dot_type__pb2 +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(substrait/ibis/extended_expression.proto\x12\x0esubstrait.ibis\x1a\x1csubstrait/ibis/algebra.proto\x1a*substrait/ibis/extensions/extensions.proto\x1a\x19substrait/ibis/plan.proto\x1a\x19substrait/ibis/type.proto"\xc2\x01\n\x13ExpressionReference\x12<\n\nexpression\x18\x01 \x01(\x0b2\x1a.substrait.ibis.ExpressionH\x00R\nexpression\x12=\n\x07measure\x18\x02 \x01(\x0b2!.substrait.ibis.AggregateFunctionH\x00R\x07measure\x12!\n\x0coutput_names\x18\x03 \x03(\tR\x0boutputNamesB\x0b\n\texpr_type"\x89\x04\n\x12ExtendedExpression\x121\n\x07version\x18\x07 \x01(\x0b2\x17.substrait.ibis.VersionR\x07version\x12T\n\x0eextension_uris\x18\x01 \x03(\x0b2-.substrait.ibis.extensions.SimpleExtensionURIR\rextensionUris\x12U\n\nextensions\x18\x02 \x03(\x0b25.substrait.ibis.extensions.SimpleExtensionDeclarationR\nextensions\x12H\n\rreferred_expr\x18\x03 \x03(\x0b2#.substrait.ibis.ExpressionReferenceR\x0creferredExpr\x12<\n\x0bbase_schema\x18\x04 \x01(\x0b2\x1b.substrait.ibis.NamedStructR\nbaseSchema\x12]\n\x13advanced_extensions\x18\x05 \x01(\x0b2,.substrait.ibis.extensions.AdvancedExtensionR\x12advancedExtensions\x12,\n\x12expected_type_urls\x18\x06 \x03(\tR\x10expectedTypeUrlsB5\n\x17io.substrait.ibis.protoP\x01\xaa\x02\x17Substrait.Ibis.Protobufb\x06proto3') +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'substrait.ibis.extended_expression_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' + _EXPRESSIONREFERENCE._serialized_start = 189 + _EXPRESSIONREFERENCE._serialized_end = 383 + _EXTENDEDEXPRESSION._serialized_start = 386 + _EXTENDEDEXPRESSION._serialized_end = 907 \ No newline at end of file diff --git a/ibis_substrait/proto/substrait/ibis/extended_expression_pb2.pyi b/ibis_substrait/proto/substrait/ibis/extended_expression_pb2.pyi new file mode 100644 index 00000000..6a1beb9b --- /dev/null +++ b/ibis_substrait/proto/substrait/ibis/extended_expression_pb2.pyi @@ -0,0 +1,105 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +SPDX-License-Identifier: Apache-2.0""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message +from ... import substrait +import sys +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class ExpressionReference(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + EXPRESSION_FIELD_NUMBER: builtins.int + MEASURE_FIELD_NUMBER: builtins.int + OUTPUT_NAMES_FIELD_NUMBER: builtins.int + + @property + def expression(self) -> substrait.ibis.algebra_pb2.Expression: + ... + + @property + def measure(self) -> substrait.ibis.algebra_pb2.AggregateFunction: + ... + + @property + def output_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """Field names in depth-first order""" + + def __init__(self, *, expression: substrait.ibis.algebra_pb2.Expression | None=..., measure: substrait.ibis.algebra_pb2.AggregateFunction | None=..., output_names: collections.abc.Iterable[builtins.str] | None=...) -> None: + ... + + def HasField(self, field_name: typing_extensions.Literal['expr_type', b'expr_type', 'expression', b'expression', 'measure', b'measure']) -> builtins.bool: + ... + + def ClearField(self, field_name: typing_extensions.Literal['expr_type', b'expr_type', 'expression', b'expression', 'measure', b'measure', 'output_names', b'output_names']) -> None: + ... + + def WhichOneof(self, oneof_group: typing_extensions.Literal['expr_type', b'expr_type']) -> typing_extensions.Literal['expression', 'measure'] | None: + ... +global___ExpressionReference = ExpressionReference + +class ExtendedExpression(google.protobuf.message.Message): + """Describe a set of operations to complete. + For compactness sake, identifiers are normalized at the plan level. + """ + DESCRIPTOR: google.protobuf.descriptor.Descriptor + VERSION_FIELD_NUMBER: builtins.int + EXTENSION_URIS_FIELD_NUMBER: builtins.int + EXTENSIONS_FIELD_NUMBER: builtins.int + REFERRED_EXPR_FIELD_NUMBER: builtins.int + BASE_SCHEMA_FIELD_NUMBER: builtins.int + ADVANCED_EXTENSIONS_FIELD_NUMBER: builtins.int + EXPECTED_TYPE_URLS_FIELD_NUMBER: builtins.int + + @property + def version(self) -> substrait.ibis.plan_pb2.Version: + """Substrait version of the expression. Optional up to 0.17.0, required for later + versions. + """ + + @property + def extension_uris(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[substrait.ibis.extensions.extensions_pb2.SimpleExtensionURI]: + """a list of yaml specifications this expression may depend on""" + + @property + def extensions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[substrait.ibis.extensions.extensions_pb2.SimpleExtensionDeclaration]: + """a list of extensions this expression may depend on""" + + @property + def referred_expr(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ExpressionReference]: + """one or more expression trees with same order in plan rel""" + + @property + def base_schema(self) -> substrait.ibis.type_pb2.NamedStruct: + ... + + @property + def advanced_extensions(self) -> substrait.ibis.extensions.extensions_pb2.AdvancedExtension: + """additional extensions associated with this expression.""" + + @property + def expected_type_urls(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """A list of com.google.Any entities that this plan may use. Can be used to + warn if some embedded message types are unknown. Note that this list may + include message types that are ignorable (optimizations) or that are + unused. In many cases, a consumer may be able to work with a plan even if + one or more message types defined here are unknown. + """ + + def __init__(self, *, version: substrait.ibis.plan_pb2.Version | None=..., extension_uris: collections.abc.Iterable[substrait.ibis.extensions.extensions_pb2.SimpleExtensionURI] | None=..., extensions: collections.abc.Iterable[substrait.ibis.extensions.extensions_pb2.SimpleExtensionDeclaration] | None=..., referred_expr: collections.abc.Iterable[global___ExpressionReference] | None=..., base_schema: substrait.ibis.type_pb2.NamedStruct | None=..., advanced_extensions: substrait.ibis.extensions.extensions_pb2.AdvancedExtension | None=..., expected_type_urls: collections.abc.Iterable[builtins.str] | None=...) -> None: + ... + + def HasField(self, field_name: typing_extensions.Literal['advanced_extensions', b'advanced_extensions', 'base_schema', b'base_schema', 'version', b'version']) -> builtins.bool: + ... + + def ClearField(self, field_name: typing_extensions.Literal['advanced_extensions', b'advanced_extensions', 'base_schema', b'base_schema', 'expected_type_urls', b'expected_type_urls', 'extension_uris', b'extension_uris', 'extensions', b'extensions', 'referred_expr', b'referred_expr', 'version', b'version']) -> None: + ... +global___ExtendedExpression = ExtendedExpression \ No newline at end of file diff --git a/nix/overlay.nix b/nix/overlay.nix index 57a7138c..126a9679 100644 --- a/nix/overlay.nix +++ b/nix/overlay.nix @@ -47,8 +47,8 @@ in substrait = final.fetchFromGitHub { owner = "substrait-io"; repo = "substrait"; - rev = "1a23f3bebdf6b273c2032b9906c77441a176da68"; - sha256 = "9l7hztGn7PJSs10oePvtkFuZ6EZOz4zC/GTy+zHwc4c="; + rev = "335a4dc74ccb3ef88769878d36c35e511e47ef70"; + sha256 = "q4kZBObYCgPSoxOAJAHuPrKcm0T+rWqRqUibHidtfPs="; }; ibisSubstraitDevEnv38 = mkPoetryEnv final.python38; diff --git a/proto/substrait/algebra.proto b/proto/substrait/algebra.proto index 5e71ac93..bb51965b 100644 --- a/proto/substrait/algebra.proto +++ b/proto/substrait/algebra.proto @@ -365,6 +365,10 @@ message Rel { ExtensionMultiRel extension_multi = 10; ExtensionLeafRel extension_leaf = 11; CrossRel cross = 12; + + //Physical relations + HashJoinRel hash_join = 13; + MergeJoinRel merge_join = 14; } } @@ -479,6 +483,60 @@ message WriteRel { } } +// The hash equijoin join operator will build a hash table out of the right input based on a set of join keys. +// It will then probe that hash table for incoming inputs, finding matches. +message HashJoinRel { + RelCommon common = 1; + Rel left = 2; + Rel right = 3; + repeated Expression.FieldReference left_keys = 4; + repeated Expression.FieldReference right_keys = 5; + Expression post_join_filter = 6; + + JoinType type = 7; + + enum JoinType { + JOIN_TYPE_UNSPECIFIED = 0; + JOIN_TYPE_INNER = 1; + JOIN_TYPE_OUTER = 2; + JOIN_TYPE_LEFT = 3; + JOIN_TYPE_RIGHT = 4; + JOIN_TYPE_LEFT_SEMI = 5; + JOIN_TYPE_RIGHT_SEMI = 6; + JOIN_TYPE_LEFT_ANTI = 7; + JOIN_TYPE_RIGHT_ANTI = 8; + } + + substrait.extensions.AdvancedExtension advanced_extension = 10; +} + +// The merge equijoin does a join by taking advantage of two sets that are sorted on the join keys. +// This allows the join operation to be done in a streaming fashion. +message MergeJoinRel { + RelCommon common = 1; + Rel left = 2; + Rel right = 3; + repeated Expression.FieldReference left_keys = 4; + repeated Expression.FieldReference right_keys = 5; + Expression post_join_filter = 6; + + JoinType type = 7; + + enum JoinType { + JOIN_TYPE_UNSPECIFIED = 0; + JOIN_TYPE_INNER = 1; + JOIN_TYPE_OUTER = 2; + JOIN_TYPE_LEFT = 3; + JOIN_TYPE_RIGHT = 4; + JOIN_TYPE_LEFT_SEMI = 5; + JOIN_TYPE_RIGHT_SEMI = 6; + JOIN_TYPE_LEFT_ANTI = 7; + JOIN_TYPE_RIGHT_ANTI = 8; + } + + substrait.extensions.AdvancedExtension advanced_extension = 10; +} + // The argument of a function message FunctionArgument { oneof arg_type { diff --git a/proto/substrait/extended_expression.proto b/proto/substrait/extended_expression.proto new file mode 100644 index 00000000..5d115205 --- /dev/null +++ b/proto/substrait/extended_expression.proto @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: Apache-2.0 +syntax = "proto3"; + +package substrait; + +import "substrait/algebra.proto"; +import "substrait/extensions/extensions.proto"; +import "substrait/plan.proto"; +import "substrait/type.proto"; + +option csharp_namespace = "Substrait.Protobuf"; +option go_package = "github.com/substrait-io/substrait-go/proto"; +option java_multiple_files = true; +option java_package = "io.substrait.proto"; + +message ExpressionReference { + oneof expr_type { + Expression expression = 1; + AggregateFunction measure = 2; + } + // Field names in depth-first order + repeated string output_names = 3; +} + +// Describe a set of operations to complete. +// For compactness sake, identifiers are normalized at the plan level. +message ExtendedExpression { + // Substrait version of the expression. Optional up to 0.17.0, required for later + // versions. + Version version = 7; + + // a list of yaml specifications this expression may depend on + repeated substrait.extensions.SimpleExtensionURI extension_uris = 1; + + // a list of extensions this expression may depend on + repeated substrait.extensions.SimpleExtensionDeclaration extensions = 2; + + // one or more expression trees with same order in plan rel + repeated ExpressionReference referred_expr = 3; + + NamedStruct base_schema = 4; + // additional extensions associated with this expression. + substrait.extensions.AdvancedExtension advanced_extensions = 5; + + // A list of com.google.Any entities that this plan may use. Can be used to + // warn if some embedded message types are unknown. Note that this list may + // include message types that are ignorable (optimizations) or that are + // unused. In many cases, a consumer may be able to work with a plan even if + // one or more message types defined here are unknown. + repeated string expected_type_urls = 6; +}