diff --git a/src/substrait/__init__.py b/src/substrait/__init__.py index 5d1a625..21354e1 100644 --- a/src/substrait/__init__.py +++ b/src/substrait/__init__.py @@ -3,6 +3,6 @@ except ImportError: pass -__substrait_version__ = "0.77.0" -__substrait_hash__ = "3c25b1b" +__substrait_version__ = "0.79.0" +__substrait_hash__ = "92d2e75" __minimum_substrait_version__ = "0.30.0" diff --git a/src/substrait/extension_registry/signature_checker_helpers.py b/src/substrait/extension_registry/signature_checker_helpers.py index 1a65c05..4c932fd 100644 --- a/src/substrait/extension_registry/signature_checker_helpers.py +++ b/src/substrait/extension_registry/signature_checker_helpers.py @@ -41,6 +41,7 @@ "struct": "struct", "list": "list", "map": "map", + "func": "func", } diff --git a/src/substrait/extensions/functions_comparison.yaml b/src/substrait/extensions/functions_comparison.yaml index 69d8906..8d0e265 100644 --- a/src/substrait/extensions/functions_comparison.yaml +++ b/src/substrait/extensions/functions_comparison.yaml @@ -252,7 +252,8 @@ scalar_functions: name: x - value: any1 name: y - return: any1 + return: any1? + nullability: DECLARED_OUTPUT - name: "coalesce" description: >- diff --git a/src/substrait/extensions/functions_list.yaml b/src/substrait/extensions/functions_list.yaml new file mode 100644 index 0000000..d210312 --- /dev/null +++ b/src/substrait/extensions/functions_list.yaml @@ -0,0 +1,43 @@ +%YAML 1.2 +--- +urn: extension:io.substrait:functions_list +scalar_functions: + - name: "transform" + description: >- + Transforms each element of a list using the provided function. + Also known as "map" in functional programming. + + Returns a new list where each element is the result of applying + the transformer to the corresponding element in the input list. + + The transformer receives one parameter (the current element) and must return + the transformed value. + impls: + - args: + - name: input + value: list + - name: transformer + value: func any2> + nullability: MIRROR + return: list + + - name: "filter" + description: >- + Filters a list of elements based on a predicate function. + + Returns a new list containing only elements for which the predicate + function returns true. + + The predicate receives one parameter (the current element) and must return a + boolean. + + Elements for which the predicate returns true are included in the + result. Elements for which the predicate returns false or null are excluded. + impls: + - args: + - name: input + value: list + - name: predicate + value: func boolean> + nullability: MIRROR + return: list diff --git a/src/substrait/gen/antlr/SubstraitTypeLexer.py b/src/substrait/gen/antlr/SubstraitTypeLexer.py index 6a5a3cb..a056fb9 100644 --- a/src/substrait/gen/antlr/SubstraitTypeLexer.py +++ b/src/substrait/gen/antlr/SubstraitTypeLexer.py @@ -10,7 +10,7 @@ def serializedATN(): return [ - 4,0,80,626,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5, + 4,0,82,638,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5, 2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2, 13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7, 19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2, @@ -22,214 +22,218 @@ def serializedATN(): 58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2, 65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7, 71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2, - 78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,1,0,1,0,1,0,1,0, - 5,0,172,8,0,10,0,12,0,175,9,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,4,1,184, - 8,1,11,1,12,1,185,1,1,3,1,189,8,1,1,1,5,1,192,8,1,10,1,12,1,195, - 9,1,1,1,1,1,1,1,1,1,1,1,1,2,4,2,203,8,2,11,2,12,2,204,1,2,1,2,1, - 3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,7,1, - 7,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,10,1,10, - 1,10,1,10,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,13,1,13, - 1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15, - 1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16, - 1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17, - 1,17,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,20,1,20, - 1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,21, - 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22, - 1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24, - 1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24, - 1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, - 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26, + 78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7, + 84,1,0,1,0,1,0,1,0,5,0,176,8,0,10,0,12,0,179,9,0,1,0,1,0,1,1,1,1, + 1,1,1,1,1,1,4,1,188,8,1,11,1,12,1,189,1,1,3,1,193,8,1,1,1,5,1,196, + 8,1,10,1,12,1,199,9,1,1,1,1,1,1,1,1,1,1,1,1,2,4,2,207,8,2,11,2,12, + 2,208,1,2,1,2,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1, + 6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 9,1,9,1,9,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,12,1,12,1,12, + 1,12,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,15,1,15, + 1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,17, + 1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19, + 1,19,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22, + 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,24, + 1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, - 1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, - 1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29, - 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30, - 1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32, - 1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,35,1,35,1,35, - 1,35,1,35,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,38,1,38, - 1,38,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,41, - 1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,44,1,44, - 1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46, - 1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,49, - 1,49,1,49,1,49,1,50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,53,1,53, - 1,54,1,54,1,55,1,55,1,56,1,56,1,57,1,57,1,58,1,58,1,58,1,59,1,59, - 1,59,1,60,1,60,1,60,1,61,1,61,1,62,1,62,1,63,1,63,1,64,1,64,1,65, - 1,65,1,66,1,66,1,67,1,67,1,68,1,68,1,69,1,69,1,70,1,70,1,71,1,71, - 1,72,1,72,1,73,1,73,1,74,1,74,1,75,1,75,1,75,1,75,1,76,1,76,1,76, - 1,77,1,77,1,77,1,78,1,78,5,78,597,8,78,10,78,12,78,600,9,78,1,78, - 3,78,603,8,78,1,79,1,79,1,80,3,80,608,8,80,1,80,1,80,1,81,1,81,1, - 81,5,81,615,8,81,10,81,12,81,618,9,81,1,82,1,82,3,82,622,8,82,1, - 82,3,82,625,8,82,0,0,83,1,1,3,2,5,3,7,0,9,4,11,5,13,6,15,7,17,8, - 19,9,21,10,23,11,25,12,27,13,29,14,31,15,33,16,35,17,37,18,39,19, - 41,20,43,21,45,22,47,23,49,24,51,25,53,26,55,27,57,28,59,29,61,30, - 63,31,65,32,67,33,69,34,71,35,73,36,75,37,77,38,79,39,81,40,83,41, - 85,42,87,43,89,44,91,45,93,46,95,47,97,48,99,49,101,50,103,51,105, - 52,107,53,109,54,111,55,113,56,115,57,117,58,119,59,121,60,123,61, - 125,62,127,63,129,64,131,65,133,66,135,67,137,68,139,69,141,70,143, - 71,145,72,147,73,149,74,151,75,153,76,155,77,157,0,159,0,161,78, - 163,79,165,80,1,0,28,2,0,10,10,13,13,1,0,42,42,2,0,42,42,47,47,3, - 0,9,9,13,13,32,32,1,0,48,57,2,0,73,73,105,105,2,0,70,70,102,102, - 2,0,84,84,116,116,2,0,72,72,104,104,2,0,69,69,101,101,2,0,78,78, - 110,110,2,0,76,76,108,108,2,0,83,83,115,115,2,0,66,66,98,98,2,0, - 79,79,111,111,2,0,65,65,97,97,2,0,80,80,112,112,2,0,82,82,114,114, - 2,0,71,71,103,103,2,0,89,89,121,121,2,0,77,77,109,109,2,0,90,90, - 122,122,2,0,68,68,100,100,2,0,86,86,118,118,2,0,85,85,117,117,2, - 0,67,67,99,99,2,0,88,88,120,120,4,0,36,36,65,90,95,95,97,122,634, - 0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13, - 1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23, - 1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33, - 1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43, - 1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53, - 1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63, - 1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73, - 1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83, - 1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93, - 1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103, - 1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0, - 0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1, - 0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0, - 131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0, - 0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149, - 1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,161,1,0,0,0, - 0,163,1,0,0,0,0,165,1,0,0,0,1,167,1,0,0,0,3,178,1,0,0,0,5,202,1, - 0,0,0,7,208,1,0,0,0,9,210,1,0,0,0,11,213,1,0,0,0,13,218,1,0,0,0, - 15,223,1,0,0,0,17,231,1,0,0,0,19,234,1,0,0,0,21,238,1,0,0,0,23,242, - 1,0,0,0,25,246,1,0,0,0,27,251,1,0,0,0,29,256,1,0,0,0,31,263,1,0, - 0,0,33,270,1,0,0,0,35,280,1,0,0,0,37,293,1,0,0,0,39,298,1,0,0,0, - 41,303,1,0,0,0,43,317,1,0,0,0,45,330,1,0,0,0,47,335,1,0,0,0,49,343, - 1,0,0,0,51,358,1,0,0,0,53,378,1,0,0,0,55,401,1,0,0,0,57,411,1,0, - 0,0,59,419,1,0,0,0,61,431,1,0,0,0,63,438,1,0,0,0,65,446,1,0,0,0, - 67,451,1,0,0,0,69,455,1,0,0,0,71,458,1,0,0,0,73,463,1,0,0,0,75,467, - 1,0,0,0,77,472,1,0,0,0,79,475,1,0,0,0,81,480,1,0,0,0,83,486,1,0, - 0,0,85,491,1,0,0,0,87,495,1,0,0,0,89,498,1,0,0,0,91,502,1,0,0,0, - 93,508,1,0,0,0,95,514,1,0,0,0,97,520,1,0,0,0,99,525,1,0,0,0,101, - 529,1,0,0,0,103,532,1,0,0,0,105,535,1,0,0,0,107,537,1,0,0,0,109, - 539,1,0,0,0,111,541,1,0,0,0,113,543,1,0,0,0,115,545,1,0,0,0,117, - 547,1,0,0,0,119,550,1,0,0,0,121,553,1,0,0,0,123,556,1,0,0,0,125, - 558,1,0,0,0,127,560,1,0,0,0,129,562,1,0,0,0,131,564,1,0,0,0,133, - 566,1,0,0,0,135,568,1,0,0,0,137,570,1,0,0,0,139,572,1,0,0,0,141, - 574,1,0,0,0,143,576,1,0,0,0,145,578,1,0,0,0,147,580,1,0,0,0,149, - 582,1,0,0,0,151,584,1,0,0,0,153,588,1,0,0,0,155,591,1,0,0,0,157, - 602,1,0,0,0,159,604,1,0,0,0,161,607,1,0,0,0,163,611,1,0,0,0,165, - 624,1,0,0,0,167,168,5,47,0,0,168,169,5,47,0,0,169,173,1,0,0,0,170, - 172,8,0,0,0,171,170,1,0,0,0,172,175,1,0,0,0,173,171,1,0,0,0,173, - 174,1,0,0,0,174,176,1,0,0,0,175,173,1,0,0,0,176,177,6,0,0,0,177, - 2,1,0,0,0,178,179,5,47,0,0,179,180,5,42,0,0,180,188,1,0,0,0,181, - 189,8,1,0,0,182,184,5,42,0,0,183,182,1,0,0,0,184,185,1,0,0,0,185, - 183,1,0,0,0,185,186,1,0,0,0,186,187,1,0,0,0,187,189,8,2,0,0,188, - 181,1,0,0,0,188,183,1,0,0,0,189,193,1,0,0,0,190,192,5,42,0,0,191, - 190,1,0,0,0,192,195,1,0,0,0,193,191,1,0,0,0,193,194,1,0,0,0,194, - 196,1,0,0,0,195,193,1,0,0,0,196,197,5,42,0,0,197,198,5,47,0,0,198, - 199,1,0,0,0,199,200,6,1,0,0,200,4,1,0,0,0,201,203,7,3,0,0,202,201, - 1,0,0,0,203,204,1,0,0,0,204,202,1,0,0,0,204,205,1,0,0,0,205,206, - 1,0,0,0,206,207,6,2,0,0,207,6,1,0,0,0,208,209,7,4,0,0,209,8,1,0, - 0,0,210,211,7,5,0,0,211,212,7,6,0,0,212,10,1,0,0,0,213,214,7,7,0, - 0,214,215,7,8,0,0,215,216,7,9,0,0,216,217,7,10,0,0,217,12,1,0,0, - 0,218,219,7,9,0,0,219,220,7,11,0,0,220,221,7,12,0,0,221,222,7,9, - 0,0,222,14,1,0,0,0,223,224,7,13,0,0,224,225,7,14,0,0,225,226,7,14, - 0,0,226,227,7,11,0,0,227,228,7,9,0,0,228,229,7,15,0,0,229,230,7, - 10,0,0,230,16,1,0,0,0,231,232,7,5,0,0,232,233,5,56,0,0,233,18,1, - 0,0,0,234,235,7,5,0,0,235,236,5,49,0,0,236,237,5,54,0,0,237,20,1, - 0,0,0,238,239,7,5,0,0,239,240,5,51,0,0,240,241,5,50,0,0,241,22,1, - 0,0,0,242,243,7,5,0,0,243,244,5,54,0,0,244,245,5,52,0,0,245,24,1, - 0,0,0,246,247,7,6,0,0,247,248,7,16,0,0,248,249,5,51,0,0,249,250, - 5,50,0,0,250,26,1,0,0,0,251,252,7,6,0,0,252,253,7,16,0,0,253,254, - 5,54,0,0,254,255,5,52,0,0,255,28,1,0,0,0,256,257,7,12,0,0,257,258, - 7,7,0,0,258,259,7,17,0,0,259,260,7,5,0,0,260,261,7,10,0,0,261,262, - 7,18,0,0,262,30,1,0,0,0,263,264,7,13,0,0,264,265,7,5,0,0,265,266, - 7,10,0,0,266,267,7,15,0,0,267,268,7,17,0,0,268,269,7,19,0,0,269, - 32,1,0,0,0,270,271,7,7,0,0,271,272,7,5,0,0,272,273,7,20,0,0,273, - 274,7,9,0,0,274,275,7,12,0,0,275,276,7,7,0,0,276,277,7,15,0,0,277, - 278,7,20,0,0,278,279,7,16,0,0,279,34,1,0,0,0,280,281,7,7,0,0,281, - 282,7,5,0,0,282,283,7,20,0,0,283,284,7,9,0,0,284,285,7,12,0,0,285, - 286,7,7,0,0,286,287,7,15,0,0,287,288,7,20,0,0,288,289,7,16,0,0,289, - 290,5,95,0,0,290,291,7,7,0,0,291,292,7,21,0,0,292,36,1,0,0,0,293, - 294,7,22,0,0,294,295,7,15,0,0,295,296,7,7,0,0,296,297,7,9,0,0,297, - 38,1,0,0,0,298,299,7,7,0,0,299,300,7,5,0,0,300,301,7,20,0,0,301, - 302,7,9,0,0,302,40,1,0,0,0,303,304,7,5,0,0,304,305,7,10,0,0,305, - 306,7,7,0,0,306,307,7,9,0,0,307,308,7,17,0,0,308,309,7,23,0,0,309, - 310,7,15,0,0,310,311,7,11,0,0,311,312,5,95,0,0,312,313,7,19,0,0, - 313,314,7,9,0,0,314,315,7,15,0,0,315,316,7,17,0,0,316,42,1,0,0,0, - 317,318,7,5,0,0,318,319,7,10,0,0,319,320,7,7,0,0,320,321,7,9,0,0, - 321,322,7,17,0,0,322,323,7,23,0,0,323,324,7,15,0,0,324,325,7,11, - 0,0,325,326,5,95,0,0,326,327,7,22,0,0,327,328,7,15,0,0,328,329,7, - 19,0,0,329,44,1,0,0,0,330,331,7,24,0,0,331,332,7,24,0,0,332,333, - 7,5,0,0,333,334,7,22,0,0,334,46,1,0,0,0,335,336,7,22,0,0,336,337, - 7,9,0,0,337,338,7,25,0,0,338,339,7,5,0,0,339,340,7,20,0,0,340,341, - 7,15,0,0,341,342,7,11,0,0,342,48,1,0,0,0,343,344,7,16,0,0,344,345, - 7,17,0,0,345,346,7,9,0,0,346,347,7,25,0,0,347,348,7,5,0,0,348,349, - 7,12,0,0,349,350,7,5,0,0,350,351,7,14,0,0,351,352,7,10,0,0,352,353, - 5,95,0,0,353,354,7,7,0,0,354,355,7,5,0,0,355,356,7,20,0,0,356,357, - 7,9,0,0,357,50,1,0,0,0,358,359,7,16,0,0,359,360,7,17,0,0,360,361, - 7,9,0,0,361,362,7,25,0,0,362,363,7,5,0,0,363,364,7,12,0,0,364,365, - 7,5,0,0,365,366,7,14,0,0,366,367,7,10,0,0,367,368,5,95,0,0,368,369, - 7,7,0,0,369,370,7,5,0,0,370,371,7,20,0,0,371,372,7,9,0,0,372,373, - 7,12,0,0,373,374,7,7,0,0,374,375,7,15,0,0,375,376,7,20,0,0,376,377, - 7,16,0,0,377,52,1,0,0,0,378,379,7,16,0,0,379,380,7,17,0,0,380,381, - 7,9,0,0,381,382,7,25,0,0,382,383,7,5,0,0,383,384,7,12,0,0,384,385, - 7,5,0,0,385,386,7,14,0,0,386,387,7,10,0,0,387,388,5,95,0,0,388,389, - 7,7,0,0,389,390,7,5,0,0,390,391,7,20,0,0,391,392,7,9,0,0,392,393, - 7,12,0,0,393,394,7,7,0,0,394,395,7,15,0,0,395,396,7,20,0,0,396,397, - 7,16,0,0,397,398,5,95,0,0,398,399,7,7,0,0,399,400,7,21,0,0,400,54, - 1,0,0,0,401,402,7,6,0,0,402,403,7,5,0,0,403,404,7,26,0,0,404,405, - 7,9,0,0,405,406,7,22,0,0,406,407,7,25,0,0,407,408,7,8,0,0,408,409, - 7,15,0,0,409,410,7,17,0,0,410,56,1,0,0,0,411,412,7,23,0,0,412,413, - 7,15,0,0,413,414,7,17,0,0,414,415,7,25,0,0,415,416,7,8,0,0,416,417, - 7,15,0,0,417,418,7,17,0,0,418,58,1,0,0,0,419,420,7,6,0,0,420,421, - 7,5,0,0,421,422,7,26,0,0,422,423,7,9,0,0,423,424,7,22,0,0,424,425, - 7,13,0,0,425,426,7,5,0,0,426,427,7,10,0,0,427,428,7,15,0,0,428,429, - 7,17,0,0,429,430,7,19,0,0,430,60,1,0,0,0,431,432,7,12,0,0,432,433, - 7,7,0,0,433,434,7,17,0,0,434,435,7,24,0,0,435,436,7,25,0,0,436,437, - 7,7,0,0,437,62,1,0,0,0,438,439,7,10,0,0,439,440,7,12,0,0,440,441, - 7,7,0,0,441,442,7,17,0,0,442,443,7,24,0,0,443,444,7,25,0,0,444,445, - 7,7,0,0,445,64,1,0,0,0,446,447,7,11,0,0,447,448,7,5,0,0,448,449, - 7,12,0,0,449,450,7,7,0,0,450,66,1,0,0,0,451,452,7,20,0,0,452,453, - 7,15,0,0,453,454,7,16,0,0,454,68,1,0,0,0,455,456,7,24,0,0,456,457, - 5,33,0,0,457,70,1,0,0,0,458,459,7,13,0,0,459,460,7,14,0,0,460,461, - 7,14,0,0,461,462,7,11,0,0,462,72,1,0,0,0,463,464,7,12,0,0,464,465, - 7,7,0,0,465,466,7,17,0,0,466,74,1,0,0,0,467,468,7,23,0,0,468,469, - 7,13,0,0,469,470,7,5,0,0,470,471,7,10,0,0,471,76,1,0,0,0,472,473, - 7,7,0,0,473,474,7,12,0,0,474,78,1,0,0,0,475,476,7,7,0,0,476,477, - 7,12,0,0,477,478,7,7,0,0,478,479,7,21,0,0,479,80,1,0,0,0,480,481, - 7,5,0,0,481,482,7,19,0,0,482,483,7,9,0,0,483,484,7,15,0,0,484,485, - 7,17,0,0,485,82,1,0,0,0,486,487,7,5,0,0,487,488,7,22,0,0,488,489, - 7,15,0,0,489,490,7,19,0,0,490,84,1,0,0,0,491,492,7,22,0,0,492,493, - 7,9,0,0,493,494,7,25,0,0,494,86,1,0,0,0,495,496,7,16,0,0,496,497, - 7,7,0,0,497,88,1,0,0,0,498,499,7,16,0,0,499,500,7,7,0,0,500,501, - 7,12,0,0,501,90,1,0,0,0,502,503,7,16,0,0,503,504,7,7,0,0,504,505, - 7,12,0,0,505,506,7,7,0,0,506,507,7,21,0,0,507,92,1,0,0,0,508,509, - 7,6,0,0,509,510,7,25,0,0,510,511,7,8,0,0,511,512,7,15,0,0,512,513, - 7,17,0,0,513,94,1,0,0,0,514,515,7,23,0,0,515,516,7,25,0,0,516,517, - 7,8,0,0,517,518,7,15,0,0,518,519,7,17,0,0,519,96,1,0,0,0,520,521, - 7,6,0,0,521,522,7,13,0,0,522,523,7,5,0,0,523,524,7,10,0,0,524,98, - 1,0,0,0,525,526,7,15,0,0,526,527,7,10,0,0,527,528,7,19,0,0,528,100, - 1,0,0,0,529,530,3,99,49,0,530,531,7,4,0,0,531,102,1,0,0,0,532,533, - 5,58,0,0,533,534,5,58,0,0,534,104,1,0,0,0,535,536,5,43,0,0,536,106, - 1,0,0,0,537,538,5,45,0,0,538,108,1,0,0,0,539,540,5,42,0,0,540,110, - 1,0,0,0,541,542,5,47,0,0,542,112,1,0,0,0,543,544,5,37,0,0,544,114, - 1,0,0,0,545,546,5,61,0,0,546,116,1,0,0,0,547,548,5,33,0,0,548,549, - 5,61,0,0,549,118,1,0,0,0,550,551,5,62,0,0,551,552,5,61,0,0,552,120, - 1,0,0,0,553,554,5,60,0,0,554,555,5,61,0,0,555,122,1,0,0,0,556,557, - 5,62,0,0,557,124,1,0,0,0,558,559,5,60,0,0,559,126,1,0,0,0,560,561, - 5,33,0,0,561,128,1,0,0,0,562,563,3,125,62,0,563,130,1,0,0,0,564, - 565,3,123,61,0,565,132,1,0,0,0,566,567,5,40,0,0,567,134,1,0,0,0, - 568,569,5,41,0,0,569,136,1,0,0,0,570,571,5,91,0,0,571,138,1,0,0, - 0,572,573,5,93,0,0,573,140,1,0,0,0,574,575,5,44,0,0,575,142,1,0, - 0,0,576,577,5,58,0,0,577,144,1,0,0,0,578,579,5,63,0,0,579,146,1, - 0,0,0,580,581,5,35,0,0,581,148,1,0,0,0,582,583,5,46,0,0,583,150, - 1,0,0,0,584,585,7,15,0,0,585,586,7,10,0,0,586,587,7,22,0,0,587,152, - 1,0,0,0,588,589,7,14,0,0,589,590,7,17,0,0,590,154,1,0,0,0,591,592, - 5,58,0,0,592,593,5,61,0,0,593,156,1,0,0,0,594,598,2,49,57,0,595, - 597,3,159,79,0,596,595,1,0,0,0,597,600,1,0,0,0,598,596,1,0,0,0,598, - 599,1,0,0,0,599,603,1,0,0,0,600,598,1,0,0,0,601,603,5,48,0,0,602, - 594,1,0,0,0,602,601,1,0,0,0,603,158,1,0,0,0,604,605,2,48,57,0,605, - 160,1,0,0,0,606,608,5,45,0,0,607,606,1,0,0,0,607,608,1,0,0,0,608, - 609,1,0,0,0,609,610,3,157,78,0,610,162,1,0,0,0,611,616,7,27,0,0, - 612,615,7,27,0,0,613,615,3,159,79,0,614,612,1,0,0,0,614,613,1,0, - 0,0,615,618,1,0,0,0,616,614,1,0,0,0,616,617,1,0,0,0,617,164,1,0, - 0,0,618,616,1,0,0,0,619,621,5,13,0,0,620,622,5,10,0,0,621,620,1, - 0,0,0,621,622,1,0,0,0,622,625,1,0,0,0,623,625,5,10,0,0,624,619,1, - 0,0,0,624,623,1,0,0,0,625,166,1,0,0,0,13,0,173,185,188,193,204,598, - 602,607,614,616,621,624,1,0,1,0 + 1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29, + 1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32, + 1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,34,1,34, + 1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37, + 1,37,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,40,1,40, + 1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,43, + 1,43,1,43,1,43,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,46,1,46,1,46, + 1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48, + 1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,51,1,51, + 1,51,1,52,1,52,1,52,1,53,1,53,1,54,1,54,1,55,1,55,1,56,1,56,1,57, + 1,57,1,58,1,58,1,59,1,59,1,59,1,60,1,60,1,60,1,61,1,61,1,61,1,62, + 1,62,1,63,1,63,1,64,1,64,1,65,1,65,1,66,1,66,1,67,1,67,1,68,1,68, + 1,69,1,69,1,70,1,70,1,71,1,71,1,72,1,72,1,73,1,73,1,74,1,74,1,75, + 1,75,1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1,79,1,79, + 1,79,1,80,1,80,5,80,609,8,80,10,80,12,80,612,9,80,1,80,3,80,615, + 8,80,1,81,1,81,1,82,3,82,620,8,82,1,82,1,82,1,83,1,83,1,83,5,83, + 627,8,83,10,83,12,83,630,9,83,1,84,1,84,3,84,634,8,84,1,84,3,84, + 637,8,84,0,0,85,1,1,3,2,5,3,7,0,9,4,11,5,13,6,15,7,17,8,19,9,21, + 10,23,11,25,12,27,13,29,14,31,15,33,16,35,17,37,18,39,19,41,20,43, + 21,45,22,47,23,49,24,51,25,53,26,55,27,57,28,59,29,61,30,63,31,65, + 32,67,33,69,34,71,35,73,36,75,37,77,38,79,39,81,40,83,41,85,42,87, + 43,89,44,91,45,93,46,95,47,97,48,99,49,101,50,103,51,105,52,107, + 53,109,54,111,55,113,56,115,57,117,58,119,59,121,60,123,61,125,62, + 127,63,129,64,131,65,133,66,135,67,137,68,139,69,141,70,143,71,145, + 72,147,73,149,74,151,75,153,76,155,77,157,78,159,79,161,0,163,0, + 165,80,167,81,169,82,1,0,28,2,0,10,10,13,13,1,0,42,42,2,0,42,42, + 47,47,3,0,9,9,13,13,32,32,1,0,48,57,2,0,73,73,105,105,2,0,70,70, + 102,102,2,0,84,84,116,116,2,0,72,72,104,104,2,0,69,69,101,101,2, + 0,78,78,110,110,2,0,76,76,108,108,2,0,83,83,115,115,2,0,85,85,117, + 117,2,0,67,67,99,99,2,0,66,66,98,98,2,0,79,79,111,111,2,0,65,65, + 97,97,2,0,80,80,112,112,2,0,82,82,114,114,2,0,71,71,103,103,2,0, + 89,89,121,121,2,0,77,77,109,109,2,0,90,90,122,122,2,0,68,68,100, + 100,2,0,86,86,118,118,2,0,88,88,120,120,4,0,36,36,65,90,95,95,97, + 122,646,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,9,1,0,0,0,0,11,1,0, + 0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0, + 0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0, + 0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0, + 0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0, + 0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0, + 0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0, + 0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0, + 0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0, + 0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1, + 0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0, + 111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0, + 0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129, + 1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0, + 0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1, + 0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0, + 157,1,0,0,0,0,159,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0, + 0,0,1,171,1,0,0,0,3,182,1,0,0,0,5,206,1,0,0,0,7,212,1,0,0,0,9,214, + 1,0,0,0,11,217,1,0,0,0,13,222,1,0,0,0,15,227,1,0,0,0,17,232,1,0, + 0,0,19,240,1,0,0,0,21,243,1,0,0,0,23,247,1,0,0,0,25,251,1,0,0,0, + 27,255,1,0,0,0,29,260,1,0,0,0,31,265,1,0,0,0,33,272,1,0,0,0,35,279, + 1,0,0,0,37,289,1,0,0,0,39,302,1,0,0,0,41,307,1,0,0,0,43,312,1,0, + 0,0,45,326,1,0,0,0,47,339,1,0,0,0,49,344,1,0,0,0,51,352,1,0,0,0, + 53,367,1,0,0,0,55,387,1,0,0,0,57,410,1,0,0,0,59,420,1,0,0,0,61,428, + 1,0,0,0,63,440,1,0,0,0,65,447,1,0,0,0,67,455,1,0,0,0,69,460,1,0, + 0,0,71,464,1,0,0,0,73,467,1,0,0,0,75,472,1,0,0,0,77,476,1,0,0,0, + 79,481,1,0,0,0,81,484,1,0,0,0,83,489,1,0,0,0,85,495,1,0,0,0,87,500, + 1,0,0,0,89,504,1,0,0,0,91,507,1,0,0,0,93,511,1,0,0,0,95,517,1,0, + 0,0,97,523,1,0,0,0,99,529,1,0,0,0,101,534,1,0,0,0,103,538,1,0,0, + 0,105,541,1,0,0,0,107,544,1,0,0,0,109,546,1,0,0,0,111,548,1,0,0, + 0,113,550,1,0,0,0,115,552,1,0,0,0,117,554,1,0,0,0,119,556,1,0,0, + 0,121,559,1,0,0,0,123,562,1,0,0,0,125,565,1,0,0,0,127,567,1,0,0, + 0,129,569,1,0,0,0,131,571,1,0,0,0,133,573,1,0,0,0,135,575,1,0,0, + 0,137,577,1,0,0,0,139,579,1,0,0,0,141,581,1,0,0,0,143,583,1,0,0, + 0,145,585,1,0,0,0,147,587,1,0,0,0,149,589,1,0,0,0,151,591,1,0,0, + 0,153,593,1,0,0,0,155,597,1,0,0,0,157,600,1,0,0,0,159,603,1,0,0, + 0,161,614,1,0,0,0,163,616,1,0,0,0,165,619,1,0,0,0,167,623,1,0,0, + 0,169,636,1,0,0,0,171,172,5,47,0,0,172,173,5,47,0,0,173,177,1,0, + 0,0,174,176,8,0,0,0,175,174,1,0,0,0,176,179,1,0,0,0,177,175,1,0, + 0,0,177,178,1,0,0,0,178,180,1,0,0,0,179,177,1,0,0,0,180,181,6,0, + 0,0,181,2,1,0,0,0,182,183,5,47,0,0,183,184,5,42,0,0,184,192,1,0, + 0,0,185,193,8,1,0,0,186,188,5,42,0,0,187,186,1,0,0,0,188,189,1,0, + 0,0,189,187,1,0,0,0,189,190,1,0,0,0,190,191,1,0,0,0,191,193,8,2, + 0,0,192,185,1,0,0,0,192,187,1,0,0,0,193,197,1,0,0,0,194,196,5,42, + 0,0,195,194,1,0,0,0,196,199,1,0,0,0,197,195,1,0,0,0,197,198,1,0, + 0,0,198,200,1,0,0,0,199,197,1,0,0,0,200,201,5,42,0,0,201,202,5,47, + 0,0,202,203,1,0,0,0,203,204,6,1,0,0,204,4,1,0,0,0,205,207,7,3,0, + 0,206,205,1,0,0,0,207,208,1,0,0,0,208,206,1,0,0,0,208,209,1,0,0, + 0,209,210,1,0,0,0,210,211,6,2,0,0,211,6,1,0,0,0,212,213,7,4,0,0, + 213,8,1,0,0,0,214,215,7,5,0,0,215,216,7,6,0,0,216,10,1,0,0,0,217, + 218,7,7,0,0,218,219,7,8,0,0,219,220,7,9,0,0,220,221,7,10,0,0,221, + 12,1,0,0,0,222,223,7,9,0,0,223,224,7,11,0,0,224,225,7,12,0,0,225, + 226,7,9,0,0,226,14,1,0,0,0,227,228,7,6,0,0,228,229,7,13,0,0,229, + 230,7,10,0,0,230,231,7,14,0,0,231,16,1,0,0,0,232,233,7,15,0,0,233, + 234,7,16,0,0,234,235,7,16,0,0,235,236,7,11,0,0,236,237,7,9,0,0,237, + 238,7,17,0,0,238,239,7,10,0,0,239,18,1,0,0,0,240,241,7,5,0,0,241, + 242,5,56,0,0,242,20,1,0,0,0,243,244,7,5,0,0,244,245,5,49,0,0,245, + 246,5,54,0,0,246,22,1,0,0,0,247,248,7,5,0,0,248,249,5,51,0,0,249, + 250,5,50,0,0,250,24,1,0,0,0,251,252,7,5,0,0,252,253,5,54,0,0,253, + 254,5,52,0,0,254,26,1,0,0,0,255,256,7,6,0,0,256,257,7,18,0,0,257, + 258,5,51,0,0,258,259,5,50,0,0,259,28,1,0,0,0,260,261,7,6,0,0,261, + 262,7,18,0,0,262,263,5,54,0,0,263,264,5,52,0,0,264,30,1,0,0,0,265, + 266,7,12,0,0,266,267,7,7,0,0,267,268,7,19,0,0,268,269,7,5,0,0,269, + 270,7,10,0,0,270,271,7,20,0,0,271,32,1,0,0,0,272,273,7,15,0,0,273, + 274,7,5,0,0,274,275,7,10,0,0,275,276,7,17,0,0,276,277,7,19,0,0,277, + 278,7,21,0,0,278,34,1,0,0,0,279,280,7,7,0,0,280,281,7,5,0,0,281, + 282,7,22,0,0,282,283,7,9,0,0,283,284,7,12,0,0,284,285,7,7,0,0,285, + 286,7,17,0,0,286,287,7,22,0,0,287,288,7,18,0,0,288,36,1,0,0,0,289, + 290,7,7,0,0,290,291,7,5,0,0,291,292,7,22,0,0,292,293,7,9,0,0,293, + 294,7,12,0,0,294,295,7,7,0,0,295,296,7,17,0,0,296,297,7,22,0,0,297, + 298,7,18,0,0,298,299,5,95,0,0,299,300,7,7,0,0,300,301,7,23,0,0,301, + 38,1,0,0,0,302,303,7,24,0,0,303,304,7,17,0,0,304,305,7,7,0,0,305, + 306,7,9,0,0,306,40,1,0,0,0,307,308,7,7,0,0,308,309,7,5,0,0,309,310, + 7,22,0,0,310,311,7,9,0,0,311,42,1,0,0,0,312,313,7,5,0,0,313,314, + 7,10,0,0,314,315,7,7,0,0,315,316,7,9,0,0,316,317,7,19,0,0,317,318, + 7,25,0,0,318,319,7,17,0,0,319,320,7,11,0,0,320,321,5,95,0,0,321, + 322,7,21,0,0,322,323,7,9,0,0,323,324,7,17,0,0,324,325,7,19,0,0,325, + 44,1,0,0,0,326,327,7,5,0,0,327,328,7,10,0,0,328,329,7,7,0,0,329, + 330,7,9,0,0,330,331,7,19,0,0,331,332,7,25,0,0,332,333,7,17,0,0,333, + 334,7,11,0,0,334,335,5,95,0,0,335,336,7,24,0,0,336,337,7,17,0,0, + 337,338,7,21,0,0,338,46,1,0,0,0,339,340,7,13,0,0,340,341,7,13,0, + 0,341,342,7,5,0,0,342,343,7,24,0,0,343,48,1,0,0,0,344,345,7,24,0, + 0,345,346,7,9,0,0,346,347,7,14,0,0,347,348,7,5,0,0,348,349,7,22, + 0,0,349,350,7,17,0,0,350,351,7,11,0,0,351,50,1,0,0,0,352,353,7,18, + 0,0,353,354,7,19,0,0,354,355,7,9,0,0,355,356,7,14,0,0,356,357,7, + 5,0,0,357,358,7,12,0,0,358,359,7,5,0,0,359,360,7,16,0,0,360,361, + 7,10,0,0,361,362,5,95,0,0,362,363,7,7,0,0,363,364,7,5,0,0,364,365, + 7,22,0,0,365,366,7,9,0,0,366,52,1,0,0,0,367,368,7,18,0,0,368,369, + 7,19,0,0,369,370,7,9,0,0,370,371,7,14,0,0,371,372,7,5,0,0,372,373, + 7,12,0,0,373,374,7,5,0,0,374,375,7,16,0,0,375,376,7,10,0,0,376,377, + 5,95,0,0,377,378,7,7,0,0,378,379,7,5,0,0,379,380,7,22,0,0,380,381, + 7,9,0,0,381,382,7,12,0,0,382,383,7,7,0,0,383,384,7,17,0,0,384,385, + 7,22,0,0,385,386,7,18,0,0,386,54,1,0,0,0,387,388,7,18,0,0,388,389, + 7,19,0,0,389,390,7,9,0,0,390,391,7,14,0,0,391,392,7,5,0,0,392,393, + 7,12,0,0,393,394,7,5,0,0,394,395,7,16,0,0,395,396,7,10,0,0,396,397, + 5,95,0,0,397,398,7,7,0,0,398,399,7,5,0,0,399,400,7,22,0,0,400,401, + 7,9,0,0,401,402,7,12,0,0,402,403,7,7,0,0,403,404,7,17,0,0,404,405, + 7,22,0,0,405,406,7,18,0,0,406,407,5,95,0,0,407,408,7,7,0,0,408,409, + 7,23,0,0,409,56,1,0,0,0,410,411,7,6,0,0,411,412,7,5,0,0,412,413, + 7,26,0,0,413,414,7,9,0,0,414,415,7,24,0,0,415,416,7,14,0,0,416,417, + 7,8,0,0,417,418,7,17,0,0,418,419,7,19,0,0,419,58,1,0,0,0,420,421, + 7,25,0,0,421,422,7,17,0,0,422,423,7,19,0,0,423,424,7,14,0,0,424, + 425,7,8,0,0,425,426,7,17,0,0,426,427,7,19,0,0,427,60,1,0,0,0,428, + 429,7,6,0,0,429,430,7,5,0,0,430,431,7,26,0,0,431,432,7,9,0,0,432, + 433,7,24,0,0,433,434,7,15,0,0,434,435,7,5,0,0,435,436,7,10,0,0,436, + 437,7,17,0,0,437,438,7,19,0,0,438,439,7,21,0,0,439,62,1,0,0,0,440, + 441,7,12,0,0,441,442,7,7,0,0,442,443,7,19,0,0,443,444,7,13,0,0,444, + 445,7,14,0,0,445,446,7,7,0,0,446,64,1,0,0,0,447,448,7,10,0,0,448, + 449,7,12,0,0,449,450,7,7,0,0,450,451,7,19,0,0,451,452,7,13,0,0,452, + 453,7,14,0,0,453,454,7,7,0,0,454,66,1,0,0,0,455,456,7,11,0,0,456, + 457,7,5,0,0,457,458,7,12,0,0,458,459,7,7,0,0,459,68,1,0,0,0,460, + 461,7,22,0,0,461,462,7,17,0,0,462,463,7,18,0,0,463,70,1,0,0,0,464, + 465,7,13,0,0,465,466,5,33,0,0,466,72,1,0,0,0,467,468,7,15,0,0,468, + 469,7,16,0,0,469,470,7,16,0,0,470,471,7,11,0,0,471,74,1,0,0,0,472, + 473,7,12,0,0,473,474,7,7,0,0,474,475,7,19,0,0,475,76,1,0,0,0,476, + 477,7,25,0,0,477,478,7,15,0,0,478,479,7,5,0,0,479,480,7,10,0,0,480, + 78,1,0,0,0,481,482,7,7,0,0,482,483,7,12,0,0,483,80,1,0,0,0,484,485, + 7,7,0,0,485,486,7,12,0,0,486,487,7,7,0,0,487,488,7,23,0,0,488,82, + 1,0,0,0,489,490,7,5,0,0,490,491,7,21,0,0,491,492,7,9,0,0,492,493, + 7,17,0,0,493,494,7,19,0,0,494,84,1,0,0,0,495,496,7,5,0,0,496,497, + 7,24,0,0,497,498,7,17,0,0,498,499,7,21,0,0,499,86,1,0,0,0,500,501, + 7,24,0,0,501,502,7,9,0,0,502,503,7,14,0,0,503,88,1,0,0,0,504,505, + 7,18,0,0,505,506,7,7,0,0,506,90,1,0,0,0,507,508,7,18,0,0,508,509, + 7,7,0,0,509,510,7,12,0,0,510,92,1,0,0,0,511,512,7,18,0,0,512,513, + 7,7,0,0,513,514,7,12,0,0,514,515,7,7,0,0,515,516,7,23,0,0,516,94, + 1,0,0,0,517,518,7,6,0,0,518,519,7,14,0,0,519,520,7,8,0,0,520,521, + 7,17,0,0,521,522,7,19,0,0,522,96,1,0,0,0,523,524,7,25,0,0,524,525, + 7,14,0,0,525,526,7,8,0,0,526,527,7,17,0,0,527,528,7,19,0,0,528,98, + 1,0,0,0,529,530,7,6,0,0,530,531,7,15,0,0,531,532,7,5,0,0,532,533, + 7,10,0,0,533,100,1,0,0,0,534,535,7,17,0,0,535,536,7,10,0,0,536,537, + 7,21,0,0,537,102,1,0,0,0,538,539,3,101,50,0,539,540,7,4,0,0,540, + 104,1,0,0,0,541,542,5,58,0,0,542,543,5,58,0,0,543,106,1,0,0,0,544, + 545,5,43,0,0,545,108,1,0,0,0,546,547,5,45,0,0,547,110,1,0,0,0,548, + 549,5,42,0,0,549,112,1,0,0,0,550,551,5,47,0,0,551,114,1,0,0,0,552, + 553,5,37,0,0,553,116,1,0,0,0,554,555,5,61,0,0,555,118,1,0,0,0,556, + 557,5,33,0,0,557,558,5,61,0,0,558,120,1,0,0,0,559,560,5,62,0,0,560, + 561,5,61,0,0,561,122,1,0,0,0,562,563,5,60,0,0,563,564,5,61,0,0,564, + 124,1,0,0,0,565,566,5,62,0,0,566,126,1,0,0,0,567,568,5,60,0,0,568, + 128,1,0,0,0,569,570,5,33,0,0,570,130,1,0,0,0,571,572,3,127,63,0, + 572,132,1,0,0,0,573,574,3,125,62,0,574,134,1,0,0,0,575,576,5,40, + 0,0,576,136,1,0,0,0,577,578,5,41,0,0,578,138,1,0,0,0,579,580,5,91, + 0,0,580,140,1,0,0,0,581,582,5,93,0,0,582,142,1,0,0,0,583,584,5,44, + 0,0,584,144,1,0,0,0,585,586,5,58,0,0,586,146,1,0,0,0,587,588,5,63, + 0,0,588,148,1,0,0,0,589,590,5,35,0,0,590,150,1,0,0,0,591,592,5,46, + 0,0,592,152,1,0,0,0,593,594,7,17,0,0,594,595,7,10,0,0,595,596,7, + 24,0,0,596,154,1,0,0,0,597,598,7,16,0,0,598,599,7,19,0,0,599,156, + 1,0,0,0,600,601,5,58,0,0,601,602,5,61,0,0,602,158,1,0,0,0,603,604, + 5,45,0,0,604,605,5,62,0,0,605,160,1,0,0,0,606,610,2,49,57,0,607, + 609,3,163,81,0,608,607,1,0,0,0,609,612,1,0,0,0,610,608,1,0,0,0,610, + 611,1,0,0,0,611,615,1,0,0,0,612,610,1,0,0,0,613,615,5,48,0,0,614, + 606,1,0,0,0,614,613,1,0,0,0,615,162,1,0,0,0,616,617,2,48,57,0,617, + 164,1,0,0,0,618,620,5,45,0,0,619,618,1,0,0,0,619,620,1,0,0,0,620, + 621,1,0,0,0,621,622,3,161,80,0,622,166,1,0,0,0,623,628,7,27,0,0, + 624,627,7,27,0,0,625,627,3,163,81,0,626,624,1,0,0,0,626,625,1,0, + 0,0,627,630,1,0,0,0,628,626,1,0,0,0,628,629,1,0,0,0,629,168,1,0, + 0,0,630,628,1,0,0,0,631,633,5,13,0,0,632,634,5,10,0,0,633,632,1, + 0,0,0,633,634,1,0,0,0,634,637,1,0,0,0,635,637,5,10,0,0,636,631,1, + 0,0,0,636,635,1,0,0,0,637,170,1,0,0,0,13,0,177,189,192,197,208,610, + 614,619,626,628,633,636,1,0,1,0 ] class SubstraitTypeLexer(Lexer): @@ -244,127 +248,131 @@ class SubstraitTypeLexer(Lexer): If = 4 Then = 5 Else = 6 - Boolean = 7 - I8 = 8 - I16 = 9 - I32 = 10 - I64 = 11 - FP32 = 12 - FP64 = 13 - String = 14 - Binary = 15 - Timestamp = 16 - Timestamp_TZ = 17 - Date = 18 - Time = 19 - Interval_Year = 20 - Interval_Day = 21 - UUID = 22 - Decimal = 23 - Precision_Time = 24 - Precision_Timestamp = 25 - Precision_Timestamp_TZ = 26 - FixedChar = 27 - VarChar = 28 - FixedBinary = 29 - Struct = 30 - NStruct = 31 - List = 32 - Map = 33 - UserDefined = 34 - Bool = 35 - Str = 36 - VBin = 37 - Ts = 38 - TsTZ = 39 - IYear = 40 - IDay = 41 - Dec = 42 - PT = 43 - PTs = 44 - PTsTZ = 45 - FChar = 46 - VChar = 47 - FBin = 48 - Any = 49 - AnyVar = 50 - DoubleColon = 51 - Plus = 52 - Minus = 53 - Asterisk = 54 - ForwardSlash = 55 - Percent = 56 - Eq = 57 - Ne = 58 - Gte = 59 - Lte = 60 - Gt = 61 - Lt = 62 - Bang = 63 - OAngleBracket = 64 - CAngleBracket = 65 - OParen = 66 - CParen = 67 - OBracket = 68 - CBracket = 69 - Comma = 70 - Colon = 71 - QMark = 72 - Hash = 73 - Dot = 74 - And = 75 - Or = 76 - Assign = 77 - Number = 78 - Identifier = 79 - Newline = 80 + Func = 7 + Boolean = 8 + I8 = 9 + I16 = 10 + I32 = 11 + I64 = 12 + FP32 = 13 + FP64 = 14 + String = 15 + Binary = 16 + Timestamp = 17 + Timestamp_TZ = 18 + Date = 19 + Time = 20 + Interval_Year = 21 + Interval_Day = 22 + UUID = 23 + Decimal = 24 + Precision_Time = 25 + Precision_Timestamp = 26 + Precision_Timestamp_TZ = 27 + FixedChar = 28 + VarChar = 29 + FixedBinary = 30 + Struct = 31 + NStruct = 32 + List = 33 + Map = 34 + UserDefined = 35 + Bool = 36 + Str = 37 + VBin = 38 + Ts = 39 + TsTZ = 40 + IYear = 41 + IDay = 42 + Dec = 43 + PT = 44 + PTs = 45 + PTsTZ = 46 + FChar = 47 + VChar = 48 + FBin = 49 + Any = 50 + AnyVar = 51 + DoubleColon = 52 + Plus = 53 + Minus = 54 + Asterisk = 55 + ForwardSlash = 56 + Percent = 57 + Eq = 58 + Ne = 59 + Gte = 60 + Lte = 61 + Gt = 62 + Lt = 63 + Bang = 64 + OAngleBracket = 65 + CAngleBracket = 66 + OParen = 67 + CParen = 68 + OBracket = 69 + CBracket = 70 + Comma = 71 + Colon = 72 + QMark = 73 + Hash = 74 + Dot = 75 + And = 76 + Or = 77 + Assign = 78 + Arrow = 79 + Number = 80 + Identifier = 81 + Newline = 82 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] modeNames = [ "DEFAULT_MODE" ] literalNames = [ "", - "'IF'", "'THEN'", "'ELSE'", "'BOOLEAN'", "'I8'", "'I16'", "'I32'", - "'I64'", "'FP32'", "'FP64'", "'STRING'", "'BINARY'", "'TIMESTAMP'", - "'TIMESTAMP_TZ'", "'DATE'", "'TIME'", "'INTERVAL_YEAR'", "'INTERVAL_DAY'", - "'UUID'", "'DECIMAL'", "'PRECISION_TIME'", "'PRECISION_TIMESTAMP'", - "'PRECISION_TIMESTAMP_TZ'", "'FIXEDCHAR'", "'VARCHAR'", "'FIXEDBINARY'", - "'STRUCT'", "'NSTRUCT'", "'LIST'", "'MAP'", "'U!'", "'BOOL'", - "'STR'", "'VBIN'", "'TS'", "'TSTZ'", "'IYEAR'", "'IDAY'", "'DEC'", - "'PT'", "'PTS'", "'PTSTZ'", "'FCHAR'", "'VCHAR'", "'FBIN'", - "'ANY'", "'::'", "'+'", "'-'", "'*'", "'/'", "'%'", "'='", "'!='", - "'>='", "'<='", "'>'", "'<'", "'!'", "'('", "')'", "'['", "']'", - "','", "':'", "'?'", "'#'", "'.'", "'AND'", "'OR'", "':='" ] + "'IF'", "'THEN'", "'ELSE'", "'FUNC'", "'BOOLEAN'", "'I8'", "'I16'", + "'I32'", "'I64'", "'FP32'", "'FP64'", "'STRING'", "'BINARY'", + "'TIMESTAMP'", "'TIMESTAMP_TZ'", "'DATE'", "'TIME'", "'INTERVAL_YEAR'", + "'INTERVAL_DAY'", "'UUID'", "'DECIMAL'", "'PRECISION_TIME'", + "'PRECISION_TIMESTAMP'", "'PRECISION_TIMESTAMP_TZ'", "'FIXEDCHAR'", + "'VARCHAR'", "'FIXEDBINARY'", "'STRUCT'", "'NSTRUCT'", "'LIST'", + "'MAP'", "'U!'", "'BOOL'", "'STR'", "'VBIN'", "'TS'", "'TSTZ'", + "'IYEAR'", "'IDAY'", "'DEC'", "'PT'", "'PTS'", "'PTSTZ'", "'FCHAR'", + "'VCHAR'", "'FBIN'", "'ANY'", "'::'", "'+'", "'-'", "'*'", "'/'", + "'%'", "'='", "'!='", "'>='", "'<='", "'>'", "'<'", "'!'", "'('", + "')'", "'['", "']'", "','", "':'", "'?'", "'#'", "'.'", "'AND'", + "'OR'", "':='", "'->'" ] symbolicNames = [ "", "LineComment", "BlockComment", "Whitespace", "If", "Then", "Else", - "Boolean", "I8", "I16", "I32", "I64", "FP32", "FP64", "String", - "Binary", "Timestamp", "Timestamp_TZ", "Date", "Time", "Interval_Year", - "Interval_Day", "UUID", "Decimal", "Precision_Time", "Precision_Timestamp", - "Precision_Timestamp_TZ", "FixedChar", "VarChar", "FixedBinary", - "Struct", "NStruct", "List", "Map", "UserDefined", "Bool", "Str", - "VBin", "Ts", "TsTZ", "IYear", "IDay", "Dec", "PT", "PTs", "PTsTZ", - "FChar", "VChar", "FBin", "Any", "AnyVar", "DoubleColon", "Plus", - "Minus", "Asterisk", "ForwardSlash", "Percent", "Eq", "Ne", - "Gte", "Lte", "Gt", "Lt", "Bang", "OAngleBracket", "CAngleBracket", - "OParen", "CParen", "OBracket", "CBracket", "Comma", "Colon", - "QMark", "Hash", "Dot", "And", "Or", "Assign", "Number", "Identifier", - "Newline" ] + "Func", "Boolean", "I8", "I16", "I32", "I64", "FP32", "FP64", + "String", "Binary", "Timestamp", "Timestamp_TZ", "Date", "Time", + "Interval_Year", "Interval_Day", "UUID", "Decimal", "Precision_Time", + "Precision_Timestamp", "Precision_Timestamp_TZ", "FixedChar", + "VarChar", "FixedBinary", "Struct", "NStruct", "List", "Map", + "UserDefined", "Bool", "Str", "VBin", "Ts", "TsTZ", "IYear", + "IDay", "Dec", "PT", "PTs", "PTsTZ", "FChar", "VChar", "FBin", + "Any", "AnyVar", "DoubleColon", "Plus", "Minus", "Asterisk", + "ForwardSlash", "Percent", "Eq", "Ne", "Gte", "Lte", "Gt", "Lt", + "Bang", "OAngleBracket", "CAngleBracket", "OParen", "CParen", + "OBracket", "CBracket", "Comma", "Colon", "QMark", "Hash", "Dot", + "And", "Or", "Assign", "Arrow", "Number", "Identifier", "Newline" ] ruleNames = [ "LineComment", "BlockComment", "Whitespace", "DIGIT", - "If", "Then", "Else", "Boolean", "I8", "I16", "I32", "I64", - "FP32", "FP64", "String", "Binary", "Timestamp", "Timestamp_TZ", - "Date", "Time", "Interval_Year", "Interval_Day", "UUID", - "Decimal", "Precision_Time", "Precision_Timestamp", "Precision_Timestamp_TZ", - "FixedChar", "VarChar", "FixedBinary", "Struct", "NStruct", - "List", "Map", "UserDefined", "Bool", "Str", "VBin", "Ts", - "TsTZ", "IYear", "IDay", "Dec", "PT", "PTs", "PTsTZ", - "FChar", "VChar", "FBin", "Any", "AnyVar", "DoubleColon", - "Plus", "Minus", "Asterisk", "ForwardSlash", "Percent", - "Eq", "Ne", "Gte", "Lte", "Gt", "Lt", "Bang", "OAngleBracket", - "CAngleBracket", "OParen", "CParen", "OBracket", "CBracket", - "Comma", "Colon", "QMark", "Hash", "Dot", "And", "Or", - "Assign", "Int", "Digit", "Number", "Identifier", "Newline" ] + "If", "Then", "Else", "Func", "Boolean", "I8", "I16", + "I32", "I64", "FP32", "FP64", "String", "Binary", "Timestamp", + "Timestamp_TZ", "Date", "Time", "Interval_Year", "Interval_Day", + "UUID", "Decimal", "Precision_Time", "Precision_Timestamp", + "Precision_Timestamp_TZ", "FixedChar", "VarChar", "FixedBinary", + "Struct", "NStruct", "List", "Map", "UserDefined", "Bool", + "Str", "VBin", "Ts", "TsTZ", "IYear", "IDay", "Dec", "PT", + "PTs", "PTsTZ", "FChar", "VChar", "FBin", "Any", "AnyVar", + "DoubleColon", "Plus", "Minus", "Asterisk", "ForwardSlash", + "Percent", "Eq", "Ne", "Gte", "Lte", "Gt", "Lt", "Bang", + "OAngleBracket", "CAngleBracket", "OParen", "CParen", + "OBracket", "CBracket", "Comma", "Colon", "QMark", "Hash", + "Dot", "And", "Or", "Assign", "Arrow", "Int", "Digit", + "Number", "Identifier", "Newline" ] grammarFileName = "SubstraitType.g4" diff --git a/src/substrait/gen/antlr/SubstraitTypeListener.py b/src/substrait/gen/antlr/SubstraitTypeListener.py index 734afe7..d70a3cb 100644 --- a/src/substrait/gen/antlr/SubstraitTypeListener.py +++ b/src/substrait/gen/antlr/SubstraitTypeListener.py @@ -269,6 +269,15 @@ def exitMap(self, ctx:SubstraitTypeParser.MapContext): pass + # Enter a parse tree produced by SubstraitTypeParser#func. + def enterFunc(self, ctx:SubstraitTypeParser.FuncContext): + pass + + # Exit a parse tree produced by SubstraitTypeParser#func. + def exitFunc(self, ctx:SubstraitTypeParser.FuncContext): + pass + + # Enter a parse tree produced by SubstraitTypeParser#userDefined. def enterUserDefined(self, ctx:SubstraitTypeParser.UserDefinedContext): pass @@ -278,6 +287,24 @@ def exitUserDefined(self, ctx:SubstraitTypeParser.UserDefinedContext): pass + # Enter a parse tree produced by SubstraitTypeParser#singleFuncParam. + def enterSingleFuncParam(self, ctx:SubstraitTypeParser.SingleFuncParamContext): + pass + + # Exit a parse tree produced by SubstraitTypeParser#singleFuncParam. + def exitSingleFuncParam(self, ctx:SubstraitTypeParser.SingleFuncParamContext): + pass + + + # Enter a parse tree produced by SubstraitTypeParser#funcParamsWithParens. + def enterFuncParamsWithParens(self, ctx:SubstraitTypeParser.FuncParamsWithParensContext): + pass + + # Exit a parse tree produced by SubstraitTypeParser#funcParamsWithParens. + def exitFuncParamsWithParens(self, ctx:SubstraitTypeParser.FuncParamsWithParensContext): + pass + + # Enter a parse tree produced by SubstraitTypeParser#numericLiteral. def enterNumericLiteral(self, ctx:SubstraitTypeParser.NumericLiteralContext): pass diff --git a/src/substrait/gen/antlr/SubstraitTypeParser.py b/src/substrait/gen/antlr/SubstraitTypeParser.py index 4a50a08..81a1825 100644 --- a/src/substrait/gen/antlr/SubstraitTypeParser.py +++ b/src/substrait/gen/antlr/SubstraitTypeParser.py @@ -10,110 +10,120 @@ def serializedATN(): return [ - 4,1,80,276,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, - 6,2,7,7,7,1,0,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,38,8,2,1,3,1,3,3,3,42,8,3,1,3, - 1,3,1,3,1,3,1,3,1,3,3,3,50,8,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,58,8, - 3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,66,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3, - 1,3,3,3,76,8,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,84,8,3,1,3,1,3,1,3,1, - 3,1,3,1,3,3,3,92,8,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,100,8,3,1,3,1,3, - 1,3,1,3,1,3,1,3,3,3,108,8,3,1,3,1,3,1,3,1,3,5,3,114,8,3,10,3,12, - 3,117,9,3,1,3,1,3,1,3,1,3,3,3,123,8,3,1,3,1,3,1,3,1,3,1,3,1,3,5, - 3,131,8,3,10,3,12,3,134,9,3,1,3,1,3,1,3,1,3,3,3,140,8,3,1,3,1,3, - 1,3,1,3,1,3,1,3,3,3,148,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3, - 3,3,159,8,3,1,3,1,3,1,3,1,3,5,3,165,8,3,10,3,12,3,168,9,3,1,3,1, - 3,3,3,172,8,3,3,3,174,8,3,1,4,1,4,1,4,3,4,179,8,4,1,5,1,5,3,5,183, - 8,5,1,5,1,5,3,5,187,8,5,3,5,189,8,5,1,6,1,6,3,6,193,8,6,1,6,1,6, - 3,6,197,8,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,4,7,208,8,7,11,7, - 12,7,209,1,7,1,7,1,7,1,7,4,7,216,8,7,11,7,12,7,217,5,7,220,8,7,10, - 7,12,7,223,9,7,1,7,1,7,5,7,227,8,7,10,7,12,7,230,9,7,1,7,1,7,1,7, - 1,7,3,7,236,8,7,1,7,1,7,1,7,1,7,1,7,5,7,243,8,7,10,7,12,7,246,9, - 7,3,7,248,8,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,260,8, - 7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,5,7,271,8,7,10,7,12,7,274, - 9,7,1,7,0,1,14,8,0,2,4,6,8,10,12,14,0,1,3,0,52,55,57,62,75,76,334, - 0,16,1,0,0,0,2,19,1,0,0,0,4,37,1,0,0,0,6,173,1,0,0,0,8,178,1,0,0, - 0,10,188,1,0,0,0,12,196,1,0,0,0,14,259,1,0,0,0,16,17,3,14,7,0,17, - 18,5,0,0,1,18,1,1,0,0,0,19,20,3,12,6,0,20,21,5,0,0,1,21,3,1,0,0, - 0,22,38,5,7,0,0,23,38,5,8,0,0,24,38,5,9,0,0,25,38,5,10,0,0,26,38, - 5,11,0,0,27,38,5,12,0,0,28,38,5,13,0,0,29,38,5,14,0,0,30,38,5,15, - 0,0,31,38,5,16,0,0,32,38,5,17,0,0,33,38,5,18,0,0,34,38,5,19,0,0, - 35,38,5,20,0,0,36,38,5,22,0,0,37,22,1,0,0,0,37,23,1,0,0,0,37,24, - 1,0,0,0,37,25,1,0,0,0,37,26,1,0,0,0,37,27,1,0,0,0,37,28,1,0,0,0, - 37,29,1,0,0,0,37,30,1,0,0,0,37,31,1,0,0,0,37,32,1,0,0,0,37,33,1, - 0,0,0,37,34,1,0,0,0,37,35,1,0,0,0,37,36,1,0,0,0,38,5,1,0,0,0,39, - 41,5,27,0,0,40,42,5,72,0,0,41,40,1,0,0,0,41,42,1,0,0,0,42,43,1,0, - 0,0,43,44,5,62,0,0,44,45,3,8,4,0,45,46,5,61,0,0,46,174,1,0,0,0,47, - 49,5,28,0,0,48,50,5,72,0,0,49,48,1,0,0,0,49,50,1,0,0,0,50,51,1,0, - 0,0,51,52,5,62,0,0,52,53,3,8,4,0,53,54,5,61,0,0,54,174,1,0,0,0,55, - 57,5,29,0,0,56,58,5,72,0,0,57,56,1,0,0,0,57,58,1,0,0,0,58,59,1,0, - 0,0,59,60,5,62,0,0,60,61,3,8,4,0,61,62,5,61,0,0,62,174,1,0,0,0,63, - 65,5,23,0,0,64,66,5,72,0,0,65,64,1,0,0,0,65,66,1,0,0,0,66,67,1,0, - 0,0,67,68,5,62,0,0,68,69,3,8,4,0,69,70,5,70,0,0,70,71,3,8,4,0,71, - 72,5,61,0,0,72,174,1,0,0,0,73,75,5,21,0,0,74,76,5,72,0,0,75,74,1, - 0,0,0,75,76,1,0,0,0,76,77,1,0,0,0,77,78,5,62,0,0,78,79,3,8,4,0,79, - 80,5,61,0,0,80,174,1,0,0,0,81,83,5,24,0,0,82,84,5,72,0,0,83,82,1, - 0,0,0,83,84,1,0,0,0,84,85,1,0,0,0,85,86,5,62,0,0,86,87,3,8,4,0,87, - 88,5,61,0,0,88,174,1,0,0,0,89,91,5,25,0,0,90,92,5,72,0,0,91,90,1, - 0,0,0,91,92,1,0,0,0,92,93,1,0,0,0,93,94,5,62,0,0,94,95,3,8,4,0,95, - 96,5,61,0,0,96,174,1,0,0,0,97,99,5,26,0,0,98,100,5,72,0,0,99,98, - 1,0,0,0,99,100,1,0,0,0,100,101,1,0,0,0,101,102,5,62,0,0,102,103, - 3,8,4,0,103,104,5,61,0,0,104,174,1,0,0,0,105,107,5,30,0,0,106,108, - 5,72,0,0,107,106,1,0,0,0,107,108,1,0,0,0,108,109,1,0,0,0,109,110, - 5,62,0,0,110,115,3,14,7,0,111,112,5,70,0,0,112,114,3,14,7,0,113, - 111,1,0,0,0,114,117,1,0,0,0,115,113,1,0,0,0,115,116,1,0,0,0,116, - 118,1,0,0,0,117,115,1,0,0,0,118,119,5,61,0,0,119,174,1,0,0,0,120, - 122,5,31,0,0,121,123,5,72,0,0,122,121,1,0,0,0,122,123,1,0,0,0,123, - 124,1,0,0,0,124,125,5,62,0,0,125,126,5,79,0,0,126,132,3,14,7,0,127, - 128,5,70,0,0,128,129,5,79,0,0,129,131,3,14,7,0,130,127,1,0,0,0,131, - 134,1,0,0,0,132,130,1,0,0,0,132,133,1,0,0,0,133,135,1,0,0,0,134, - 132,1,0,0,0,135,136,5,61,0,0,136,174,1,0,0,0,137,139,5,32,0,0,138, - 140,5,72,0,0,139,138,1,0,0,0,139,140,1,0,0,0,140,141,1,0,0,0,141, - 142,5,62,0,0,142,143,3,14,7,0,143,144,5,61,0,0,144,174,1,0,0,0,145, - 147,5,33,0,0,146,148,5,72,0,0,147,146,1,0,0,0,147,148,1,0,0,0,148, - 149,1,0,0,0,149,150,5,62,0,0,150,151,3,14,7,0,151,152,5,70,0,0,152, - 153,3,14,7,0,153,154,5,61,0,0,154,174,1,0,0,0,155,156,5,34,0,0,156, - 158,5,79,0,0,157,159,5,72,0,0,158,157,1,0,0,0,158,159,1,0,0,0,159, - 171,1,0,0,0,160,161,5,62,0,0,161,166,3,14,7,0,162,163,5,70,0,0,163, - 165,3,14,7,0,164,162,1,0,0,0,165,168,1,0,0,0,166,164,1,0,0,0,166, - 167,1,0,0,0,167,169,1,0,0,0,168,166,1,0,0,0,169,170,5,61,0,0,170, - 172,1,0,0,0,171,160,1,0,0,0,171,172,1,0,0,0,172,174,1,0,0,0,173, - 39,1,0,0,0,173,47,1,0,0,0,173,55,1,0,0,0,173,63,1,0,0,0,173,73,1, - 0,0,0,173,81,1,0,0,0,173,89,1,0,0,0,173,97,1,0,0,0,173,105,1,0,0, - 0,173,120,1,0,0,0,173,137,1,0,0,0,173,145,1,0,0,0,173,155,1,0,0, - 0,174,7,1,0,0,0,175,179,5,78,0,0,176,179,5,79,0,0,177,179,3,14,7, - 0,178,175,1,0,0,0,178,176,1,0,0,0,178,177,1,0,0,0,179,9,1,0,0,0, - 180,182,5,49,0,0,181,183,5,72,0,0,182,181,1,0,0,0,182,183,1,0,0, - 0,183,189,1,0,0,0,184,186,5,50,0,0,185,187,5,72,0,0,186,185,1,0, - 0,0,186,187,1,0,0,0,187,189,1,0,0,0,188,180,1,0,0,0,188,184,1,0, - 0,0,189,11,1,0,0,0,190,192,3,4,2,0,191,193,5,72,0,0,192,191,1,0, - 0,0,192,193,1,0,0,0,193,197,1,0,0,0,194,197,3,6,3,0,195,197,3,10, - 5,0,196,190,1,0,0,0,196,194,1,0,0,0,196,195,1,0,0,0,197,13,1,0,0, - 0,198,199,6,7,-1,0,199,200,5,66,0,0,200,201,3,14,7,0,201,202,5,67, - 0,0,202,260,1,0,0,0,203,204,5,79,0,0,204,205,5,57,0,0,205,207,3, - 14,7,0,206,208,5,80,0,0,207,206,1,0,0,0,208,209,1,0,0,0,209,207, - 1,0,0,0,209,210,1,0,0,0,210,221,1,0,0,0,211,212,5,79,0,0,212,213, - 5,57,0,0,213,215,3,14,7,0,214,216,5,80,0,0,215,214,1,0,0,0,216,217, - 1,0,0,0,217,215,1,0,0,0,217,218,1,0,0,0,218,220,1,0,0,0,219,211, - 1,0,0,0,220,223,1,0,0,0,221,219,1,0,0,0,221,222,1,0,0,0,222,224, - 1,0,0,0,223,221,1,0,0,0,224,228,3,12,6,0,225,227,5,80,0,0,226,225, - 1,0,0,0,227,230,1,0,0,0,228,226,1,0,0,0,228,229,1,0,0,0,229,260, - 1,0,0,0,230,228,1,0,0,0,231,260,3,12,6,0,232,260,5,78,0,0,233,235, - 5,79,0,0,234,236,5,72,0,0,235,234,1,0,0,0,235,236,1,0,0,0,236,260, - 1,0,0,0,237,238,5,79,0,0,238,247,5,66,0,0,239,244,3,14,7,0,240,241, - 5,70,0,0,241,243,3,14,7,0,242,240,1,0,0,0,243,246,1,0,0,0,244,242, - 1,0,0,0,244,245,1,0,0,0,245,248,1,0,0,0,246,244,1,0,0,0,247,239, - 1,0,0,0,247,248,1,0,0,0,248,249,1,0,0,0,249,260,5,67,0,0,250,251, - 5,4,0,0,251,252,3,14,7,0,252,253,5,5,0,0,253,254,3,14,7,0,254,255, - 5,6,0,0,255,256,3,14,7,3,256,260,1,0,0,0,257,258,5,63,0,0,258,260, - 3,14,7,2,259,198,1,0,0,0,259,203,1,0,0,0,259,231,1,0,0,0,259,232, - 1,0,0,0,259,233,1,0,0,0,259,237,1,0,0,0,259,250,1,0,0,0,259,257, - 1,0,0,0,260,272,1,0,0,0,261,262,10,4,0,0,262,263,7,0,0,0,263,271, - 3,14,7,5,264,265,10,1,0,0,265,266,5,72,0,0,266,267,3,14,7,0,267, - 268,5,71,0,0,268,269,3,14,7,2,269,271,1,0,0,0,270,261,1,0,0,0,270, - 264,1,0,0,0,271,274,1,0,0,0,272,270,1,0,0,0,272,273,1,0,0,0,273, - 15,1,0,0,0,274,272,1,0,0,0,35,37,41,49,57,65,75,83,91,99,107,115, - 122,132,139,147,158,166,171,173,178,182,186,188,192,196,209,217, - 221,228,235,244,247,259,270,272 + 4,1,82,302,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 6,2,7,7,7,2,8,7,8,1,0,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,40,8,2,1,3,1,3,3,3,44, + 8,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,52,8,3,1,3,1,3,1,3,1,3,1,3,1,3,3, + 3,60,8,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,68,8,3,1,3,1,3,1,3,1,3,1,3, + 1,3,1,3,1,3,3,3,78,8,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,86,8,3,1,3,1, + 3,1,3,1,3,1,3,1,3,3,3,94,8,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,102,8,3, + 1,3,1,3,1,3,1,3,1,3,1,3,3,3,110,8,3,1,3,1,3,1,3,1,3,5,3,116,8,3, + 10,3,12,3,119,9,3,1,3,1,3,1,3,1,3,3,3,125,8,3,1,3,1,3,1,3,1,3,1, + 3,1,3,5,3,133,8,3,10,3,12,3,136,9,3,1,3,1,3,1,3,1,3,3,3,142,8,3, + 1,3,1,3,1,3,1,3,1,3,1,3,3,3,150,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3, + 1,3,3,3,160,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,171,8,3, + 1,3,1,3,1,3,1,3,5,3,177,8,3,10,3,12,3,180,9,3,1,3,1,3,3,3,184,8, + 3,3,3,186,8,3,1,4,1,4,1,4,1,4,1,4,5,4,193,8,4,10,4,12,4,196,9,4, + 1,4,1,4,3,4,200,8,4,1,5,1,5,1,5,3,5,205,8,5,1,6,1,6,3,6,209,8,6, + 1,6,1,6,3,6,213,8,6,3,6,215,8,6,1,7,1,7,3,7,219,8,7,1,7,1,7,3,7, + 223,8,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,4,8,234,8,8,11,8,12, + 8,235,1,8,1,8,1,8,1,8,4,8,242,8,8,11,8,12,8,243,5,8,246,8,8,10,8, + 12,8,249,9,8,1,8,1,8,5,8,253,8,8,10,8,12,8,256,9,8,1,8,1,8,1,8,1, + 8,3,8,262,8,8,1,8,1,8,1,8,1,8,1,8,5,8,269,8,8,10,8,12,8,272,9,8, + 3,8,274,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,286,8,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,297,8,8,10,8,12,8,300,9, + 8,1,8,0,1,16,9,0,2,4,6,8,10,12,14,16,0,1,3,0,53,56,58,63,76,77,363, + 0,18,1,0,0,0,2,21,1,0,0,0,4,39,1,0,0,0,6,185,1,0,0,0,8,199,1,0,0, + 0,10,204,1,0,0,0,12,214,1,0,0,0,14,222,1,0,0,0,16,285,1,0,0,0,18, + 19,3,16,8,0,19,20,5,0,0,1,20,1,1,0,0,0,21,22,3,14,7,0,22,23,5,0, + 0,1,23,3,1,0,0,0,24,40,5,8,0,0,25,40,5,9,0,0,26,40,5,10,0,0,27,40, + 5,11,0,0,28,40,5,12,0,0,29,40,5,13,0,0,30,40,5,14,0,0,31,40,5,15, + 0,0,32,40,5,16,0,0,33,40,5,17,0,0,34,40,5,18,0,0,35,40,5,19,0,0, + 36,40,5,20,0,0,37,40,5,21,0,0,38,40,5,23,0,0,39,24,1,0,0,0,39,25, + 1,0,0,0,39,26,1,0,0,0,39,27,1,0,0,0,39,28,1,0,0,0,39,29,1,0,0,0, + 39,30,1,0,0,0,39,31,1,0,0,0,39,32,1,0,0,0,39,33,1,0,0,0,39,34,1, + 0,0,0,39,35,1,0,0,0,39,36,1,0,0,0,39,37,1,0,0,0,39,38,1,0,0,0,40, + 5,1,0,0,0,41,43,5,28,0,0,42,44,5,73,0,0,43,42,1,0,0,0,43,44,1,0, + 0,0,44,45,1,0,0,0,45,46,5,63,0,0,46,47,3,10,5,0,47,48,5,62,0,0,48, + 186,1,0,0,0,49,51,5,29,0,0,50,52,5,73,0,0,51,50,1,0,0,0,51,52,1, + 0,0,0,52,53,1,0,0,0,53,54,5,63,0,0,54,55,3,10,5,0,55,56,5,62,0,0, + 56,186,1,0,0,0,57,59,5,30,0,0,58,60,5,73,0,0,59,58,1,0,0,0,59,60, + 1,0,0,0,60,61,1,0,0,0,61,62,5,63,0,0,62,63,3,10,5,0,63,64,5,62,0, + 0,64,186,1,0,0,0,65,67,5,24,0,0,66,68,5,73,0,0,67,66,1,0,0,0,67, + 68,1,0,0,0,68,69,1,0,0,0,69,70,5,63,0,0,70,71,3,10,5,0,71,72,5,71, + 0,0,72,73,3,10,5,0,73,74,5,62,0,0,74,186,1,0,0,0,75,77,5,22,0,0, + 76,78,5,73,0,0,77,76,1,0,0,0,77,78,1,0,0,0,78,79,1,0,0,0,79,80,5, + 63,0,0,80,81,3,10,5,0,81,82,5,62,0,0,82,186,1,0,0,0,83,85,5,25,0, + 0,84,86,5,73,0,0,85,84,1,0,0,0,85,86,1,0,0,0,86,87,1,0,0,0,87,88, + 5,63,0,0,88,89,3,10,5,0,89,90,5,62,0,0,90,186,1,0,0,0,91,93,5,26, + 0,0,92,94,5,73,0,0,93,92,1,0,0,0,93,94,1,0,0,0,94,95,1,0,0,0,95, + 96,5,63,0,0,96,97,3,10,5,0,97,98,5,62,0,0,98,186,1,0,0,0,99,101, + 5,27,0,0,100,102,5,73,0,0,101,100,1,0,0,0,101,102,1,0,0,0,102,103, + 1,0,0,0,103,104,5,63,0,0,104,105,3,10,5,0,105,106,5,62,0,0,106,186, + 1,0,0,0,107,109,5,31,0,0,108,110,5,73,0,0,109,108,1,0,0,0,109,110, + 1,0,0,0,110,111,1,0,0,0,111,112,5,63,0,0,112,117,3,16,8,0,113,114, + 5,71,0,0,114,116,3,16,8,0,115,113,1,0,0,0,116,119,1,0,0,0,117,115, + 1,0,0,0,117,118,1,0,0,0,118,120,1,0,0,0,119,117,1,0,0,0,120,121, + 5,62,0,0,121,186,1,0,0,0,122,124,5,32,0,0,123,125,5,73,0,0,124,123, + 1,0,0,0,124,125,1,0,0,0,125,126,1,0,0,0,126,127,5,63,0,0,127,128, + 5,81,0,0,128,134,3,16,8,0,129,130,5,71,0,0,130,131,5,81,0,0,131, + 133,3,16,8,0,132,129,1,0,0,0,133,136,1,0,0,0,134,132,1,0,0,0,134, + 135,1,0,0,0,135,137,1,0,0,0,136,134,1,0,0,0,137,138,5,62,0,0,138, + 186,1,0,0,0,139,141,5,33,0,0,140,142,5,73,0,0,141,140,1,0,0,0,141, + 142,1,0,0,0,142,143,1,0,0,0,143,144,5,63,0,0,144,145,3,16,8,0,145, + 146,5,62,0,0,146,186,1,0,0,0,147,149,5,34,0,0,148,150,5,73,0,0,149, + 148,1,0,0,0,149,150,1,0,0,0,150,151,1,0,0,0,151,152,5,63,0,0,152, + 153,3,16,8,0,153,154,5,71,0,0,154,155,3,16,8,0,155,156,5,62,0,0, + 156,186,1,0,0,0,157,159,5,7,0,0,158,160,5,73,0,0,159,158,1,0,0,0, + 159,160,1,0,0,0,160,161,1,0,0,0,161,162,5,63,0,0,162,163,3,8,4,0, + 163,164,5,79,0,0,164,165,3,16,8,0,165,166,5,62,0,0,166,186,1,0,0, + 0,167,168,5,35,0,0,168,170,5,81,0,0,169,171,5,73,0,0,170,169,1,0, + 0,0,170,171,1,0,0,0,171,183,1,0,0,0,172,173,5,63,0,0,173,178,3,16, + 8,0,174,175,5,71,0,0,175,177,3,16,8,0,176,174,1,0,0,0,177,180,1, + 0,0,0,178,176,1,0,0,0,178,179,1,0,0,0,179,181,1,0,0,0,180,178,1, + 0,0,0,181,182,5,62,0,0,182,184,1,0,0,0,183,172,1,0,0,0,183,184,1, + 0,0,0,184,186,1,0,0,0,185,41,1,0,0,0,185,49,1,0,0,0,185,57,1,0,0, + 0,185,65,1,0,0,0,185,75,1,0,0,0,185,83,1,0,0,0,185,91,1,0,0,0,185, + 99,1,0,0,0,185,107,1,0,0,0,185,122,1,0,0,0,185,139,1,0,0,0,185,147, + 1,0,0,0,185,157,1,0,0,0,185,167,1,0,0,0,186,7,1,0,0,0,187,200,3, + 16,8,0,188,189,5,67,0,0,189,194,3,16,8,0,190,191,5,71,0,0,191,193, + 3,16,8,0,192,190,1,0,0,0,193,196,1,0,0,0,194,192,1,0,0,0,194,195, + 1,0,0,0,195,197,1,0,0,0,196,194,1,0,0,0,197,198,5,68,0,0,198,200, + 1,0,0,0,199,187,1,0,0,0,199,188,1,0,0,0,200,9,1,0,0,0,201,205,5, + 80,0,0,202,205,5,81,0,0,203,205,3,16,8,0,204,201,1,0,0,0,204,202, + 1,0,0,0,204,203,1,0,0,0,205,11,1,0,0,0,206,208,5,50,0,0,207,209, + 5,73,0,0,208,207,1,0,0,0,208,209,1,0,0,0,209,215,1,0,0,0,210,212, + 5,51,0,0,211,213,5,73,0,0,212,211,1,0,0,0,212,213,1,0,0,0,213,215, + 1,0,0,0,214,206,1,0,0,0,214,210,1,0,0,0,215,13,1,0,0,0,216,218,3, + 4,2,0,217,219,5,73,0,0,218,217,1,0,0,0,218,219,1,0,0,0,219,223,1, + 0,0,0,220,223,3,6,3,0,221,223,3,12,6,0,222,216,1,0,0,0,222,220,1, + 0,0,0,222,221,1,0,0,0,223,15,1,0,0,0,224,225,6,8,-1,0,225,226,5, + 67,0,0,226,227,3,16,8,0,227,228,5,68,0,0,228,286,1,0,0,0,229,230, + 5,81,0,0,230,231,5,58,0,0,231,233,3,16,8,0,232,234,5,82,0,0,233, + 232,1,0,0,0,234,235,1,0,0,0,235,233,1,0,0,0,235,236,1,0,0,0,236, + 247,1,0,0,0,237,238,5,81,0,0,238,239,5,58,0,0,239,241,3,16,8,0,240, + 242,5,82,0,0,241,240,1,0,0,0,242,243,1,0,0,0,243,241,1,0,0,0,243, + 244,1,0,0,0,244,246,1,0,0,0,245,237,1,0,0,0,246,249,1,0,0,0,247, + 245,1,0,0,0,247,248,1,0,0,0,248,250,1,0,0,0,249,247,1,0,0,0,250, + 254,3,14,7,0,251,253,5,82,0,0,252,251,1,0,0,0,253,256,1,0,0,0,254, + 252,1,0,0,0,254,255,1,0,0,0,255,286,1,0,0,0,256,254,1,0,0,0,257, + 286,3,14,7,0,258,286,5,80,0,0,259,261,5,81,0,0,260,262,5,73,0,0, + 261,260,1,0,0,0,261,262,1,0,0,0,262,286,1,0,0,0,263,264,5,81,0,0, + 264,273,5,67,0,0,265,270,3,16,8,0,266,267,5,71,0,0,267,269,3,16, + 8,0,268,266,1,0,0,0,269,272,1,0,0,0,270,268,1,0,0,0,270,271,1,0, + 0,0,271,274,1,0,0,0,272,270,1,0,0,0,273,265,1,0,0,0,273,274,1,0, + 0,0,274,275,1,0,0,0,275,286,5,68,0,0,276,277,5,4,0,0,277,278,3,16, + 8,0,278,279,5,5,0,0,279,280,3,16,8,0,280,281,5,6,0,0,281,282,3,16, + 8,3,282,286,1,0,0,0,283,284,5,64,0,0,284,286,3,16,8,2,285,224,1, + 0,0,0,285,229,1,0,0,0,285,257,1,0,0,0,285,258,1,0,0,0,285,259,1, + 0,0,0,285,263,1,0,0,0,285,276,1,0,0,0,285,283,1,0,0,0,286,298,1, + 0,0,0,287,288,10,4,0,0,288,289,7,0,0,0,289,297,3,16,8,5,290,291, + 10,1,0,0,291,292,5,73,0,0,292,293,3,16,8,0,293,294,5,72,0,0,294, + 295,3,16,8,2,295,297,1,0,0,0,296,287,1,0,0,0,296,290,1,0,0,0,297, + 300,1,0,0,0,298,296,1,0,0,0,298,299,1,0,0,0,299,17,1,0,0,0,300,298, + 1,0,0,0,38,39,43,51,59,67,77,85,93,101,109,117,124,134,141,149,159, + 170,178,183,185,194,199,204,208,212,214,218,222,235,243,247,254, + 261,270,273,285,296,298 ] class SubstraitTypeParser ( Parser ): @@ -127,48 +137,51 @@ class SubstraitTypeParser ( Parser ): sharedContextCache = PredictionContextCache() literalNames = [ "", "", "", "", - "'IF'", "'THEN'", "'ELSE'", "'BOOLEAN'", "'I8'", "'I16'", - "'I32'", "'I64'", "'FP32'", "'FP64'", "'STRING'", "'BINARY'", - "'TIMESTAMP'", "'TIMESTAMP_TZ'", "'DATE'", "'TIME'", - "'INTERVAL_YEAR'", "'INTERVAL_DAY'", "'UUID'", "'DECIMAL'", - "'PRECISION_TIME'", "'PRECISION_TIMESTAMP'", "'PRECISION_TIMESTAMP_TZ'", - "'FIXEDCHAR'", "'VARCHAR'", "'FIXEDBINARY'", "'STRUCT'", - "'NSTRUCT'", "'LIST'", "'MAP'", "'U!'", "'BOOL'", "'STR'", - "'VBIN'", "'TS'", "'TSTZ'", "'IYEAR'", "'IDAY'", "'DEC'", - "'PT'", "'PTS'", "'PTSTZ'", "'FCHAR'", "'VCHAR'", "'FBIN'", - "'ANY'", "", "'::'", "'+'", "'-'", "'*'", - "'/'", "'%'", "'='", "'!='", "'>='", "'<='", "'>'", - "'<'", "'!'", "", "", "'('", "')'", - "'['", "']'", "','", "':'", "'?'", "'#'", "'.'", "'AND'", - "'OR'", "':='" ] + "'IF'", "'THEN'", "'ELSE'", "'FUNC'", "'BOOLEAN'", + "'I8'", "'I16'", "'I32'", "'I64'", "'FP32'", "'FP64'", + "'STRING'", "'BINARY'", "'TIMESTAMP'", "'TIMESTAMP_TZ'", + "'DATE'", "'TIME'", "'INTERVAL_YEAR'", "'INTERVAL_DAY'", + "'UUID'", "'DECIMAL'", "'PRECISION_TIME'", "'PRECISION_TIMESTAMP'", + "'PRECISION_TIMESTAMP_TZ'", "'FIXEDCHAR'", "'VARCHAR'", + "'FIXEDBINARY'", "'STRUCT'", "'NSTRUCT'", "'LIST'", + "'MAP'", "'U!'", "'BOOL'", "'STR'", "'VBIN'", "'TS'", + "'TSTZ'", "'IYEAR'", "'IDAY'", "'DEC'", "'PT'", "'PTS'", + "'PTSTZ'", "'FCHAR'", "'VCHAR'", "'FBIN'", "'ANY'", + "", "'::'", "'+'", "'-'", "'*'", "'/'", "'%'", + "'='", "'!='", "'>='", "'<='", "'>'", "'<'", "'!'", + "", "", "'('", "')'", "'['", "']'", + "','", "':'", "'?'", "'#'", "'.'", "'AND'", "'OR'", + "':='", "'->'" ] symbolicNames = [ "", "LineComment", "BlockComment", "Whitespace", - "If", "Then", "Else", "Boolean", "I8", "I16", "I32", - "I64", "FP32", "FP64", "String", "Binary", "Timestamp", - "Timestamp_TZ", "Date", "Time", "Interval_Year", "Interval_Day", - "UUID", "Decimal", "Precision_Time", "Precision_Timestamp", - "Precision_Timestamp_TZ", "FixedChar", "VarChar", - "FixedBinary", "Struct", "NStruct", "List", "Map", - "UserDefined", "Bool", "Str", "VBin", "Ts", "TsTZ", - "IYear", "IDay", "Dec", "PT", "PTs", "PTsTZ", "FChar", - "VChar", "FBin", "Any", "AnyVar", "DoubleColon", "Plus", - "Minus", "Asterisk", "ForwardSlash", "Percent", "Eq", - "Ne", "Gte", "Lte", "Gt", "Lt", "Bang", "OAngleBracket", + "If", "Then", "Else", "Func", "Boolean", "I8", "I16", + "I32", "I64", "FP32", "FP64", "String", "Binary", + "Timestamp", "Timestamp_TZ", "Date", "Time", "Interval_Year", + "Interval_Day", "UUID", "Decimal", "Precision_Time", + "Precision_Timestamp", "Precision_Timestamp_TZ", "FixedChar", + "VarChar", "FixedBinary", "Struct", "NStruct", "List", + "Map", "UserDefined", "Bool", "Str", "VBin", "Ts", + "TsTZ", "IYear", "IDay", "Dec", "PT", "PTs", "PTsTZ", + "FChar", "VChar", "FBin", "Any", "AnyVar", "DoubleColon", + "Plus", "Minus", "Asterisk", "ForwardSlash", "Percent", + "Eq", "Ne", "Gte", "Lte", "Gt", "Lt", "Bang", "OAngleBracket", "CAngleBracket", "OParen", "CParen", "OBracket", "CBracket", "Comma", "Colon", "QMark", "Hash", "Dot", "And", "Or", - "Assign", "Number", "Identifier", "Newline" ] + "Assign", "Arrow", "Number", "Identifier", "Newline" ] RULE_startRule = 0 RULE_typeStatement = 1 RULE_scalarType = 2 RULE_parameterizedType = 3 - RULE_numericParameter = 4 - RULE_anyType = 5 - RULE_typeDef = 6 - RULE_expr = 7 + RULE_funcParams = 4 + RULE_numericParameter = 5 + RULE_anyType = 6 + RULE_typeDef = 7 + RULE_expr = 8 ruleNames = [ "startRule", "typeStatement", "scalarType", "parameterizedType", - "numericParameter", "anyType", "typeDef", "expr" ] + "funcParams", "numericParameter", "anyType", "typeDef", + "expr" ] EOF = Token.EOF LineComment=1 @@ -177,80 +190,82 @@ class SubstraitTypeParser ( Parser ): If=4 Then=5 Else=6 - Boolean=7 - I8=8 - I16=9 - I32=10 - I64=11 - FP32=12 - FP64=13 - String=14 - Binary=15 - Timestamp=16 - Timestamp_TZ=17 - Date=18 - Time=19 - Interval_Year=20 - Interval_Day=21 - UUID=22 - Decimal=23 - Precision_Time=24 - Precision_Timestamp=25 - Precision_Timestamp_TZ=26 - FixedChar=27 - VarChar=28 - FixedBinary=29 - Struct=30 - NStruct=31 - List=32 - Map=33 - UserDefined=34 - Bool=35 - Str=36 - VBin=37 - Ts=38 - TsTZ=39 - IYear=40 - IDay=41 - Dec=42 - PT=43 - PTs=44 - PTsTZ=45 - FChar=46 - VChar=47 - FBin=48 - Any=49 - AnyVar=50 - DoubleColon=51 - Plus=52 - Minus=53 - Asterisk=54 - ForwardSlash=55 - Percent=56 - Eq=57 - Ne=58 - Gte=59 - Lte=60 - Gt=61 - Lt=62 - Bang=63 - OAngleBracket=64 - CAngleBracket=65 - OParen=66 - CParen=67 - OBracket=68 - CBracket=69 - Comma=70 - Colon=71 - QMark=72 - Hash=73 - Dot=74 - And=75 - Or=76 - Assign=77 - Number=78 - Identifier=79 - Newline=80 + Func=7 + Boolean=8 + I8=9 + I16=10 + I32=11 + I64=12 + FP32=13 + FP64=14 + String=15 + Binary=16 + Timestamp=17 + Timestamp_TZ=18 + Date=19 + Time=20 + Interval_Year=21 + Interval_Day=22 + UUID=23 + Decimal=24 + Precision_Time=25 + Precision_Timestamp=26 + Precision_Timestamp_TZ=27 + FixedChar=28 + VarChar=29 + FixedBinary=30 + Struct=31 + NStruct=32 + List=33 + Map=34 + UserDefined=35 + Bool=36 + Str=37 + VBin=38 + Ts=39 + TsTZ=40 + IYear=41 + IDay=42 + Dec=43 + PT=44 + PTs=45 + PTsTZ=46 + FChar=47 + VChar=48 + FBin=49 + Any=50 + AnyVar=51 + DoubleColon=52 + Plus=53 + Minus=54 + Asterisk=55 + ForwardSlash=56 + Percent=57 + Eq=58 + Ne=59 + Gte=60 + Lte=61 + Gt=62 + Lt=63 + Bang=64 + OAngleBracket=65 + CAngleBracket=66 + OParen=67 + CParen=68 + OBracket=69 + CBracket=70 + Comma=71 + Colon=72 + QMark=73 + Hash=74 + Dot=75 + And=76 + Or=77 + Assign=78 + Arrow=79 + Number=80 + Identifier=81 + Newline=82 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) @@ -295,9 +310,9 @@ def startRule(self): self.enterRule(localctx, 0, self.RULE_startRule) try: self.enterOuterAlt(localctx, 1) - self.state = 16 + self.state = 18 self.expr(0) - self.state = 17 + self.state = 19 self.match(SubstraitTypeParser.EOF) except RecognitionException as re: localctx.exception = re @@ -342,9 +357,9 @@ def typeStatement(self): self.enterRule(localctx, 2, self.RULE_typeStatement) try: self.enterOuterAlt(localctx, 1) - self.state = 19 + self.state = 21 self.typeDef() - self.state = 20 + self.state = 22 self.match(SubstraitTypeParser.EOF) except RecognitionException as re: localctx.exception = re @@ -648,97 +663,97 @@ def scalarType(self): localctx = SubstraitTypeParser.ScalarTypeContext(self, self._ctx, self.state) self.enterRule(localctx, 4, self.RULE_scalarType) try: - self.state = 37 + self.state = 39 self._errHandler.sync(self) token = self._input.LA(1) - if token in [7]: + if token in [8]: localctx = SubstraitTypeParser.BooleanContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 22 + self.state = 24 self.match(SubstraitTypeParser.Boolean) pass - elif token in [8]: + elif token in [9]: localctx = SubstraitTypeParser.I8Context(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 23 + self.state = 25 self.match(SubstraitTypeParser.I8) pass - elif token in [9]: + elif token in [10]: localctx = SubstraitTypeParser.I16Context(self, localctx) self.enterOuterAlt(localctx, 3) - self.state = 24 + self.state = 26 self.match(SubstraitTypeParser.I16) pass - elif token in [10]: + elif token in [11]: localctx = SubstraitTypeParser.I32Context(self, localctx) self.enterOuterAlt(localctx, 4) - self.state = 25 + self.state = 27 self.match(SubstraitTypeParser.I32) pass - elif token in [11]: + elif token in [12]: localctx = SubstraitTypeParser.I64Context(self, localctx) self.enterOuterAlt(localctx, 5) - self.state = 26 + self.state = 28 self.match(SubstraitTypeParser.I64) pass - elif token in [12]: + elif token in [13]: localctx = SubstraitTypeParser.Fp32Context(self, localctx) self.enterOuterAlt(localctx, 6) - self.state = 27 + self.state = 29 self.match(SubstraitTypeParser.FP32) pass - elif token in [13]: + elif token in [14]: localctx = SubstraitTypeParser.Fp64Context(self, localctx) self.enterOuterAlt(localctx, 7) - self.state = 28 + self.state = 30 self.match(SubstraitTypeParser.FP64) pass - elif token in [14]: + elif token in [15]: localctx = SubstraitTypeParser.StringContext(self, localctx) self.enterOuterAlt(localctx, 8) - self.state = 29 + self.state = 31 self.match(SubstraitTypeParser.String) pass - elif token in [15]: + elif token in [16]: localctx = SubstraitTypeParser.BinaryContext(self, localctx) self.enterOuterAlt(localctx, 9) - self.state = 30 + self.state = 32 self.match(SubstraitTypeParser.Binary) pass - elif token in [16]: + elif token in [17]: localctx = SubstraitTypeParser.TimestampContext(self, localctx) self.enterOuterAlt(localctx, 10) - self.state = 31 + self.state = 33 self.match(SubstraitTypeParser.Timestamp) pass - elif token in [17]: + elif token in [18]: localctx = SubstraitTypeParser.TimestampTzContext(self, localctx) self.enterOuterAlt(localctx, 11) - self.state = 32 + self.state = 34 self.match(SubstraitTypeParser.Timestamp_TZ) pass - elif token in [18]: + elif token in [19]: localctx = SubstraitTypeParser.DateContext(self, localctx) self.enterOuterAlt(localctx, 12) - self.state = 33 + self.state = 35 self.match(SubstraitTypeParser.Date) pass - elif token in [19]: + elif token in [20]: localctx = SubstraitTypeParser.TimeContext(self, localctx) self.enterOuterAlt(localctx, 13) - self.state = 34 + self.state = 36 self.match(SubstraitTypeParser.Time) pass - elif token in [20]: + elif token in [21]: localctx = SubstraitTypeParser.IntervalYearContext(self, localctx) self.enterOuterAlt(localctx, 14) - self.state = 35 + self.state = 37 self.match(SubstraitTypeParser.Interval_Year) pass - elif token in [22]: + elif token in [23]: localctx = SubstraitTypeParser.UuidContext(self, localctx) self.enterOuterAlt(localctx, 15) - self.state = 36 + self.state = 38 self.match(SubstraitTypeParser.UUID) pass else: @@ -1029,6 +1044,41 @@ def exitRule(self, listener:ParseTreeListener): listener.exitPrecisionIntervalDay(self) + class FuncContext(ParameterizedTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SubstraitTypeParser.ParameterizedTypeContext + super().__init__(parser) + self.isnull = None # Token + self.params = None # FuncParamsContext + self.returnType = None # ExprContext + self.copyFrom(ctx) + + def Func(self): + return self.getToken(SubstraitTypeParser.Func, 0) + def Lt(self): + return self.getToken(SubstraitTypeParser.Lt, 0) + def Arrow(self): + return self.getToken(SubstraitTypeParser.Arrow, 0) + def Gt(self): + return self.getToken(SubstraitTypeParser.Gt, 0) + def funcParams(self): + return self.getTypedRuleContext(SubstraitTypeParser.FuncParamsContext,0) + + def expr(self): + return self.getTypedRuleContext(SubstraitTypeParser.ExprContext,0) + + def QMark(self): + return self.getToken(SubstraitTypeParser.QMark, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunc" ): + listener.enterFunc(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunc" ): + listener.exitFunc(self) + + class VarCharContext(ParameterizedTypeContext): def __init__(self, parser, ctx:ParserRuleContext): # actually a SubstraitTypeParser.ParameterizedTypeContext @@ -1193,321 +1243,345 @@ def parameterizedType(self): self.enterRule(localctx, 6, self.RULE_parameterizedType) self._la = 0 # Token type try: - self.state = 173 + self.state = 185 self._errHandler.sync(self) token = self._input.LA(1) - if token in [27]: + if token in [28]: localctx = SubstraitTypeParser.FixedCharContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 39 - self.match(SubstraitTypeParser.FixedChar) self.state = 41 + self.match(SubstraitTypeParser.FixedChar) + self.state = 43 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 40 + if _la==73: + self.state = 42 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 43 + self.state = 45 self.match(SubstraitTypeParser.Lt) - self.state = 44 + self.state = 46 localctx.length = self.numericParameter() - self.state = 45 + self.state = 47 self.match(SubstraitTypeParser.Gt) pass - elif token in [28]: + elif token in [29]: localctx = SubstraitTypeParser.VarCharContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 47 - self.match(SubstraitTypeParser.VarChar) self.state = 49 + self.match(SubstraitTypeParser.VarChar) + self.state = 51 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 48 + if _la==73: + self.state = 50 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 51 + self.state = 53 self.match(SubstraitTypeParser.Lt) - self.state = 52 + self.state = 54 localctx.length = self.numericParameter() - self.state = 53 + self.state = 55 self.match(SubstraitTypeParser.Gt) pass - elif token in [29]: + elif token in [30]: localctx = SubstraitTypeParser.FixedBinaryContext(self, localctx) self.enterOuterAlt(localctx, 3) - self.state = 55 - self.match(SubstraitTypeParser.FixedBinary) self.state = 57 + self.match(SubstraitTypeParser.FixedBinary) + self.state = 59 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 56 + if _la==73: + self.state = 58 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 59 + self.state = 61 self.match(SubstraitTypeParser.Lt) - self.state = 60 + self.state = 62 localctx.length = self.numericParameter() - self.state = 61 + self.state = 63 self.match(SubstraitTypeParser.Gt) pass - elif token in [23]: + elif token in [24]: localctx = SubstraitTypeParser.DecimalContext(self, localctx) self.enterOuterAlt(localctx, 4) - self.state = 63 - self.match(SubstraitTypeParser.Decimal) self.state = 65 + self.match(SubstraitTypeParser.Decimal) + self.state = 67 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 64 + if _la==73: + self.state = 66 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 67 + self.state = 69 self.match(SubstraitTypeParser.Lt) - self.state = 68 + self.state = 70 localctx.precision = self.numericParameter() - self.state = 69 + self.state = 71 self.match(SubstraitTypeParser.Comma) - self.state = 70 + self.state = 72 localctx.scale = self.numericParameter() - self.state = 71 + self.state = 73 self.match(SubstraitTypeParser.Gt) pass - elif token in [21]: + elif token in [22]: localctx = SubstraitTypeParser.PrecisionIntervalDayContext(self, localctx) self.enterOuterAlt(localctx, 5) - self.state = 73 - self.match(SubstraitTypeParser.Interval_Day) self.state = 75 + self.match(SubstraitTypeParser.Interval_Day) + self.state = 77 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 74 + if _la==73: + self.state = 76 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 77 + self.state = 79 self.match(SubstraitTypeParser.Lt) - self.state = 78 + self.state = 80 localctx.precision = self.numericParameter() - self.state = 79 + self.state = 81 self.match(SubstraitTypeParser.Gt) pass - elif token in [24]: + elif token in [25]: localctx = SubstraitTypeParser.PrecisionTimeContext(self, localctx) self.enterOuterAlt(localctx, 6) - self.state = 81 - self.match(SubstraitTypeParser.Precision_Time) self.state = 83 + self.match(SubstraitTypeParser.Precision_Time) + self.state = 85 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 82 + if _la==73: + self.state = 84 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 85 + self.state = 87 self.match(SubstraitTypeParser.Lt) - self.state = 86 + self.state = 88 localctx.precision = self.numericParameter() - self.state = 87 + self.state = 89 self.match(SubstraitTypeParser.Gt) pass - elif token in [25]: + elif token in [26]: localctx = SubstraitTypeParser.PrecisionTimestampContext(self, localctx) self.enterOuterAlt(localctx, 7) - self.state = 89 - self.match(SubstraitTypeParser.Precision_Timestamp) self.state = 91 + self.match(SubstraitTypeParser.Precision_Timestamp) + self.state = 93 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 90 + if _la==73: + self.state = 92 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 93 + self.state = 95 self.match(SubstraitTypeParser.Lt) - self.state = 94 + self.state = 96 localctx.precision = self.numericParameter() - self.state = 95 + self.state = 97 self.match(SubstraitTypeParser.Gt) pass - elif token in [26]: + elif token in [27]: localctx = SubstraitTypeParser.PrecisionTimestampTZContext(self, localctx) self.enterOuterAlt(localctx, 8) - self.state = 97 - self.match(SubstraitTypeParser.Precision_Timestamp_TZ) self.state = 99 + self.match(SubstraitTypeParser.Precision_Timestamp_TZ) + self.state = 101 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 98 + if _la==73: + self.state = 100 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 101 + self.state = 103 self.match(SubstraitTypeParser.Lt) - self.state = 102 + self.state = 104 localctx.precision = self.numericParameter() - self.state = 103 + self.state = 105 self.match(SubstraitTypeParser.Gt) pass - elif token in [30]: + elif token in [31]: localctx = SubstraitTypeParser.StructContext(self, localctx) self.enterOuterAlt(localctx, 9) - self.state = 105 - self.match(SubstraitTypeParser.Struct) self.state = 107 + self.match(SubstraitTypeParser.Struct) + self.state = 109 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 106 + if _la==73: + self.state = 108 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 109 + self.state = 111 self.match(SubstraitTypeParser.Lt) - self.state = 110 + self.state = 112 self.expr(0) - self.state = 115 + self.state = 117 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==70: - self.state = 111 + while _la==71: + self.state = 113 self.match(SubstraitTypeParser.Comma) - self.state = 112 + self.state = 114 self.expr(0) - self.state = 117 + self.state = 119 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 118 + self.state = 120 self.match(SubstraitTypeParser.Gt) pass - elif token in [31]: + elif token in [32]: localctx = SubstraitTypeParser.NStructContext(self, localctx) self.enterOuterAlt(localctx, 10) - self.state = 120 - self.match(SubstraitTypeParser.NStruct) self.state = 122 + self.match(SubstraitTypeParser.NStruct) + self.state = 124 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 121 + if _la==73: + self.state = 123 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 124 + self.state = 126 self.match(SubstraitTypeParser.Lt) - self.state = 125 + self.state = 127 self.match(SubstraitTypeParser.Identifier) - self.state = 126 + self.state = 128 self.expr(0) - self.state = 132 + self.state = 134 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==70: - self.state = 127 + while _la==71: + self.state = 129 self.match(SubstraitTypeParser.Comma) - self.state = 128 + self.state = 130 self.match(SubstraitTypeParser.Identifier) - self.state = 129 + self.state = 131 self.expr(0) - self.state = 134 + self.state = 136 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 135 + self.state = 137 self.match(SubstraitTypeParser.Gt) pass - elif token in [32]: + elif token in [33]: localctx = SubstraitTypeParser.ListContext(self, localctx) self.enterOuterAlt(localctx, 11) - self.state = 137 - self.match(SubstraitTypeParser.List) self.state = 139 + self.match(SubstraitTypeParser.List) + self.state = 141 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 138 + if _la==73: + self.state = 140 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 141 + self.state = 143 self.match(SubstraitTypeParser.Lt) - self.state = 142 + self.state = 144 self.expr(0) - self.state = 143 + self.state = 145 self.match(SubstraitTypeParser.Gt) pass - elif token in [33]: + elif token in [34]: localctx = SubstraitTypeParser.MapContext(self, localctx) self.enterOuterAlt(localctx, 12) - self.state = 145 - self.match(SubstraitTypeParser.Map) self.state = 147 + self.match(SubstraitTypeParser.Map) + self.state = 149 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 146 + if _la==73: + self.state = 148 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 149 + self.state = 151 self.match(SubstraitTypeParser.Lt) - self.state = 150 + self.state = 152 localctx.key = self.expr(0) - self.state = 151 + self.state = 153 self.match(SubstraitTypeParser.Comma) - self.state = 152 + self.state = 154 localctx.value = self.expr(0) - self.state = 153 + self.state = 155 self.match(SubstraitTypeParser.Gt) pass - elif token in [34]: - localctx = SubstraitTypeParser.UserDefinedContext(self, localctx) + elif token in [7]: + localctx = SubstraitTypeParser.FuncContext(self, localctx) self.enterOuterAlt(localctx, 13) - self.state = 155 + self.state = 157 + self.match(SubstraitTypeParser.Func) + self.state = 159 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==73: + self.state = 158 + localctx.isnull = self.match(SubstraitTypeParser.QMark) + + + self.state = 161 + self.match(SubstraitTypeParser.Lt) + self.state = 162 + localctx.params = self.funcParams() + self.state = 163 + self.match(SubstraitTypeParser.Arrow) + self.state = 164 + localctx.returnType = self.expr(0) + self.state = 165 + self.match(SubstraitTypeParser.Gt) + pass + elif token in [35]: + localctx = SubstraitTypeParser.UserDefinedContext(self, localctx) + self.enterOuterAlt(localctx, 14) + self.state = 167 self.match(SubstraitTypeParser.UserDefined) - self.state = 156 + self.state = 168 self.match(SubstraitTypeParser.Identifier) - self.state = 158 + self.state = 170 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,15,self._ctx) + la_ = self._interp.adaptivePredict(self._input,16,self._ctx) if la_ == 1: - self.state = 157 + self.state = 169 localctx.isnull = self.match(SubstraitTypeParser.QMark) - self.state = 171 + self.state = 183 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,17,self._ctx) + la_ = self._interp.adaptivePredict(self._input,18,self._ctx) if la_ == 1: - self.state = 160 + self.state = 172 self.match(SubstraitTypeParser.Lt) - self.state = 161 + self.state = 173 self.expr(0) - self.state = 166 + self.state = 178 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==70: - self.state = 162 + while _la==71: + self.state = 174 self.match(SubstraitTypeParser.Comma) - self.state = 163 + self.state = 175 self.expr(0) - self.state = 168 + self.state = 180 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 169 + self.state = 181 self.match(SubstraitTypeParser.Gt) @@ -1524,6 +1598,123 @@ def parameterizedType(self): return localctx + class FuncParamsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SubstraitTypeParser.RULE_funcParams + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SingleFuncParamContext(FuncParamsContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SubstraitTypeParser.FuncParamsContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self): + return self.getTypedRuleContext(SubstraitTypeParser.ExprContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleFuncParam" ): + listener.enterSingleFuncParam(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleFuncParam" ): + listener.exitSingleFuncParam(self) + + + class FuncParamsWithParensContext(FuncParamsContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SubstraitTypeParser.FuncParamsContext + super().__init__(parser) + self.copyFrom(ctx) + + def OParen(self): + return self.getToken(SubstraitTypeParser.OParen, 0) + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SubstraitTypeParser.ExprContext) + else: + return self.getTypedRuleContext(SubstraitTypeParser.ExprContext,i) + + def CParen(self): + return self.getToken(SubstraitTypeParser.CParen, 0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(SubstraitTypeParser.Comma) + else: + return self.getToken(SubstraitTypeParser.Comma, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFuncParamsWithParens" ): + listener.enterFuncParamsWithParens(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFuncParamsWithParens" ): + listener.exitFuncParamsWithParens(self) + + + + def funcParams(self): + + localctx = SubstraitTypeParser.FuncParamsContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_funcParams) + self._la = 0 # Token type + try: + self.state = 199 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,21,self._ctx) + if la_ == 1: + localctx = SubstraitTypeParser.SingleFuncParamContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 187 + self.expr(0) + pass + + elif la_ == 2: + localctx = SubstraitTypeParser.FuncParamsWithParensContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 188 + self.match(SubstraitTypeParser.OParen) + self.state = 189 + self.expr(0) + self.state = 194 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==71: + self.state = 190 + self.match(SubstraitTypeParser.Comma) + self.state = 191 + self.expr(0) + self.state = 196 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 197 + self.match(SubstraitTypeParser.CParen) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NumericParameterContext(ParserRuleContext): __slots__ = 'parser' @@ -1600,29 +1791,29 @@ def exitRule(self, listener:ParseTreeListener): def numericParameter(self): localctx = SubstraitTypeParser.NumericParameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 8, self.RULE_numericParameter) + self.enterRule(localctx, 10, self.RULE_numericParameter) try: - self.state = 178 + self.state = 204 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,19,self._ctx) + la_ = self._interp.adaptivePredict(self._input,22,self._ctx) if la_ == 1: localctx = SubstraitTypeParser.NumericLiteralContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 175 + self.state = 201 self.match(SubstraitTypeParser.Number) pass elif la_ == 2: localctx = SubstraitTypeParser.NumericParameterNameContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 176 + self.state = 202 self.match(SubstraitTypeParser.Identifier) pass elif la_ == 3: localctx = SubstraitTypeParser.NumericExpressionContext(self, localctx) self.enterOuterAlt(localctx, 3) - self.state = 177 + self.state = 203 self.expr(0) pass @@ -1670,33 +1861,33 @@ def exitRule(self, listener:ParseTreeListener): def anyType(self): localctx = SubstraitTypeParser.AnyTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 10, self.RULE_anyType) + self.enterRule(localctx, 12, self.RULE_anyType) try: - self.state = 188 + self.state = 214 self._errHandler.sync(self) token = self._input.LA(1) - if token in [49]: + if token in [50]: self.enterOuterAlt(localctx, 1) - self.state = 180 + self.state = 206 self.match(SubstraitTypeParser.Any) - self.state = 182 + self.state = 208 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,20,self._ctx) + la_ = self._interp.adaptivePredict(self._input,23,self._ctx) if la_ == 1: - self.state = 181 + self.state = 207 localctx.isnull = self.match(SubstraitTypeParser.QMark) pass - elif token in [50]: + elif token in [51]: self.enterOuterAlt(localctx, 2) - self.state = 184 + self.state = 210 self.match(SubstraitTypeParser.AnyVar) - self.state = 186 + self.state = 212 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,21,self._ctx) + la_ = self._interp.adaptivePredict(self._input,24,self._ctx) if la_ == 1: - self.state = 185 + self.state = 211 localctx.isnull = self.match(SubstraitTypeParser.QMark) @@ -1753,32 +1944,32 @@ def exitRule(self, listener:ParseTreeListener): def typeDef(self): localctx = SubstraitTypeParser.TypeDefContext(self, self._ctx, self.state) - self.enterRule(localctx, 12, self.RULE_typeDef) + self.enterRule(localctx, 14, self.RULE_typeDef) try: - self.state = 196 + self.state = 222 self._errHandler.sync(self) token = self._input.LA(1) - if token in [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22]: + if token in [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23]: self.enterOuterAlt(localctx, 1) - self.state = 190 + self.state = 216 self.scalarType() - self.state = 192 + self.state = 218 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,23,self._ctx) + la_ = self._interp.adaptivePredict(self._input,26,self._ctx) if la_ == 1: - self.state = 191 + self.state = 217 localctx.isnull = self.match(SubstraitTypeParser.QMark) pass - elif token in [21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34]: + elif token in [7, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]: self.enterOuterAlt(localctx, 2) - self.state = 194 + self.state = 220 self.parameterizedType() pass - elif token in [49, 50]: + elif token in [50, 51]: self.enterOuterAlt(localctx, 3) - self.state = 195 + self.state = 221 self.anyType() pass else: @@ -2100,24 +2291,24 @@ def expr(self, _p:int=0): _parentState = self.state localctx = SubstraitTypeParser.ExprContext(self, self._ctx, _parentState) _prevctx = localctx - _startState = 14 - self.enterRecursionRule(localctx, 14, self.RULE_expr, _p) + _startState = 16 + self.enterRecursionRule(localctx, 16, self.RULE_expr, _p) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 259 + self.state = 285 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,32,self._ctx) + la_ = self._interp.adaptivePredict(self._input,35,self._ctx) if la_ == 1: localctx = SubstraitTypeParser.ParenExpressionContext(self, localctx) self._ctx = localctx _prevctx = localctx - self.state = 199 + self.state = 225 self.match(SubstraitTypeParser.OParen) - self.state = 200 + self.state = 226 self.expr(0) - self.state = 201 + self.state = 227 self.match(SubstraitTypeParser.CParen) pass @@ -2125,62 +2316,62 @@ def expr(self, _p:int=0): localctx = SubstraitTypeParser.MultilineDefinitionContext(self, localctx) self._ctx = localctx _prevctx = localctx - self.state = 203 + self.state = 229 self.match(SubstraitTypeParser.Identifier) - self.state = 204 + self.state = 230 self.match(SubstraitTypeParser.Eq) - self.state = 205 + self.state = 231 self.expr(0) - self.state = 207 + self.state = 233 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 206 + self.state = 232 self.match(SubstraitTypeParser.Newline) - self.state = 209 + self.state = 235 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==80): + if not (_la==82): break - self.state = 221 + self.state = 247 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==79: - self.state = 211 + while _la==81: + self.state = 237 self.match(SubstraitTypeParser.Identifier) - self.state = 212 + self.state = 238 self.match(SubstraitTypeParser.Eq) - self.state = 213 + self.state = 239 self.expr(0) - self.state = 215 + self.state = 241 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 214 + self.state = 240 self.match(SubstraitTypeParser.Newline) - self.state = 217 + self.state = 243 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==80): + if not (_la==82): break - self.state = 223 + self.state = 249 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 224 + self.state = 250 localctx.finalType = self.typeDef() - self.state = 228 + self.state = 254 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,28,self._ctx) + _alt = self._interp.adaptivePredict(self._input,31,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 225 + self.state = 251 self.match(SubstraitTypeParser.Newline) - self.state = 230 + self.state = 256 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,28,self._ctx) + _alt = self._interp.adaptivePredict(self._input,31,self._ctx) pass @@ -2188,7 +2379,7 @@ def expr(self, _p:int=0): localctx = SubstraitTypeParser.TypeLiteralContext(self, localctx) self._ctx = localctx _prevctx = localctx - self.state = 231 + self.state = 257 self.typeDef() pass @@ -2196,7 +2387,7 @@ def expr(self, _p:int=0): localctx = SubstraitTypeParser.LiteralNumberContext(self, localctx) self._ctx = localctx _prevctx = localctx - self.state = 232 + self.state = 258 self.match(SubstraitTypeParser.Number) pass @@ -2204,13 +2395,13 @@ def expr(self, _p:int=0): localctx = SubstraitTypeParser.ParameterNameContext(self, localctx) self._ctx = localctx _prevctx = localctx - self.state = 233 + self.state = 259 self.match(SubstraitTypeParser.Identifier) - self.state = 235 + self.state = 261 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,29,self._ctx) + la_ = self._interp.adaptivePredict(self._input,32,self._ctx) if la_ == 1: - self.state = 234 + self.state = 260 localctx.isnull = self.match(SubstraitTypeParser.QMark) @@ -2220,31 +2411,31 @@ def expr(self, _p:int=0): localctx = SubstraitTypeParser.FunctionCallContext(self, localctx) self._ctx = localctx _prevctx = localctx - self.state = 237 + self.state = 263 self.match(SubstraitTypeParser.Identifier) - self.state = 238 + self.state = 264 self.match(SubstraitTypeParser.OParen) - self.state = 247 + self.state = 273 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & -9221683152634773616) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & 12289) != 0): - self.state = 239 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 3377768440004496) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 196617) != 0): + self.state = 265 self.expr(0) - self.state = 244 + self.state = 270 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==70: - self.state = 240 + while _la==71: + self.state = 266 self.match(SubstraitTypeParser.Comma) - self.state = 241 + self.state = 267 self.expr(0) - self.state = 246 + self.state = 272 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 249 + self.state = 275 self.match(SubstraitTypeParser.CParen) pass @@ -2252,17 +2443,17 @@ def expr(self, _p:int=0): localctx = SubstraitTypeParser.IfExprContext(self, localctx) self._ctx = localctx _prevctx = localctx - self.state = 250 + self.state = 276 self.match(SubstraitTypeParser.If) - self.state = 251 + self.state = 277 localctx.ifExpr = self.expr(0) - self.state = 252 + self.state = 278 self.match(SubstraitTypeParser.Then) - self.state = 253 + self.state = 279 localctx.thenExpr = self.expr(0) - self.state = 254 + self.state = 280 self.match(SubstraitTypeParser.Else) - self.state = 255 + self.state = 281 localctx.elseExpr = self.expr(3) pass @@ -2271,42 +2462,42 @@ def expr(self, _p:int=0): self._ctx = localctx _prevctx = localctx - self.state = 257 + self.state = 283 self.match(SubstraitTypeParser.Bang) - self.state = 258 + self.state = 284 self.expr(2) pass self._ctx.stop = self._input.LT(-1) - self.state = 272 + self.state = 298 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,34,self._ctx) + _alt = self._interp.adaptivePredict(self._input,37,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx - self.state = 270 + self.state = 296 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,33,self._ctx) + la_ = self._interp.adaptivePredict(self._input,36,self._ctx) if la_ == 1: localctx = SubstraitTypeParser.BinaryExprContext(self, SubstraitTypeParser.ExprContext(self, _parentctx, _parentState)) localctx.left = _prevctx self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 261 + self.state = 287 if not self.precpred(self._ctx, 4): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") - self.state = 262 + self.state = 288 localctx.op = self._input.LT(1) _la = self._input.LA(1) - if not(((((_la - 52)) & ~0x3f) == 0 and ((1 << (_la - 52)) & 25167855) != 0)): + if not(((((_la - 53)) & ~0x3f) == 0 and ((1 << (_la - 53)) & 25167855) != 0)): localctx.op = self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 263 + self.state = 289 localctx.right = self.expr(5) pass @@ -2314,24 +2505,24 @@ def expr(self, _p:int=0): localctx = SubstraitTypeParser.TernaryContext(self, SubstraitTypeParser.ExprContext(self, _parentctx, _parentState)) localctx.ifExpr = _prevctx self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 264 + self.state = 290 if not self.precpred(self._ctx, 1): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 265 + self.state = 291 self.match(SubstraitTypeParser.QMark) - self.state = 266 + self.state = 292 localctx.thenExpr = self.expr(0) - self.state = 267 + self.state = 293 self.match(SubstraitTypeParser.Colon) - self.state = 268 + self.state = 294 localctx.elseExpr = self.expr(2) pass - self.state = 274 + self.state = 300 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,34,self._ctx) + _alt = self._interp.adaptivePredict(self._input,37,self._ctx) except RecognitionException as re: localctx.exception = re @@ -2346,7 +2537,7 @@ def expr(self, _p:int=0): def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): if self._predicates == None: self._predicates = dict() - self._predicates[7] = self.expr_sempred + self._predicates[8] = self.expr_sempred pred = self._predicates.get(ruleIndex, None) if pred is None: raise Exception("No predicate with index:" + str(ruleIndex)) diff --git a/src/substrait/gen/proto/algebra_pb2.py b/src/substrait/gen/proto/algebra_pb2.py index d4fd9f9..6b8faf8 100644 --- a/src/substrait/gen/proto/algebra_pb2.py +++ b/src/substrait/gen/proto/algebra_pb2.py @@ -27,7 +27,7 @@ from substrait.gen.proto import type_pb2 as substrait_dot_gen_dot_proto_dot_type__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!substrait/gen/proto/algebra.proto\x12\x13substrait.gen.proto\x1a\x19google/protobuf/any.proto\x1a/substrait/gen/proto/extensions/extensions.proto\x1a\x1esubstrait/gen/proto/type.proto\"\x8c\x0e\n\tRelCommon\x12?\n\x06\x64irect\x18\x01 \x01(\x0b\x32%.substrait.gen.proto.RelCommon.DirectH\x00R\x06\x64irect\x12\x39\n\x04\x65mit\x18\x02 \x01(\x0b\x32#.substrait.gen.proto.RelCommon.EmitH\x00R\x04\x65mit\x12\x37\n\x04hint\x18\x03 \x01(\x0b\x32#.substrait.gen.proto.RelCommon.HintR\x04hint\x12`\n\x12\x61\x64vanced_extension\x18\x04 \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\x08\n\x06\x44irect\x1a-\n\x04\x45mit\x12%\n\x0eoutput_mapping\x18\x01 \x03(\x05R\routputMapping\x1a\xa1\x0b\n\x04Hint\x12?\n\x05stats\x18\x01 \x01(\x0b\x32).substrait.gen.proto.RelCommon.Hint.StatsR\x05stats\x12U\n\nconstraint\x18\x02 \x01(\x0b\x32\x35.substrait.gen.proto.RelCommon.Hint.RuntimeConstraintR\nconstraint\x12\x14\n\x05\x61lias\x18\x03 \x01(\tR\x05\x61lias\x12!\n\x0coutput_names\x18\x04 \x03(\tR\x0boutputNames\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x12\x63\n\x12saved_computations\x18\x0b \x03(\x0b\x32\x34.substrait.gen.proto.RelCommon.Hint.SavedComputationR\x11savedComputations\x12\x66\n\x13loaded_computations\x18\x0c \x03(\x0b\x32\x35.substrait.gen.proto.RelCommon.Hint.LoadedComputationR\x12loadedComputations\x1a\xa7\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\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1au\n\x11RuntimeConstraint\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\xe4\x01\n\x10SavedComputation\x12%\n\x0e\x63omputation_id\x18\x01 \x01(\x05R\rcomputationId\x12G\n\x04type\x18\x02 \x01(\x0e\x32\x33.substrait.gen.proto.RelCommon.Hint.ComputationTypeR\x04type\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\xf8\x01\n\x11LoadedComputation\x12\x38\n\x18\x63omputation_id_reference\x18\x01 \x01(\x05R\x16\x63omputationIdReference\x12G\n\x04type\x18\x02 \x01(\x0e\x32\x33.substrait.gen.proto.RelCommon.Hint.ComputationTypeR\x04type\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\x95\x01\n\x0f\x43omputationType\x12 \n\x1c\x43OMPUTATION_TYPE_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x43OMPUTATION_TYPE_HASHTABLE\x10\x01\x12!\n\x1d\x43OMPUTATION_TYPE_BLOOM_FILTER\x10\x02\x12\x1d\n\x18\x43OMPUTATION_TYPE_UNKNOWN\x10\x8fNB\x0b\n\temit_kind\"\xba\x16\n\x07ReadRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12\x41\n\x0b\x62\x61se_schema\x18\x02 \x01(\x0b\x32 .substrait.gen.proto.NamedStructR\nbaseSchema\x12\x37\n\x06\x66ilter\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x06\x66ilter\x12M\n\x12\x62\x65st_effort_filter\x18\x0b \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x10\x62\x65stEffortFilter\x12N\n\nprojection\x18\x04 \x01(\x0b\x32..substrait.gen.proto.Expression.MaskExpressionR\nprojection\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x12P\n\rvirtual_table\x18\x05 \x01(\x0b\x32).substrait.gen.proto.ReadRel.VirtualTableH\x00R\x0cvirtualTable\x12J\n\x0blocal_files\x18\x06 \x01(\x0b\x32\'.substrait.gen.proto.ReadRel.LocalFilesH\x00R\nlocalFiles\x12J\n\x0bnamed_table\x18\x07 \x01(\x0b\x32\'.substrait.gen.proto.ReadRel.NamedTableH\x00R\nnamedTable\x12V\n\x0f\x65xtension_table\x18\x08 \x01(\x0b\x32+.substrait.gen.proto.ReadRel.ExtensionTableH\x00R\x0e\x65xtensionTable\x12P\n\riceberg_table\x18\t \x01(\x0b\x32).substrait.gen.proto.ReadRel.IcebergTableH\x00R\x0cicebergTable\x1a\x84\x01\n\nNamedTable\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\x8a\x02\n\x0cIcebergTable\x12T\n\x06\x64irect\x18\x01 \x01(\x0b\x32:.substrait.gen.proto.ReadRel.IcebergTable.MetadataFileReadH\x00R\x06\x64irect\x1a\x95\x01\n\x10MetadataFileRead\x12!\n\x0cmetadata_uri\x18\x01 \x01(\tR\x0bmetadataUri\x12!\n\x0bsnapshot_id\x18\x02 \x01(\tH\x00R\nsnapshotId\x12/\n\x12snapshot_timestamp\x18\x03 \x01(\x03H\x00R\x11snapshotTimestampB\n\n\x08snapshotB\x0c\n\ntable_type\x1a\xab\x01\n\x0cVirtualTable\x12J\n\x06values\x18\x01 \x03(\x0b\x32..substrait.gen.proto.Expression.Literal.StructB\x02\x18\x01R\x06values\x12O\n\x0b\x65xpressions\x18\x02 \x03(\x0b\x32-.substrait.gen.proto.Expression.Nested.StructR\x0b\x65xpressions\x1a>\n\x0e\x45xtensionTable\x12,\n\x06\x64\x65tail\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyR\x06\x64\x65tail\x1a\xd6\n\n\nLocalFiles\x12I\n\x05items\x18\x01 \x03(\x0b\x32\x33.substrait.gen.proto.ReadRel.LocalFiles.FileOrFilesR\x05items\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\x9a\t\n\x0b\x46ileOrFiles\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\x62\n\x07parquet\x18\t \x01(\x0b\x32\x46.substrait.gen.proto.ReadRel.LocalFiles.FileOrFiles.ParquetReadOptionsH\x01R\x07parquet\x12\\\n\x05\x61rrow\x18\n \x01(\x0b\x32\x44.substrait.gen.proto.ReadRel.LocalFiles.FileOrFiles.ArrowReadOptionsH\x01R\x05\x61rrow\x12V\n\x03orc\x18\x0b \x01(\x0b\x32\x42.substrait.gen.proto.ReadRel.LocalFiles.FileOrFiles.OrcReadOptionsH\x01R\x03orc\x12\x34\n\textension\x18\x0c \x01(\x0b\x32\x14.google.protobuf.AnyH\x01R\textension\x12Y\n\x04\x64wrf\x18\r \x01(\x0b\x32\x43.substrait.gen.proto.ReadRel.LocalFiles.FileOrFiles.DwrfReadOptionsH\x01R\x04\x64wrf\x12k\n\x04text\x18\x0e \x01(\x0b\x32U.substrait.gen.proto.ReadRel.LocalFiles.FileOrFiles.DelimiterSeparatedTextReadOptionsH\x01R\x04text\x1a\x14\n\x12ParquetReadOptions\x1a\x12\n\x10\x41rrowReadOptions\x1a\x10\n\x0eOrcReadOptions\x1a\x11\n\x0f\x44wrfReadOptions\x1a\xa1\x02\n!DelimiterSeparatedTextReadOptions\x12\'\n\x0f\x66ield_delimiter\x18\x01 \x01(\tR\x0e\x66ieldDelimiter\x12\"\n\rmax_line_size\x18\x02 \x01(\x04R\x0bmaxLineSize\x12\x14\n\x05quote\x18\x03 \x01(\tR\x05quote\x12/\n\x14header_lines_to_skip\x18\x04 \x01(\x04R\x11headerLinesToSkip\x12\x16\n\x06\x65scape\x18\x05 \x01(\tR\x06\x65scape\x12\x36\n\x15value_treated_as_null\x18\x06 \x01(\tH\x00R\x12valueTreatedAsNull\x88\x01\x01\x42\x18\n\x16_value_treated_as_nullB\x0b\n\tpath_typeB\r\n\x0b\x66ile_formatJ\x04\x08\x05\x10\x06R\x06\x66ormatB\x0b\n\tread_type\"\x99\x02\n\nProjectRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\x41\n\x0b\x65xpressions\x18\x03 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x0b\x65xpressions\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\x93\x06\n\x07JoinRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x04left\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x04left\x12.\n\x05right\x18\x03 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\x12?\n\nexpression\x18\x04 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\nexpression\x12I\n\x10post_join_filter\x18\x05 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x0epostJoinFilter\x12\x39\n\x04type\x18\x06 \x01(\x0e\x32%.substrait.gen.proto.JoinRel.JoinTypeR\x04type\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xc8\x02\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\x17\n\x13JOIN_TYPE_LEFT_ANTI\x10\x06\x12\x19\n\x15JOIN_TYPE_LEFT_SINGLE\x10\x07\x12\x18\n\x14JOIN_TYPE_RIGHT_SEMI\x10\x08\x12\x18\n\x14JOIN_TYPE_RIGHT_ANTI\x10\t\x12\x1a\n\x16JOIN_TYPE_RIGHT_SINGLE\x10\n\x12\x17\n\x13JOIN_TYPE_LEFT_MARK\x10\x0b\x12\x18\n\x14JOIN_TYPE_RIGHT_MARK\x10\x0c\"\x82\x02\n\x08\x43rossRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x04left\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x04left\x12.\n\x05right\x18\x03 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xb1\x03\n\x08\x46\x65tchRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\x1c\n\x06offset\x18\x03 \x01(\x03\x42\x02\x18\x01H\x00R\x06offset\x12\x42\n\x0boffset_expr\x18\x05 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionH\x00R\noffsetExpr\x12\x1a\n\x05\x63ount\x18\x04 \x01(\x03\x42\x02\x18\x01H\x01R\x05\x63ount\x12@\n\ncount_expr\x18\x06 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionH\x01R\tcountExpr\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtensionB\r\n\x0boffset_modeB\x0c\n\ncount_mode\"\xde\x05\n\x0c\x41ggregateRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12H\n\tgroupings\x18\x03 \x03(\x0b\x32*.substrait.gen.proto.AggregateRel.GroupingR\tgroupings\x12\x45\n\x08measures\x18\x04 \x03(\x0b\x32).substrait.gen.proto.AggregateRel.MeasureR\x08measures\x12R\n\x14grouping_expressions\x18\x05 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x13groupingExpressions\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\x97\x01\n\x08Grouping\x12V\n\x14grouping_expressions\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionB\x02\x18\x01R\x13groupingExpressions\x12\x33\n\x15\x65xpression_references\x18\x02 \x03(\rR\x14\x65xpressionReferences\x1a\x84\x01\n\x07Measure\x12@\n\x07measure\x18\x01 \x01(\x0b\x32&.substrait.gen.proto.AggregateFunctionR\x07measure\x12\x37\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x06\x66ilter\"\x8e\t\n\x1c\x43onsistentPartitionWindowRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12n\n\x10window_functions\x18\x03 \x03(\x0b\x32\x43.substrait.gen.proto.ConsistentPartitionWindowRel.WindowRelFunctionR\x0fwindowFunctions\x12T\n\x15partition_expressions\x18\x04 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x14partitionExpressions\x12\x34\n\x05sorts\x18\x05 \x03(\x0b\x32\x1e.substrait.gen.proto.SortFieldR\x05sorts\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\xa7\x05\n\x11WindowRelFunction\x12-\n\x12\x66unction_reference\x18\x01 \x01(\rR\x11\x66unctionReference\x12\x43\n\targuments\x18\t \x03(\x0b\x32%.substrait.gen.proto.FunctionArgumentR\targuments\x12=\n\x07options\x18\x0b \x03(\x0b\x32#.substrait.gen.proto.FunctionOptionR\x07options\x12:\n\x0boutput_type\x18\x07 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\noutputType\x12;\n\x05phase\x18\x06 \x01(\x0e\x32%.substrait.gen.proto.AggregationPhaseR\x05phase\x12\\\n\ninvocation\x18\n \x01(\x0e\x32<.substrait.gen.proto.AggregateFunction.AggregationInvocationR\ninvocation\x12U\n\x0blower_bound\x18\x05 \x01(\x0b\x32\x34.substrait.gen.proto.Expression.WindowFunction.BoundR\nlowerBound\x12U\n\x0bupper_bound\x18\x04 \x01(\x0b\x32\x34.substrait.gen.proto.Expression.WindowFunction.BoundR\nupperBound\x12Z\n\x0b\x62ounds_type\x18\x0c \x01(\x0e\x32\x39.substrait.gen.proto.Expression.WindowFunction.BoundsTypeR\nboundsType\"\x89\x02\n\x07SortRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\x34\n\x05sorts\x18\x03 \x03(\x0b\x32\x1e.substrait.gen.proto.SortFieldR\x05sorts\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\x94\x02\n\tFilterRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12=\n\tcondition\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\tcondition\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\x96\x04\n\x06SetRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12\x30\n\x06inputs\x18\x02 \x03(\x0b\x32\x18.substrait.gen.proto.RelR\x06inputs\x12\x31\n\x02op\x18\x03 \x01(\x0e\x32!.substrait.gen.proto.SetRel.SetOpR\x02op\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\x8c\x02\n\x05SetOp\x12\x16\n\x12SET_OP_UNSPECIFIED\x10\x00\x12\x18\n\x14SET_OP_MINUS_PRIMARY\x10\x01\x12\x1c\n\x18SET_OP_MINUS_PRIMARY_ALL\x10\x07\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$\n SET_OP_INTERSECTION_MULTISET_ALL\x10\x08\x12\x19\n\x15SET_OP_UNION_DISTINCT\x10\x05\x12\x14\n\x10SET_OP_UNION_ALL\x10\x06\"\xaa\x01\n\x12\x45xtensionSingleRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12,\n\x06\x64\x65tail\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyR\x06\x64\x65tail\"x\n\x10\x45xtensionLeafRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x06\x64\x65tail\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyR\x06\x64\x65tail\"\xab\x01\n\x11\x45xtensionMultiRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12\x30\n\x06inputs\x18\x02 \x03(\x0b\x32\x18.substrait.gen.proto.RelR\x06inputs\x12,\n\x06\x64\x65tail\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyR\x06\x64\x65tail\"\x92\n\n\x0b\x45xchangeRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\'\n\x0fpartition_count\x18\x03 \x01(\x05R\x0epartitionCount\x12I\n\x07targets\x18\x04 \x03(\x0b\x32/.substrait.gen.proto.ExchangeRel.ExchangeTargetR\x07targets\x12\\\n\x11scatter_by_fields\x18\x05 \x01(\x0b\x32..substrait.gen.proto.ExchangeRel.ScatterFieldsH\x00R\x0fscatterByFields\x12^\n\rsingle_target\x18\x06 \x01(\x0b\x32\x37.substrait.gen.proto.ExchangeRel.SingleBucketExpressionH\x00R\x0csingleTarget\x12[\n\x0cmulti_target\x18\x07 \x01(\x0b\x32\x36.substrait.gen.proto.ExchangeRel.MultiBucketExpressionH\x00R\x0bmultiTarget\x12N\n\x0bround_robin\x18\x08 \x01(\x0b\x32+.substrait.gen.proto.ExchangeRel.RoundRobinH\x00R\nroundRobin\x12J\n\tbroadcast\x18\t \x01(\x0b\x32*.substrait.gen.proto.ExchangeRel.BroadcastH\x00R\tbroadcast\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1aW\n\rScatterFields\x12\x46\n\x06\x66ields\x18\x01 \x03(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceR\x06\x66ields\x1aY\n\x16SingleBucketExpression\x12?\n\nexpression\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\nexpression\x1a\x8a\x01\n\x15MultiBucketExpression\x12?\n\nexpression\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\nexpression\x12\x30\n\x14\x63onstrained_to_count\x18\x02 \x01(\x08R\x12\x63onstrainedToCount\x1a\x0b\n\tBroadcast\x1a\"\n\nRoundRobin\x12\x14\n\x05\x65xact\x18\x01 \x01(\x08R\x05\x65xact\x1a\x8a\x01\n\x0e\x45xchangeTarget\x12!\n\x0cpartition_id\x18\x01 \x03(\x05R\x0bpartitionId\x12\x12\n\x03uri\x18\x02 \x01(\tH\x00R\x03uri\x12\x32\n\x08\x65xtended\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x08\x65xtendedB\r\n\x0btarget_typeB\x0f\n\rexchange_kind\"\xd0\x03\n\tExpandRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\x42\n\x06\x66ields\x18\x04 \x03(\x0b\x32*.substrait.gen.proto.ExpandRel.ExpandFieldR\x06\x66ields\x1a\xc3\x01\n\x0b\x45xpandField\x12X\n\x0fswitching_field\x18\x02 \x01(\x0b\x32-.substrait.gen.proto.ExpandRel.SwitchingFieldH\x00R\x0eswitchingField\x12L\n\x10\x63onsistent_field\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionH\x00R\x0f\x63onsistentFieldB\x0c\n\nfield_type\x1aQ\n\x0eSwitchingField\x12?\n\nduplicates\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\nduplicates\"O\n\x07RelRoot\x12.\n\x05input\x18\x01 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\x14\n\x05names\x18\x02 \x03(\tR\x05names\"\x84\x0b\n\x03Rel\x12\x32\n\x04read\x18\x01 \x01(\x0b\x32\x1c.substrait.gen.proto.ReadRelH\x00R\x04read\x12\x38\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x1e.substrait.gen.proto.FilterRelH\x00R\x06\x66ilter\x12\x35\n\x05\x66\x65tch\x18\x03 \x01(\x0b\x32\x1d.substrait.gen.proto.FetchRelH\x00R\x05\x66\x65tch\x12\x41\n\taggregate\x18\x04 \x01(\x0b\x32!.substrait.gen.proto.AggregateRelH\x00R\taggregate\x12\x32\n\x04sort\x18\x05 \x01(\x0b\x32\x1c.substrait.gen.proto.SortRelH\x00R\x04sort\x12\x32\n\x04join\x18\x06 \x01(\x0b\x32\x1c.substrait.gen.proto.JoinRelH\x00R\x04join\x12;\n\x07project\x18\x07 \x01(\x0b\x32\x1f.substrait.gen.proto.ProjectRelH\x00R\x07project\x12/\n\x03set\x18\x08 \x01(\x0b\x32\x1b.substrait.gen.proto.SetRelH\x00R\x03set\x12T\n\x10\x65xtension_single\x18\t \x01(\x0b\x32\'.substrait.gen.proto.ExtensionSingleRelH\x00R\x0f\x65xtensionSingle\x12Q\n\x0f\x65xtension_multi\x18\n \x01(\x0b\x32&.substrait.gen.proto.ExtensionMultiRelH\x00R\x0e\x65xtensionMulti\x12N\n\x0e\x65xtension_leaf\x18\x0b \x01(\x0b\x32%.substrait.gen.proto.ExtensionLeafRelH\x00R\rextensionLeaf\x12\x35\n\x05\x63ross\x18\x0c \x01(\x0b\x32\x1d.substrait.gen.proto.CrossRelH\x00R\x05\x63ross\x12\x41\n\treference\x18\x15 \x01(\x0b\x32!.substrait.gen.proto.ReferenceRelH\x00R\treference\x12\x35\n\x05write\x18\x13 \x01(\x0b\x32\x1d.substrait.gen.proto.WriteRelH\x00R\x05write\x12/\n\x03\x64\x64l\x18\x14 \x01(\x0b\x32\x1b.substrait.gen.proto.DdlRelH\x00R\x03\x64\x64l\x12\x38\n\x06update\x18\x16 \x01(\x0b\x32\x1e.substrait.gen.proto.UpdateRelH\x00R\x06update\x12?\n\thash_join\x18\r \x01(\x0b\x32 .substrait.gen.proto.HashJoinRelH\x00R\x08hashJoin\x12\x42\n\nmerge_join\x18\x0e \x01(\x0b\x32!.substrait.gen.proto.MergeJoinRelH\x00R\tmergeJoin\x12R\n\x10nested_loop_join\x18\x12 \x01(\x0b\x32&.substrait.gen.proto.NestedLoopJoinRelH\x00R\x0enestedLoopJoin\x12K\n\x06window\x18\x11 \x01(\x0b\x32\x31.substrait.gen.proto.ConsistentPartitionWindowRelH\x00R\x06window\x12>\n\x08\x65xchange\x18\x0f \x01(\x0b\x32 .substrait.gen.proto.ExchangeRelH\x00R\x08\x65xchange\x12\x38\n\x06\x65xpand\x18\x10 \x01(\x0b\x32\x1e.substrait.gen.proto.ExpandRelH\x00R\x06\x65xpandB\n\n\x08rel_type\"\x8a\x01\n\x10NamedObjectWrite\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"?\n\x0f\x45xtensionObject\x12,\n\x06\x64\x65tail\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyR\x06\x64\x65tail\"\x84\x07\n\x06\x44\x64lRel\x12J\n\x0cnamed_object\x18\x01 \x01(\x0b\x32%.substrait.gen.proto.NamedObjectWriteH\x00R\x0bnamedObject\x12Q\n\x10\x65xtension_object\x18\x02 \x01(\x0b\x32$.substrait.gen.proto.ExtensionObjectH\x00R\x0f\x65xtensionObject\x12\x43\n\x0ctable_schema\x18\x03 \x01(\x0b\x32 .substrait.gen.proto.NamedStructR\x0btableSchema\x12U\n\x0etable_defaults\x18\x04 \x01(\x0b\x32..substrait.gen.proto.Expression.Literal.StructR\rtableDefaults\x12=\n\x06object\x18\x05 \x01(\x0e\x32%.substrait.gen.proto.DdlRel.DdlObjectR\x06object\x12\x31\n\x02op\x18\x06 \x01(\x0e\x32!.substrait.gen.proto.DdlRel.DdlOpR\x02op\x12\x41\n\x0fview_definition\x18\x07 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x0eviewDefinition\x12\x36\n\x06\x63ommon\x18\x08 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12`\n\x12\x61\x64vanced_extension\x18\t \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"R\n\tDdlObject\x12\x1a\n\x16\x44\x44L_OBJECT_UNSPECIFIED\x10\x00\x12\x14\n\x10\x44\x44L_OBJECT_TABLE\x10\x01\x12\x13\n\x0f\x44\x44L_OBJECT_VIEW\x10\x02\"\x8d\x01\n\x05\x44\x64lOp\x12\x16\n\x12\x44\x44L_OP_UNSPECIFIED\x10\x00\x12\x11\n\rDDL_OP_CREATE\x10\x01\x12\x1c\n\x18\x44\x44L_OP_CREATE_OR_REPLACE\x10\x02\x12\x10\n\x0c\x44\x44L_OP_ALTER\x10\x03\x12\x0f\n\x0b\x44\x44L_OP_DROP\x10\x04\x12\x18\n\x14\x44\x44L_OP_DROP_IF_EXIST\x10\x05\x42\x0c\n\nwrite_type\"\x99\x08\n\x08WriteRel\x12H\n\x0bnamed_table\x18\x01 \x01(\x0b\x32%.substrait.gen.proto.NamedObjectWriteH\x00R\nnamedTable\x12O\n\x0f\x65xtension_table\x18\x02 \x01(\x0b\x32$.substrait.gen.proto.ExtensionObjectH\x00R\x0e\x65xtensionTable\x12\x43\n\x0ctable_schema\x18\x03 \x01(\x0b\x32 .substrait.gen.proto.NamedStructR\x0btableSchema\x12\x35\n\x02op\x18\x04 \x01(\x0e\x32%.substrait.gen.proto.WriteRel.WriteOpR\x02op\x12.\n\x05input\x18\x05 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12I\n\x0b\x63reate_mode\x18\x08 \x01(\x0e\x32(.substrait.gen.proto.WriteRel.CreateModeR\ncreateMode\x12@\n\x06output\x18\x06 \x01(\x0e\x32(.substrait.gen.proto.WriteRel.OutputModeR\x06output\x12\x36\n\x06\x63ommon\x18\x07 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12`\n\x12\x61\x64vanced_extension\x18\t \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"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\"\xb1\x01\n\nCreateMode\x12\x1b\n\x17\x43REATE_MODE_UNSPECIFIED\x10\x00\x12 \n\x1c\x43REATE_MODE_APPEND_IF_EXISTS\x10\x01\x12!\n\x1d\x43REATE_MODE_REPLACE_IF_EXISTS\x10\x02\x12 \n\x1c\x43REATE_MODE_IGNORE_IF_EXISTS\x10\x03\x12\x1f\n\x1b\x43REATE_MODE_ERROR_IF_EXISTS\x10\x04\"f\n\nOutputMode\x12\x1b\n\x17OUTPUT_MODE_UNSPECIFIED\x10\x00\x12\x19\n\x15OUTPUT_MODE_NO_OUTPUT\x10\x01\x12 \n\x1cOUTPUT_MODE_MODIFIED_RECORDS\x10\x02\x42\x0c\n\nwrite_type\"\xa8\x04\n\tUpdateRel\x12\x42\n\x0bnamed_table\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.NamedTableH\x00R\nnamedTable\x12\x43\n\x0ctable_schema\x18\x02 \x01(\x0b\x32 .substrait.gen.proto.NamedStructR\x0btableSchema\x12=\n\tcondition\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\tcondition\x12\\\n\x0ftransformations\x18\x04 \x03(\x0b\x32\x32.substrait.gen.proto.UpdateRel.TransformExpressionR\x0ftransformations\x12`\n\x12\x61\x64vanced_extension\x18\x05 \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\x83\x01\n\x13TransformExpression\x12G\n\x0etransformation\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x0etransformation\x12#\n\rcolumn_target\x18\x02 \x01(\x05R\x0c\x63olumnTargetB\r\n\x0bupdate_type\"\x84\x01\n\nNamedTable\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xe3\x04\n\x11\x43omparisonJoinKey\x12\x42\n\x04left\x18\x01 \x01(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceR\x04left\x12\x44\n\x05right\x18\x02 \x01(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceR\x05right\x12U\n\ncomparison\x18\x03 \x01(\x0b\x32\x35.substrait.gen.proto.ComparisonJoinKey.ComparisonTypeR\ncomparison\x1a\xb3\x01\n\x0e\x43omparisonType\x12U\n\x06simple\x18\x01 \x01(\x0e\x32;.substrait.gen.proto.ComparisonJoinKey.SimpleComparisonTypeH\x00R\x06simple\x12<\n\x19\x63ustom_function_reference\x18\x02 \x01(\rH\x00R\x17\x63ustomFunctionReferenceB\x0c\n\ninner_type\"\xb6\x01\n\x14SimpleComparisonType\x12&\n\"SIMPLE_COMPARISON_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19SIMPLE_COMPARISON_TYPE_EQ\x10\x01\x12/\n+SIMPLE_COMPARISON_TYPE_IS_NOT_DISTINCT_FROM\x10\x02\x12&\n\"SIMPLE_COMPARISON_TYPE_MIGHT_EQUAL\x10\x03\"\xe0\x08\n\x0bHashJoinRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x04left\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x04left\x12.\n\x05right\x18\x03 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\x12O\n\tleft_keys\x18\x04 \x03(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceB\x02\x18\x01R\x08leftKeys\x12Q\n\nright_keys\x18\x05 \x03(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceB\x02\x18\x01R\trightKeys\x12:\n\x04keys\x18\x08 \x03(\x0b\x32&.substrait.gen.proto.ComparisonJoinKeyR\x04keys\x12I\n\x10post_join_filter\x18\x06 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x0epostJoinFilter\x12=\n\x04type\x18\x07 \x01(\x0e\x32).substrait.gen.proto.HashJoinRel.JoinTypeR\x04type\x12L\n\x0b\x62uild_input\x18\t \x01(\x0e\x32+.substrait.gen.proto.HashJoinRel.BuildInputR\nbuildInput\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xc8\x02\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\x12\x19\n\x15JOIN_TYPE_LEFT_SINGLE\x10\t\x12\x1a\n\x16JOIN_TYPE_RIGHT_SINGLE\x10\n\x12\x17\n\x13JOIN_TYPE_LEFT_MARK\x10\x0b\x12\x18\n\x14JOIN_TYPE_RIGHT_MARK\x10\x0c\"V\n\nBuildInput\x12\x1b\n\x17\x42UILD_INPUT_UNSPECIFIED\x10\x00\x12\x14\n\x10\x42UILD_INPUT_LEFT\x10\x01\x12\x15\n\x11\x42UILD_INPUT_RIGHT\x10\x02\"\xbc\x07\n\x0cMergeJoinRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x04left\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x04left\x12.\n\x05right\x18\x03 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\x12O\n\tleft_keys\x18\x04 \x03(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceB\x02\x18\x01R\x08leftKeys\x12Q\n\nright_keys\x18\x05 \x03(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceB\x02\x18\x01R\trightKeys\x12:\n\x04keys\x18\x08 \x03(\x0b\x32&.substrait.gen.proto.ComparisonJoinKeyR\x04keys\x12I\n\x10post_join_filter\x18\x06 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x0epostJoinFilter\x12>\n\x04type\x18\x07 \x01(\x0e\x32*.substrait.gen.proto.MergeJoinRel.JoinTypeR\x04type\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xc8\x02\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\x12\x19\n\x15JOIN_TYPE_LEFT_SINGLE\x10\t\x12\x1a\n\x16JOIN_TYPE_RIGHT_SINGLE\x10\n\x12\x17\n\x13JOIN_TYPE_LEFT_MARK\x10\x0b\x12\x18\n\x14JOIN_TYPE_RIGHT_MARK\x10\x0c\"\xdc\x05\n\x11NestedLoopJoinRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x04left\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x04left\x12.\n\x05right\x18\x03 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\x12?\n\nexpression\x18\x04 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\nexpression\x12\x43\n\x04type\x18\x05 \x01(\x0e\x32/.substrait.gen.proto.NestedLoopJoinRel.JoinTypeR\x04type\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xc8\x02\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\x12\x19\n\x15JOIN_TYPE_LEFT_SINGLE\x10\t\x12\x1a\n\x16JOIN_TYPE_RIGHT_SINGLE\x10\n\x12\x17\n\x13JOIN_TYPE_LEFT_MARK\x10\x0b\x12\x18\n\x14JOIN_TYPE_RIGHT_MARK\x10\x0c\"\x9e\x01\n\x10\x46unctionArgument\x12\x14\n\x04\x65num\x18\x01 \x01(\tH\x00R\x04\x65num\x12/\n\x04type\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeH\x00R\x04type\x12\x37\n\x05value\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionH\x00R\x05valueB\n\n\x08\x61rg_type\"D\n\x0e\x46unctionOption\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1e\n\npreference\x18\x02 \x03(\tR\npreference\"\xaa\x65\n\nExpression\x12\x43\n\x07literal\x18\x01 \x01(\x0b\x32\'.substrait.gen.proto.Expression.LiteralH\x00R\x07literal\x12N\n\tselection\x18\x02 \x01(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceH\x00R\tselection\x12Y\n\x0fscalar_function\x18\x03 \x01(\x0b\x32..substrait.gen.proto.Expression.ScalarFunctionH\x00R\x0escalarFunction\x12Y\n\x0fwindow_function\x18\x05 \x01(\x0b\x32..substrait.gen.proto.Expression.WindowFunctionH\x00R\x0ewindowFunction\x12\x41\n\x07if_then\x18\x06 \x01(\x0b\x32&.substrait.gen.proto.Expression.IfThenH\x00R\x06ifThen\x12_\n\x11switch_expression\x18\x07 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.SwitchExpressionH\x00R\x10switchExpression\x12Z\n\x10singular_or_list\x18\x08 \x01(\x0b\x32..substrait.gen.proto.Expression.SingularOrListH\x00R\x0esingularOrList\x12Q\n\rmulti_or_list\x18\t \x01(\x0b\x32+.substrait.gen.proto.Expression.MultiOrListH\x00R\x0bmultiOrList\x12:\n\x04\x63\x61st\x18\x0b \x01(\x0b\x32$.substrait.gen.proto.Expression.CastH\x00R\x04\x63\x61st\x12\x46\n\x08subquery\x18\x0c \x01(\x0b\x32(.substrait.gen.proto.Expression.SubqueryH\x00R\x08subquery\x12@\n\x06nested\x18\r \x01(\x0b\x32&.substrait.gen.proto.Expression.NestedH\x00R\x06nested\x12T\n\x11\x64ynamic_parameter\x18\x0e \x01(\x0b\x32%.substrait.gen.proto.DynamicParameterH\x00R\x10\x64ynamicParameter\x12>\n\x04\x65num\x18\n \x01(\x0b\x32$.substrait.gen.proto.Expression.EnumB\x02\x18\x01H\x00R\x04\x65num\x1a\x94\x01\n\x04\x45num\x12\x1e\n\tspecified\x18\x01 \x01(\tH\x00R\tspecified\x12N\n\x0bunspecified\x18\x02 \x01(\x0b\x32*.substrait.gen.proto.Expression.Enum.EmptyH\x00R\x0bunspecified\x1a\x0b\n\x05\x45mpty:\x02\x18\x01:\x02\x18\x01\x42\x0b\n\tenum_kind\x1a\xaf\x19\n\x07Literal\x12\x1a\n\x07\x62oolean\x18\x01 \x01(\x08H\x00R\x07\x62oolean\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\x04\x66p32\x18\n \x01(\x02H\x00R\x04\x66p32\x12\x14\n\x04\x66p64\x18\x0b \x01(\x01H\x00R\x04\x66p64\x12\x18\n\x06string\x18\x0c \x01(\tH\x00R\x06string\x12\x18\n\x06\x62inary\x18\r \x01(\x0cH\x00R\x06\x62inary\x12\"\n\ttimestamp\x18\x0e \x01(\x03\x42\x02\x18\x01H\x00R\ttimestamp\x12\x14\n\x04\x64\x61te\x18\x10 \x01(\x05H\x00R\x04\x64\x61te\x12\x14\n\x04time\x18\x11 \x01(\x03H\x00R\x04time\x12r\n\x16interval_year_to_month\x18\x13 \x01(\x0b\x32;.substrait.gen.proto.Expression.Literal.IntervalYearToMonthH\x00R\x13intervalYearToMonth\x12r\n\x16interval_day_to_second\x18\x14 \x01(\x0b\x32;.substrait.gen.proto.Expression.Literal.IntervalDayToSecondH\x00R\x13intervalDayToSecond\x12g\n\x11interval_compound\x18$ \x01(\x0b\x32\x38.substrait.gen.proto.Expression.Literal.IntervalCompoundH\x00R\x10intervalCompound\x12\x1f\n\nfixed_char\x18\x15 \x01(\tH\x00R\tfixedChar\x12L\n\x08var_char\x18\x16 \x01(\x0b\x32/.substrait.gen.proto.Expression.Literal.VarCharH\x00R\x07varChar\x12#\n\x0c\x66ixed_binary\x18\x17 \x01(\x0cH\x00R\x0b\x66ixedBinary\x12K\n\x07\x64\x65\x63imal\x18\x18 \x01(\x0b\x32/.substrait.gen.proto.Expression.Literal.DecimalH\x00R\x07\x64\x65\x63imal\x12^\n\x0eprecision_time\x18% \x01(\x0b\x32\x35.substrait.gen.proto.Expression.Literal.PrecisionTimeH\x00R\rprecisionTime\x12m\n\x13precision_timestamp\x18\" \x01(\x0b\x32:.substrait.gen.proto.Expression.Literal.PrecisionTimestampH\x00R\x12precisionTimestamp\x12r\n\x16precision_timestamp_tz\x18# \x01(\x0b\x32:.substrait.gen.proto.Expression.Literal.PrecisionTimestampH\x00R\x14precisionTimestampTz\x12H\n\x06struct\x18\x19 \x01(\x0b\x32..substrait.gen.proto.Expression.Literal.StructH\x00R\x06struct\x12?\n\x03map\x18\x1a \x01(\x0b\x32+.substrait.gen.proto.Expression.Literal.MapH\x00R\x03map\x12\'\n\x0ctimestamp_tz\x18\x1b \x01(\x03\x42\x02\x18\x01H\x00R\x0btimestampTz\x12\x14\n\x04uuid\x18\x1c \x01(\x0cH\x00R\x04uuid\x12/\n\x04null\x18\x1d \x01(\x0b\x32\x19.substrait.gen.proto.TypeH\x00R\x04null\x12\x42\n\x04list\x18\x1e \x01(\x0b\x32,.substrait.gen.proto.Expression.Literal.ListH\x00R\x04list\x12?\n\nempty_list\x18\x1f \x01(\x0b\x32\x1e.substrait.gen.proto.Type.ListH\x00R\temptyList\x12<\n\tempty_map\x18 \x01(\x0b\x32\x1d.substrait.gen.proto.Type.MapH\x00R\x08\x65mptyMap\x12X\n\x0cuser_defined\x18! \x01(\x0b\x32\x33.substrait.gen.proto.Expression.Literal.UserDefinedH\x00R\x0buserDefined\x12\x1a\n\x08nullable\x18\x32 \x01(\x08R\x08nullable\x12\x38\n\x18type_variation_reference\x18\x33 \x01(\rR\x16typeVariationReference\x1a\x37\n\x07VarChar\x12\x14\n\x05value\x18\x01 \x01(\tR\x05value\x12\x16\n\x06length\x18\x02 \x01(\rR\x06length\x1aS\n\x07\x44\x65\x63imal\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\x43\n\rPrecisionTime\x12\x1c\n\tprecision\x18\x01 \x01(\x05R\tprecision\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value\x1aH\n\x12PrecisionTimestamp\x12\x1c\n\tprecision\x18\x01 \x01(\x05R\tprecision\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value\x1a\xe1\x01\n\x03Map\x12S\n\nkey_values\x18\x01 \x03(\x0b\x32\x34.substrait.gen.proto.Expression.Literal.Map.KeyValueR\tkeyValues\x1a\x84\x01\n\x08KeyValue\x12\x39\n\x03key\x18\x01 \x01(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x03key\x12=\n\x05value\x18\x02 \x01(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x05value\x1a\x43\n\x13IntervalYearToMonth\x12\x14\n\x05years\x18\x01 \x01(\x05R\x05years\x12\x16\n\x06months\x18\x02 \x01(\x05R\x06months\x1a\xbf\x01\n\x13IntervalDayToSecond\x12\x12\n\x04\x64\x61ys\x18\x01 \x01(\x05R\x04\x64\x61ys\x12\x18\n\x07seconds\x18\x02 \x01(\x05R\x07seconds\x12(\n\x0cmicroseconds\x18\x03 \x01(\x05\x42\x02\x18\x01H\x00R\x0cmicroseconds\x12\x1e\n\tprecision\x18\x04 \x01(\x05H\x00R\tprecision\x12\x1e\n\nsubseconds\x18\x05 \x01(\x03R\nsubsecondsB\x10\n\x0eprecision_mode\x1a\xf6\x01\n\x10IntervalCompound\x12p\n\x16interval_year_to_month\x18\x01 \x01(\x0b\x32;.substrait.gen.proto.Expression.Literal.IntervalYearToMonthR\x13intervalYearToMonth\x12p\n\x16interval_day_to_second\x18\x02 \x01(\x0b\x32;.substrait.gen.proto.Expression.Literal.IntervalDayToSecondR\x13intervalDayToSecond\x1aI\n\x06Struct\x12?\n\x06\x66ields\x18\x01 \x03(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x06\x66ields\x1aG\n\x04List\x12?\n\x06values\x18\x01 \x03(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x06values\x1a\x81\x02\n\x0bUserDefined\x12%\n\x0etype_reference\x18\x01 \x01(\rR\rtypeReference\x12L\n\x0ftype_parameters\x18\x03 \x03(\x0b\x32#.substrait.gen.proto.Type.ParameterR\x0etypeParameters\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x05value\x12H\n\x06struct\x18\x04 \x01(\x0b\x32..substrait.gen.proto.Expression.Literal.StructH\x00R\x06structB\x05\n\x03valB\x0e\n\x0cliteral_type\x1a\x8f\x05\n\x06Nested\x12\x1a\n\x08nullable\x18\x01 \x01(\x08R\x08nullable\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x06struct\x18\x03 \x01(\x0b\x32-.substrait.gen.proto.Expression.Nested.StructH\x00R\x06struct\x12\x41\n\x04list\x18\x04 \x01(\x0b\x32+.substrait.gen.proto.Expression.Nested.ListH\x00R\x04list\x12>\n\x03map\x18\x05 \x01(\x0b\x32*.substrait.gen.proto.Expression.Nested.MapH\x00R\x03map\x1a\xcf\x01\n\x03Map\x12R\n\nkey_values\x18\x01 \x03(\x0b\x32\x33.substrait.gen.proto.Expression.Nested.Map.KeyValueR\tkeyValues\x1at\n\x08KeyValue\x12\x31\n\x03key\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x03key\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x05value\x1a\x41\n\x06Struct\x12\x37\n\x06\x66ields\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x06\x66ields\x1a?\n\x04List\x12\x37\n\x06values\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x06valuesB\r\n\x0bnested_type\x1a\xb8\x02\n\x0eScalarFunction\x12-\n\x12\x66unction_reference\x18\x01 \x01(\rR\x11\x66unctionReference\x12\x43\n\targuments\x18\x04 \x03(\x0b\x32%.substrait.gen.proto.FunctionArgumentR\targuments\x12=\n\x07options\x18\x05 \x03(\x0b\x32#.substrait.gen.proto.FunctionOptionR\x07options\x12:\n\x0boutput_type\x18\x03 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\noutputType\x12\x37\n\x04\x61rgs\x18\x02 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionB\x02\x18\x01R\x04\x61rgs\x1a\xa7\x0b\n\x0eWindowFunction\x12-\n\x12\x66unction_reference\x18\x01 \x01(\rR\x11\x66unctionReference\x12\x43\n\targuments\x18\t \x03(\x0b\x32%.substrait.gen.proto.FunctionArgumentR\targuments\x12=\n\x07options\x18\x0b \x03(\x0b\x32#.substrait.gen.proto.FunctionOptionR\x07options\x12:\n\x0boutput_type\x18\x07 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\noutputType\x12;\n\x05phase\x18\x06 \x01(\x0e\x32%.substrait.gen.proto.AggregationPhaseR\x05phase\x12\x34\n\x05sorts\x18\x03 \x03(\x0b\x32\x1e.substrait.gen.proto.SortFieldR\x05sorts\x12\\\n\ninvocation\x18\n \x01(\x0e\x32<.substrait.gen.proto.AggregateFunction.AggregationInvocationR\ninvocation\x12?\n\npartitions\x18\x02 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\npartitions\x12Z\n\x0b\x62ounds_type\x18\x0c \x01(\x0e\x32\x39.substrait.gen.proto.Expression.WindowFunction.BoundsTypeR\nboundsType\x12U\n\x0blower_bound\x18\x05 \x01(\x0b\x32\x34.substrait.gen.proto.Expression.WindowFunction.BoundR\nlowerBound\x12U\n\x0bupper_bound\x18\x04 \x01(\x0b\x32\x34.substrait.gen.proto.Expression.WindowFunction.BoundR\nupperBound\x12\x37\n\x04\x61rgs\x18\x08 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionB\x02\x18\x01R\x04\x61rgs\x1a\xf8\x03\n\x05\x42ound\x12^\n\tpreceding\x18\x01 \x01(\x0b\x32>.substrait.gen.proto.Expression.WindowFunction.Bound.PrecedingH\x00R\tpreceding\x12^\n\tfollowing\x18\x02 \x01(\x0b\x32>.substrait.gen.proto.Expression.WindowFunction.Bound.FollowingH\x00R\tfollowing\x12\x62\n\x0b\x63urrent_row\x18\x03 \x01(\x0b\x32?.substrait.gen.proto.Expression.WindowFunction.Bound.CurrentRowH\x00R\ncurrentRow\x12^\n\tunbounded\x18\x04 \x01(\x0b\x32>.substrait.gen.proto.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\"V\n\nBoundsType\x12\x1b\n\x17\x42OUNDS_TYPE_UNSPECIFIED\x10\x00\x12\x14\n\x10\x42OUNDS_TYPE_ROWS\x10\x01\x12\x15\n\x11\x42OUNDS_TYPE_RANGE\x10\x02\x1a\xf2\x01\n\x06IfThen\x12\x41\n\x03ifs\x18\x01 \x03(\x0b\x32/.substrait.gen.proto.Expression.IfThen.IfClauseR\x03ifs\x12\x33\n\x04\x65lse\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04\x65lse\x1ap\n\x08IfClause\x12/\n\x02if\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x02if\x12\x33\n\x04then\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04then\x1a\xca\x02\n\x04\x43\x61st\x12-\n\x04type\x18\x01 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x04type\x12\x35\n\x05input\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x05input\x12_\n\x10\x66\x61ilure_behavior\x18\x03 \x01(\x0e\x32\x34.substrait.gen.proto.Expression.Cast.FailureBehaviorR\x0f\x66\x61ilureBehavior\"{\n\x0f\x46\x61ilureBehavior\x12 \n\x1c\x46\x41ILURE_BEHAVIOR_UNSPECIFIED\x10\x00\x12 \n\x1c\x46\x41ILURE_BEHAVIOR_RETURN_NULL\x10\x01\x12$\n FAILURE_BEHAVIOR_THROW_EXCEPTION\x10\x02\x1a\xc3\x02\n\x10SwitchExpression\x12\x35\n\x05match\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x05match\x12J\n\x03ifs\x18\x01 \x03(\x0b\x32\x38.substrait.gen.proto.Expression.SwitchExpression.IfValueR\x03ifs\x12\x33\n\x04\x65lse\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04\x65lse\x1aw\n\x07IfValue\x12\x37\n\x02if\x18\x01 \x01(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x02if\x12\x33\n\x04then\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04then\x1a\x82\x01\n\x0eSingularOrList\x12\x35\n\x05value\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x05value\x12\x39\n\x07options\x18\x02 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x07options\x1a\xd5\x01\n\x0bMultiOrList\x12\x35\n\x05value\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x05value\x12L\n\x07options\x18\x02 \x03(\x0b\x32\x32.substrait.gen.proto.Expression.MultiOrList.RecordR\x07options\x1a\x41\n\x06Record\x12\x37\n\x06\x66ields\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x06\x66ields\x1a\xbb\x04\n\x10\x45mbeddedFunction\x12=\n\targuments\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\targuments\x12:\n\x0boutput_type\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\noutputType\x12}\n\x16python_pickle_function\x18\x03 \x01(\x0b\x32\x45.substrait.gen.proto.Expression.EmbeddedFunction.PythonPickleFunctionH\x00R\x14pythonPickleFunction\x12z\n\x15web_assembly_function\x18\x04 \x01(\x0b\x32\x44.substrait.gen.proto.Expression.EmbeddedFunction.WebAssemblyFunctionH\x00R\x13webAssemblyFunction\x1aV\n\x14PythonPickleFunction\x12\x1a\n\x08\x66unction\x18\x01 \x01(\x0cR\x08\x66unction\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\xaf\x05\n\x10ReferenceSegment\x12R\n\x07map_key\x18\x01 \x01(\x0b\x32\x37.substrait.gen.proto.Expression.ReferenceSegment.MapKeyH\x00R\x06mapKey\x12\x61\n\x0cstruct_field\x18\x02 \x01(\x0b\x32<.substrait.gen.proto.Expression.ReferenceSegment.StructFieldH\x00R\x0bstructField\x12\x61\n\x0clist_element\x18\x03 \x01(\x0b\x32<.substrait.gen.proto.Expression.ReferenceSegment.ListElementH\x00R\x0blistElement\x1a\x92\x01\n\x06MapKey\x12@\n\x07map_key\x18\x01 \x01(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x06mapKey\x12\x46\n\x05\x63hild\x18\x02 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.ReferenceSegmentR\x05\x63hild\x1ak\n\x0bStructField\x12\x14\n\x05\x66ield\x18\x01 \x01(\x05R\x05\x66ield\x12\x46\n\x05\x63hild\x18\x02 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.ReferenceSegmentR\x05\x63hild\x1am\n\x0bListElement\x12\x16\n\x06offset\x18\x01 \x01(\x05R\x06offset\x12\x46\n\x05\x63hild\x18\x02 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.ReferenceSegmentR\x05\x63hildB\x10\n\x0ereference_type\x1a\xa4\x0c\n\x0eMaskExpression\x12S\n\x06select\x18\x01 \x01(\x0b\x32;.substrait.gen.proto.Expression.MaskExpression.StructSelectR\x06select\x12\x38\n\x18maintain_singular_struct\x18\x02 \x01(\x08R\x16maintainSingularStruct\x1a\x86\x02\n\x06Select\x12U\n\x06struct\x18\x01 \x01(\x0b\x32;.substrait.gen.proto.Expression.MaskExpression.StructSelectH\x00R\x06struct\x12O\n\x04list\x18\x02 \x01(\x0b\x32\x39.substrait.gen.proto.Expression.MaskExpression.ListSelectH\x00R\x04list\x12L\n\x03map\x18\x03 \x01(\x0b\x32\x38.substrait.gen.proto.Expression.MaskExpression.MapSelectH\x00R\x03mapB\x06\n\x04type\x1al\n\x0cStructSelect\x12\\\n\x0cstruct_items\x18\x01 \x03(\x0b\x32\x39.substrait.gen.proto.Expression.MaskExpression.StructItemR\x0bstructItems\x1ao\n\nStructItem\x12\x14\n\x05\x66ield\x18\x01 \x01(\x05R\x05\x66ield\x12K\n\x05\x63hild\x18\x02 \x01(\x0b\x32\x35.substrait.gen.proto.Expression.MaskExpression.SelectR\x05\x63hild\x1a\x8e\x04\n\nListSelect\x12\x66\n\tselection\x18\x01 \x03(\x0b\x32H.substrait.gen.proto.Expression.MaskExpression.ListSelect.ListSelectItemR\tselection\x12K\n\x05\x63hild\x18\x02 \x01(\x0b\x32\x35.substrait.gen.proto.Expression.MaskExpression.SelectR\x05\x63hild\x1a\xca\x02\n\x0eListSelectItem\x12j\n\x04item\x18\x01 \x01(\x0b\x32T.substrait.gen.proto.Expression.MaskExpression.ListSelect.ListSelectItem.ListElementH\x00R\x04item\x12j\n\x05slice\x18\x02 \x01(\x0b\x32R.substrait.gen.proto.Expression.MaskExpression.ListSelect.ListSelectItem.ListSliceH\x00R\x05slice\x1a#\n\x0bListElement\x12\x14\n\x05\x66ield\x18\x01 \x01(\x05R\x05\x66ield\x1a\x33\n\tListSlice\x12\x14\n\x05start\x18\x01 \x01(\x05R\x05start\x12\x10\n\x03\x65nd\x18\x02 \x01(\x05R\x03\x65ndB\x06\n\x04type\x1a\x89\x03\n\tMapSelect\x12S\n\x03key\x18\x01 \x01(\x0b\x32?.substrait.gen.proto.Expression.MaskExpression.MapSelect.MapKeyH\x00R\x03key\x12k\n\nexpression\x18\x02 \x01(\x0b\x32I.substrait.gen.proto.Expression.MaskExpression.MapSelect.MapKeyExpressionH\x00R\nexpression\x12K\n\x05\x63hild\x18\x03 \x01(\x0b\x32\x35.substrait.gen.proto.Expression.MaskExpression.SelectR\x05\x63hild\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\xbf\x04\n\x0e\x46ieldReference\x12]\n\x10\x64irect_reference\x18\x01 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.ReferenceSegmentH\x00R\x0f\x64irectReference\x12[\n\x10masked_reference\x18\x02 \x01(\x0b\x32..substrait.gen.proto.Expression.MaskExpressionH\x00R\x0fmaskedReference\x12\x41\n\nexpression\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionH\x01R\nexpression\x12\x65\n\x0eroot_reference\x18\x04 \x01(\x0b\x32<.substrait.gen.proto.Expression.FieldReference.RootReferenceH\x01R\rrootReference\x12h\n\x0fouter_reference\x18\x05 \x01(\x0b\x32=.substrait.gen.proto.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\x97\x0b\n\x08Subquery\x12I\n\x06scalar\x18\x01 \x01(\x0b\x32/.substrait.gen.proto.Expression.Subquery.ScalarH\x00R\x06scalar\x12Y\n\x0cin_predicate\x18\x02 \x01(\x0b\x32\x34.substrait.gen.proto.Expression.Subquery.InPredicateH\x00R\x0binPredicate\x12\\\n\rset_predicate\x18\x03 \x01(\x0b\x32\x35.substrait.gen.proto.Expression.Subquery.SetPredicateH\x00R\x0csetPredicate\x12_\n\x0eset_comparison\x18\x04 \x01(\x0b\x32\x36.substrait.gen.proto.Expression.Subquery.SetComparisonH\x00R\rsetComparison\x1a\x38\n\x06Scalar\x12.\n\x05input\x18\x01 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x1a~\n\x0bInPredicate\x12\x39\n\x07needles\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x07needles\x12\x34\n\x08haystack\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x08haystack\x1a\x85\x02\n\x0cSetPredicate\x12\x64\n\x0cpredicate_op\x18\x01 \x01(\x0e\x32\x41.substrait.gen.proto.Expression.Subquery.SetPredicate.PredicateOpR\x0bpredicateOp\x12\x30\n\x06tuples\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.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\xd2\x04\n\rSetComparison\x12\x65\n\x0creduction_op\x18\x01 \x01(\x0e\x32\x42.substrait.gen.proto.Expression.Subquery.SetComparison.ReductionOpR\x0breductionOp\x12h\n\rcomparison_op\x18\x02 \x01(\x0e\x32\x43.substrait.gen.proto.Expression.Subquery.SetComparison.ComparisonOpR\x0c\x63omparisonOp\x12\x33\n\x04left\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04left\x12.\n\x05right\x18\x04 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\"\xb1\x01\n\x0c\x43omparisonOp\x12\x1d\n\x19\x43OMPARISON_OP_UNSPECIFIED\x10\x00\x12\x14\n\x10\x43OMPARISON_OP_EQ\x10\x01\x12\x14\n\x10\x43OMPARISON_OP_NE\x10\x02\x12\x14\n\x10\x43OMPARISON_OP_LT\x10\x03\x12\x14\n\x10\x43OMPARISON_OP_GT\x10\x04\x12\x14\n\x10\x43OMPARISON_OP_LE\x10\x05\x12\x14\n\x10\x43OMPARISON_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\x02\x42\x0f\n\rsubquery_typeB\n\n\x08rex_type\"r\n\x10\x44ynamicParameter\x12-\n\x04type\x18\x01 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x04type\x12/\n\x13parameter_reference\x18\x02 \x01(\rR\x12parameterReference\"\xc1\x03\n\tSortField\x12\x33\n\x04\x65xpr\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04\x65xpr\x12L\n\tdirection\x18\x02 \x01(\x0e\x32,.substrait.gen.proto.SortField.SortDirectionH\x00R\tdirection\x12\x44\n\x1d\x63omparison_function_reference\x18\x03 \x01(\rH\x00R\x1b\x63omparisonFunctionReference\"\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\x05\x42\x0b\n\tsort_kind\"\x93\x05\n\x11\x41ggregateFunction\x12-\n\x12\x66unction_reference\x18\x01 \x01(\rR\x11\x66unctionReference\x12\x43\n\targuments\x18\x07 \x03(\x0b\x32%.substrait.gen.proto.FunctionArgumentR\targuments\x12=\n\x07options\x18\x08 \x03(\x0b\x32#.substrait.gen.proto.FunctionOptionR\x07options\x12:\n\x0boutput_type\x18\x05 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\noutputType\x12;\n\x05phase\x18\x04 \x01(\x0e\x32%.substrait.gen.proto.AggregationPhaseR\x05phase\x12\x34\n\x05sorts\x18\x03 \x03(\x0b\x32\x1e.substrait.gen.proto.SortFieldR\x05sorts\x12\\\n\ninvocation\x18\x06 \x01(\x0e\x32<.substrait.gen.proto.AggregateFunction.AggregationInvocationR\ninvocation\x12\x37\n\x04\x61rgs\x18\x02 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionB\x02\x18\x01R\x04\x61rgs\"\x84\x01\n\x15\x41ggregationInvocation\x12&\n\"AGGREGATION_INVOCATION_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x41GGREGATION_INVOCATION_ALL\x10\x01\x12#\n\x1f\x41GGREGATION_INVOCATION_DISTINCT\x10\x02\"7\n\x0cReferenceRel\x12\'\n\x0fsubtree_ordinal\x18\x01 \x01(\x05R\x0esubtreeOrdinal*\xef\x01\n\x10\x41ggregationPhase\x12!\n\x1d\x41GGREGATION_PHASE_UNSPECIFIED\x10\x00\x12-\n)AGGREGATION_PHASE_INITIAL_TO_INTERMEDIATE\x10\x01\x12\x32\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\x04\x42?\n\x1cio.substrait.gen.proto.protoP\x01\xaa\x02\x1cSubstrait.Gen.Proto.Protobufb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!substrait/gen/proto/algebra.proto\x12\x13substrait.gen.proto\x1a\x19google/protobuf/any.proto\x1a/substrait/gen/proto/extensions/extensions.proto\x1a\x1esubstrait/gen/proto/type.proto\"\x8c\x0e\n\tRelCommon\x12?\n\x06\x64irect\x18\x01 \x01(\x0b\x32%.substrait.gen.proto.RelCommon.DirectH\x00R\x06\x64irect\x12\x39\n\x04\x65mit\x18\x02 \x01(\x0b\x32#.substrait.gen.proto.RelCommon.EmitH\x00R\x04\x65mit\x12\x37\n\x04hint\x18\x03 \x01(\x0b\x32#.substrait.gen.proto.RelCommon.HintR\x04hint\x12`\n\x12\x61\x64vanced_extension\x18\x04 \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\x08\n\x06\x44irect\x1a-\n\x04\x45mit\x12%\n\x0eoutput_mapping\x18\x01 \x03(\x05R\routputMapping\x1a\xa1\x0b\n\x04Hint\x12?\n\x05stats\x18\x01 \x01(\x0b\x32).substrait.gen.proto.RelCommon.Hint.StatsR\x05stats\x12U\n\nconstraint\x18\x02 \x01(\x0b\x32\x35.substrait.gen.proto.RelCommon.Hint.RuntimeConstraintR\nconstraint\x12\x14\n\x05\x61lias\x18\x03 \x01(\tR\x05\x61lias\x12!\n\x0coutput_names\x18\x04 \x03(\tR\x0boutputNames\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x12\x63\n\x12saved_computations\x18\x0b \x03(\x0b\x32\x34.substrait.gen.proto.RelCommon.Hint.SavedComputationR\x11savedComputations\x12\x66\n\x13loaded_computations\x18\x0c \x03(\x0b\x32\x35.substrait.gen.proto.RelCommon.Hint.LoadedComputationR\x12loadedComputations\x1a\xa7\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\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1au\n\x11RuntimeConstraint\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\xe4\x01\n\x10SavedComputation\x12%\n\x0e\x63omputation_id\x18\x01 \x01(\x05R\rcomputationId\x12G\n\x04type\x18\x02 \x01(\x0e\x32\x33.substrait.gen.proto.RelCommon.Hint.ComputationTypeR\x04type\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\xf8\x01\n\x11LoadedComputation\x12\x38\n\x18\x63omputation_id_reference\x18\x01 \x01(\x05R\x16\x63omputationIdReference\x12G\n\x04type\x18\x02 \x01(\x0e\x32\x33.substrait.gen.proto.RelCommon.Hint.ComputationTypeR\x04type\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\x95\x01\n\x0f\x43omputationType\x12 \n\x1c\x43OMPUTATION_TYPE_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x43OMPUTATION_TYPE_HASHTABLE\x10\x01\x12!\n\x1d\x43OMPUTATION_TYPE_BLOOM_FILTER\x10\x02\x12\x1d\n\x18\x43OMPUTATION_TYPE_UNKNOWN\x10\x8fNB\x0b\n\temit_kind\"\xba\x16\n\x07ReadRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12\x41\n\x0b\x62\x61se_schema\x18\x02 \x01(\x0b\x32 .substrait.gen.proto.NamedStructR\nbaseSchema\x12\x37\n\x06\x66ilter\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x06\x66ilter\x12M\n\x12\x62\x65st_effort_filter\x18\x0b \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x10\x62\x65stEffortFilter\x12N\n\nprojection\x18\x04 \x01(\x0b\x32..substrait.gen.proto.Expression.MaskExpressionR\nprojection\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x12P\n\rvirtual_table\x18\x05 \x01(\x0b\x32).substrait.gen.proto.ReadRel.VirtualTableH\x00R\x0cvirtualTable\x12J\n\x0blocal_files\x18\x06 \x01(\x0b\x32\'.substrait.gen.proto.ReadRel.LocalFilesH\x00R\nlocalFiles\x12J\n\x0bnamed_table\x18\x07 \x01(\x0b\x32\'.substrait.gen.proto.ReadRel.NamedTableH\x00R\nnamedTable\x12V\n\x0f\x65xtension_table\x18\x08 \x01(\x0b\x32+.substrait.gen.proto.ReadRel.ExtensionTableH\x00R\x0e\x65xtensionTable\x12P\n\riceberg_table\x18\t \x01(\x0b\x32).substrait.gen.proto.ReadRel.IcebergTableH\x00R\x0cicebergTable\x1a\x84\x01\n\nNamedTable\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\x8a\x02\n\x0cIcebergTable\x12T\n\x06\x64irect\x18\x01 \x01(\x0b\x32:.substrait.gen.proto.ReadRel.IcebergTable.MetadataFileReadH\x00R\x06\x64irect\x1a\x95\x01\n\x10MetadataFileRead\x12!\n\x0cmetadata_uri\x18\x01 \x01(\tR\x0bmetadataUri\x12!\n\x0bsnapshot_id\x18\x02 \x01(\tH\x00R\nsnapshotId\x12/\n\x12snapshot_timestamp\x18\x03 \x01(\x03H\x00R\x11snapshotTimestampB\n\n\x08snapshotB\x0c\n\ntable_type\x1a\xab\x01\n\x0cVirtualTable\x12J\n\x06values\x18\x01 \x03(\x0b\x32..substrait.gen.proto.Expression.Literal.StructB\x02\x18\x01R\x06values\x12O\n\x0b\x65xpressions\x18\x02 \x03(\x0b\x32-.substrait.gen.proto.Expression.Nested.StructR\x0b\x65xpressions\x1a>\n\x0e\x45xtensionTable\x12,\n\x06\x64\x65tail\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyR\x06\x64\x65tail\x1a\xd6\n\n\nLocalFiles\x12I\n\x05items\x18\x01 \x03(\x0b\x32\x33.substrait.gen.proto.ReadRel.LocalFiles.FileOrFilesR\x05items\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\x9a\t\n\x0b\x46ileOrFiles\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\x62\n\x07parquet\x18\t \x01(\x0b\x32\x46.substrait.gen.proto.ReadRel.LocalFiles.FileOrFiles.ParquetReadOptionsH\x01R\x07parquet\x12\\\n\x05\x61rrow\x18\n \x01(\x0b\x32\x44.substrait.gen.proto.ReadRel.LocalFiles.FileOrFiles.ArrowReadOptionsH\x01R\x05\x61rrow\x12V\n\x03orc\x18\x0b \x01(\x0b\x32\x42.substrait.gen.proto.ReadRel.LocalFiles.FileOrFiles.OrcReadOptionsH\x01R\x03orc\x12\x34\n\textension\x18\x0c \x01(\x0b\x32\x14.google.protobuf.AnyH\x01R\textension\x12Y\n\x04\x64wrf\x18\r \x01(\x0b\x32\x43.substrait.gen.proto.ReadRel.LocalFiles.FileOrFiles.DwrfReadOptionsH\x01R\x04\x64wrf\x12k\n\x04text\x18\x0e \x01(\x0b\x32U.substrait.gen.proto.ReadRel.LocalFiles.FileOrFiles.DelimiterSeparatedTextReadOptionsH\x01R\x04text\x1a\x14\n\x12ParquetReadOptions\x1a\x12\n\x10\x41rrowReadOptions\x1a\x10\n\x0eOrcReadOptions\x1a\x11\n\x0f\x44wrfReadOptions\x1a\xa1\x02\n!DelimiterSeparatedTextReadOptions\x12\'\n\x0f\x66ield_delimiter\x18\x01 \x01(\tR\x0e\x66ieldDelimiter\x12\"\n\rmax_line_size\x18\x02 \x01(\x04R\x0bmaxLineSize\x12\x14\n\x05quote\x18\x03 \x01(\tR\x05quote\x12/\n\x14header_lines_to_skip\x18\x04 \x01(\x04R\x11headerLinesToSkip\x12\x16\n\x06\x65scape\x18\x05 \x01(\tR\x06\x65scape\x12\x36\n\x15value_treated_as_null\x18\x06 \x01(\tH\x00R\x12valueTreatedAsNull\x88\x01\x01\x42\x18\n\x16_value_treated_as_nullB\x0b\n\tpath_typeB\r\n\x0b\x66ile_formatJ\x04\x08\x05\x10\x06R\x06\x66ormatB\x0b\n\tread_type\"\x99\x02\n\nProjectRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\x41\n\x0b\x65xpressions\x18\x03 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x0b\x65xpressions\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\x93\x06\n\x07JoinRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x04left\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x04left\x12.\n\x05right\x18\x03 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\x12?\n\nexpression\x18\x04 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\nexpression\x12I\n\x10post_join_filter\x18\x05 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x0epostJoinFilter\x12\x39\n\x04type\x18\x06 \x01(\x0e\x32%.substrait.gen.proto.JoinRel.JoinTypeR\x04type\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xc8\x02\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\x17\n\x13JOIN_TYPE_LEFT_ANTI\x10\x06\x12\x19\n\x15JOIN_TYPE_LEFT_SINGLE\x10\x07\x12\x18\n\x14JOIN_TYPE_RIGHT_SEMI\x10\x08\x12\x18\n\x14JOIN_TYPE_RIGHT_ANTI\x10\t\x12\x1a\n\x16JOIN_TYPE_RIGHT_SINGLE\x10\n\x12\x17\n\x13JOIN_TYPE_LEFT_MARK\x10\x0b\x12\x18\n\x14JOIN_TYPE_RIGHT_MARK\x10\x0c\"\x82\x02\n\x08\x43rossRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x04left\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x04left\x12.\n\x05right\x18\x03 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xb1\x03\n\x08\x46\x65tchRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\x1c\n\x06offset\x18\x03 \x01(\x03\x42\x02\x18\x01H\x00R\x06offset\x12\x42\n\x0boffset_expr\x18\x05 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionH\x00R\noffsetExpr\x12\x1a\n\x05\x63ount\x18\x04 \x01(\x03\x42\x02\x18\x01H\x01R\x05\x63ount\x12@\n\ncount_expr\x18\x06 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionH\x01R\tcountExpr\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtensionB\r\n\x0boffset_modeB\x0c\n\ncount_mode\"\xde\x05\n\x0c\x41ggregateRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12H\n\tgroupings\x18\x03 \x03(\x0b\x32*.substrait.gen.proto.AggregateRel.GroupingR\tgroupings\x12\x45\n\x08measures\x18\x04 \x03(\x0b\x32).substrait.gen.proto.AggregateRel.MeasureR\x08measures\x12R\n\x14grouping_expressions\x18\x05 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x13groupingExpressions\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\x97\x01\n\x08Grouping\x12V\n\x14grouping_expressions\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionB\x02\x18\x01R\x13groupingExpressions\x12\x33\n\x15\x65xpression_references\x18\x02 \x03(\rR\x14\x65xpressionReferences\x1a\x84\x01\n\x07Measure\x12@\n\x07measure\x18\x01 \x01(\x0b\x32&.substrait.gen.proto.AggregateFunctionR\x07measure\x12\x37\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x06\x66ilter\"\x8e\t\n\x1c\x43onsistentPartitionWindowRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12n\n\x10window_functions\x18\x03 \x03(\x0b\x32\x43.substrait.gen.proto.ConsistentPartitionWindowRel.WindowRelFunctionR\x0fwindowFunctions\x12T\n\x15partition_expressions\x18\x04 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x14partitionExpressions\x12\x34\n\x05sorts\x18\x05 \x03(\x0b\x32\x1e.substrait.gen.proto.SortFieldR\x05sorts\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\xa7\x05\n\x11WindowRelFunction\x12-\n\x12\x66unction_reference\x18\x01 \x01(\rR\x11\x66unctionReference\x12\x43\n\targuments\x18\t \x03(\x0b\x32%.substrait.gen.proto.FunctionArgumentR\targuments\x12=\n\x07options\x18\x0b \x03(\x0b\x32#.substrait.gen.proto.FunctionOptionR\x07options\x12:\n\x0boutput_type\x18\x07 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\noutputType\x12;\n\x05phase\x18\x06 \x01(\x0e\x32%.substrait.gen.proto.AggregationPhaseR\x05phase\x12\\\n\ninvocation\x18\n \x01(\x0e\x32<.substrait.gen.proto.AggregateFunction.AggregationInvocationR\ninvocation\x12U\n\x0blower_bound\x18\x05 \x01(\x0b\x32\x34.substrait.gen.proto.Expression.WindowFunction.BoundR\nlowerBound\x12U\n\x0bupper_bound\x18\x04 \x01(\x0b\x32\x34.substrait.gen.proto.Expression.WindowFunction.BoundR\nupperBound\x12Z\n\x0b\x62ounds_type\x18\x0c \x01(\x0e\x32\x39.substrait.gen.proto.Expression.WindowFunction.BoundsTypeR\nboundsType\"\x89\x02\n\x07SortRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\x34\n\x05sorts\x18\x03 \x03(\x0b\x32\x1e.substrait.gen.proto.SortFieldR\x05sorts\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\x94\x02\n\tFilterRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12=\n\tcondition\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\tcondition\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\x96\x04\n\x06SetRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12\x30\n\x06inputs\x18\x02 \x03(\x0b\x32\x18.substrait.gen.proto.RelR\x06inputs\x12\x31\n\x02op\x18\x03 \x01(\x0e\x32!.substrait.gen.proto.SetRel.SetOpR\x02op\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\x8c\x02\n\x05SetOp\x12\x16\n\x12SET_OP_UNSPECIFIED\x10\x00\x12\x18\n\x14SET_OP_MINUS_PRIMARY\x10\x01\x12\x1c\n\x18SET_OP_MINUS_PRIMARY_ALL\x10\x07\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$\n SET_OP_INTERSECTION_MULTISET_ALL\x10\x08\x12\x19\n\x15SET_OP_UNION_DISTINCT\x10\x05\x12\x14\n\x10SET_OP_UNION_ALL\x10\x06\"\xaa\x01\n\x12\x45xtensionSingleRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12,\n\x06\x64\x65tail\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyR\x06\x64\x65tail\"x\n\x10\x45xtensionLeafRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x06\x64\x65tail\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyR\x06\x64\x65tail\"\xab\x01\n\x11\x45xtensionMultiRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12\x30\n\x06inputs\x18\x02 \x03(\x0b\x32\x18.substrait.gen.proto.RelR\x06inputs\x12,\n\x06\x64\x65tail\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyR\x06\x64\x65tail\"\x92\n\n\x0b\x45xchangeRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\'\n\x0fpartition_count\x18\x03 \x01(\x05R\x0epartitionCount\x12I\n\x07targets\x18\x04 \x03(\x0b\x32/.substrait.gen.proto.ExchangeRel.ExchangeTargetR\x07targets\x12\\\n\x11scatter_by_fields\x18\x05 \x01(\x0b\x32..substrait.gen.proto.ExchangeRel.ScatterFieldsH\x00R\x0fscatterByFields\x12^\n\rsingle_target\x18\x06 \x01(\x0b\x32\x37.substrait.gen.proto.ExchangeRel.SingleBucketExpressionH\x00R\x0csingleTarget\x12[\n\x0cmulti_target\x18\x07 \x01(\x0b\x32\x36.substrait.gen.proto.ExchangeRel.MultiBucketExpressionH\x00R\x0bmultiTarget\x12N\n\x0bround_robin\x18\x08 \x01(\x0b\x32+.substrait.gen.proto.ExchangeRel.RoundRobinH\x00R\nroundRobin\x12J\n\tbroadcast\x18\t \x01(\x0b\x32*.substrait.gen.proto.ExchangeRel.BroadcastH\x00R\tbroadcast\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1aW\n\rScatterFields\x12\x46\n\x06\x66ields\x18\x01 \x03(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceR\x06\x66ields\x1aY\n\x16SingleBucketExpression\x12?\n\nexpression\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\nexpression\x1a\x8a\x01\n\x15MultiBucketExpression\x12?\n\nexpression\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\nexpression\x12\x30\n\x14\x63onstrained_to_count\x18\x02 \x01(\x08R\x12\x63onstrainedToCount\x1a\x0b\n\tBroadcast\x1a\"\n\nRoundRobin\x12\x14\n\x05\x65xact\x18\x01 \x01(\x08R\x05\x65xact\x1a\x8a\x01\n\x0e\x45xchangeTarget\x12!\n\x0cpartition_id\x18\x01 \x03(\x05R\x0bpartitionId\x12\x12\n\x03uri\x18\x02 \x01(\tH\x00R\x03uri\x12\x32\n\x08\x65xtended\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x08\x65xtendedB\r\n\x0btarget_typeB\x0f\n\rexchange_kind\"\xd0\x03\n\tExpandRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12.\n\x05input\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\x42\n\x06\x66ields\x18\x04 \x03(\x0b\x32*.substrait.gen.proto.ExpandRel.ExpandFieldR\x06\x66ields\x1a\xc3\x01\n\x0b\x45xpandField\x12X\n\x0fswitching_field\x18\x02 \x01(\x0b\x32-.substrait.gen.proto.ExpandRel.SwitchingFieldH\x00R\x0eswitchingField\x12L\n\x10\x63onsistent_field\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionH\x00R\x0f\x63onsistentFieldB\x0c\n\nfield_type\x1aQ\n\x0eSwitchingField\x12?\n\nduplicates\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\nduplicates\"O\n\x07RelRoot\x12.\n\x05input\x18\x01 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12\x14\n\x05names\x18\x02 \x03(\tR\x05names\"\x84\x0b\n\x03Rel\x12\x32\n\x04read\x18\x01 \x01(\x0b\x32\x1c.substrait.gen.proto.ReadRelH\x00R\x04read\x12\x38\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x1e.substrait.gen.proto.FilterRelH\x00R\x06\x66ilter\x12\x35\n\x05\x66\x65tch\x18\x03 \x01(\x0b\x32\x1d.substrait.gen.proto.FetchRelH\x00R\x05\x66\x65tch\x12\x41\n\taggregate\x18\x04 \x01(\x0b\x32!.substrait.gen.proto.AggregateRelH\x00R\taggregate\x12\x32\n\x04sort\x18\x05 \x01(\x0b\x32\x1c.substrait.gen.proto.SortRelH\x00R\x04sort\x12\x32\n\x04join\x18\x06 \x01(\x0b\x32\x1c.substrait.gen.proto.JoinRelH\x00R\x04join\x12;\n\x07project\x18\x07 \x01(\x0b\x32\x1f.substrait.gen.proto.ProjectRelH\x00R\x07project\x12/\n\x03set\x18\x08 \x01(\x0b\x32\x1b.substrait.gen.proto.SetRelH\x00R\x03set\x12T\n\x10\x65xtension_single\x18\t \x01(\x0b\x32\'.substrait.gen.proto.ExtensionSingleRelH\x00R\x0f\x65xtensionSingle\x12Q\n\x0f\x65xtension_multi\x18\n \x01(\x0b\x32&.substrait.gen.proto.ExtensionMultiRelH\x00R\x0e\x65xtensionMulti\x12N\n\x0e\x65xtension_leaf\x18\x0b \x01(\x0b\x32%.substrait.gen.proto.ExtensionLeafRelH\x00R\rextensionLeaf\x12\x35\n\x05\x63ross\x18\x0c \x01(\x0b\x32\x1d.substrait.gen.proto.CrossRelH\x00R\x05\x63ross\x12\x41\n\treference\x18\x15 \x01(\x0b\x32!.substrait.gen.proto.ReferenceRelH\x00R\treference\x12\x35\n\x05write\x18\x13 \x01(\x0b\x32\x1d.substrait.gen.proto.WriteRelH\x00R\x05write\x12/\n\x03\x64\x64l\x18\x14 \x01(\x0b\x32\x1b.substrait.gen.proto.DdlRelH\x00R\x03\x64\x64l\x12\x38\n\x06update\x18\x16 \x01(\x0b\x32\x1e.substrait.gen.proto.UpdateRelH\x00R\x06update\x12?\n\thash_join\x18\r \x01(\x0b\x32 .substrait.gen.proto.HashJoinRelH\x00R\x08hashJoin\x12\x42\n\nmerge_join\x18\x0e \x01(\x0b\x32!.substrait.gen.proto.MergeJoinRelH\x00R\tmergeJoin\x12R\n\x10nested_loop_join\x18\x12 \x01(\x0b\x32&.substrait.gen.proto.NestedLoopJoinRelH\x00R\x0enestedLoopJoin\x12K\n\x06window\x18\x11 \x01(\x0b\x32\x31.substrait.gen.proto.ConsistentPartitionWindowRelH\x00R\x06window\x12>\n\x08\x65xchange\x18\x0f \x01(\x0b\x32 .substrait.gen.proto.ExchangeRelH\x00R\x08\x65xchange\x12\x38\n\x06\x65xpand\x18\x10 \x01(\x0b\x32\x1e.substrait.gen.proto.ExpandRelH\x00R\x06\x65xpandB\n\n\x08rel_type\"\x8a\x01\n\x10NamedObjectWrite\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"?\n\x0f\x45xtensionObject\x12,\n\x06\x64\x65tail\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyR\x06\x64\x65tail\"\x84\x07\n\x06\x44\x64lRel\x12J\n\x0cnamed_object\x18\x01 \x01(\x0b\x32%.substrait.gen.proto.NamedObjectWriteH\x00R\x0bnamedObject\x12Q\n\x10\x65xtension_object\x18\x02 \x01(\x0b\x32$.substrait.gen.proto.ExtensionObjectH\x00R\x0f\x65xtensionObject\x12\x43\n\x0ctable_schema\x18\x03 \x01(\x0b\x32 .substrait.gen.proto.NamedStructR\x0btableSchema\x12U\n\x0etable_defaults\x18\x04 \x01(\x0b\x32..substrait.gen.proto.Expression.Literal.StructR\rtableDefaults\x12=\n\x06object\x18\x05 \x01(\x0e\x32%.substrait.gen.proto.DdlRel.DdlObjectR\x06object\x12\x31\n\x02op\x18\x06 \x01(\x0e\x32!.substrait.gen.proto.DdlRel.DdlOpR\x02op\x12\x41\n\x0fview_definition\x18\x07 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x0eviewDefinition\x12\x36\n\x06\x63ommon\x18\x08 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12`\n\x12\x61\x64vanced_extension\x18\t \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"R\n\tDdlObject\x12\x1a\n\x16\x44\x44L_OBJECT_UNSPECIFIED\x10\x00\x12\x14\n\x10\x44\x44L_OBJECT_TABLE\x10\x01\x12\x13\n\x0f\x44\x44L_OBJECT_VIEW\x10\x02\"\x8d\x01\n\x05\x44\x64lOp\x12\x16\n\x12\x44\x44L_OP_UNSPECIFIED\x10\x00\x12\x11\n\rDDL_OP_CREATE\x10\x01\x12\x1c\n\x18\x44\x44L_OP_CREATE_OR_REPLACE\x10\x02\x12\x10\n\x0c\x44\x44L_OP_ALTER\x10\x03\x12\x0f\n\x0b\x44\x44L_OP_DROP\x10\x04\x12\x18\n\x14\x44\x44L_OP_DROP_IF_EXIST\x10\x05\x42\x0c\n\nwrite_type\"\x99\x08\n\x08WriteRel\x12H\n\x0bnamed_table\x18\x01 \x01(\x0b\x32%.substrait.gen.proto.NamedObjectWriteH\x00R\nnamedTable\x12O\n\x0f\x65xtension_table\x18\x02 \x01(\x0b\x32$.substrait.gen.proto.ExtensionObjectH\x00R\x0e\x65xtensionTable\x12\x43\n\x0ctable_schema\x18\x03 \x01(\x0b\x32 .substrait.gen.proto.NamedStructR\x0btableSchema\x12\x35\n\x02op\x18\x04 \x01(\x0e\x32%.substrait.gen.proto.WriteRel.WriteOpR\x02op\x12.\n\x05input\x18\x05 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x12I\n\x0b\x63reate_mode\x18\x08 \x01(\x0e\x32(.substrait.gen.proto.WriteRel.CreateModeR\ncreateMode\x12@\n\x06output\x18\x06 \x01(\x0e\x32(.substrait.gen.proto.WriteRel.OutputModeR\x06output\x12\x36\n\x06\x63ommon\x18\x07 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12`\n\x12\x61\x64vanced_extension\x18\t \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"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\"\xb1\x01\n\nCreateMode\x12\x1b\n\x17\x43REATE_MODE_UNSPECIFIED\x10\x00\x12 \n\x1c\x43REATE_MODE_APPEND_IF_EXISTS\x10\x01\x12!\n\x1d\x43REATE_MODE_REPLACE_IF_EXISTS\x10\x02\x12 \n\x1c\x43REATE_MODE_IGNORE_IF_EXISTS\x10\x03\x12\x1f\n\x1b\x43REATE_MODE_ERROR_IF_EXISTS\x10\x04\"f\n\nOutputMode\x12\x1b\n\x17OUTPUT_MODE_UNSPECIFIED\x10\x00\x12\x19\n\x15OUTPUT_MODE_NO_OUTPUT\x10\x01\x12 \n\x1cOUTPUT_MODE_MODIFIED_RECORDS\x10\x02\x42\x0c\n\nwrite_type\"\xa8\x04\n\tUpdateRel\x12\x42\n\x0bnamed_table\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.NamedTableH\x00R\nnamedTable\x12\x43\n\x0ctable_schema\x18\x02 \x01(\x0b\x32 .substrait.gen.proto.NamedStructR\x0btableSchema\x12=\n\tcondition\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\tcondition\x12\\\n\x0ftransformations\x18\x04 \x03(\x0b\x32\x32.substrait.gen.proto.UpdateRel.TransformExpressionR\x0ftransformations\x12`\n\x12\x61\x64vanced_extension\x18\x05 \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\x1a\x83\x01\n\x13TransformExpression\x12G\n\x0etransformation\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x0etransformation\x12#\n\rcolumn_target\x18\x02 \x01(\x05R\x0c\x63olumnTargetB\r\n\x0bupdate_type\"\x84\x01\n\nNamedTable\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xe3\x04\n\x11\x43omparisonJoinKey\x12\x42\n\x04left\x18\x01 \x01(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceR\x04left\x12\x44\n\x05right\x18\x02 \x01(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceR\x05right\x12U\n\ncomparison\x18\x03 \x01(\x0b\x32\x35.substrait.gen.proto.ComparisonJoinKey.ComparisonTypeR\ncomparison\x1a\xb3\x01\n\x0e\x43omparisonType\x12U\n\x06simple\x18\x01 \x01(\x0e\x32;.substrait.gen.proto.ComparisonJoinKey.SimpleComparisonTypeH\x00R\x06simple\x12<\n\x19\x63ustom_function_reference\x18\x02 \x01(\rH\x00R\x17\x63ustomFunctionReferenceB\x0c\n\ninner_type\"\xb6\x01\n\x14SimpleComparisonType\x12&\n\"SIMPLE_COMPARISON_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19SIMPLE_COMPARISON_TYPE_EQ\x10\x01\x12/\n+SIMPLE_COMPARISON_TYPE_IS_NOT_DISTINCT_FROM\x10\x02\x12&\n\"SIMPLE_COMPARISON_TYPE_MIGHT_EQUAL\x10\x03\"\xe0\x08\n\x0bHashJoinRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x04left\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x04left\x12.\n\x05right\x18\x03 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\x12O\n\tleft_keys\x18\x04 \x03(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceB\x02\x18\x01R\x08leftKeys\x12Q\n\nright_keys\x18\x05 \x03(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceB\x02\x18\x01R\trightKeys\x12:\n\x04keys\x18\x08 \x03(\x0b\x32&.substrait.gen.proto.ComparisonJoinKeyR\x04keys\x12I\n\x10post_join_filter\x18\x06 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x0epostJoinFilter\x12=\n\x04type\x18\x07 \x01(\x0e\x32).substrait.gen.proto.HashJoinRel.JoinTypeR\x04type\x12L\n\x0b\x62uild_input\x18\t \x01(\x0e\x32+.substrait.gen.proto.HashJoinRel.BuildInputR\nbuildInput\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xc8\x02\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\x12\x19\n\x15JOIN_TYPE_LEFT_SINGLE\x10\t\x12\x1a\n\x16JOIN_TYPE_RIGHT_SINGLE\x10\n\x12\x17\n\x13JOIN_TYPE_LEFT_MARK\x10\x0b\x12\x18\n\x14JOIN_TYPE_RIGHT_MARK\x10\x0c\"V\n\nBuildInput\x12\x1b\n\x17\x42UILD_INPUT_UNSPECIFIED\x10\x00\x12\x14\n\x10\x42UILD_INPUT_LEFT\x10\x01\x12\x15\n\x11\x42UILD_INPUT_RIGHT\x10\x02\"\xbc\x07\n\x0cMergeJoinRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x04left\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x04left\x12.\n\x05right\x18\x03 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\x12O\n\tleft_keys\x18\x04 \x03(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceB\x02\x18\x01R\x08leftKeys\x12Q\n\nright_keys\x18\x05 \x03(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceB\x02\x18\x01R\trightKeys\x12:\n\x04keys\x18\x08 \x03(\x0b\x32&.substrait.gen.proto.ComparisonJoinKeyR\x04keys\x12I\n\x10post_join_filter\x18\x06 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x0epostJoinFilter\x12>\n\x04type\x18\x07 \x01(\x0e\x32*.substrait.gen.proto.MergeJoinRel.JoinTypeR\x04type\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xc8\x02\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\x12\x19\n\x15JOIN_TYPE_LEFT_SINGLE\x10\t\x12\x1a\n\x16JOIN_TYPE_RIGHT_SINGLE\x10\n\x12\x17\n\x13JOIN_TYPE_LEFT_MARK\x10\x0b\x12\x18\n\x14JOIN_TYPE_RIGHT_MARK\x10\x0c\"\xdc\x05\n\x11NestedLoopJoinRel\x12\x36\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\x1e.substrait.gen.proto.RelCommonR\x06\x63ommon\x12,\n\x04left\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x04left\x12.\n\x05right\x18\x03 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\x12?\n\nexpression\x18\x04 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\nexpression\x12\x43\n\x04type\x18\x05 \x01(\x0e\x32/.substrait.gen.proto.NestedLoopJoinRel.JoinTypeR\x04type\x12`\n\x12\x61\x64vanced_extension\x18\n \x01(\x0b\x32\x31.substrait.gen.proto.extensions.AdvancedExtensionR\x11\x61\x64vancedExtension\"\xc8\x02\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\x12\x19\n\x15JOIN_TYPE_LEFT_SINGLE\x10\t\x12\x1a\n\x16JOIN_TYPE_RIGHT_SINGLE\x10\n\x12\x17\n\x13JOIN_TYPE_LEFT_MARK\x10\x0b\x12\x18\n\x14JOIN_TYPE_RIGHT_MARK\x10\x0c\"\x9e\x01\n\x10\x46unctionArgument\x12\x14\n\x04\x65num\x18\x01 \x01(\tH\x00R\x04\x65num\x12/\n\x04type\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeH\x00R\x04type\x12\x37\n\x05value\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionH\x00R\x05valueB\n\n\x08\x61rg_type\"D\n\x0e\x46unctionOption\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1e\n\npreference\x18\x02 \x03(\tR\npreference\"\xfdj\n\nExpression\x12\x43\n\x07literal\x18\x01 \x01(\x0b\x32\'.substrait.gen.proto.Expression.LiteralH\x00R\x07literal\x12N\n\tselection\x18\x02 \x01(\x0b\x32..substrait.gen.proto.Expression.FieldReferenceH\x00R\tselection\x12Y\n\x0fscalar_function\x18\x03 \x01(\x0b\x32..substrait.gen.proto.Expression.ScalarFunctionH\x00R\x0escalarFunction\x12Y\n\x0fwindow_function\x18\x05 \x01(\x0b\x32..substrait.gen.proto.Expression.WindowFunctionH\x00R\x0ewindowFunction\x12\x41\n\x07if_then\x18\x06 \x01(\x0b\x32&.substrait.gen.proto.Expression.IfThenH\x00R\x06ifThen\x12_\n\x11switch_expression\x18\x07 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.SwitchExpressionH\x00R\x10switchExpression\x12Z\n\x10singular_or_list\x18\x08 \x01(\x0b\x32..substrait.gen.proto.Expression.SingularOrListH\x00R\x0esingularOrList\x12Q\n\rmulti_or_list\x18\t \x01(\x0b\x32+.substrait.gen.proto.Expression.MultiOrListH\x00R\x0bmultiOrList\x12:\n\x04\x63\x61st\x18\x0b \x01(\x0b\x32$.substrait.gen.proto.Expression.CastH\x00R\x04\x63\x61st\x12\x46\n\x08subquery\x18\x0c \x01(\x0b\x32(.substrait.gen.proto.Expression.SubqueryH\x00R\x08subquery\x12@\n\x06nested\x18\r \x01(\x0b\x32&.substrait.gen.proto.Expression.NestedH\x00R\x06nested\x12T\n\x11\x64ynamic_parameter\x18\x0e \x01(\x0b\x32%.substrait.gen.proto.DynamicParameterH\x00R\x10\x64ynamicParameter\x12@\n\x06lambda\x18\x0f \x01(\x0b\x32&.substrait.gen.proto.Expression.LambdaH\x00R\x06lambda\x12_\n\x11lambda_invocation\x18\x10 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.LambdaInvocationH\x00R\x10lambdaInvocation\x12>\n\x04\x65num\x18\n \x01(\x0b\x32$.substrait.gen.proto.Expression.EnumB\x02\x18\x01H\x00R\x04\x65num\x1a\x94\x01\n\x04\x45num\x12\x1e\n\tspecified\x18\x01 \x01(\tH\x00R\tspecified\x12N\n\x0bunspecified\x18\x02 \x01(\x0b\x32*.substrait.gen.proto.Expression.Enum.EmptyH\x00R\x0bunspecified\x1a\x0b\n\x05\x45mpty:\x02\x18\x01:\x02\x18\x01\x42\x0b\n\tenum_kind\x1a\xf9\x19\n\x07Literal\x12\x1a\n\x07\x62oolean\x18\x01 \x01(\x08H\x00R\x07\x62oolean\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\x04\x66p32\x18\n \x01(\x02H\x00R\x04\x66p32\x12\x14\n\x04\x66p64\x18\x0b \x01(\x01H\x00R\x04\x66p64\x12\x18\n\x06string\x18\x0c \x01(\tH\x00R\x06string\x12\x18\n\x06\x62inary\x18\r \x01(\x0cH\x00R\x06\x62inary\x12\"\n\ttimestamp\x18\x0e \x01(\x03\x42\x02\x18\x01H\x00R\ttimestamp\x12\x14\n\x04\x64\x61te\x18\x10 \x01(\x05H\x00R\x04\x64\x61te\x12\x14\n\x04time\x18\x11 \x01(\x03H\x00R\x04time\x12r\n\x16interval_year_to_month\x18\x13 \x01(\x0b\x32;.substrait.gen.proto.Expression.Literal.IntervalYearToMonthH\x00R\x13intervalYearToMonth\x12r\n\x16interval_day_to_second\x18\x14 \x01(\x0b\x32;.substrait.gen.proto.Expression.Literal.IntervalDayToSecondH\x00R\x13intervalDayToSecond\x12g\n\x11interval_compound\x18$ \x01(\x0b\x32\x38.substrait.gen.proto.Expression.Literal.IntervalCompoundH\x00R\x10intervalCompound\x12\x1f\n\nfixed_char\x18\x15 \x01(\tH\x00R\tfixedChar\x12L\n\x08var_char\x18\x16 \x01(\x0b\x32/.substrait.gen.proto.Expression.Literal.VarCharH\x00R\x07varChar\x12#\n\x0c\x66ixed_binary\x18\x17 \x01(\x0cH\x00R\x0b\x66ixedBinary\x12K\n\x07\x64\x65\x63imal\x18\x18 \x01(\x0b\x32/.substrait.gen.proto.Expression.Literal.DecimalH\x00R\x07\x64\x65\x63imal\x12^\n\x0eprecision_time\x18% \x01(\x0b\x32\x35.substrait.gen.proto.Expression.Literal.PrecisionTimeH\x00R\rprecisionTime\x12m\n\x13precision_timestamp\x18\" \x01(\x0b\x32:.substrait.gen.proto.Expression.Literal.PrecisionTimestampH\x00R\x12precisionTimestamp\x12r\n\x16precision_timestamp_tz\x18# \x01(\x0b\x32:.substrait.gen.proto.Expression.Literal.PrecisionTimestampH\x00R\x14precisionTimestampTz\x12H\n\x06struct\x18\x19 \x01(\x0b\x32..substrait.gen.proto.Expression.Literal.StructH\x00R\x06struct\x12?\n\x03map\x18\x1a \x01(\x0b\x32+.substrait.gen.proto.Expression.Literal.MapH\x00R\x03map\x12\'\n\x0ctimestamp_tz\x18\x1b \x01(\x03\x42\x02\x18\x01H\x00R\x0btimestampTz\x12\x14\n\x04uuid\x18\x1c \x01(\x0cH\x00R\x04uuid\x12/\n\x04null\x18\x1d \x01(\x0b\x32\x19.substrait.gen.proto.TypeH\x00R\x04null\x12\x42\n\x04list\x18\x1e \x01(\x0b\x32,.substrait.gen.proto.Expression.Literal.ListH\x00R\x04list\x12?\n\nempty_list\x18\x1f \x01(\x0b\x32\x1e.substrait.gen.proto.Type.ListH\x00R\temptyList\x12<\n\tempty_map\x18 \x01(\x0b\x32\x1d.substrait.gen.proto.Type.MapH\x00R\x08\x65mptyMap\x12X\n\x0cuser_defined\x18! \x01(\x0b\x32\x33.substrait.gen.proto.Expression.Literal.UserDefinedH\x00R\x0buserDefined\x12\x1a\n\x08nullable\x18\x32 \x01(\x08R\x08nullable\x12\x38\n\x18type_variation_reference\x18\x33 \x01(\rR\x16typeVariationReference\x1a\x37\n\x07VarChar\x12\x14\n\x05value\x18\x01 \x01(\tR\x05value\x12\x16\n\x06length\x18\x02 \x01(\rR\x06length\x1aS\n\x07\x44\x65\x63imal\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\x43\n\rPrecisionTime\x12\x1c\n\tprecision\x18\x01 \x01(\x05R\tprecision\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value\x1aH\n\x12PrecisionTimestamp\x12\x1c\n\tprecision\x18\x01 \x01(\x05R\tprecision\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05value\x1a\xe1\x01\n\x03Map\x12S\n\nkey_values\x18\x01 \x03(\x0b\x32\x34.substrait.gen.proto.Expression.Literal.Map.KeyValueR\tkeyValues\x1a\x84\x01\n\x08KeyValue\x12\x39\n\x03key\x18\x01 \x01(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x03key\x12=\n\x05value\x18\x02 \x01(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x05value\x1a\x43\n\x13IntervalYearToMonth\x12\x14\n\x05years\x18\x01 \x01(\x05R\x05years\x12\x16\n\x06months\x18\x02 \x01(\x05R\x06months\x1a\xbf\x01\n\x13IntervalDayToSecond\x12\x12\n\x04\x64\x61ys\x18\x01 \x01(\x05R\x04\x64\x61ys\x12\x18\n\x07seconds\x18\x02 \x01(\x05R\x07seconds\x12(\n\x0cmicroseconds\x18\x03 \x01(\x05\x42\x02\x18\x01H\x00R\x0cmicroseconds\x12\x1e\n\tprecision\x18\x04 \x01(\x05H\x00R\tprecision\x12\x1e\n\nsubseconds\x18\x05 \x01(\x03R\nsubsecondsB\x10\n\x0eprecision_mode\x1a\xf6\x01\n\x10IntervalCompound\x12p\n\x16interval_year_to_month\x18\x01 \x01(\x0b\x32;.substrait.gen.proto.Expression.Literal.IntervalYearToMonthR\x13intervalYearToMonth\x12p\n\x16interval_day_to_second\x18\x02 \x01(\x0b\x32;.substrait.gen.proto.Expression.Literal.IntervalDayToSecondR\x13intervalDayToSecond\x1aI\n\x06Struct\x12?\n\x06\x66ields\x18\x01 \x03(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x06\x66ields\x1aG\n\x04List\x12?\n\x06values\x18\x01 \x03(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x06values\x1a\xcb\x02\n\x0bUserDefined\x12\'\n\x0etype_reference\x18\x01 \x01(\rH\x00R\rtypeReference\x12\x32\n\x14type_alias_reference\x18\x05 \x01(\rH\x00R\x12typeAliasReference\x12L\n\x0ftype_parameters\x18\x03 \x03(\x0b\x32#.substrait.gen.proto.Type.ParameterR\x0etypeParameters\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyH\x01R\x05value\x12H\n\x06struct\x18\x04 \x01(\x0b\x32..substrait.gen.proto.Expression.Literal.StructH\x01R\x06structB\x12\n\x10type_anchor_typeB\x05\n\x03valB\x0e\n\x0cliteral_type\x1a\x8f\x05\n\x06Nested\x12\x1a\n\x08nullable\x18\x01 \x01(\x08R\x08nullable\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x06struct\x18\x03 \x01(\x0b\x32-.substrait.gen.proto.Expression.Nested.StructH\x00R\x06struct\x12\x41\n\x04list\x18\x04 \x01(\x0b\x32+.substrait.gen.proto.Expression.Nested.ListH\x00R\x04list\x12>\n\x03map\x18\x05 \x01(\x0b\x32*.substrait.gen.proto.Expression.Nested.MapH\x00R\x03map\x1a\xcf\x01\n\x03Map\x12R\n\nkey_values\x18\x01 \x03(\x0b\x32\x33.substrait.gen.proto.Expression.Nested.Map.KeyValueR\tkeyValues\x1at\n\x08KeyValue\x12\x31\n\x03key\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x03key\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x05value\x1a\x41\n\x06Struct\x12\x37\n\x06\x66ields\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x06\x66ields\x1a?\n\x04List\x12\x37\n\x06values\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x06valuesB\r\n\x0bnested_type\x1a\x7f\n\x06Lambda\x12@\n\nparameters\x18\x01 \x01(\x0b\x32 .substrait.gen.proto.Type.StructR\nparameters\x12\x33\n\x04\x62ody\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04\x62ody\x1a\x9f\x01\n\x10LambdaInvocation\x12>\n\x06lambda\x18\x01 \x01(\x0b\x32&.substrait.gen.proto.Expression.LambdaR\x06lambda\x12K\n\targuments\x18\x02 \x01(\x0b\x32-.substrait.gen.proto.Expression.Nested.StructR\targuments\x1a\xb8\x02\n\x0eScalarFunction\x12-\n\x12\x66unction_reference\x18\x01 \x01(\rR\x11\x66unctionReference\x12\x43\n\targuments\x18\x04 \x03(\x0b\x32%.substrait.gen.proto.FunctionArgumentR\targuments\x12=\n\x07options\x18\x05 \x03(\x0b\x32#.substrait.gen.proto.FunctionOptionR\x07options\x12:\n\x0boutput_type\x18\x03 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\noutputType\x12\x37\n\x04\x61rgs\x18\x02 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionB\x02\x18\x01R\x04\x61rgs\x1a\xa7\x0b\n\x0eWindowFunction\x12-\n\x12\x66unction_reference\x18\x01 \x01(\rR\x11\x66unctionReference\x12\x43\n\targuments\x18\t \x03(\x0b\x32%.substrait.gen.proto.FunctionArgumentR\targuments\x12=\n\x07options\x18\x0b \x03(\x0b\x32#.substrait.gen.proto.FunctionOptionR\x07options\x12:\n\x0boutput_type\x18\x07 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\noutputType\x12;\n\x05phase\x18\x06 \x01(\x0e\x32%.substrait.gen.proto.AggregationPhaseR\x05phase\x12\x34\n\x05sorts\x18\x03 \x03(\x0b\x32\x1e.substrait.gen.proto.SortFieldR\x05sorts\x12\\\n\ninvocation\x18\n \x01(\x0e\x32<.substrait.gen.proto.AggregateFunction.AggregationInvocationR\ninvocation\x12?\n\npartitions\x18\x02 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\npartitions\x12Z\n\x0b\x62ounds_type\x18\x0c \x01(\x0e\x32\x39.substrait.gen.proto.Expression.WindowFunction.BoundsTypeR\nboundsType\x12U\n\x0blower_bound\x18\x05 \x01(\x0b\x32\x34.substrait.gen.proto.Expression.WindowFunction.BoundR\nlowerBound\x12U\n\x0bupper_bound\x18\x04 \x01(\x0b\x32\x34.substrait.gen.proto.Expression.WindowFunction.BoundR\nupperBound\x12\x37\n\x04\x61rgs\x18\x08 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionB\x02\x18\x01R\x04\x61rgs\x1a\xf8\x03\n\x05\x42ound\x12^\n\tpreceding\x18\x01 \x01(\x0b\x32>.substrait.gen.proto.Expression.WindowFunction.Bound.PrecedingH\x00R\tpreceding\x12^\n\tfollowing\x18\x02 \x01(\x0b\x32>.substrait.gen.proto.Expression.WindowFunction.Bound.FollowingH\x00R\tfollowing\x12\x62\n\x0b\x63urrent_row\x18\x03 \x01(\x0b\x32?.substrait.gen.proto.Expression.WindowFunction.Bound.CurrentRowH\x00R\ncurrentRow\x12^\n\tunbounded\x18\x04 \x01(\x0b\x32>.substrait.gen.proto.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\"V\n\nBoundsType\x12\x1b\n\x17\x42OUNDS_TYPE_UNSPECIFIED\x10\x00\x12\x14\n\x10\x42OUNDS_TYPE_ROWS\x10\x01\x12\x15\n\x11\x42OUNDS_TYPE_RANGE\x10\x02\x1a\xf2\x01\n\x06IfThen\x12\x41\n\x03ifs\x18\x01 \x03(\x0b\x32/.substrait.gen.proto.Expression.IfThen.IfClauseR\x03ifs\x12\x33\n\x04\x65lse\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04\x65lse\x1ap\n\x08IfClause\x12/\n\x02if\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x02if\x12\x33\n\x04then\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04then\x1a\xca\x02\n\x04\x43\x61st\x12-\n\x04type\x18\x01 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x04type\x12\x35\n\x05input\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x05input\x12_\n\x10\x66\x61ilure_behavior\x18\x03 \x01(\x0e\x32\x34.substrait.gen.proto.Expression.Cast.FailureBehaviorR\x0f\x66\x61ilureBehavior\"{\n\x0f\x46\x61ilureBehavior\x12 \n\x1c\x46\x41ILURE_BEHAVIOR_UNSPECIFIED\x10\x00\x12 \n\x1c\x46\x41ILURE_BEHAVIOR_RETURN_NULL\x10\x01\x12$\n FAILURE_BEHAVIOR_THROW_EXCEPTION\x10\x02\x1a\xc3\x02\n\x10SwitchExpression\x12\x35\n\x05match\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x05match\x12J\n\x03ifs\x18\x01 \x03(\x0b\x32\x38.substrait.gen.proto.Expression.SwitchExpression.IfValueR\x03ifs\x12\x33\n\x04\x65lse\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04\x65lse\x1aw\n\x07IfValue\x12\x37\n\x02if\x18\x01 \x01(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x02if\x12\x33\n\x04then\x18\x02 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04then\x1a\x82\x01\n\x0eSingularOrList\x12\x35\n\x05value\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x05value\x12\x39\n\x07options\x18\x02 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x07options\x1a\xd5\x01\n\x0bMultiOrList\x12\x35\n\x05value\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x05value\x12L\n\x07options\x18\x02 \x03(\x0b\x32\x32.substrait.gen.proto.Expression.MultiOrList.RecordR\x07options\x1a\x41\n\x06Record\x12\x37\n\x06\x66ields\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x06\x66ields\x1a\xbb\x04\n\x10\x45mbeddedFunction\x12=\n\targuments\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\targuments\x12:\n\x0boutput_type\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\noutputType\x12}\n\x16python_pickle_function\x18\x03 \x01(\x0b\x32\x45.substrait.gen.proto.Expression.EmbeddedFunction.PythonPickleFunctionH\x00R\x14pythonPickleFunction\x12z\n\x15web_assembly_function\x18\x04 \x01(\x0b\x32\x44.substrait.gen.proto.Expression.EmbeddedFunction.WebAssemblyFunctionH\x00R\x13webAssemblyFunction\x1aV\n\x14PythonPickleFunction\x12\x1a\n\x08\x66unction\x18\x01 \x01(\x0cR\x08\x66unction\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\xaf\x05\n\x10ReferenceSegment\x12R\n\x07map_key\x18\x01 \x01(\x0b\x32\x37.substrait.gen.proto.Expression.ReferenceSegment.MapKeyH\x00R\x06mapKey\x12\x61\n\x0cstruct_field\x18\x02 \x01(\x0b\x32<.substrait.gen.proto.Expression.ReferenceSegment.StructFieldH\x00R\x0bstructField\x12\x61\n\x0clist_element\x18\x03 \x01(\x0b\x32<.substrait.gen.proto.Expression.ReferenceSegment.ListElementH\x00R\x0blistElement\x1a\x92\x01\n\x06MapKey\x12@\n\x07map_key\x18\x01 \x01(\x0b\x32\'.substrait.gen.proto.Expression.LiteralR\x06mapKey\x12\x46\n\x05\x63hild\x18\x02 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.ReferenceSegmentR\x05\x63hild\x1ak\n\x0bStructField\x12\x14\n\x05\x66ield\x18\x01 \x01(\x05R\x05\x66ield\x12\x46\n\x05\x63hild\x18\x02 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.ReferenceSegmentR\x05\x63hild\x1am\n\x0bListElement\x12\x16\n\x06offset\x18\x01 \x01(\x05R\x06offset\x12\x46\n\x05\x63hild\x18\x02 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.ReferenceSegmentR\x05\x63hildB\x10\n\x0ereference_type\x1a\xa4\x0c\n\x0eMaskExpression\x12S\n\x06select\x18\x01 \x01(\x0b\x32;.substrait.gen.proto.Expression.MaskExpression.StructSelectR\x06select\x12\x38\n\x18maintain_singular_struct\x18\x02 \x01(\x08R\x16maintainSingularStruct\x1a\x86\x02\n\x06Select\x12U\n\x06struct\x18\x01 \x01(\x0b\x32;.substrait.gen.proto.Expression.MaskExpression.StructSelectH\x00R\x06struct\x12O\n\x04list\x18\x02 \x01(\x0b\x32\x39.substrait.gen.proto.Expression.MaskExpression.ListSelectH\x00R\x04list\x12L\n\x03map\x18\x03 \x01(\x0b\x32\x38.substrait.gen.proto.Expression.MaskExpression.MapSelectH\x00R\x03mapB\x06\n\x04type\x1al\n\x0cStructSelect\x12\\\n\x0cstruct_items\x18\x01 \x03(\x0b\x32\x39.substrait.gen.proto.Expression.MaskExpression.StructItemR\x0bstructItems\x1ao\n\nStructItem\x12\x14\n\x05\x66ield\x18\x01 \x01(\x05R\x05\x66ield\x12K\n\x05\x63hild\x18\x02 \x01(\x0b\x32\x35.substrait.gen.proto.Expression.MaskExpression.SelectR\x05\x63hild\x1a\x8e\x04\n\nListSelect\x12\x66\n\tselection\x18\x01 \x03(\x0b\x32H.substrait.gen.proto.Expression.MaskExpression.ListSelect.ListSelectItemR\tselection\x12K\n\x05\x63hild\x18\x02 \x01(\x0b\x32\x35.substrait.gen.proto.Expression.MaskExpression.SelectR\x05\x63hild\x1a\xca\x02\n\x0eListSelectItem\x12j\n\x04item\x18\x01 \x01(\x0b\x32T.substrait.gen.proto.Expression.MaskExpression.ListSelect.ListSelectItem.ListElementH\x00R\x04item\x12j\n\x05slice\x18\x02 \x01(\x0b\x32R.substrait.gen.proto.Expression.MaskExpression.ListSelect.ListSelectItem.ListSliceH\x00R\x05slice\x1a#\n\x0bListElement\x12\x14\n\x05\x66ield\x18\x01 \x01(\x05R\x05\x66ield\x1a\x33\n\tListSlice\x12\x14\n\x05start\x18\x01 \x01(\x05R\x05start\x12\x10\n\x03\x65nd\x18\x02 \x01(\x05R\x03\x65ndB\x06\n\x04type\x1a\x89\x03\n\tMapSelect\x12S\n\x03key\x18\x01 \x01(\x0b\x32?.substrait.gen.proto.Expression.MaskExpression.MapSelect.MapKeyH\x00R\x03key\x12k\n\nexpression\x18\x02 \x01(\x0b\x32I.substrait.gen.proto.Expression.MaskExpression.MapSelect.MapKeyExpressionH\x00R\nexpression\x12K\n\x05\x63hild\x18\x03 \x01(\x0b\x32\x35.substrait.gen.proto.Expression.MaskExpression.SelectR\x05\x63hild\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\x82\x06\n\x0e\x46ieldReference\x12]\n\x10\x64irect_reference\x18\x01 \x01(\x0b\x32\x30.substrait.gen.proto.Expression.ReferenceSegmentH\x00R\x0f\x64irectReference\x12[\n\x10masked_reference\x18\x02 \x01(\x0b\x32..substrait.gen.proto.Expression.MaskExpressionH\x00R\x0fmaskedReference\x12\x41\n\nexpression\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionH\x01R\nexpression\x12\x65\n\x0eroot_reference\x18\x04 \x01(\x0b\x32<.substrait.gen.proto.Expression.FieldReference.RootReferenceH\x01R\rrootReference\x12h\n\x0fouter_reference\x18\x05 \x01(\x0b\x32=.substrait.gen.proto.Expression.FieldReference.OuterReferenceH\x01R\x0eouterReference\x12\x87\x01\n\x1alambda_parameter_reference\x18\x06 \x01(\x0b\x32G.substrait.gen.proto.Expression.FieldReference.LambdaParameterReferenceH\x01R\x18lambdaParameterReference\x1a\x0f\n\rRootReference\x1a-\n\x0eOuterReference\x12\x1b\n\tsteps_out\x18\x01 \x01(\rR\x08stepsOut\x1a\x37\n\x18LambdaParameterReference\x12\x1b\n\tsteps_out\x18\x01 \x01(\rR\x08stepsOutB\x10\n\x0ereference_typeB\x0b\n\troot_type\x1a\x97\x0b\n\x08Subquery\x12I\n\x06scalar\x18\x01 \x01(\x0b\x32/.substrait.gen.proto.Expression.Subquery.ScalarH\x00R\x06scalar\x12Y\n\x0cin_predicate\x18\x02 \x01(\x0b\x32\x34.substrait.gen.proto.Expression.Subquery.InPredicateH\x00R\x0binPredicate\x12\\\n\rset_predicate\x18\x03 \x01(\x0b\x32\x35.substrait.gen.proto.Expression.Subquery.SetPredicateH\x00R\x0csetPredicate\x12_\n\x0eset_comparison\x18\x04 \x01(\x0b\x32\x36.substrait.gen.proto.Expression.Subquery.SetComparisonH\x00R\rsetComparison\x1a\x38\n\x06Scalar\x12.\n\x05input\x18\x01 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05input\x1a~\n\x0bInPredicate\x12\x39\n\x07needles\x18\x01 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x07needles\x12\x34\n\x08haystack\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x08haystack\x1a\x85\x02\n\x0cSetPredicate\x12\x64\n\x0cpredicate_op\x18\x01 \x01(\x0e\x32\x41.substrait.gen.proto.Expression.Subquery.SetPredicate.PredicateOpR\x0bpredicateOp\x12\x30\n\x06tuples\x18\x02 \x01(\x0b\x32\x18.substrait.gen.proto.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\xd2\x04\n\rSetComparison\x12\x65\n\x0creduction_op\x18\x01 \x01(\x0e\x32\x42.substrait.gen.proto.Expression.Subquery.SetComparison.ReductionOpR\x0breductionOp\x12h\n\rcomparison_op\x18\x02 \x01(\x0e\x32\x43.substrait.gen.proto.Expression.Subquery.SetComparison.ComparisonOpR\x0c\x63omparisonOp\x12\x33\n\x04left\x18\x03 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04left\x12.\n\x05right\x18\x04 \x01(\x0b\x32\x18.substrait.gen.proto.RelR\x05right\"\xb1\x01\n\x0c\x43omparisonOp\x12\x1d\n\x19\x43OMPARISON_OP_UNSPECIFIED\x10\x00\x12\x14\n\x10\x43OMPARISON_OP_EQ\x10\x01\x12\x14\n\x10\x43OMPARISON_OP_NE\x10\x02\x12\x14\n\x10\x43OMPARISON_OP_LT\x10\x03\x12\x14\n\x10\x43OMPARISON_OP_GT\x10\x04\x12\x14\n\x10\x43OMPARISON_OP_LE\x10\x05\x12\x14\n\x10\x43OMPARISON_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\x02\x42\x0f\n\rsubquery_typeB\n\n\x08rex_type\"r\n\x10\x44ynamicParameter\x12-\n\x04type\x18\x01 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x04type\x12/\n\x13parameter_reference\x18\x02 \x01(\rR\x12parameterReference\"\xc1\x03\n\tSortField\x12\x33\n\x04\x65xpr\x18\x01 \x01(\x0b\x32\x1f.substrait.gen.proto.ExpressionR\x04\x65xpr\x12L\n\tdirection\x18\x02 \x01(\x0e\x32,.substrait.gen.proto.SortField.SortDirectionH\x00R\tdirection\x12\x44\n\x1d\x63omparison_function_reference\x18\x03 \x01(\rH\x00R\x1b\x63omparisonFunctionReference\"\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\x05\x42\x0b\n\tsort_kind\"\x93\x05\n\x11\x41ggregateFunction\x12-\n\x12\x66unction_reference\x18\x01 \x01(\rR\x11\x66unctionReference\x12\x43\n\targuments\x18\x07 \x03(\x0b\x32%.substrait.gen.proto.FunctionArgumentR\targuments\x12=\n\x07options\x18\x08 \x03(\x0b\x32#.substrait.gen.proto.FunctionOptionR\x07options\x12:\n\x0boutput_type\x18\x05 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\noutputType\x12;\n\x05phase\x18\x04 \x01(\x0e\x32%.substrait.gen.proto.AggregationPhaseR\x05phase\x12\x34\n\x05sorts\x18\x03 \x03(\x0b\x32\x1e.substrait.gen.proto.SortFieldR\x05sorts\x12\\\n\ninvocation\x18\x06 \x01(\x0e\x32<.substrait.gen.proto.AggregateFunction.AggregationInvocationR\ninvocation\x12\x37\n\x04\x61rgs\x18\x02 \x03(\x0b\x32\x1f.substrait.gen.proto.ExpressionB\x02\x18\x01R\x04\x61rgs\"\x84\x01\n\x15\x41ggregationInvocation\x12&\n\"AGGREGATION_INVOCATION_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x41GGREGATION_INVOCATION_ALL\x10\x01\x12#\n\x1f\x41GGREGATION_INVOCATION_DISTINCT\x10\x02\"7\n\x0cReferenceRel\x12\'\n\x0fsubtree_ordinal\x18\x01 \x01(\x05R\x0esubtreeOrdinal*\xef\x01\n\x10\x41ggregationPhase\x12!\n\x1d\x41GGREGATION_PHASE_UNSPECIFIED\x10\x00\x12-\n)AGGREGATION_PHASE_INITIAL_TO_INTERMEDIATE\x10\x01\x12\x32\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\x04\x42?\n\x1cio.substrait.gen.proto.protoP\x01\xaa\x02\x1cSubstrait.Gen.Proto.Protobufb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -69,8 +69,8 @@ _globals['_EXPRESSION'].fields_by_name['enum']._serialized_options = b'\030\001' _globals['_AGGREGATEFUNCTION'].fields_by_name['args']._loaded_options = None _globals['_AGGREGATEFUNCTION'].fields_by_name['args']._serialized_options = b'\030\001' - _globals['_AGGREGATIONPHASE']._serialized_start=34118 - _globals['_AGGREGATIONPHASE']._serialized_end=34357 + _globals['_AGGREGATIONPHASE']._serialized_start=34841 + _globals['_AGGREGATIONPHASE']._serialized_end=35080 _globals['_RELCOMMON']._serialized_start=167 _globals['_RELCOMMON']._serialized_end=1971 _globals['_RELCOMMON_DIRECT']._serialized_start=459 @@ -222,149 +222,155 @@ _globals['_FUNCTIONOPTION']._serialized_start=19787 _globals['_FUNCTIONOPTION']._serialized_end=19855 _globals['_EXPRESSION']._serialized_start=19858 - _globals['_EXPRESSION']._serialized_end=32828 - _globals['_EXPRESSION_ENUM']._serialized_start=20891 - _globals['_EXPRESSION_ENUM']._serialized_end=21039 - _globals['_EXPRESSION_ENUM_EMPTY']._serialized_start=21011 - _globals['_EXPRESSION_ENUM_EMPTY']._serialized_end=21022 - _globals['_EXPRESSION_LITERAL']._serialized_start=21042 - _globals['_EXPRESSION_LITERAL']._serialized_end=24289 - _globals['_EXPRESSION_LITERAL_VARCHAR']._serialized_start=22842 - _globals['_EXPRESSION_LITERAL_VARCHAR']._serialized_end=22897 - _globals['_EXPRESSION_LITERAL_DECIMAL']._serialized_start=22899 - _globals['_EXPRESSION_LITERAL_DECIMAL']._serialized_end=22982 - _globals['_EXPRESSION_LITERAL_PRECISIONTIME']._serialized_start=22984 - _globals['_EXPRESSION_LITERAL_PRECISIONTIME']._serialized_end=23051 - _globals['_EXPRESSION_LITERAL_PRECISIONTIMESTAMP']._serialized_start=23053 - _globals['_EXPRESSION_LITERAL_PRECISIONTIMESTAMP']._serialized_end=23125 - _globals['_EXPRESSION_LITERAL_MAP']._serialized_start=23128 - _globals['_EXPRESSION_LITERAL_MAP']._serialized_end=23353 - _globals['_EXPRESSION_LITERAL_MAP_KEYVALUE']._serialized_start=23221 - _globals['_EXPRESSION_LITERAL_MAP_KEYVALUE']._serialized_end=23353 - _globals['_EXPRESSION_LITERAL_INTERVALYEARTOMONTH']._serialized_start=23355 - _globals['_EXPRESSION_LITERAL_INTERVALYEARTOMONTH']._serialized_end=23422 - _globals['_EXPRESSION_LITERAL_INTERVALDAYTOSECOND']._serialized_start=23425 - _globals['_EXPRESSION_LITERAL_INTERVALDAYTOSECOND']._serialized_end=23616 - _globals['_EXPRESSION_LITERAL_INTERVALCOMPOUND']._serialized_start=23619 - _globals['_EXPRESSION_LITERAL_INTERVALCOMPOUND']._serialized_end=23865 - _globals['_EXPRESSION_LITERAL_STRUCT']._serialized_start=23867 - _globals['_EXPRESSION_LITERAL_STRUCT']._serialized_end=23940 - _globals['_EXPRESSION_LITERAL_LIST']._serialized_start=23942 - _globals['_EXPRESSION_LITERAL_LIST']._serialized_end=24013 - _globals['_EXPRESSION_LITERAL_USERDEFINED']._serialized_start=24016 - _globals['_EXPRESSION_LITERAL_USERDEFINED']._serialized_end=24273 - _globals['_EXPRESSION_NESTED']._serialized_start=24292 - _globals['_EXPRESSION_NESTED']._serialized_end=24947 - _globals['_EXPRESSION_NESTED_MAP']._serialized_start=24593 - _globals['_EXPRESSION_NESTED_MAP']._serialized_end=24800 - _globals['_EXPRESSION_NESTED_MAP_KEYVALUE']._serialized_start=24684 - _globals['_EXPRESSION_NESTED_MAP_KEYVALUE']._serialized_end=24800 - _globals['_EXPRESSION_NESTED_STRUCT']._serialized_start=24802 - _globals['_EXPRESSION_NESTED_STRUCT']._serialized_end=24867 - _globals['_EXPRESSION_NESTED_LIST']._serialized_start=24869 - _globals['_EXPRESSION_NESTED_LIST']._serialized_end=24932 - _globals['_EXPRESSION_SCALARFUNCTION']._serialized_start=24950 - _globals['_EXPRESSION_SCALARFUNCTION']._serialized_end=25262 - _globals['_EXPRESSION_WINDOWFUNCTION']._serialized_start=25265 - _globals['_EXPRESSION_WINDOWFUNCTION']._serialized_end=26712 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUND']._serialized_start=26120 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUND']._serialized_end=26624 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_PRECEDING']._serialized_start=26517 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_PRECEDING']._serialized_end=26552 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_FOLLOWING']._serialized_start=26554 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_FOLLOWING']._serialized_end=26589 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_CURRENTROW']._serialized_start=26591 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_CURRENTROW']._serialized_end=26603 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_UNBOUNDED']._serialized_start=26605 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_UNBOUNDED']._serialized_end=26616 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUNDSTYPE']._serialized_start=26626 - _globals['_EXPRESSION_WINDOWFUNCTION_BOUNDSTYPE']._serialized_end=26712 - _globals['_EXPRESSION_IFTHEN']._serialized_start=26715 - _globals['_EXPRESSION_IFTHEN']._serialized_end=26957 - _globals['_EXPRESSION_IFTHEN_IFCLAUSE']._serialized_start=26845 - _globals['_EXPRESSION_IFTHEN_IFCLAUSE']._serialized_end=26957 - _globals['_EXPRESSION_CAST']._serialized_start=26960 - _globals['_EXPRESSION_CAST']._serialized_end=27290 - _globals['_EXPRESSION_CAST_FAILUREBEHAVIOR']._serialized_start=27167 - _globals['_EXPRESSION_CAST_FAILUREBEHAVIOR']._serialized_end=27290 - _globals['_EXPRESSION_SWITCHEXPRESSION']._serialized_start=27293 - _globals['_EXPRESSION_SWITCHEXPRESSION']._serialized_end=27616 - _globals['_EXPRESSION_SWITCHEXPRESSION_IFVALUE']._serialized_start=27497 - _globals['_EXPRESSION_SWITCHEXPRESSION_IFVALUE']._serialized_end=27616 - _globals['_EXPRESSION_SINGULARORLIST']._serialized_start=27619 - _globals['_EXPRESSION_SINGULARORLIST']._serialized_end=27749 - _globals['_EXPRESSION_MULTIORLIST']._serialized_start=27752 - _globals['_EXPRESSION_MULTIORLIST']._serialized_end=27965 - _globals['_EXPRESSION_MULTIORLIST_RECORD']._serialized_start=27900 - _globals['_EXPRESSION_MULTIORLIST_RECORD']._serialized_end=27965 - _globals['_EXPRESSION_EMBEDDEDFUNCTION']._serialized_start=27968 - _globals['_EXPRESSION_EMBEDDEDFUNCTION']._serialized_end=28539 - _globals['_EXPRESSION_EMBEDDEDFUNCTION_PYTHONPICKLEFUNCTION']._serialized_start=28362 - _globals['_EXPRESSION_EMBEDDEDFUNCTION_PYTHONPICKLEFUNCTION']._serialized_end=28448 - _globals['_EXPRESSION_EMBEDDEDFUNCTION_WEBASSEMBLYFUNCTION']._serialized_start=28450 - _globals['_EXPRESSION_EMBEDDEDFUNCTION_WEBASSEMBLYFUNCTION']._serialized_end=28531 - _globals['_EXPRESSION_REFERENCESEGMENT']._serialized_start=28542 - _globals['_EXPRESSION_REFERENCESEGMENT']._serialized_end=29229 - _globals['_EXPRESSION_REFERENCESEGMENT_MAPKEY']._serialized_start=28845 - _globals['_EXPRESSION_REFERENCESEGMENT_MAPKEY']._serialized_end=28991 - _globals['_EXPRESSION_REFERENCESEGMENT_STRUCTFIELD']._serialized_start=28993 - _globals['_EXPRESSION_REFERENCESEGMENT_STRUCTFIELD']._serialized_end=29100 - _globals['_EXPRESSION_REFERENCESEGMENT_LISTELEMENT']._serialized_start=29102 - _globals['_EXPRESSION_REFERENCESEGMENT_LISTELEMENT']._serialized_end=29211 - _globals['_EXPRESSION_MASKEXPRESSION']._serialized_start=29232 - _globals['_EXPRESSION_MASKEXPRESSION']._serialized_end=30804 - _globals['_EXPRESSION_MASKEXPRESSION_SELECT']._serialized_start=29394 - _globals['_EXPRESSION_MASKEXPRESSION_SELECT']._serialized_end=29656 - _globals['_EXPRESSION_MASKEXPRESSION_STRUCTSELECT']._serialized_start=29658 - _globals['_EXPRESSION_MASKEXPRESSION_STRUCTSELECT']._serialized_end=29766 - _globals['_EXPRESSION_MASKEXPRESSION_STRUCTITEM']._serialized_start=29768 - _globals['_EXPRESSION_MASKEXPRESSION_STRUCTITEM']._serialized_end=29879 - _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT']._serialized_start=29882 - _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT']._serialized_end=30408 - _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM']._serialized_start=30078 - _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM']._serialized_end=30408 - _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTELEMENT']._serialized_start=30312 - _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTELEMENT']._serialized_end=30347 - _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTSLICE']._serialized_start=30349 - _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTSLICE']._serialized_end=30400 - _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT']._serialized_start=30411 - _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT']._serialized_end=30804 - _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEY']._serialized_start=30695 - _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEY']._serialized_end=30728 - _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEYEXPRESSION']._serialized_start=30730 - _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEYEXPRESSION']._serialized_end=30794 - _globals['_EXPRESSION_FIELDREFERENCE']._serialized_start=30807 - _globals['_EXPRESSION_FIELDREFERENCE']._serialized_end=31382 - _globals['_EXPRESSION_FIELDREFERENCE_ROOTREFERENCE']._serialized_start=31289 - _globals['_EXPRESSION_FIELDREFERENCE_ROOTREFERENCE']._serialized_end=31304 - _globals['_EXPRESSION_FIELDREFERENCE_OUTERREFERENCE']._serialized_start=31306 - _globals['_EXPRESSION_FIELDREFERENCE_OUTERREFERENCE']._serialized_end=31351 - _globals['_EXPRESSION_SUBQUERY']._serialized_start=31385 - _globals['_EXPRESSION_SUBQUERY']._serialized_end=32816 - _globals['_EXPRESSION_SUBQUERY_SCALAR']._serialized_start=31754 - _globals['_EXPRESSION_SUBQUERY_SCALAR']._serialized_end=31810 - _globals['_EXPRESSION_SUBQUERY_INPREDICATE']._serialized_start=31812 - _globals['_EXPRESSION_SUBQUERY_INPREDICATE']._serialized_end=31938 - _globals['_EXPRESSION_SUBQUERY_SETPREDICATE']._serialized_start=31941 - _globals['_EXPRESSION_SUBQUERY_SETPREDICATE']._serialized_end=32202 - _globals['_EXPRESSION_SUBQUERY_SETPREDICATE_PREDICATEOP']._serialized_start=32109 - _globals['_EXPRESSION_SUBQUERY_SETPREDICATE_PREDICATEOP']._serialized_end=32202 - _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON']._serialized_start=32205 - _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON']._serialized_end=32799 - _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON_COMPARISONOP']._serialized_start=32533 - _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON_COMPARISONOP']._serialized_end=32710 - _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON_REDUCTIONOP']._serialized_start=32712 - _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON_REDUCTIONOP']._serialized_end=32799 - _globals['_DYNAMICPARAMETER']._serialized_start=32830 - _globals['_DYNAMICPARAMETER']._serialized_end=32944 - _globals['_SORTFIELD']._serialized_start=32947 - _globals['_SORTFIELD']._serialized_end=33396 - _globals['_SORTFIELD_SORTDIRECTION']._serialized_start=33162 - _globals['_SORTFIELD_SORTDIRECTION']._serialized_end=33383 - _globals['_AGGREGATEFUNCTION']._serialized_start=33399 - _globals['_AGGREGATEFUNCTION']._serialized_end=34058 - _globals['_AGGREGATEFUNCTION_AGGREGATIONINVOCATION']._serialized_start=33926 - _globals['_AGGREGATEFUNCTION_AGGREGATIONINVOCATION']._serialized_end=34058 - _globals['_REFERENCEREL']._serialized_start=34060 - _globals['_REFERENCEREL']._serialized_end=34115 + _globals['_EXPRESSION']._serialized_end=33551 + _globals['_EXPRESSION_ENUM']._serialized_start=21054 + _globals['_EXPRESSION_ENUM']._serialized_end=21202 + _globals['_EXPRESSION_ENUM_EMPTY']._serialized_start=21174 + _globals['_EXPRESSION_ENUM_EMPTY']._serialized_end=21185 + _globals['_EXPRESSION_LITERAL']._serialized_start=21205 + _globals['_EXPRESSION_LITERAL']._serialized_end=24526 + _globals['_EXPRESSION_LITERAL_VARCHAR']._serialized_start=23005 + _globals['_EXPRESSION_LITERAL_VARCHAR']._serialized_end=23060 + _globals['_EXPRESSION_LITERAL_DECIMAL']._serialized_start=23062 + _globals['_EXPRESSION_LITERAL_DECIMAL']._serialized_end=23145 + _globals['_EXPRESSION_LITERAL_PRECISIONTIME']._serialized_start=23147 + _globals['_EXPRESSION_LITERAL_PRECISIONTIME']._serialized_end=23214 + _globals['_EXPRESSION_LITERAL_PRECISIONTIMESTAMP']._serialized_start=23216 + _globals['_EXPRESSION_LITERAL_PRECISIONTIMESTAMP']._serialized_end=23288 + _globals['_EXPRESSION_LITERAL_MAP']._serialized_start=23291 + _globals['_EXPRESSION_LITERAL_MAP']._serialized_end=23516 + _globals['_EXPRESSION_LITERAL_MAP_KEYVALUE']._serialized_start=23384 + _globals['_EXPRESSION_LITERAL_MAP_KEYVALUE']._serialized_end=23516 + _globals['_EXPRESSION_LITERAL_INTERVALYEARTOMONTH']._serialized_start=23518 + _globals['_EXPRESSION_LITERAL_INTERVALYEARTOMONTH']._serialized_end=23585 + _globals['_EXPRESSION_LITERAL_INTERVALDAYTOSECOND']._serialized_start=23588 + _globals['_EXPRESSION_LITERAL_INTERVALDAYTOSECOND']._serialized_end=23779 + _globals['_EXPRESSION_LITERAL_INTERVALCOMPOUND']._serialized_start=23782 + _globals['_EXPRESSION_LITERAL_INTERVALCOMPOUND']._serialized_end=24028 + _globals['_EXPRESSION_LITERAL_STRUCT']._serialized_start=24030 + _globals['_EXPRESSION_LITERAL_STRUCT']._serialized_end=24103 + _globals['_EXPRESSION_LITERAL_LIST']._serialized_start=24105 + _globals['_EXPRESSION_LITERAL_LIST']._serialized_end=24176 + _globals['_EXPRESSION_LITERAL_USERDEFINED']._serialized_start=24179 + _globals['_EXPRESSION_LITERAL_USERDEFINED']._serialized_end=24510 + _globals['_EXPRESSION_NESTED']._serialized_start=24529 + _globals['_EXPRESSION_NESTED']._serialized_end=25184 + _globals['_EXPRESSION_NESTED_MAP']._serialized_start=24830 + _globals['_EXPRESSION_NESTED_MAP']._serialized_end=25037 + _globals['_EXPRESSION_NESTED_MAP_KEYVALUE']._serialized_start=24921 + _globals['_EXPRESSION_NESTED_MAP_KEYVALUE']._serialized_end=25037 + _globals['_EXPRESSION_NESTED_STRUCT']._serialized_start=25039 + _globals['_EXPRESSION_NESTED_STRUCT']._serialized_end=25104 + _globals['_EXPRESSION_NESTED_LIST']._serialized_start=25106 + _globals['_EXPRESSION_NESTED_LIST']._serialized_end=25169 + _globals['_EXPRESSION_LAMBDA']._serialized_start=25186 + _globals['_EXPRESSION_LAMBDA']._serialized_end=25313 + _globals['_EXPRESSION_LAMBDAINVOCATION']._serialized_start=25316 + _globals['_EXPRESSION_LAMBDAINVOCATION']._serialized_end=25475 + _globals['_EXPRESSION_SCALARFUNCTION']._serialized_start=25478 + _globals['_EXPRESSION_SCALARFUNCTION']._serialized_end=25790 + _globals['_EXPRESSION_WINDOWFUNCTION']._serialized_start=25793 + _globals['_EXPRESSION_WINDOWFUNCTION']._serialized_end=27240 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUND']._serialized_start=26648 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUND']._serialized_end=27152 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_PRECEDING']._serialized_start=27045 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_PRECEDING']._serialized_end=27080 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_FOLLOWING']._serialized_start=27082 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_FOLLOWING']._serialized_end=27117 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_CURRENTROW']._serialized_start=27119 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_CURRENTROW']._serialized_end=27131 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_UNBOUNDED']._serialized_start=27133 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUND_UNBOUNDED']._serialized_end=27144 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUNDSTYPE']._serialized_start=27154 + _globals['_EXPRESSION_WINDOWFUNCTION_BOUNDSTYPE']._serialized_end=27240 + _globals['_EXPRESSION_IFTHEN']._serialized_start=27243 + _globals['_EXPRESSION_IFTHEN']._serialized_end=27485 + _globals['_EXPRESSION_IFTHEN_IFCLAUSE']._serialized_start=27373 + _globals['_EXPRESSION_IFTHEN_IFCLAUSE']._serialized_end=27485 + _globals['_EXPRESSION_CAST']._serialized_start=27488 + _globals['_EXPRESSION_CAST']._serialized_end=27818 + _globals['_EXPRESSION_CAST_FAILUREBEHAVIOR']._serialized_start=27695 + _globals['_EXPRESSION_CAST_FAILUREBEHAVIOR']._serialized_end=27818 + _globals['_EXPRESSION_SWITCHEXPRESSION']._serialized_start=27821 + _globals['_EXPRESSION_SWITCHEXPRESSION']._serialized_end=28144 + _globals['_EXPRESSION_SWITCHEXPRESSION_IFVALUE']._serialized_start=28025 + _globals['_EXPRESSION_SWITCHEXPRESSION_IFVALUE']._serialized_end=28144 + _globals['_EXPRESSION_SINGULARORLIST']._serialized_start=28147 + _globals['_EXPRESSION_SINGULARORLIST']._serialized_end=28277 + _globals['_EXPRESSION_MULTIORLIST']._serialized_start=28280 + _globals['_EXPRESSION_MULTIORLIST']._serialized_end=28493 + _globals['_EXPRESSION_MULTIORLIST_RECORD']._serialized_start=28428 + _globals['_EXPRESSION_MULTIORLIST_RECORD']._serialized_end=28493 + _globals['_EXPRESSION_EMBEDDEDFUNCTION']._serialized_start=28496 + _globals['_EXPRESSION_EMBEDDEDFUNCTION']._serialized_end=29067 + _globals['_EXPRESSION_EMBEDDEDFUNCTION_PYTHONPICKLEFUNCTION']._serialized_start=28890 + _globals['_EXPRESSION_EMBEDDEDFUNCTION_PYTHONPICKLEFUNCTION']._serialized_end=28976 + _globals['_EXPRESSION_EMBEDDEDFUNCTION_WEBASSEMBLYFUNCTION']._serialized_start=28978 + _globals['_EXPRESSION_EMBEDDEDFUNCTION_WEBASSEMBLYFUNCTION']._serialized_end=29059 + _globals['_EXPRESSION_REFERENCESEGMENT']._serialized_start=29070 + _globals['_EXPRESSION_REFERENCESEGMENT']._serialized_end=29757 + _globals['_EXPRESSION_REFERENCESEGMENT_MAPKEY']._serialized_start=29373 + _globals['_EXPRESSION_REFERENCESEGMENT_MAPKEY']._serialized_end=29519 + _globals['_EXPRESSION_REFERENCESEGMENT_STRUCTFIELD']._serialized_start=29521 + _globals['_EXPRESSION_REFERENCESEGMENT_STRUCTFIELD']._serialized_end=29628 + _globals['_EXPRESSION_REFERENCESEGMENT_LISTELEMENT']._serialized_start=29630 + _globals['_EXPRESSION_REFERENCESEGMENT_LISTELEMENT']._serialized_end=29739 + _globals['_EXPRESSION_MASKEXPRESSION']._serialized_start=29760 + _globals['_EXPRESSION_MASKEXPRESSION']._serialized_end=31332 + _globals['_EXPRESSION_MASKEXPRESSION_SELECT']._serialized_start=29922 + _globals['_EXPRESSION_MASKEXPRESSION_SELECT']._serialized_end=30184 + _globals['_EXPRESSION_MASKEXPRESSION_STRUCTSELECT']._serialized_start=30186 + _globals['_EXPRESSION_MASKEXPRESSION_STRUCTSELECT']._serialized_end=30294 + _globals['_EXPRESSION_MASKEXPRESSION_STRUCTITEM']._serialized_start=30296 + _globals['_EXPRESSION_MASKEXPRESSION_STRUCTITEM']._serialized_end=30407 + _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT']._serialized_start=30410 + _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT']._serialized_end=30936 + _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM']._serialized_start=30606 + _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM']._serialized_end=30936 + _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTELEMENT']._serialized_start=30840 + _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTELEMENT']._serialized_end=30875 + _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTSLICE']._serialized_start=30877 + _globals['_EXPRESSION_MASKEXPRESSION_LISTSELECT_LISTSELECTITEM_LISTSLICE']._serialized_end=30928 + _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT']._serialized_start=30939 + _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT']._serialized_end=31332 + _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEY']._serialized_start=31223 + _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEY']._serialized_end=31256 + _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEYEXPRESSION']._serialized_start=31258 + _globals['_EXPRESSION_MASKEXPRESSION_MAPSELECT_MAPKEYEXPRESSION']._serialized_end=31322 + _globals['_EXPRESSION_FIELDREFERENCE']._serialized_start=31335 + _globals['_EXPRESSION_FIELDREFERENCE']._serialized_end=32105 + _globals['_EXPRESSION_FIELDREFERENCE_ROOTREFERENCE']._serialized_start=31955 + _globals['_EXPRESSION_FIELDREFERENCE_ROOTREFERENCE']._serialized_end=31970 + _globals['_EXPRESSION_FIELDREFERENCE_OUTERREFERENCE']._serialized_start=31972 + _globals['_EXPRESSION_FIELDREFERENCE_OUTERREFERENCE']._serialized_end=32017 + _globals['_EXPRESSION_FIELDREFERENCE_LAMBDAPARAMETERREFERENCE']._serialized_start=32019 + _globals['_EXPRESSION_FIELDREFERENCE_LAMBDAPARAMETERREFERENCE']._serialized_end=32074 + _globals['_EXPRESSION_SUBQUERY']._serialized_start=32108 + _globals['_EXPRESSION_SUBQUERY']._serialized_end=33539 + _globals['_EXPRESSION_SUBQUERY_SCALAR']._serialized_start=32477 + _globals['_EXPRESSION_SUBQUERY_SCALAR']._serialized_end=32533 + _globals['_EXPRESSION_SUBQUERY_INPREDICATE']._serialized_start=32535 + _globals['_EXPRESSION_SUBQUERY_INPREDICATE']._serialized_end=32661 + _globals['_EXPRESSION_SUBQUERY_SETPREDICATE']._serialized_start=32664 + _globals['_EXPRESSION_SUBQUERY_SETPREDICATE']._serialized_end=32925 + _globals['_EXPRESSION_SUBQUERY_SETPREDICATE_PREDICATEOP']._serialized_start=32832 + _globals['_EXPRESSION_SUBQUERY_SETPREDICATE_PREDICATEOP']._serialized_end=32925 + _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON']._serialized_start=32928 + _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON']._serialized_end=33522 + _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON_COMPARISONOP']._serialized_start=33256 + _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON_COMPARISONOP']._serialized_end=33433 + _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON_REDUCTIONOP']._serialized_start=33435 + _globals['_EXPRESSION_SUBQUERY_SETCOMPARISON_REDUCTIONOP']._serialized_end=33522 + _globals['_DYNAMICPARAMETER']._serialized_start=33553 + _globals['_DYNAMICPARAMETER']._serialized_end=33667 + _globals['_SORTFIELD']._serialized_start=33670 + _globals['_SORTFIELD']._serialized_end=34119 + _globals['_SORTFIELD_SORTDIRECTION']._serialized_start=33885 + _globals['_SORTFIELD_SORTDIRECTION']._serialized_end=34106 + _globals['_AGGREGATEFUNCTION']._serialized_start=34122 + _globals['_AGGREGATEFUNCTION']._serialized_end=34781 + _globals['_AGGREGATEFUNCTION_AGGREGATIONINVOCATION']._serialized_start=34649 + _globals['_AGGREGATEFUNCTION_AGGREGATIONINVOCATION']._serialized_end=34781 + _globals['_REFERENCEREL']._serialized_start=34783 + _globals['_REFERENCEREL']._serialized_end=34838 # @@protoc_insertion_point(module_scope) diff --git a/src/substrait/gen/proto/algebra_pb2.pyi b/src/substrait/gen/proto/algebra_pb2.pyi index 9b4205d..919d3a6 100644 --- a/src/substrait/gen/proto/algebra_pb2.pyi +++ b/src/substrait/gen/proto/algebra_pb2.pyi @@ -440,7 +440,7 @@ class ReadRel(google.protobuf.message.Message): @typing.final class LocalFiles(google.protobuf.message.Message): - """Represents a list of files in input of a scan operation""" + """Represents a list of locally-accessible files in input of a scan operation""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -2784,11 +2784,14 @@ class Expression(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor TYPE_REFERENCE_FIELD_NUMBER: builtins.int + TYPE_ALIAS_REFERENCE_FIELD_NUMBER: builtins.int TYPE_PARAMETERS_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int STRUCT_FIELD_NUMBER: builtins.int type_reference: builtins.int """points to a type_anchor defined in this plan""" + type_alias_reference: builtins.int + """points to a type_alias_anchor defined in this plan.""" @property def type_parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[substrait.gen.proto.type_pb2.Type.Parameter]: """The parameters to be bound to the type class, if the type class is @@ -2807,12 +2810,16 @@ class Expression(google.protobuf.message.Message): self, *, type_reference: builtins.int = ..., + type_alias_reference: builtins.int = ..., type_parameters: collections.abc.Iterable[substrait.gen.proto.type_pb2.Type.Parameter] | None = ..., value: google.protobuf.any_pb2.Any | None = ..., struct: Global___Expression.Literal.Struct | None = ..., ) -> None: ... - def HasField(self, field_name: typing.Literal["struct", b"struct", "val", b"val", "value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["struct", b"struct", "type_parameters", b"type_parameters", "type_reference", b"type_reference", "val", b"val", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["struct", b"struct", "type_alias_reference", b"type_alias_reference", "type_anchor_type", b"type_anchor_type", "type_reference", b"type_reference", "val", b"val", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["struct", b"struct", "type_alias_reference", b"type_alias_reference", "type_anchor_type", b"type_anchor_type", "type_parameters", b"type_parameters", "type_reference", b"type_reference", "val", b"val", "value", b"value"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["type_anchor_type", b"type_anchor_type"]) -> typing.Literal["type_reference", "type_alias_reference"] | None: ... + @typing.overload def WhichOneof(self, oneof_group: typing.Literal["val", b"val"]) -> typing.Literal["value", "struct"] | None: ... BOOLEAN_FIELD_NUMBER: builtins.int @@ -3073,6 +3080,67 @@ class Expression(google.protobuf.message.Message): def ClearField(self, field_name: typing.Literal["list", b"list", "map", b"map", "nested_type", b"nested_type", "nullable", b"nullable", "struct", b"struct", "type_variation_reference", b"type_variation_reference"]) -> None: ... def WhichOneof(self, oneof_group: typing.Literal["nested_type", b"nested_type"]) -> typing.Literal["struct", "list", "map"] | None: ... + @typing.final + class Lambda(google.protobuf.message.Message): + """A lambda expression representing an inline, anonymous function. + Lambda expressions have parameters and a body expression that can reference + those parameters using FieldReference with FieldReference.LambdaParameterReference as the root_type. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PARAMETERS_FIELD_NUMBER: builtins.int + BODY_FIELD_NUMBER: builtins.int + @property + def parameters(self) -> substrait.gen.proto.type_pb2.Type.Struct: + """Parameters this lambda accepts, represented as a struct where each field corresponds + to a parameter. Parameters can be accessed using FieldReference with + FieldReference.LambdaParameterReference as root_type and StructField to select + specific parameters. The struct's nullability must be NULLABILITY_REQUIRED. + """ + + @property + def body(self) -> Global___Expression: + """The lambda body expression. Lambda parameters can be referenced using FieldReference + with FieldReference.LambdaParameterReference as root_type. + """ + + def __init__( + self, + *, + parameters: substrait.gen.proto.type_pb2.Type.Struct | None = ..., + body: Global___Expression | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["body", b"body", "parameters", b"parameters"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["body", b"body", "parameters", b"parameters"]) -> None: ... + + @typing.final + class LambdaInvocation(google.protobuf.message.Message): + """Invokes an inline lambda expression with provided arguments. + Enables immediate invocation patterns like: ((x) -> x * 2)(5) + + The return type is derived from the type of the lambda's body expression. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LAMBDA_FIELD_NUMBER: builtins.int + ARGUMENTS_FIELD_NUMBER: builtins.int + @property + def arguments(self) -> Global___Expression.Nested.Struct: + """Arguments to pass to the lambda, as a struct expression. The struct must have + exactly one Expression field for each lambda parameter, and the expression at + each position must have a type that matches the corresponding parameter type. + """ + + def __init__( + self, + *, + arguments: Global___Expression.Nested.Struct | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["arguments", b"arguments", "lambda", b"lambda"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["arguments", b"arguments", "lambda", b"lambda"]) -> None: ... + @typing.final class ScalarFunction(google.protobuf.message.Message): """A scalar function call.""" @@ -3919,8 +3987,11 @@ class Expression(google.protobuf.message.Message): @typing.final class FieldReference(google.protobuf.message.Message): - """A reference to an inner part of a complex object. Can reference reference a - single element or a masked version of elements + """A reference to data within a structured object, supporting navigation into + nested fields. The root_type specifies the origin of the data (input record, + outer query, lambda parameters, or an arbitrary expression), and the + reference_type specifies how to navigate from that root (either a direct + path to a single element or a mask selecting multiple elements). """ DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -3956,11 +4027,37 @@ class Expression(google.protobuf.message.Message): ) -> None: ... def ClearField(self, field_name: typing.Literal["steps_out", b"steps_out"]) -> None: ... + @typing.final + class LambdaParameterReference(google.protobuf.message.Message): + """A reference to a lambda parameter within a lambda body expression. + This identifies which lambda scope to reference, treating its parameters + as a struct. Use FieldReference with this as root_type to access specific + parameters or nested fields within parameters. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STEPS_OUT_FIELD_NUMBER: builtins.int + steps_out: builtins.int + """Number of lambda boundaries to traverse up for this reference. + For nested lambdas: + 0 = innermost lambda (current lambda's parameters as a struct) + 1 = one lambda level out (outer lambda's parameters as a struct) + 2 = two lambda levels out, etc. + """ + def __init__( + self, + *, + steps_out: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["steps_out", b"steps_out"]) -> None: ... + DIRECT_REFERENCE_FIELD_NUMBER: builtins.int MASKED_REFERENCE_FIELD_NUMBER: builtins.int EXPRESSION_FIELD_NUMBER: builtins.int ROOT_REFERENCE_FIELD_NUMBER: builtins.int OUTER_REFERENCE_FIELD_NUMBER: builtins.int + LAMBDA_PARAMETER_REFERENCE_FIELD_NUMBER: builtins.int @property def direct_reference(self) -> Global___Expression.ReferenceSegment: ... @property @@ -3971,6 +4068,8 @@ class Expression(google.protobuf.message.Message): def root_reference(self) -> Global___Expression.FieldReference.RootReference: ... @property def outer_reference(self) -> Global___Expression.FieldReference.OuterReference: ... + @property + def lambda_parameter_reference(self) -> Global___Expression.FieldReference.LambdaParameterReference: ... def __init__( self, *, @@ -3979,13 +4078,14 @@ class Expression(google.protobuf.message.Message): expression: Global___Expression | None = ..., root_reference: Global___Expression.FieldReference.RootReference | None = ..., outer_reference: Global___Expression.FieldReference.OuterReference | None = ..., + lambda_parameter_reference: Global___Expression.FieldReference.LambdaParameterReference | None = ..., ) -> None: ... - def HasField(self, field_name: typing.Literal["direct_reference", b"direct_reference", "expression", b"expression", "masked_reference", b"masked_reference", "outer_reference", b"outer_reference", "reference_type", b"reference_type", "root_reference", b"root_reference", "root_type", b"root_type"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["direct_reference", b"direct_reference", "expression", b"expression", "masked_reference", b"masked_reference", "outer_reference", b"outer_reference", "reference_type", b"reference_type", "root_reference", b"root_reference", "root_type", b"root_type"]) -> None: ... + def HasField(self, field_name: typing.Literal["direct_reference", b"direct_reference", "expression", b"expression", "lambda_parameter_reference", b"lambda_parameter_reference", "masked_reference", b"masked_reference", "outer_reference", b"outer_reference", "reference_type", b"reference_type", "root_reference", b"root_reference", "root_type", b"root_type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["direct_reference", b"direct_reference", "expression", b"expression", "lambda_parameter_reference", b"lambda_parameter_reference", "masked_reference", b"masked_reference", "outer_reference", b"outer_reference", "reference_type", b"reference_type", "root_reference", b"root_reference", "root_type", b"root_type"]) -> None: ... @typing.overload def WhichOneof(self, oneof_group: typing.Literal["reference_type", b"reference_type"]) -> typing.Literal["direct_reference", "masked_reference"] | None: ... @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["root_type", b"root_type"]) -> typing.Literal["expression", "root_reference", "outer_reference"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["root_type", b"root_type"]) -> typing.Literal["expression", "root_reference", "outer_reference", "lambda_parameter_reference"] | None: ... @typing.final class Subquery(google.protobuf.message.Message): @@ -4199,6 +4299,8 @@ class Expression(google.protobuf.message.Message): SUBQUERY_FIELD_NUMBER: builtins.int NESTED_FIELD_NUMBER: builtins.int DYNAMIC_PARAMETER_FIELD_NUMBER: builtins.int + LAMBDA_FIELD_NUMBER: builtins.int + LAMBDA_INVOCATION_FIELD_NUMBER: builtins.int ENUM_FIELD_NUMBER: builtins.int @property def literal(self) -> Global___Expression.Literal: ... @@ -4225,6 +4327,8 @@ class Expression(google.protobuf.message.Message): @property def dynamic_parameter(self) -> Global___DynamicParameter: ... @property + def lambda_invocation(self) -> Global___Expression.LambdaInvocation: ... + @property def enum(self) -> Global___Expression.Enum: """deprecated: enum literals are only sensible in the context of function arguments, for which FunctionArgument should now be @@ -4246,11 +4350,12 @@ class Expression(google.protobuf.message.Message): subquery: Global___Expression.Subquery | None = ..., nested: Global___Expression.Nested | None = ..., dynamic_parameter: Global___DynamicParameter | None = ..., + lambda_invocation: Global___Expression.LambdaInvocation | None = ..., enum: Global___Expression.Enum | None = ..., ) -> None: ... - def HasField(self, field_name: typing.Literal["cast", b"cast", "dynamic_parameter", b"dynamic_parameter", "enum", b"enum", "if_then", b"if_then", "literal", b"literal", "multi_or_list", b"multi_or_list", "nested", b"nested", "rex_type", b"rex_type", "scalar_function", b"scalar_function", "selection", b"selection", "singular_or_list", b"singular_or_list", "subquery", b"subquery", "switch_expression", b"switch_expression", "window_function", b"window_function"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["cast", b"cast", "dynamic_parameter", b"dynamic_parameter", "enum", b"enum", "if_then", b"if_then", "literal", b"literal", "multi_or_list", b"multi_or_list", "nested", b"nested", "rex_type", b"rex_type", "scalar_function", b"scalar_function", "selection", b"selection", "singular_or_list", b"singular_or_list", "subquery", b"subquery", "switch_expression", b"switch_expression", "window_function", b"window_function"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["rex_type", b"rex_type"]) -> typing.Literal["literal", "selection", "scalar_function", "window_function", "if_then", "switch_expression", "singular_or_list", "multi_or_list", "cast", "subquery", "nested", "dynamic_parameter", "enum"] | None: ... + def HasField(self, field_name: typing.Literal["cast", b"cast", "dynamic_parameter", b"dynamic_parameter", "enum", b"enum", "if_then", b"if_then", "lambda", b"lambda", "lambda_invocation", b"lambda_invocation", "literal", b"literal", "multi_or_list", b"multi_or_list", "nested", b"nested", "rex_type", b"rex_type", "scalar_function", b"scalar_function", "selection", b"selection", "singular_or_list", b"singular_or_list", "subquery", b"subquery", "switch_expression", b"switch_expression", "window_function", b"window_function"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["cast", b"cast", "dynamic_parameter", b"dynamic_parameter", "enum", b"enum", "if_then", b"if_then", "lambda", b"lambda", "lambda_invocation", b"lambda_invocation", "literal", b"literal", "multi_or_list", b"multi_or_list", "nested", b"nested", "rex_type", b"rex_type", "scalar_function", b"scalar_function", "selection", b"selection", "singular_or_list", b"singular_or_list", "subquery", b"subquery", "switch_expression", b"switch_expression", "window_function", b"window_function"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["rex_type", b"rex_type"]) -> typing.Literal["literal", "selection", "scalar_function", "window_function", "if_then", "switch_expression", "singular_or_list", "multi_or_list", "cast", "subquery", "nested", "dynamic_parameter", "lambda", "lambda_invocation", "enum"] | None: ... Global___Expression: typing_extensions.TypeAlias = Expression diff --git a/src/substrait/gen/proto/extensions/extensions_pb2.pyi b/src/substrait/gen/proto/extensions/extensions_pb2.pyi index 8feb2bc..8f4a41d 100644 --- a/src/substrait/gen/proto/extensions/extensions_pb2.pyi +++ b/src/substrait/gen/proto/extensions/extensions_pb2.pyi @@ -173,7 +173,7 @@ class SimpleExtensionDeclaration(google.protobuf.message.Message): specific function """ name: builtins.str - """A function signature compound name""" + """A function signature""" def __init__( self, *, diff --git a/src/substrait/gen/proto/type_pb2.py b/src/substrait/gen/proto/type_pb2.py index ddabbda..2d6d6b1 100644 --- a/src/substrait/gen/proto/type_pb2.py +++ b/src/substrait/gen/proto/type_pb2.py @@ -25,7 +25,7 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1esubstrait/gen/proto/type.proto\x12\x13substrait.gen.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xbb\x37\n\x04Type\x12\x37\n\x04\x62ool\x18\x01 \x01(\x0b\x32!.substrait.gen.proto.Type.BooleanH\x00R\x04\x62ool\x12.\n\x02i8\x18\x02 \x01(\x0b\x32\x1c.substrait.gen.proto.Type.I8H\x00R\x02i8\x12\x31\n\x03i16\x18\x03 \x01(\x0b\x32\x1d.substrait.gen.proto.Type.I16H\x00R\x03i16\x12\x31\n\x03i32\x18\x05 \x01(\x0b\x32\x1d.substrait.gen.proto.Type.I32H\x00R\x03i32\x12\x31\n\x03i64\x18\x07 \x01(\x0b\x32\x1d.substrait.gen.proto.Type.I64H\x00R\x03i64\x12\x34\n\x04\x66p32\x18\n \x01(\x0b\x32\x1e.substrait.gen.proto.Type.FP32H\x00R\x04\x66p32\x12\x34\n\x04\x66p64\x18\x0b \x01(\x0b\x32\x1e.substrait.gen.proto.Type.FP64H\x00R\x04\x66p64\x12:\n\x06string\x18\x0c \x01(\x0b\x32 .substrait.gen.proto.Type.StringH\x00R\x06string\x12:\n\x06\x62inary\x18\r \x01(\x0b\x32 .substrait.gen.proto.Type.BinaryH\x00R\x06\x62inary\x12G\n\ttimestamp\x18\x0e \x01(\x0b\x32#.substrait.gen.proto.Type.TimestampB\x02\x18\x01H\x00R\ttimestamp\x12\x34\n\x04\x64\x61te\x18\x10 \x01(\x0b\x32\x1e.substrait.gen.proto.Type.DateH\x00R\x04\x64\x61te\x12\x34\n\x04time\x18\x11 \x01(\x0b\x32\x1e.substrait.gen.proto.Type.TimeH\x00R\x04time\x12M\n\rinterval_year\x18\x13 \x01(\x0b\x32&.substrait.gen.proto.Type.IntervalYearH\x00R\x0cintervalYear\x12J\n\x0cinterval_day\x18\x14 \x01(\x0b\x32%.substrait.gen.proto.Type.IntervalDayH\x00R\x0bintervalDay\x12Y\n\x11interval_compound\x18# \x01(\x0b\x32*.substrait.gen.proto.Type.IntervalCompoundH\x00R\x10intervalCompound\x12N\n\x0ctimestamp_tz\x18\x1d \x01(\x0b\x32%.substrait.gen.proto.Type.TimestampTZB\x02\x18\x01H\x00R\x0btimestampTz\x12\x34\n\x04uuid\x18 \x01(\x0b\x32\x1e.substrait.gen.proto.Type.UUIDH\x00R\x04uuid\x12\x44\n\nfixed_char\x18\x15 \x01(\x0b\x32#.substrait.gen.proto.Type.FixedCharH\x00R\tfixedChar\x12=\n\x07varchar\x18\x16 \x01(\x0b\x32!.substrait.gen.proto.Type.VarCharH\x00R\x07varchar\x12J\n\x0c\x66ixed_binary\x18\x17 \x01(\x0b\x32%.substrait.gen.proto.Type.FixedBinaryH\x00R\x0b\x66ixedBinary\x12=\n\x07\x64\x65\x63imal\x18\x18 \x01(\x0b\x32!.substrait.gen.proto.Type.DecimalH\x00R\x07\x64\x65\x63imal\x12P\n\x0eprecision_time\x18$ \x01(\x0b\x32\'.substrait.gen.proto.Type.PrecisionTimeH\x00R\rprecisionTime\x12_\n\x13precision_timestamp\x18! \x01(\x0b\x32,.substrait.gen.proto.Type.PrecisionTimestampH\x00R\x12precisionTimestamp\x12\x66\n\x16precision_timestamp_tz\x18\" \x01(\x0b\x32..substrait.gen.proto.Type.PrecisionTimestampTZH\x00R\x14precisionTimestampTz\x12:\n\x06struct\x18\x19 \x01(\x0b\x32 .substrait.gen.proto.Type.StructH\x00R\x06struct\x12\x34\n\x04list\x18\x1b \x01(\x0b\x32\x1e.substrait.gen.proto.Type.ListH\x00R\x04list\x12\x31\n\x03map\x18\x1c \x01(\x0b\x32\x1d.substrait.gen.proto.Type.MapH\x00R\x03map\x12J\n\x0cuser_defined\x18\x1e \x01(\x0b\x32%.substrait.gen.proto.Type.UserDefinedH\x00R\x0buserDefined\x12\x43\n\x1buser_defined_type_reference\x18\x1f \x01(\rB\x02\x18\x01H\x00R\x18userDefinedTypeReference\x12\x44\n\x05\x61lias\x18% \x01(\x0b\x32,.substrait.gen.proto.Type.TypeAliasReferenceH\x00R\x05\x61lias\x1a\x8c\x01\n\x07\x42oolean\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x87\x01\n\x02I8\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x88\x01\n\x03I16\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x88\x01\n\x03I32\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x88\x01\n\x03I64\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x89\x01\n\x04\x46P32\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x89\x01\n\x04\x46P64\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x8b\x01\n\x06String\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x8b\x01\n\x06\x42inary\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x8e\x01\n\tTimestamp\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x89\x01\n\x04\x44\x61te\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x89\x01\n\x04Time\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x90\x01\n\x0bTimestampTZ\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x91\x01\n\x0cIntervalYear\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xc1\x01\n\x0bIntervalDay\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x12!\n\tprecision\x18\x03 \x01(\x05H\x00R\tprecision\x88\x01\x01\x42\x0c\n\n_precision\x1a\xb3\x01\n\x10IntervalCompound\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x12\x1c\n\tprecision\x18\x03 \x01(\x05R\tprecision\x1a\x89\x01\n\x04UUID\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xa6\x01\n\tFixedChar\x12\x16\n\x06length\x18\x01 \x01(\x05R\x06length\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xa4\x01\n\x07VarChar\x12\x16\n\x06length\x18\x01 \x01(\x05R\x06length\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xa8\x01\n\x0b\x46ixedBinary\x12\x16\n\x06length\x18\x01 \x01(\x05R\x06length\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xc0\x01\n\x07\x44\x65\x63imal\x12\x14\n\x05scale\x18\x01 \x01(\x05R\x05scale\x12\x1c\n\tprecision\x18\x02 \x01(\x05R\tprecision\x12\x38\n\x18type_variation_reference\x18\x03 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x04 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xb0\x01\n\rPrecisionTime\x12\x1c\n\tprecision\x18\x01 \x01(\x05R\tprecision\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xb5\x01\n\x12PrecisionTimestamp\x12\x1c\n\tprecision\x18\x01 \x01(\x05R\tprecision\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xb7\x01\n\x14PrecisionTimestampTZ\x12\x1c\n\tprecision\x18\x01 \x01(\x05R\tprecision\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xbc\x01\n\x06Struct\x12/\n\x05types\x18\x01 \x03(\x0b\x32\x19.substrait.gen.proto.TypeR\x05types\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xb8\x01\n\x04List\x12-\n\x04type\x18\x01 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x04type\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xe6\x01\n\x03Map\x12+\n\x03key\x18\x01 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x03key\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x05value\x12\x38\n\x18type_variation_reference\x18\x03 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x04 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x85\x02\n\x0bUserDefined\x12%\n\x0etype_reference\x18\x01 \x01(\rR\rtypeReference\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x12L\n\x0ftype_parameters\x18\x04 \x03(\x0b\x32#.substrait.gen.proto.Type.ParameterR\x0etypeParameters\x1a\xe8\x01\n\tParameter\x12,\n\x04null\x18\x01 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00R\x04null\x12\x38\n\tdata_type\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeH\x00R\x08\x64\x61taType\x12\x1a\n\x07\x62oolean\x18\x03 \x01(\x08H\x00R\x07\x62oolean\x12\x1a\n\x07integer\x18\x04 \x01(\x03H\x00R\x07integer\x12\x14\n\x04\x65num\x18\x05 \x01(\tH\x00R\x04\x65num\x12\x18\n\x06string\x18\x06 \x01(\tH\x00R\x06stringB\x0b\n\tparameter\x1a\x8f\x01\n\x12TypeAliasReference\x12\x30\n\x14type_alias_reference\x18\x01 \x01(\rR\x12typeAliasReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\"^\n\x0bNullability\x12\x1b\n\x17NULLABILITY_UNSPECIFIED\x10\x00\x12\x18\n\x14NULLABILITY_NULLABLE\x10\x01\x12\x18\n\x14NULLABILITY_REQUIRED\x10\x02\x42\x06\n\x04kind\"f\n\tTypeAlias\x12*\n\x11type_alias_anchor\x18\x01 \x01(\rR\x0ftypeAliasAnchor\x12-\n\x04type\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x04type\"]\n\x0bNamedStruct\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names\x12\x38\n\x06struct\x18\x02 \x01(\x0b\x32 .substrait.gen.proto.Type.StructR\x06structB?\n\x1cio.substrait.gen.proto.protoP\x01\xaa\x02\x1cSubstrait.Gen.Proto.Protobufb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1esubstrait/gen/proto/type.proto\x12\x13substrait.gen.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xc3\x39\n\x04Type\x12\x37\n\x04\x62ool\x18\x01 \x01(\x0b\x32!.substrait.gen.proto.Type.BooleanH\x00R\x04\x62ool\x12.\n\x02i8\x18\x02 \x01(\x0b\x32\x1c.substrait.gen.proto.Type.I8H\x00R\x02i8\x12\x31\n\x03i16\x18\x03 \x01(\x0b\x32\x1d.substrait.gen.proto.Type.I16H\x00R\x03i16\x12\x31\n\x03i32\x18\x05 \x01(\x0b\x32\x1d.substrait.gen.proto.Type.I32H\x00R\x03i32\x12\x31\n\x03i64\x18\x07 \x01(\x0b\x32\x1d.substrait.gen.proto.Type.I64H\x00R\x03i64\x12\x34\n\x04\x66p32\x18\n \x01(\x0b\x32\x1e.substrait.gen.proto.Type.FP32H\x00R\x04\x66p32\x12\x34\n\x04\x66p64\x18\x0b \x01(\x0b\x32\x1e.substrait.gen.proto.Type.FP64H\x00R\x04\x66p64\x12:\n\x06string\x18\x0c \x01(\x0b\x32 .substrait.gen.proto.Type.StringH\x00R\x06string\x12:\n\x06\x62inary\x18\r \x01(\x0b\x32 .substrait.gen.proto.Type.BinaryH\x00R\x06\x62inary\x12G\n\ttimestamp\x18\x0e \x01(\x0b\x32#.substrait.gen.proto.Type.TimestampB\x02\x18\x01H\x00R\ttimestamp\x12\x34\n\x04\x64\x61te\x18\x10 \x01(\x0b\x32\x1e.substrait.gen.proto.Type.DateH\x00R\x04\x64\x61te\x12\x34\n\x04time\x18\x11 \x01(\x0b\x32\x1e.substrait.gen.proto.Type.TimeH\x00R\x04time\x12M\n\rinterval_year\x18\x13 \x01(\x0b\x32&.substrait.gen.proto.Type.IntervalYearH\x00R\x0cintervalYear\x12J\n\x0cinterval_day\x18\x14 \x01(\x0b\x32%.substrait.gen.proto.Type.IntervalDayH\x00R\x0bintervalDay\x12Y\n\x11interval_compound\x18# \x01(\x0b\x32*.substrait.gen.proto.Type.IntervalCompoundH\x00R\x10intervalCompound\x12N\n\x0ctimestamp_tz\x18\x1d \x01(\x0b\x32%.substrait.gen.proto.Type.TimestampTZB\x02\x18\x01H\x00R\x0btimestampTz\x12\x34\n\x04uuid\x18 \x01(\x0b\x32\x1e.substrait.gen.proto.Type.UUIDH\x00R\x04uuid\x12\x44\n\nfixed_char\x18\x15 \x01(\x0b\x32#.substrait.gen.proto.Type.FixedCharH\x00R\tfixedChar\x12=\n\x07varchar\x18\x16 \x01(\x0b\x32!.substrait.gen.proto.Type.VarCharH\x00R\x07varchar\x12J\n\x0c\x66ixed_binary\x18\x17 \x01(\x0b\x32%.substrait.gen.proto.Type.FixedBinaryH\x00R\x0b\x66ixedBinary\x12=\n\x07\x64\x65\x63imal\x18\x18 \x01(\x0b\x32!.substrait.gen.proto.Type.DecimalH\x00R\x07\x64\x65\x63imal\x12P\n\x0eprecision_time\x18$ \x01(\x0b\x32\'.substrait.gen.proto.Type.PrecisionTimeH\x00R\rprecisionTime\x12_\n\x13precision_timestamp\x18! \x01(\x0b\x32,.substrait.gen.proto.Type.PrecisionTimestampH\x00R\x12precisionTimestamp\x12\x66\n\x16precision_timestamp_tz\x18\" \x01(\x0b\x32..substrait.gen.proto.Type.PrecisionTimestampTZH\x00R\x14precisionTimestampTz\x12:\n\x06struct\x18\x19 \x01(\x0b\x32 .substrait.gen.proto.Type.StructH\x00R\x06struct\x12\x34\n\x04list\x18\x1b \x01(\x0b\x32\x1e.substrait.gen.proto.Type.ListH\x00R\x04list\x12\x31\n\x03map\x18\x1c \x01(\x0b\x32\x1d.substrait.gen.proto.Type.MapH\x00R\x03map\x12\x34\n\x04\x66unc\x18& \x01(\x0b\x32\x1e.substrait.gen.proto.Type.FuncH\x00R\x04\x66unc\x12J\n\x0cuser_defined\x18\x1e \x01(\x0b\x32%.substrait.gen.proto.Type.UserDefinedH\x00R\x0buserDefined\x12\x43\n\x1buser_defined_type_reference\x18\x1f \x01(\rB\x02\x18\x01H\x00R\x18userDefinedTypeReference\x12\x44\n\x05\x61lias\x18% \x01(\x0b\x32,.substrait.gen.proto.Type.TypeAliasReferenceH\x00R\x05\x61lias\x1a\x8c\x01\n\x07\x42oolean\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x87\x01\n\x02I8\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x88\x01\n\x03I16\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x88\x01\n\x03I32\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x88\x01\n\x03I64\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x89\x01\n\x04\x46P32\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x89\x01\n\x04\x46P64\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x8b\x01\n\x06String\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x8b\x01\n\x06\x42inary\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x8e\x01\n\tTimestamp\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x89\x01\n\x04\x44\x61te\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x89\x01\n\x04Time\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x90\x01\n\x0bTimestampTZ\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x91\x01\n\x0cIntervalYear\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xc1\x01\n\x0bIntervalDay\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x12!\n\tprecision\x18\x03 \x01(\x05H\x00R\tprecision\x88\x01\x01\x42\x0c\n\n_precision\x1a\xb3\x01\n\x10IntervalCompound\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x12\x1c\n\tprecision\x18\x03 \x01(\x05R\tprecision\x1a\x89\x01\n\x04UUID\x12\x38\n\x18type_variation_reference\x18\x01 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xa6\x01\n\tFixedChar\x12\x16\n\x06length\x18\x01 \x01(\x05R\x06length\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xa4\x01\n\x07VarChar\x12\x16\n\x06length\x18\x01 \x01(\x05R\x06length\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xa8\x01\n\x0b\x46ixedBinary\x12\x16\n\x06length\x18\x01 \x01(\x05R\x06length\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xc0\x01\n\x07\x44\x65\x63imal\x12\x14\n\x05scale\x18\x01 \x01(\x05R\x05scale\x12\x1c\n\tprecision\x18\x02 \x01(\x05R\tprecision\x12\x38\n\x18type_variation_reference\x18\x03 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x04 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xb0\x01\n\rPrecisionTime\x12\x1c\n\tprecision\x18\x01 \x01(\x05R\tprecision\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xb5\x01\n\x12PrecisionTimestamp\x12\x1c\n\tprecision\x18\x01 \x01(\x05R\tprecision\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xb7\x01\n\x14PrecisionTimestampTZ\x12\x1c\n\tprecision\x18\x01 \x01(\x05R\tprecision\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xbc\x01\n\x06Struct\x12/\n\x05types\x18\x01 \x03(\x0b\x32\x19.substrait.gen.proto.TypeR\x05types\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xb8\x01\n\x04List\x12-\n\x04type\x18\x01 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x04type\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xe6\x01\n\x03Map\x12+\n\x03key\x18\x01 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x03key\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x05value\x12\x38\n\x18type_variation_reference\x18\x03 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x04 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\xcf\x01\n\x04\x46unc\x12\x42\n\x0fparameter_types\x18\x01 \x03(\x0b\x32\x19.substrait.gen.proto.TypeR\x0eparameterTypes\x12:\n\x0breturn_type\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\nreturnType\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x1a\x85\x02\n\x0bUserDefined\x12%\n\x0etype_reference\x18\x01 \x01(\rR\rtypeReference\x12\x38\n\x18type_variation_reference\x18\x02 \x01(\rR\x16typeVariationReference\x12G\n\x0bnullability\x18\x03 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\x12L\n\x0ftype_parameters\x18\x04 \x03(\x0b\x32#.substrait.gen.proto.Type.ParameterR\x0etypeParameters\x1a\xe8\x01\n\tParameter\x12,\n\x04null\x18\x01 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00R\x04null\x12\x38\n\tdata_type\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeH\x00R\x08\x64\x61taType\x12\x1a\n\x07\x62oolean\x18\x03 \x01(\x08H\x00R\x07\x62oolean\x12\x1a\n\x07integer\x18\x04 \x01(\x03H\x00R\x07integer\x12\x14\n\x04\x65num\x18\x05 \x01(\tH\x00R\x04\x65num\x12\x18\n\x06string\x18\x06 \x01(\tH\x00R\x06stringB\x0b\n\tparameter\x1a\x8f\x01\n\x12TypeAliasReference\x12\x30\n\x14type_alias_reference\x18\x01 \x01(\rR\x12typeAliasReference\x12G\n\x0bnullability\x18\x02 \x01(\x0e\x32%.substrait.gen.proto.Type.NullabilityR\x0bnullability\"^\n\x0bNullability\x12\x1b\n\x17NULLABILITY_UNSPECIFIED\x10\x00\x12\x18\n\x14NULLABILITY_NULLABLE\x10\x01\x12\x18\n\x14NULLABILITY_REQUIRED\x10\x02\x42\x06\n\x04kind\"f\n\tTypeAlias\x12*\n\x11type_alias_anchor\x18\x01 \x01(\rR\x0ftypeAliasAnchor\x12-\n\x04type\x18\x02 \x01(\x0b\x32\x19.substrait.gen.proto.TypeR\x04type\"]\n\x0bNamedStruct\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names\x12\x38\n\x06struct\x18\x02 \x01(\x0b\x32 .substrait.gen.proto.Type.StructR\x06structB?\n\x1cio.substrait.gen.proto.protoP\x01\xaa\x02\x1cSubstrait.Gen.Proto.Protobufb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -40,71 +40,73 @@ _globals['_TYPE'].fields_by_name['user_defined_type_reference']._loaded_options = None _globals['_TYPE'].fields_by_name['user_defined_type_reference']._serialized_options = b'\030\001' _globals['_TYPE']._serialized_start=85 - _globals['_TYPE']._serialized_end=7184 - _globals['_TYPE_BOOLEAN']._serialized_start=2076 - _globals['_TYPE_BOOLEAN']._serialized_end=2216 - _globals['_TYPE_I8']._serialized_start=2219 - _globals['_TYPE_I8']._serialized_end=2354 - _globals['_TYPE_I16']._serialized_start=2357 - _globals['_TYPE_I16']._serialized_end=2493 - _globals['_TYPE_I32']._serialized_start=2496 - _globals['_TYPE_I32']._serialized_end=2632 - _globals['_TYPE_I64']._serialized_start=2635 - _globals['_TYPE_I64']._serialized_end=2771 - _globals['_TYPE_FP32']._serialized_start=2774 - _globals['_TYPE_FP32']._serialized_end=2911 - _globals['_TYPE_FP64']._serialized_start=2914 - _globals['_TYPE_FP64']._serialized_end=3051 - _globals['_TYPE_STRING']._serialized_start=3054 - _globals['_TYPE_STRING']._serialized_end=3193 - _globals['_TYPE_BINARY']._serialized_start=3196 - _globals['_TYPE_BINARY']._serialized_end=3335 - _globals['_TYPE_TIMESTAMP']._serialized_start=3338 - _globals['_TYPE_TIMESTAMP']._serialized_end=3480 - _globals['_TYPE_DATE']._serialized_start=3483 - _globals['_TYPE_DATE']._serialized_end=3620 - _globals['_TYPE_TIME']._serialized_start=3623 - _globals['_TYPE_TIME']._serialized_end=3760 - _globals['_TYPE_TIMESTAMPTZ']._serialized_start=3763 - _globals['_TYPE_TIMESTAMPTZ']._serialized_end=3907 - _globals['_TYPE_INTERVALYEAR']._serialized_start=3910 - _globals['_TYPE_INTERVALYEAR']._serialized_end=4055 - _globals['_TYPE_INTERVALDAY']._serialized_start=4058 - _globals['_TYPE_INTERVALDAY']._serialized_end=4251 - _globals['_TYPE_INTERVALCOMPOUND']._serialized_start=4254 - _globals['_TYPE_INTERVALCOMPOUND']._serialized_end=4433 - _globals['_TYPE_UUID']._serialized_start=4436 - _globals['_TYPE_UUID']._serialized_end=4573 - _globals['_TYPE_FIXEDCHAR']._serialized_start=4576 - _globals['_TYPE_FIXEDCHAR']._serialized_end=4742 - _globals['_TYPE_VARCHAR']._serialized_start=4745 - _globals['_TYPE_VARCHAR']._serialized_end=4909 - _globals['_TYPE_FIXEDBINARY']._serialized_start=4912 - _globals['_TYPE_FIXEDBINARY']._serialized_end=5080 - _globals['_TYPE_DECIMAL']._serialized_start=5083 - _globals['_TYPE_DECIMAL']._serialized_end=5275 - _globals['_TYPE_PRECISIONTIME']._serialized_start=5278 - _globals['_TYPE_PRECISIONTIME']._serialized_end=5454 - _globals['_TYPE_PRECISIONTIMESTAMP']._serialized_start=5457 - _globals['_TYPE_PRECISIONTIMESTAMP']._serialized_end=5638 - _globals['_TYPE_PRECISIONTIMESTAMPTZ']._serialized_start=5641 - _globals['_TYPE_PRECISIONTIMESTAMPTZ']._serialized_end=5824 - _globals['_TYPE_STRUCT']._serialized_start=5827 - _globals['_TYPE_STRUCT']._serialized_end=6015 - _globals['_TYPE_LIST']._serialized_start=6018 - _globals['_TYPE_LIST']._serialized_end=6202 - _globals['_TYPE_MAP']._serialized_start=6205 - _globals['_TYPE_MAP']._serialized_end=6435 - _globals['_TYPE_USERDEFINED']._serialized_start=6438 - _globals['_TYPE_USERDEFINED']._serialized_end=6699 - _globals['_TYPE_PARAMETER']._serialized_start=6702 - _globals['_TYPE_PARAMETER']._serialized_end=6934 - _globals['_TYPE_TYPEALIASREFERENCE']._serialized_start=6937 - _globals['_TYPE_TYPEALIASREFERENCE']._serialized_end=7080 - _globals['_TYPE_NULLABILITY']._serialized_start=7082 - _globals['_TYPE_NULLABILITY']._serialized_end=7176 - _globals['_TYPEALIAS']._serialized_start=7186 - _globals['_TYPEALIAS']._serialized_end=7288 - _globals['_NAMEDSTRUCT']._serialized_start=7290 - _globals['_NAMEDSTRUCT']._serialized_end=7383 + _globals['_TYPE']._serialized_end=7448 + _globals['_TYPE_BOOLEAN']._serialized_start=2130 + _globals['_TYPE_BOOLEAN']._serialized_end=2270 + _globals['_TYPE_I8']._serialized_start=2273 + _globals['_TYPE_I8']._serialized_end=2408 + _globals['_TYPE_I16']._serialized_start=2411 + _globals['_TYPE_I16']._serialized_end=2547 + _globals['_TYPE_I32']._serialized_start=2550 + _globals['_TYPE_I32']._serialized_end=2686 + _globals['_TYPE_I64']._serialized_start=2689 + _globals['_TYPE_I64']._serialized_end=2825 + _globals['_TYPE_FP32']._serialized_start=2828 + _globals['_TYPE_FP32']._serialized_end=2965 + _globals['_TYPE_FP64']._serialized_start=2968 + _globals['_TYPE_FP64']._serialized_end=3105 + _globals['_TYPE_STRING']._serialized_start=3108 + _globals['_TYPE_STRING']._serialized_end=3247 + _globals['_TYPE_BINARY']._serialized_start=3250 + _globals['_TYPE_BINARY']._serialized_end=3389 + _globals['_TYPE_TIMESTAMP']._serialized_start=3392 + _globals['_TYPE_TIMESTAMP']._serialized_end=3534 + _globals['_TYPE_DATE']._serialized_start=3537 + _globals['_TYPE_DATE']._serialized_end=3674 + _globals['_TYPE_TIME']._serialized_start=3677 + _globals['_TYPE_TIME']._serialized_end=3814 + _globals['_TYPE_TIMESTAMPTZ']._serialized_start=3817 + _globals['_TYPE_TIMESTAMPTZ']._serialized_end=3961 + _globals['_TYPE_INTERVALYEAR']._serialized_start=3964 + _globals['_TYPE_INTERVALYEAR']._serialized_end=4109 + _globals['_TYPE_INTERVALDAY']._serialized_start=4112 + _globals['_TYPE_INTERVALDAY']._serialized_end=4305 + _globals['_TYPE_INTERVALCOMPOUND']._serialized_start=4308 + _globals['_TYPE_INTERVALCOMPOUND']._serialized_end=4487 + _globals['_TYPE_UUID']._serialized_start=4490 + _globals['_TYPE_UUID']._serialized_end=4627 + _globals['_TYPE_FIXEDCHAR']._serialized_start=4630 + _globals['_TYPE_FIXEDCHAR']._serialized_end=4796 + _globals['_TYPE_VARCHAR']._serialized_start=4799 + _globals['_TYPE_VARCHAR']._serialized_end=4963 + _globals['_TYPE_FIXEDBINARY']._serialized_start=4966 + _globals['_TYPE_FIXEDBINARY']._serialized_end=5134 + _globals['_TYPE_DECIMAL']._serialized_start=5137 + _globals['_TYPE_DECIMAL']._serialized_end=5329 + _globals['_TYPE_PRECISIONTIME']._serialized_start=5332 + _globals['_TYPE_PRECISIONTIME']._serialized_end=5508 + _globals['_TYPE_PRECISIONTIMESTAMP']._serialized_start=5511 + _globals['_TYPE_PRECISIONTIMESTAMP']._serialized_end=5692 + _globals['_TYPE_PRECISIONTIMESTAMPTZ']._serialized_start=5695 + _globals['_TYPE_PRECISIONTIMESTAMPTZ']._serialized_end=5878 + _globals['_TYPE_STRUCT']._serialized_start=5881 + _globals['_TYPE_STRUCT']._serialized_end=6069 + _globals['_TYPE_LIST']._serialized_start=6072 + _globals['_TYPE_LIST']._serialized_end=6256 + _globals['_TYPE_MAP']._serialized_start=6259 + _globals['_TYPE_MAP']._serialized_end=6489 + _globals['_TYPE_FUNC']._serialized_start=6492 + _globals['_TYPE_FUNC']._serialized_end=6699 + _globals['_TYPE_USERDEFINED']._serialized_start=6702 + _globals['_TYPE_USERDEFINED']._serialized_end=6963 + _globals['_TYPE_PARAMETER']._serialized_start=6966 + _globals['_TYPE_PARAMETER']._serialized_end=7198 + _globals['_TYPE_TYPEALIASREFERENCE']._serialized_start=7201 + _globals['_TYPE_TYPEALIASREFERENCE']._serialized_end=7344 + _globals['_TYPE_NULLABILITY']._serialized_start=7346 + _globals['_TYPE_NULLABILITY']._serialized_end=7440 + _globals['_TYPEALIAS']._serialized_start=7450 + _globals['_TYPEALIAS']._serialized_end=7552 + _globals['_NAMEDSTRUCT']._serialized_start=7554 + _globals['_NAMEDSTRUCT']._serialized_end=7647 # @@protoc_insertion_point(module_scope) diff --git a/src/substrait/gen/proto/type_pb2.pyi b/src/substrait/gen/proto/type_pb2.pyi index 4daa45c..983d9dc 100644 --- a/src/substrait/gen/proto/type_pb2.pyi +++ b/src/substrait/gen/proto/type_pb2.pyi @@ -536,6 +536,43 @@ class Type(google.protobuf.message.Message): def HasField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> builtins.bool: ... def ClearField(self, field_name: typing.Literal["key", b"key", "nullability", b"nullability", "type_variation_reference", b"type_variation_reference", "value", b"value"]) -> None: ... + @typing.final + class Func(google.protobuf.message.Message): + """A function type for higher-order functions. + Represents a function that takes parameters of specified types and + returns a value of a specified type. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PARAMETER_TYPES_FIELD_NUMBER: builtins.int + RETURN_TYPE_FIELD_NUMBER: builtins.int + NULLABILITY_FIELD_NUMBER: builtins.int + nullability: Global___Type.Nullability.ValueType + """Nullability of the function value itself, not its return type. + A nullable function type (e.g., func? i32>) means the function + reference may be null. This is distinct from the return type's + nullability (e.g., func i32?> where the function always exists + but may return null). + """ + @property + def parameter_types(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Type]: + """Types of parameters this function type accepts.""" + + @property + def return_type(self) -> Global___Type: + """Return type of the function.""" + + def __init__( + self, + *, + parameter_types: collections.abc.Iterable[Global___Type] | None = ..., + return_type: Global___Type | None = ..., + nullability: Global___Type.Nullability.ValueType = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["return_type", b"return_type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["nullability", b"nullability", "parameter_types", b"parameter_types", "return_type", b"return_type"]) -> None: ... + @typing.final class UserDefined(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -642,6 +679,7 @@ class Type(google.protobuf.message.Message): STRUCT_FIELD_NUMBER: builtins.int LIST_FIELD_NUMBER: builtins.int MAP_FIELD_NUMBER: builtins.int + FUNC_FIELD_NUMBER: builtins.int USER_DEFINED_FIELD_NUMBER: builtins.int USER_DEFINED_TYPE_REFERENCE_FIELD_NUMBER: builtins.int ALIAS_FIELD_NUMBER: builtins.int @@ -714,6 +752,8 @@ class Type(google.protobuf.message.Message): @property def map(self) -> Global___Type.Map: ... @property + def func(self) -> Global___Type.Func: ... + @property def user_defined(self) -> Global___Type.UserDefined: ... @property def alias(self) -> Global___Type.TypeAliasReference: @@ -749,13 +789,14 @@ class Type(google.protobuf.message.Message): struct: Global___Type.Struct | None = ..., list: Global___Type.List | None = ..., map: Global___Type.Map | None = ..., + func: Global___Type.Func | None = ..., user_defined: Global___Type.UserDefined | None = ..., user_defined_type_reference: builtins.int = ..., alias: Global___Type.TypeAliasReference | None = ..., ) -> None: ... - def HasField(self, field_name: typing.Literal["alias", b"alias", "binary", b"binary", "bool", b"bool", "date", b"date", "decimal", b"decimal", "fixed_binary", b"fixed_binary", "fixed_char", b"fixed_char", "fp32", b"fp32", "fp64", b"fp64", "i16", b"i16", "i32", b"i32", "i64", b"i64", "i8", b"i8", "interval_compound", b"interval_compound", "interval_day", b"interval_day", "interval_year", b"interval_year", "kind", b"kind", "list", b"list", "map", b"map", "precision_time", b"precision_time", "precision_timestamp", b"precision_timestamp", "precision_timestamp_tz", b"precision_timestamp_tz", "string", b"string", "struct", b"struct", "time", b"time", "timestamp", b"timestamp", "timestamp_tz", b"timestamp_tz", "user_defined", b"user_defined", "user_defined_type_reference", b"user_defined_type_reference", "uuid", b"uuid", "varchar", b"varchar"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["alias", b"alias", "binary", b"binary", "bool", b"bool", "date", b"date", "decimal", b"decimal", "fixed_binary", b"fixed_binary", "fixed_char", b"fixed_char", "fp32", b"fp32", "fp64", b"fp64", "i16", b"i16", "i32", b"i32", "i64", b"i64", "i8", b"i8", "interval_compound", b"interval_compound", "interval_day", b"interval_day", "interval_year", b"interval_year", "kind", b"kind", "list", b"list", "map", b"map", "precision_time", b"precision_time", "precision_timestamp", b"precision_timestamp", "precision_timestamp_tz", b"precision_timestamp_tz", "string", b"string", "struct", b"struct", "time", b"time", "timestamp", b"timestamp", "timestamp_tz", b"timestamp_tz", "user_defined", b"user_defined", "user_defined_type_reference", b"user_defined_type_reference", "uuid", b"uuid", "varchar", b"varchar"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["kind", b"kind"]) -> typing.Literal["bool", "i8", "i16", "i32", "i64", "fp32", "fp64", "string", "binary", "timestamp", "date", "time", "interval_year", "interval_day", "interval_compound", "timestamp_tz", "uuid", "fixed_char", "varchar", "fixed_binary", "decimal", "precision_time", "precision_timestamp", "precision_timestamp_tz", "struct", "list", "map", "user_defined", "user_defined_type_reference", "alias"] | None: ... + def HasField(self, field_name: typing.Literal["alias", b"alias", "binary", b"binary", "bool", b"bool", "date", b"date", "decimal", b"decimal", "fixed_binary", b"fixed_binary", "fixed_char", b"fixed_char", "fp32", b"fp32", "fp64", b"fp64", "func", b"func", "i16", b"i16", "i32", b"i32", "i64", b"i64", "i8", b"i8", "interval_compound", b"interval_compound", "interval_day", b"interval_day", "interval_year", b"interval_year", "kind", b"kind", "list", b"list", "map", b"map", "precision_time", b"precision_time", "precision_timestamp", b"precision_timestamp", "precision_timestamp_tz", b"precision_timestamp_tz", "string", b"string", "struct", b"struct", "time", b"time", "timestamp", b"timestamp", "timestamp_tz", b"timestamp_tz", "user_defined", b"user_defined", "user_defined_type_reference", b"user_defined_type_reference", "uuid", b"uuid", "varchar", b"varchar"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["alias", b"alias", "binary", b"binary", "bool", b"bool", "date", b"date", "decimal", b"decimal", "fixed_binary", b"fixed_binary", "fixed_char", b"fixed_char", "fp32", b"fp32", "fp64", b"fp64", "func", b"func", "i16", b"i16", "i32", b"i32", "i64", b"i64", "i8", b"i8", "interval_compound", b"interval_compound", "interval_day", b"interval_day", "interval_year", b"interval_year", "kind", b"kind", "list", b"list", "map", b"map", "precision_time", b"precision_time", "precision_timestamp", b"precision_timestamp", "precision_timestamp_tz", b"precision_timestamp_tz", "string", b"string", "struct", b"struct", "time", b"time", "timestamp", b"timestamp", "timestamp_tz", b"timestamp_tz", "user_defined", b"user_defined", "user_defined_type_reference", b"user_defined_type_reference", "uuid", b"uuid", "varchar", b"varchar"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["kind", b"kind"]) -> typing.Literal["bool", "i8", "i16", "i32", "i64", "fp32", "fp64", "string", "binary", "timestamp", "date", "time", "interval_year", "interval_day", "interval_compound", "timestamp_tz", "uuid", "fixed_char", "varchar", "fixed_binary", "decimal", "precision_time", "precision_timestamp", "precision_timestamp_tz", "struct", "list", "map", "func", "user_defined", "user_defined_type_reference", "alias"] | None: ... Global___Type: typing_extensions.TypeAlias = Type diff --git a/src/substrait/gen/version.py b/src/substrait/gen/version.py index b7f2ccf..c7eefa8 100644 --- a/src/substrait/gen/version.py +++ b/src/substrait/gen/version.py @@ -1 +1 @@ -substrait_version = "0.77.0" +substrait_version = "0.79.0" diff --git a/third_party/substrait b/third_party/substrait index 3c25b1b..92d2e75 160000 --- a/third_party/substrait +++ b/third_party/substrait @@ -1 +1 @@ -Subproject commit 3c25b1b3eaadecba6d10af6b3dd0fe038d0c5993 +Subproject commit 92d2e757a330f9c973bb566817dc92afd1badcb2