This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new e4b54f6eae Implement TPCH substrait integration test, support tpch_4 
and tpch_5 (#11311)
e4b54f6eae is described below

commit e4b54f6eaea8031a52fcd4d2591df958b3479a00
Author: Lordworms <[email protected]>
AuthorDate: Mon Jul 8 10:37:59 2024 -0700

    Implement TPCH substrait integration test, support tpch_4 and tpch_5 
(#11311)
    
    * Implement TPCH substrait integration teset, support tpch_4 and tpch_5
    
    * optimize code
    
    * rename variable
    
    * Use error macro
    
    ---------
    
    Co-authored-by: Andrew Lamb <[email protected]>
---
 datafusion/substrait/src/logical_plan/consumer.rs  |   36 +-
 .../substrait/tests/cases/consumer_integration.rs  |   86 ++
 .../testdata/tpch_substrait_plans/query_4.json     |  540 +++++++++
 .../testdata/tpch_substrait_plans/query_5.json     | 1254 ++++++++++++++++++++
 4 files changed, 1910 insertions(+), 6 deletions(-)

diff --git a/datafusion/substrait/src/logical_plan/consumer.rs 
b/datafusion/substrait/src/logical_plan/consumer.rs
index 03692399e1..905475eaca 100644
--- a/datafusion/substrait/src/logical_plan/consumer.rs
+++ b/datafusion/substrait/src/logical_plan/consumer.rs
@@ -27,12 +27,13 @@ use datafusion::common::{
     substrait_err, DFSchema, DFSchemaRef,
 };
 use datafusion::execution::FunctionRegistry;
-use datafusion::logical_expr::expr::{InSubquery, Sort};
+use datafusion::logical_expr::expr::{Exists, InSubquery, Sort};
 
 use datafusion::logical_expr::{
     aggregate_function, expr::find_df_window_func, Aggregate, BinaryExpr, Case,
     EmptyRelation, Expr, ExprSchemable, LogicalPlan, Operator, Projection, 
Values,
 };
+use substrait::proto::expression::subquery::set_predicate::PredicateOp;
 use url::Url;
 
 use crate::variation_const::{
@@ -54,7 +55,7 @@ use datafusion::logical_expr::{
 use datafusion::prelude::JoinType;
 use datafusion::sql::TableReference;
 use datafusion::{
-    error::{DataFusionError, Result},
+    error::Result,
     logical_expr::utils::split_conjunction,
     prelude::{Column, SessionContext},
     scalar::ScalarValue,
@@ -1249,10 +1250,7 @@ pub async fn from_substrait_rex(
             Some(subquery_type) => match subquery_type {
                 SubqueryType::InPredicate(in_predicate) => {
                     if in_predicate.needles.len() != 1 {
-                        Err(DataFusionError::Substrait(
-                            "InPredicate Subquery type must have exactly one 
Needle expression"
-                                .to_string(),
-                        ))
+                        substrait_err!("InPredicate Subquery type must have 
exactly one Needle expression")
                     } else {
                         let needle_expr = &in_predicate.needles[0];
                         let haystack_expr = &in_predicate.haystack;
@@ -1297,6 +1295,32 @@ pub async fn from_substrait_rex(
                         outer_ref_columns,
                     })))
                 }
+                SubqueryType::SetPredicate(predicate) => {
+                    match predicate.predicate_op() {
+                        // exist
+                        PredicateOp::Exists => {
+                            let relation = &predicate.tuples;
+                            let plan = from_substrait_rel(
+                                ctx,
+                                &relation.clone().unwrap_or_default(),
+                                extensions,
+                            )
+                            .await?;
+                            let outer_ref_columns = plan.all_out_ref_exprs();
+                            Ok(Arc::new(Expr::Exists(Exists::new(
+                                Subquery {
+                                    subquery: Arc::new(plan),
+                                    outer_ref_columns,
+                                },
+                                false,
+                            ))))
+                        }
+                        other_type => substrait_err!(
+                            "unimplemented type {:?} for set predicate",
+                            other_type
+                        ),
+                    }
+                }
                 other_type => {
                     substrait_err!("Subquery type {:?} not implemented", 
other_type)
                 }
diff --git a/datafusion/substrait/tests/cases/consumer_integration.rs 
b/datafusion/substrait/tests/cases/consumer_integration.rs
index a8bbeb444a..5d565c0378 100644
--- a/datafusion/substrait/tests/cases/consumer_integration.rs
+++ b/datafusion/substrait/tests/cases/consumer_integration.rs
@@ -90,6 +90,40 @@ mod tests {
         Ok(ctx)
     }
 
+    async fn create_context_tpch4() -> Result<SessionContext> {
+        let ctx = SessionContext::new();
+
+        let registrations = vec![
+            ("FILENAME_PLACEHOLDER_0", "tests/testdata/tpch/orders.csv"),
+            ("FILENAME_PLACEHOLDER_1", "tests/testdata/tpch/lineitem.csv"),
+        ];
+
+        for (table_name, file_path) in registrations {
+            register_csv(&ctx, table_name, file_path).await?;
+        }
+
+        Ok(ctx)
+    }
+
+    async fn create_context_tpch5() -> Result<SessionContext> {
+        let ctx = SessionContext::new();
+
+        let registrations = vec![
+            ("FILENAME_PLACEHOLDER_0", "tests/testdata/tpch/customer.csv"),
+            ("FILENAME_PLACEHOLDER_1", "tests/testdata/tpch/orders.csv"),
+            ("FILENAME_PLACEHOLDER_2", "tests/testdata/tpch/lineitem.csv"),
+            ("FILENAME_PLACEHOLDER_3", "tests/testdata/tpch/supplier.csv"),
+            ("NATION", "tests/testdata/tpch/nation.csv"),
+            ("REGION", "tests/testdata/tpch/region.csv"),
+        ];
+
+        for (table_name, file_path) in registrations {
+            register_csv(&ctx, table_name, file_path).await?;
+        }
+
+        Ok(ctx)
+    }
+
     #[tokio::test]
     async fn tpch_test_1() -> Result<()> {
         let ctx = create_context_tpch1().await?;
@@ -180,4 +214,56 @@ mod tests {
         \n                  TableScan: FILENAME_PLACEHOLDER_1 
projection=[o_orderkey, o_custkey, o_orderstatus, o_totalprice, o_orderdate, 
o_orderpriority, o_clerk, o_shippriority, o_comment]\n                
TableScan: FILENAME_PLACEHOLDER_2 projection=[l_orderkey, l_partkey, l_suppkey, 
l_linenumber, l_quantity, l_extendedprice, l_discount, l_tax, l_returnflag, 
l_linestatus, l_shipdate, l_commitdate, l_receiptdate, l_shipinstruct, 
l_shipmode, l_comment]");
         Ok(())
     }
+
+    #[tokio::test]
+    async fn tpch_test_4() -> Result<()> {
+        let ctx = create_context_tpch4().await?;
+        let path = "tests/testdata/tpch_substrait_plans/query_4.json";
+        let proto = serde_json::from_reader::<_, Plan>(BufReader::new(
+            File::open(path).expect("file not found"),
+        ))
+        .expect("failed to parse json");
+        let plan = from_substrait_plan(&ctx, &proto).await?;
+        let plan_str = format!("{:?}", plan);
+        assert_eq!(plan_str, "Projection: 
FILENAME_PLACEHOLDER_0.o_orderpriority AS O_ORDERPRIORITY, count(Int64(1)) AS 
ORDER_COUNT\
+        \n  Sort: FILENAME_PLACEHOLDER_0.o_orderpriority ASC NULLS LAST\
+        \n    Aggregate: groupBy=[[FILENAME_PLACEHOLDER_0.o_orderpriority]], 
aggr=[[count(Int64(1))]]\
+        \n      Projection: FILENAME_PLACEHOLDER_0.o_orderpriority\
+        \n        Filter: FILENAME_PLACEHOLDER_0.o_orderdate >= 
CAST(Utf8(\"1993-07-01\") AS Date32) AND FILENAME_PLACEHOLDER_0.o_orderdate < 
CAST(Utf8(\"1993-10-01\") AS Date32) AND EXISTS (<subquery>)\
+        \n          Subquery:\
+        \n            Filter: FILENAME_PLACEHOLDER_1.l_orderkey = 
FILENAME_PLACEHOLDER_1.l_orderkey AND FILENAME_PLACEHOLDER_1.l_commitdate < 
FILENAME_PLACEHOLDER_1.l_receiptdate\
+        \n              TableScan: FILENAME_PLACEHOLDER_1 
projection=[l_orderkey, l_partkey, l_suppkey, l_linenumber, l_quantity, 
l_extendedprice, l_discount, l_tax, l_returnflag, l_linestatus, l_shipdate, 
l_commitdate, l_receiptdate, l_shipinstruct, l_shipmode, l_comment]\
+        \n          TableScan: FILENAME_PLACEHOLDER_0 projection=[o_orderkey, 
o_custkey, o_orderstatus, o_totalprice, o_orderdate, o_orderpriority, o_clerk, 
o_shippriority, o_comment]");
+        Ok(())
+    }
+
+    #[tokio::test]
+    async fn tpch_test_5() -> Result<()> {
+        let ctx = create_context_tpch5().await?;
+        let path = "tests/testdata/tpch_substrait_plans/query_5.json";
+        let proto = serde_json::from_reader::<_, Plan>(BufReader::new(
+            File::open(path).expect("file not found"),
+        ))
+        .expect("failed to parse json");
+
+        let plan = from_substrait_plan(&ctx, &proto).await?;
+        let plan_str = format!("{:?}", plan);
+        assert_eq!(plan_str, "Projection: NATION.n_name AS N_NAME, 
sum(FILENAME_PLACEHOLDER_2.l_extendedprice * Int32(1) - 
FILENAME_PLACEHOLDER_2.l_discount) AS REVENUE\
+        \n  Sort: sum(FILENAME_PLACEHOLDER_2.l_extendedprice * Int32(1) - 
FILENAME_PLACEHOLDER_2.l_discount) DESC NULLS FIRST\
+        \n    Aggregate: groupBy=[[NATION.n_name]], 
aggr=[[sum(FILENAME_PLACEHOLDER_2.l_extendedprice * Int32(1) - 
FILENAME_PLACEHOLDER_2.l_discount)]]\
+        \n      Projection: NATION.n_name, 
FILENAME_PLACEHOLDER_2.l_extendedprice * (CAST(Int32(1) AS Decimal128(19, 0)) - 
FILENAME_PLACEHOLDER_2.l_discount)\
+        \n        Filter: FILENAME_PLACEHOLDER_0.c_custkey = 
FILENAME_PLACEHOLDER_1.o_custkey AND FILENAME_PLACEHOLDER_2.l_orderkey = 
FILENAME_PLACEHOLDER_1.o_orderkey AND FILENAME_PLACEHOLDER_2.l_suppkey = 
FILENAME_PLACEHOLDER_3.s_suppkey AND FILENAME_PLACEHOLDER_0.c_nationkey = 
FILENAME_PLACEHOLDER_3.s_nationkey AND FILENAME_PLACEHOLDER_3.s_nationkey = 
NATION.n_nationkey AND NATION.n_regionkey = REGION.r_regionkey AND 
REGION.r_name = CAST(Utf8(\"ASIA\") AS Utf8) AND FILENAME_PLACEHOLDE [...]
+        \n          Inner Join:  Filter: Boolean(true)\
+        \n            Inner Join:  Filter: Boolean(true)\
+        \n              Inner Join:  Filter: Boolean(true)\
+        \n                Inner Join:  Filter: Boolean(true)\
+        \n                  Inner Join:  Filter: Boolean(true)\
+        \n                    TableScan: FILENAME_PLACEHOLDER_0 
projection=[c_custkey, c_name, c_address, c_nationkey, c_phone, c_acctbal, 
c_mktsegment, c_comment]\
+        \n                    TableScan: FILENAME_PLACEHOLDER_1 
projection=[o_orderkey, o_custkey, o_orderstatus, o_totalprice, o_orderdate, 
o_orderpriority, o_clerk, o_shippriority, o_comment]\
+        \n                  TableScan: FILENAME_PLACEHOLDER_2 
projection=[l_orderkey, l_partkey, l_suppkey, l_linenumber, l_quantity, 
l_extendedprice, l_discount, l_tax, l_returnflag, l_linestatus, l_shipdate, 
l_commitdate, l_receiptdate, l_shipinstruct, l_shipmode, l_comment]\
+        \n                TableScan: FILENAME_PLACEHOLDER_3 
projection=[s_suppkey, s_name, s_address, s_nationkey, s_phone, s_acctbal, 
s_comment]\
+        \n              TableScan: NATION projection=[n_nationkey, n_name, 
n_regionkey, n_comment]\
+        \n            TableScan: REGION projection=[r_regionkey, r_name, 
r_comment]");
+        Ok(())
+    }
 }
diff --git 
a/datafusion/substrait/tests/testdata/tpch_substrait_plans/query_4.json 
b/datafusion/substrait/tests/testdata/tpch_substrait_plans/query_4.json
new file mode 100644
index 0000000000..6e946cefdd
--- /dev/null
+++ b/datafusion/substrait/tests/testdata/tpch_substrait_plans/query_4.json
@@ -0,0 +1,540 @@
+{
+  "extensionUris": [{
+    "extensionUriAnchor": 4,
+    "uri": "/functions_aggregate_generic.yaml"
+  }, {
+    "extensionUriAnchor": 1,
+    "uri": "/functions_boolean.yaml"
+  }, {
+    "extensionUriAnchor": 2,
+    "uri": "/functions_datetime.yaml"
+  }, {
+    "extensionUriAnchor": 3,
+    "uri": "/functions_comparison.yaml"
+  }],
+  "extensions": [{
+    "extensionFunction": {
+      "extensionUriReference": 1,
+      "functionAnchor": 0,
+      "name": "and:bool"
+    }
+  }, {
+    "extensionFunction": {
+      "extensionUriReference": 2,
+      "functionAnchor": 1,
+      "name": "gte:date_date"
+    }
+  }, {
+    "extensionFunction": {
+      "extensionUriReference": 2,
+      "functionAnchor": 2,
+      "name": "lt:date_date"
+    }
+  }, {
+    "extensionFunction": {
+      "extensionUriReference": 3,
+      "functionAnchor": 3,
+      "name": "equal:any1_any1"
+    }
+  }, {
+    "extensionFunction": {
+      "extensionUriReference": 4,
+      "functionAnchor": 4,
+      "name": "count:opt"
+    }
+  }],
+  "relations": [{
+    "root": {
+      "input": {
+        "sort": {
+          "common": {
+            "direct": {
+            }
+          },
+          "input": {
+            "aggregate": {
+              "common": {
+                "direct": {
+                }
+              },
+              "input": {
+                "project": {
+                  "common": {
+                    "emit": {
+                      "outputMapping": [9]
+                    }
+                  },
+                  "input": {
+                    "filter": {
+                      "common": {
+                        "direct": {
+                        }
+                      },
+                      "input": {
+                        "read": {
+                          "common": {
+                            "direct": {
+                            }
+                          },
+                          "baseSchema": {
+                            "names": ["O_ORDERKEY", "O_CUSTKEY", 
"O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", 
"O_SHIPPRIORITY", "O_COMMENT"],
+                            "struct": {
+                              "types": [{
+                                "i64": {
+                                  "typeVariationReference": 0,
+                                  "nullability": "NULLABILITY_REQUIRED"
+                                }
+                              }, {
+                                "i64": {
+                                  "typeVariationReference": 0,
+                                  "nullability": "NULLABILITY_REQUIRED"
+                                }
+                              }, {
+                                "fixedChar": {
+                                  "length": 1,
+                                  "typeVariationReference": 0,
+                                  "nullability": "NULLABILITY_NULLABLE"
+                                }
+                              }, {
+                                "decimal": {
+                                  "scale": 0,
+                                  "precision": 19,
+                                  "typeVariationReference": 0,
+                                  "nullability": "NULLABILITY_NULLABLE"
+                                }
+                              }, {
+                                "date": {
+                                  "typeVariationReference": 0,
+                                  "nullability": "NULLABILITY_NULLABLE"
+                                }
+                              }, {
+                                "fixedChar": {
+                                  "length": 15,
+                                  "typeVariationReference": 0,
+                                  "nullability": "NULLABILITY_NULLABLE"
+                                }
+                              }, {
+                                "fixedChar": {
+                                  "length": 15,
+                                  "typeVariationReference": 0,
+                                  "nullability": "NULLABILITY_NULLABLE"
+                                }
+                              }, {
+                                "i32": {
+                                  "typeVariationReference": 0,
+                                  "nullability": "NULLABILITY_NULLABLE"
+                                }
+                              }, {
+                                "varchar": {
+                                  "length": 79,
+                                  "typeVariationReference": 0,
+                                  "nullability": "NULLABILITY_NULLABLE"
+                                }
+                              }],
+                              "typeVariationReference": 0,
+                              "nullability": "NULLABILITY_REQUIRED"
+                            }
+                          },
+                          "local_files": {
+                            "items": [
+                              {
+                                "uri_file": "file://FILENAME_PLACEHOLDER_0",
+                                "parquet": {}
+                              }
+                            ]
+                          }
+                        }
+                      },
+                      "condition": {
+                        "scalarFunction": {
+                          "functionReference": 0,
+                          "args": [],
+                          "outputType": {
+                            "bool": {
+                              "typeVariationReference": 0,
+                              "nullability": "NULLABILITY_NULLABLE"
+                            }
+                          },
+                          "arguments": [{
+                            "value": {
+                              "scalarFunction": {
+                                "functionReference": 1,
+                                "args": [],
+                                "outputType": {
+                                  "bool": {
+                                    "typeVariationReference": 0,
+                                    "nullability": "NULLABILITY_NULLABLE"
+                                  }
+                                },
+                                "arguments": [{
+                                  "value": {
+                                    "selection": {
+                                      "directReference": {
+                                        "structField": {
+                                          "field": 4
+                                        }
+                                      },
+                                      "rootReference": {
+                                      }
+                                    }
+                                  }
+                                }, {
+                                  "value": {
+                                    "cast": {
+                                      "type": {
+                                        "date": {
+                                          "typeVariationReference": 0,
+                                          "nullability": "NULLABILITY_REQUIRED"
+                                        }
+                                      },
+                                      "input": {
+                                        "literal": {
+                                          "fixedChar": "1993-07-01",
+                                          "nullable": false,
+                                          "typeVariationReference": 0
+                                        }
+                                      },
+                                      "failureBehavior": 
"FAILURE_BEHAVIOR_UNSPECIFIED"
+                                    }
+                                  }
+                                }]
+                              }
+                            }
+                          }, {
+                            "value": {
+                              "scalarFunction": {
+                                "functionReference": 2,
+                                "args": [],
+                                "outputType": {
+                                  "bool": {
+                                    "typeVariationReference": 0,
+                                    "nullability": "NULLABILITY_NULLABLE"
+                                  }
+                                },
+                                "arguments": [{
+                                  "value": {
+                                    "selection": {
+                                      "directReference": {
+                                        "structField": {
+                                          "field": 4
+                                        }
+                                      },
+                                      "rootReference": {
+                                      }
+                                    }
+                                  }
+                                }, {
+                                  "value": {
+                                    "cast": {
+                                      "type": {
+                                        "date": {
+                                          "typeVariationReference": 0,
+                                          "nullability": "NULLABILITY_REQUIRED"
+                                        }
+                                      },
+                                      "input": {
+                                        "literal": {
+                                          "fixedChar": "1993-10-01",
+                                          "nullable": false,
+                                          "typeVariationReference": 0
+                                        }
+                                      },
+                                      "failureBehavior": 
"FAILURE_BEHAVIOR_UNSPECIFIED"
+                                    }
+                                  }
+                                }]
+                              }
+                            }
+                          }, {
+                            "value": {
+                              "subquery": {
+                                "setPredicate": {
+                                  "predicateOp": "PREDICATE_OP_EXISTS",
+                                  "tuples": {
+                                    "filter": {
+                                      "common": {
+                                        "direct": {
+                                        }
+                                      },
+                                      "input": {
+                                        "read": {
+                                          "common": {
+                                            "direct": {
+                                            }
+                                          },
+                                          "baseSchema": {
+                                            "names": ["L_ORDERKEY", 
"L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", 
"L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", 
"L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"],
+                                            "struct": {
+                                              "types": [{
+                                                "i64": {
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_REQUIRED"
+                                                }
+                                              }, {
+                                                "i64": {
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_REQUIRED"
+                                                }
+                                              }, {
+                                                "i64": {
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_REQUIRED"
+                                                }
+                                              }, {
+                                                "i32": {
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "decimal": {
+                                                  "scale": 0,
+                                                  "precision": 19,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "decimal": {
+                                                  "scale": 0,
+                                                  "precision": 19,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "decimal": {
+                                                  "scale": 0,
+                                                  "precision": 19,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "decimal": {
+                                                  "scale": 0,
+                                                  "precision": 19,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "fixedChar": {
+                                                  "length": 1,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "fixedChar": {
+                                                  "length": 1,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "date": {
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "date": {
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "date": {
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "fixedChar": {
+                                                  "length": 25,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "fixedChar": {
+                                                  "length": 10,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }, {
+                                                "varchar": {
+                                                  "length": 44,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }],
+                                              "typeVariationReference": 0,
+                                              "nullability": 
"NULLABILITY_REQUIRED"
+                                            }
+                                          },
+                                          "local_files": {
+                                            "items": [
+                                              {
+                                                "uri_file": 
"file://FILENAME_PLACEHOLDER_1",
+                                                "parquet": {}
+                                              }
+                                            ]
+                                          }
+                                        }
+                                      },
+                                      "condition": {
+                                        "scalarFunction": {
+                                          "functionReference": 0,
+                                          "args": [],
+                                          "outputType": {
+                                            "bool": {
+                                              "typeVariationReference": 0,
+                                              "nullability": 
"NULLABILITY_NULLABLE"
+                                            }
+                                          },
+                                          "arguments": [{
+                                            "value": {
+                                              "scalarFunction": {
+                                                "functionReference": 3,
+                                                "args": [],
+                                                "outputType": {
+                                                  "bool": {
+                                                    "typeVariationReference": 
0,
+                                                    "nullability": 
"NULLABILITY_REQUIRED"
+                                                  }
+                                                },
+                                                "arguments": [{
+                                                  "value": {
+                                                    "selection": {
+                                                      "directReference": {
+                                                        "structField": {
+                                                          "field": 0
+                                                        }
+                                                      },
+                                                      "rootReference": {
+                                                      }
+                                                    }
+                                                  }
+                                                }, {
+                                                  "value": {
+                                                    "selection": {
+                                                      "directReference": {
+                                                        "structField": {
+                                                          "field": 0
+                                                        }
+                                                      },
+                                                      "outerReference": {
+                                                        "stepsOut": 1
+                                                      }
+                                                    }
+                                                  }
+                                                }]
+                                              }
+                                            }
+                                          }, {
+                                            "value": {
+                                              "scalarFunction": {
+                                                "functionReference": 2,
+                                                "args": [],
+                                                "outputType": {
+                                                  "bool": {
+                                                    "typeVariationReference": 
0,
+                                                    "nullability": 
"NULLABILITY_NULLABLE"
+                                                  }
+                                                },
+                                                "arguments": [{
+                                                  "value": {
+                                                    "selection": {
+                                                      "directReference": {
+                                                        "structField": {
+                                                          "field": 11
+                                                        }
+                                                      },
+                                                      "rootReference": {
+                                                      }
+                                                    }
+                                                  }
+                                                }, {
+                                                  "value": {
+                                                    "selection": {
+                                                      "directReference": {
+                                                        "structField": {
+                                                          "field": 12
+                                                        }
+                                                      },
+                                                      "rootReference": {
+                                                      }
+                                                    }
+                                                  }
+                                                }]
+                                              }
+                                            }
+                                          }]
+                                        }
+                                      }
+                                    }
+                                  }
+                                }
+                              }
+                            }
+                          }]
+                        }
+                      }
+                    }
+                  },
+                  "expressions": [{
+                    "selection": {
+                      "directReference": {
+                        "structField": {
+                          "field": 5
+                        }
+                      },
+                      "rootReference": {
+                      }
+                    }
+                  }]
+                }
+              },
+              "groupings": [{
+                "groupingExpressions": [{
+                  "selection": {
+                    "directReference": {
+                      "structField": {
+                        "field": 0
+                      }
+                    },
+                    "rootReference": {
+                    }
+                  }
+                }]
+              }],
+              "measures": [{
+                "measure": {
+                  "functionReference": 4,
+                  "args": [],
+                  "sorts": [],
+                  "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT",
+                  "outputType": {
+                    "i64": {
+                      "typeVariationReference": 0,
+                      "nullability": "NULLABILITY_REQUIRED"
+                    }
+                  },
+                  "invocation": "AGGREGATION_INVOCATION_ALL",
+                  "arguments": []
+                }
+              }]
+            }
+          },
+          "sorts": [{
+            "expr": {
+              "selection": {
+                "directReference": {
+                  "structField": {
+                    "field": 0
+                  }
+                },
+                "rootReference": {
+                }
+              }
+            },
+            "direction": "SORT_DIRECTION_ASC_NULLS_LAST"
+          }]
+        }
+      },
+      "names": ["O_ORDERPRIORITY", "ORDER_COUNT"]
+    }
+  }],
+  "expectedTypeUrls": []
+}
diff --git 
a/datafusion/substrait/tests/testdata/tpch_substrait_plans/query_5.json 
b/datafusion/substrait/tests/testdata/tpch_substrait_plans/query_5.json
new file mode 100644
index 0000000000..75b82a305e
--- /dev/null
+++ b/datafusion/substrait/tests/testdata/tpch_substrait_plans/query_5.json
@@ -0,0 +1,1254 @@
+{
+  "extensionUris": [
+    {
+      "extensionUriAnchor": 1,
+      "uri": "/functions_boolean.yaml"
+    },
+    {
+      "extensionUriAnchor": 4,
+      "uri": "/functions_arithmetic_decimal.yaml"
+    },
+    {
+      "extensionUriAnchor": 3,
+      "uri": "/functions_datetime.yaml"
+    },
+    {
+      "extensionUriAnchor": 2,
+      "uri": "/functions_comparison.yaml"
+    }
+  ],
+  "extensions": [
+    {
+      "extensionFunction": {
+        "extensionUriReference": 1,
+        "functionAnchor": 0,
+        "name": "and:bool"
+      }
+    },
+    {
+      "extensionFunction": {
+        "extensionUriReference": 2,
+        "functionAnchor": 1,
+        "name": "equal:any1_any1"
+      }
+    },
+    {
+      "extensionFunction": {
+        "extensionUriReference": 3,
+        "functionAnchor": 2,
+        "name": "gte:date_date"
+      }
+    },
+    {
+      "extensionFunction": {
+        "extensionUriReference": 3,
+        "functionAnchor": 3,
+        "name": "lt:date_date"
+      }
+    },
+    {
+      "extensionFunction": {
+        "extensionUriReference": 4,
+        "functionAnchor": 4,
+        "name": "multiply:opt_decimal_decimal"
+      }
+    },
+    {
+      "extensionFunction": {
+        "extensionUriReference": 4,
+        "functionAnchor": 5,
+        "name": "subtract:opt_decimal_decimal"
+      }
+    },
+    {
+      "extensionFunction": {
+        "extensionUriReference": 4,
+        "functionAnchor": 6,
+        "name": "sum:opt_decimal"
+      }
+    }
+  ],
+  "relations": [
+    {
+      "root": {
+        "input": {
+          "sort": {
+            "common": {
+              "direct": {}
+            },
+            "input": {
+              "aggregate": {
+                "common": {
+                  "direct": {}
+                },
+                "input": {
+                  "project": {
+                    "common": {
+                      "emit": {
+                        "outputMapping": [
+                          47,
+                          48
+                        ]
+                      }
+                    },
+                    "input": {
+                      "filter": {
+                        "common": {
+                          "direct": {}
+                        },
+                        "input": {
+                          "join": {
+                            "common": {
+                              "direct": {}
+                            },
+                            "left": {
+                              "join": {
+                                "common": {
+                                  "direct": {}
+                                },
+                                "left": {
+                                  "join": {
+                                    "common": {
+                                      "direct": {}
+                                    },
+                                    "left": {
+                                      "join": {
+                                        "common": {
+                                          "direct": {}
+                                        },
+                                        "left": {
+                                          "join": {
+                                            "common": {
+                                              "direct": {}
+                                            },
+                                            "left": {
+                                              "read": {
+                                                "common": {
+                                                  "direct": {}
+                                                },
+                                                "baseSchema": {
+                                                  "names": [
+                                                    "C_CUSTKEY",
+                                                    "C_NAME",
+                                                    "C_ADDRESS",
+                                                    "C_NATIONKEY",
+                                                    "C_PHONE",
+                                                    "C_ACCTBAL",
+                                                    "C_MKTSEGMENT",
+                                                    "C_COMMENT"
+                                                  ],
+                                                  "struct": {
+                                                    "types": [
+                                                      {
+                                                        "i64": {
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_REQUIRED"
+                                                        }
+                                                      },
+                                                      {
+                                                        "varchar": {
+                                                          "length": 25,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "varchar": {
+                                                          "length": 40,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "i64": {
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_REQUIRED"
+                                                        }
+                                                      },
+                                                      {
+                                                        "fixedChar": {
+                                                          "length": 15,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "decimal": {
+                                                          "scale": 0,
+                                                          "precision": 19,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "fixedChar": {
+                                                          "length": 10,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "varchar": {
+                                                          "length": 117,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      }
+                                                    ],
+                                                    "typeVariationReference": 
0,
+                                                    "nullability": 
"NULLABILITY_REQUIRED"
+                                                  }
+                                                },
+                                                "local_files": {
+                                                  "items": [
+                                                    {
+                                                      "uri_file": 
"file://FILENAME_PLACEHOLDER_0",
+                                                      "parquet": {}
+                                                    }
+                                                  ]
+                                                }
+                                              }
+                                            },
+                                            "right": {
+                                              "read": {
+                                                "common": {
+                                                  "direct": {}
+                                                },
+                                                "baseSchema": {
+                                                  "names": [
+                                                    "O_ORDERKEY",
+                                                    "O_CUSTKEY",
+                                                    "O_ORDERSTATUS",
+                                                    "O_TOTALPRICE",
+                                                    "O_ORDERDATE",
+                                                    "O_ORDERPRIORITY",
+                                                    "O_CLERK",
+                                                    "O_SHIPPRIORITY",
+                                                    "O_COMMENT"
+                                                  ],
+                                                  "struct": {
+                                                    "types": [
+                                                      {
+                                                        "i64": {
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_REQUIRED"
+                                                        }
+                                                      },
+                                                      {
+                                                        "i64": {
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_REQUIRED"
+                                                        }
+                                                      },
+                                                      {
+                                                        "fixedChar": {
+                                                          "length": 1,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "decimal": {
+                                                          "scale": 0,
+                                                          "precision": 19,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "date": {
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "fixedChar": {
+                                                          "length": 15,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "fixedChar": {
+                                                          "length": 15,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "i32": {
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      },
+                                                      {
+                                                        "varchar": {
+                                                          "length": 79,
+                                                          
"typeVariationReference": 0,
+                                                          "nullability": 
"NULLABILITY_NULLABLE"
+                                                        }
+                                                      }
+                                                    ],
+                                                    "typeVariationReference": 
0,
+                                                    "nullability": 
"NULLABILITY_REQUIRED"
+                                                  }
+                                                },
+                                                "local_files": {
+                                                  "items": [
+                                                    {
+                                                      "uri_file": 
"file://FILENAME_PLACEHOLDER_1",
+                                                      "parquet": {}
+                                                    }
+                                                  ]
+                                                }
+                                              }
+                                            },
+                                            "expression": {
+                                              "literal": {
+                                                "boolean": true,
+                                                "nullable": false,
+                                                "typeVariationReference": 0
+                                              }
+                                            },
+                                            "type": "JOIN_TYPE_INNER"
+                                          }
+                                        },
+                                        "right": {
+                                          "read": {
+                                            "common": {
+                                              "direct": {}
+                                            },
+                                            "baseSchema": {
+                                              "names": [
+                                                "L_ORDERKEY",
+                                                "L_PARTKEY",
+                                                "L_SUPPKEY",
+                                                "L_LINENUMBER",
+                                                "L_QUANTITY",
+                                                "L_EXTENDEDPRICE",
+                                                "L_DISCOUNT",
+                                                "L_TAX",
+                                                "L_RETURNFLAG",
+                                                "L_LINESTATUS",
+                                                "L_SHIPDATE",
+                                                "L_COMMITDATE",
+                                                "L_RECEIPTDATE",
+                                                "L_SHIPINSTRUCT",
+                                                "L_SHIPMODE",
+                                                "L_COMMENT"
+                                              ],
+                                              "struct": {
+                                                "types": [
+                                                  {
+                                                    "i64": {
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_REQUIRED"
+                                                    }
+                                                  },
+                                                  {
+                                                    "i64": {
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_REQUIRED"
+                                                    }
+                                                  },
+                                                  {
+                                                    "i64": {
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_REQUIRED"
+                                                    }
+                                                  },
+                                                  {
+                                                    "i32": {
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "decimal": {
+                                                      "scale": 0,
+                                                      "precision": 19,
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "decimal": {
+                                                      "scale": 0,
+                                                      "precision": 19,
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "decimal": {
+                                                      "scale": 0,
+                                                      "precision": 19,
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "decimal": {
+                                                      "scale": 0,
+                                                      "precision": 19,
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "fixedChar": {
+                                                      "length": 1,
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "fixedChar": {
+                                                      "length": 1,
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "date": {
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "date": {
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "date": {
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "fixedChar": {
+                                                      "length": 25,
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "fixedChar": {
+                                                      "length": 10,
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  },
+                                                  {
+                                                    "varchar": {
+                                                      "length": 44,
+                                                      
"typeVariationReference": 0,
+                                                      "nullability": 
"NULLABILITY_NULLABLE"
+                                                    }
+                                                  }
+                                                ],
+                                                "typeVariationReference": 0,
+                                                "nullability": 
"NULLABILITY_REQUIRED"
+                                              }
+                                            },
+                                            "local_files": {
+                                              "items": [
+                                                {
+                                                  "uri_file": 
"file://FILENAME_PLACEHOLDER_2",
+                                                  "parquet": {}
+                                                }
+                                              ]
+                                            }
+                                          }
+                                        },
+                                        "expression": {
+                                          "literal": {
+                                            "boolean": true,
+                                            "nullable": false,
+                                            "typeVariationReference": 0
+                                          }
+                                        },
+                                        "type": "JOIN_TYPE_INNER"
+                                      }
+                                    },
+                                    "right": {
+                                      "read": {
+                                        "common": {
+                                          "direct": {}
+                                        },
+                                        "baseSchema": {
+                                          "names": [
+                                            "S_SUPPKEY",
+                                            "S_NAME",
+                                            "S_ADDRESS",
+                                            "S_NATIONKEY",
+                                            "S_PHONE",
+                                            "S_ACCTBAL",
+                                            "S_COMMENT"
+                                          ],
+                                          "struct": {
+                                            "types": [
+                                              {
+                                                "i64": {
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_REQUIRED"
+                                                }
+                                              },
+                                              {
+                                                "fixedChar": {
+                                                  "length": 25,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              },
+                                              {
+                                                "varchar": {
+                                                  "length": 40,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              },
+                                              {
+                                                "i64": {
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_REQUIRED"
+                                                }
+                                              },
+                                              {
+                                                "fixedChar": {
+                                                  "length": 15,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              },
+                                              {
+                                                "decimal": {
+                                                  "scale": 0,
+                                                  "precision": 19,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              },
+                                              {
+                                                "varchar": {
+                                                  "length": 101,
+                                                  "typeVariationReference": 0,
+                                                  "nullability": 
"NULLABILITY_NULLABLE"
+                                                }
+                                              }
+                                            ],
+                                            "typeVariationReference": 0,
+                                            "nullability": 
"NULLABILITY_REQUIRED"
+                                          }
+                                        },
+                                        "local_files": {
+                                          "items": [
+                                            {
+                                              "uri_file": 
"file://FILENAME_PLACEHOLDER_3",
+                                              "parquet": {}
+                                            }
+                                          ]
+                                        }
+                                      }
+                                    },
+                                    "expression": {
+                                      "literal": {
+                                        "boolean": true,
+                                        "nullable": false,
+                                        "typeVariationReference": 0
+                                      }
+                                    },
+                                    "type": "JOIN_TYPE_INNER"
+                                  }
+                                },
+                                "right": {
+                                  "read": {
+                                    "common": {
+                                      "direct": {}
+                                    },
+                                    "baseSchema": {
+                                      "names": [
+                                        "N_NATIONKEY",
+                                        "N_NAME",
+                                        "N_REGIONKEY",
+                                        "N_COMMENT"
+                                      ],
+                                      "struct": {
+                                        "types": [
+                                          {
+                                            "i64": {
+                                              "typeVariationReference": 0,
+                                              "nullability": 
"NULLABILITY_REQUIRED"
+                                            }
+                                          },
+                                          {
+                                            "fixedChar": {
+                                              "length": 25,
+                                              "typeVariationReference": 0,
+                                              "nullability": 
"NULLABILITY_NULLABLE"
+                                            }
+                                          },
+                                          {
+                                            "i64": {
+                                              "typeVariationReference": 0,
+                                              "nullability": 
"NULLABILITY_REQUIRED"
+                                            }
+                                          },
+                                          {
+                                            "varchar": {
+                                              "length": 152,
+                                              "typeVariationReference": 0,
+                                              "nullability": 
"NULLABILITY_NULLABLE"
+                                            }
+                                          }
+                                        ],
+                                        "typeVariationReference": 0,
+                                        "nullability": "NULLABILITY_REQUIRED"
+                                      }
+                                    },
+                                    "namedTable": {
+                                      "names": [
+                                        "NATION"
+                                      ]
+                                    }
+                                  }
+                                },
+                                "expression": {
+                                  "literal": {
+                                    "boolean": true,
+                                    "nullable": false,
+                                    "typeVariationReference": 0
+                                  }
+                                },
+                                "type": "JOIN_TYPE_INNER"
+                              }
+                            },
+                            "right": {
+                              "read": {
+                                "common": {
+                                  "direct": {}
+                                },
+                                "baseSchema": {
+                                  "names": [
+                                    "R_REGIONKEY",
+                                    "R_NAME",
+                                    "R_COMMENT"
+                                  ],
+                                  "struct": {
+                                    "types": [
+                                      {
+                                        "i64": {
+                                          "typeVariationReference": 0,
+                                          "nullability": "NULLABILITY_REQUIRED"
+                                        }
+                                      },
+                                      {
+                                        "fixedChar": {
+                                          "length": 25,
+                                          "typeVariationReference": 0,
+                                          "nullability": "NULLABILITY_NULLABLE"
+                                        }
+                                      },
+                                      {
+                                        "varchar": {
+                                          "length": 152,
+                                          "typeVariationReference": 0,
+                                          "nullability": "NULLABILITY_NULLABLE"
+                                        }
+                                      }
+                                    ],
+                                    "typeVariationReference": 0,
+                                    "nullability": "NULLABILITY_REQUIRED"
+                                  }
+                                },
+                                "namedTable": {
+                                  "names": [
+                                    "REGION"
+                                  ]
+                                }
+                              }
+                            },
+                            "expression": {
+                              "literal": {
+                                "boolean": true,
+                                "nullable": false,
+                                "typeVariationReference": 0
+                              }
+                            },
+                            "type": "JOIN_TYPE_INNER"
+                          }
+                        },
+                        "condition": {
+                          "scalarFunction": {
+                            "functionReference": 0,
+                            "args": [],
+                            "outputType": {
+                              "bool": {
+                                "typeVariationReference": 0,
+                                "nullability": "NULLABILITY_NULLABLE"
+                              }
+                            },
+                            "arguments": [
+                              {
+                                "value": {
+                                  "scalarFunction": {
+                                    "functionReference": 1,
+                                    "args": [],
+                                    "outputType": {
+                                      "bool": {
+                                        "typeVariationReference": 0,
+                                        "nullability": "NULLABILITY_REQUIRED"
+                                      }
+                                    },
+                                    "arguments": [
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 0
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      },
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 9
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      }
+                                    ]
+                                  }
+                                }
+                              },
+                              {
+                                "value": {
+                                  "scalarFunction": {
+                                    "functionReference": 1,
+                                    "args": [],
+                                    "outputType": {
+                                      "bool": {
+                                        "typeVariationReference": 0,
+                                        "nullability": "NULLABILITY_REQUIRED"
+                                      }
+                                    },
+                                    "arguments": [
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 17
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      },
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 8
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      }
+                                    ]
+                                  }
+                                }
+                              },
+                              {
+                                "value": {
+                                  "scalarFunction": {
+                                    "functionReference": 1,
+                                    "args": [],
+                                    "outputType": {
+                                      "bool": {
+                                        "typeVariationReference": 0,
+                                        "nullability": "NULLABILITY_REQUIRED"
+                                      }
+                                    },
+                                    "arguments": [
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 19
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      },
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 33
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      }
+                                    ]
+                                  }
+                                }
+                              },
+                              {
+                                "value": {
+                                  "scalarFunction": {
+                                    "functionReference": 1,
+                                    "args": [],
+                                    "outputType": {
+                                      "bool": {
+                                        "typeVariationReference": 0,
+                                        "nullability": "NULLABILITY_REQUIRED"
+                                      }
+                                    },
+                                    "arguments": [
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 3
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      },
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 36
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      }
+                                    ]
+                                  }
+                                }
+                              },
+                              {
+                                "value": {
+                                  "scalarFunction": {
+                                    "functionReference": 1,
+                                    "args": [],
+                                    "outputType": {
+                                      "bool": {
+                                        "typeVariationReference": 0,
+                                        "nullability": "NULLABILITY_REQUIRED"
+                                      }
+                                    },
+                                    "arguments": [
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 36
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      },
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 40
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      }
+                                    ]
+                                  }
+                                }
+                              },
+                              {
+                                "value": {
+                                  "scalarFunction": {
+                                    "functionReference": 1,
+                                    "args": [],
+                                    "outputType": {
+                                      "bool": {
+                                        "typeVariationReference": 0,
+                                        "nullability": "NULLABILITY_REQUIRED"
+                                      }
+                                    },
+                                    "arguments": [
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 42
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      },
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 44
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      }
+                                    ]
+                                  }
+                                }
+                              },
+                              {
+                                "value": {
+                                  "scalarFunction": {
+                                    "functionReference": 1,
+                                    "args": [],
+                                    "outputType": {
+                                      "bool": {
+                                        "typeVariationReference": 0,
+                                        "nullability": "NULLABILITY_NULLABLE"
+                                      }
+                                    },
+                                    "arguments": [
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 45
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      },
+                                      {
+                                        "value": {
+                                          "cast": {
+                                            "type": {
+                                              "fixedChar": {
+                                                "length": 25,
+                                                "typeVariationReference": 0,
+                                                "nullability": 
"NULLABILITY_REQUIRED"
+                                              }
+                                            },
+                                            "input": {
+                                              "literal": {
+                                                "fixedChar": "ASIA",
+                                                "nullable": false,
+                                                "typeVariationReference": 0
+                                              }
+                                            },
+                                            "failureBehavior": 
"FAILURE_BEHAVIOR_UNSPECIFIED"
+                                          }
+                                        }
+                                      }
+                                    ]
+                                  }
+                                }
+                              },
+                              {
+                                "value": {
+                                  "scalarFunction": {
+                                    "functionReference": 2,
+                                    "args": [],
+                                    "outputType": {
+                                      "bool": {
+                                        "typeVariationReference": 0,
+                                        "nullability": "NULLABILITY_NULLABLE"
+                                      }
+                                    },
+                                    "arguments": [
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 12
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      },
+                                      {
+                                        "value": {
+                                          "cast": {
+                                            "type": {
+                                              "date": {
+                                                "typeVariationReference": 0,
+                                                "nullability": 
"NULLABILITY_REQUIRED"
+                                              }
+                                            },
+                                            "input": {
+                                              "literal": {
+                                                "fixedChar": "1994-01-01",
+                                                "nullable": false,
+                                                "typeVariationReference": 0
+                                              }
+                                            },
+                                            "failureBehavior": 
"FAILURE_BEHAVIOR_UNSPECIFIED"
+                                          }
+                                        }
+                                      }
+                                    ]
+                                  }
+                                }
+                              },
+                              {
+                                "value": {
+                                  "scalarFunction": {
+                                    "functionReference": 3,
+                                    "args": [],
+                                    "outputType": {
+                                      "bool": {
+                                        "typeVariationReference": 0,
+                                        "nullability": "NULLABILITY_NULLABLE"
+                                      }
+                                    },
+                                    "arguments": [
+                                      {
+                                        "value": {
+                                          "selection": {
+                                            "directReference": {
+                                              "structField": {
+                                                "field": 12
+                                              }
+                                            },
+                                            "rootReference": {}
+                                          }
+                                        }
+                                      },
+                                      {
+                                        "value": {
+                                          "cast": {
+                                            "type": {
+                                              "date": {
+                                                "typeVariationReference": 0,
+                                                "nullability": 
"NULLABILITY_REQUIRED"
+                                              }
+                                            },
+                                            "input": {
+                                              "literal": {
+                                                "fixedChar": "1995-01-01",
+                                                "nullable": false,
+                                                "typeVariationReference": 0
+                                              }
+                                            },
+                                            "failureBehavior": 
"FAILURE_BEHAVIOR_UNSPECIFIED"
+                                          }
+                                        }
+                                      }
+                                    ]
+                                  }
+                                }
+                              }
+                            ]
+                          }
+                        }
+                      }
+                    },
+                    "expressions": [
+                      {
+                        "selection": {
+                          "directReference": {
+                            "structField": {
+                              "field": 41
+                            }
+                          },
+                          "rootReference": {}
+                        }
+                      },
+                      {
+                        "scalarFunction": {
+                          "functionReference": 4,
+                          "args": [],
+                          "outputType": {
+                            "decimal": {
+                              "scale": 0,
+                              "precision": 19,
+                              "typeVariationReference": 0,
+                              "nullability": "NULLABILITY_NULLABLE"
+                            }
+                          },
+                          "arguments": [
+                            {
+                              "value": {
+                                "selection": {
+                                  "directReference": {
+                                    "structField": {
+                                      "field": 22
+                                    }
+                                  },
+                                  "rootReference": {}
+                                }
+                              }
+                            },
+                            {
+                              "value": {
+                                "scalarFunction": {
+                                  "functionReference": 5,
+                                  "args": [],
+                                  "outputType": {
+                                    "decimal": {
+                                      "scale": 0,
+                                      "precision": 19,
+                                      "typeVariationReference": 0,
+                                      "nullability": "NULLABILITY_NULLABLE"
+                                    }
+                                  },
+                                  "arguments": [
+                                    {
+                                      "value": {
+                                        "cast": {
+                                          "type": {
+                                            "decimal": {
+                                              "scale": 0,
+                                              "precision": 19,
+                                              "typeVariationReference": 0,
+                                              "nullability": 
"NULLABILITY_NULLABLE"
+                                            }
+                                          },
+                                          "input": {
+                                            "literal": {
+                                              "i32": 1,
+                                              "nullable": false,
+                                              "typeVariationReference": 0
+                                            }
+                                          },
+                                          "failureBehavior": 
"FAILURE_BEHAVIOR_UNSPECIFIED"
+                                        }
+                                      }
+                                    },
+                                    {
+                                      "value": {
+                                        "selection": {
+                                          "directReference": {
+                                            "structField": {
+                                              "field": 23
+                                            }
+                                          },
+                                          "rootReference": {}
+                                        }
+                                      }
+                                    }
+                                  ]
+                                }
+                              }
+                            }
+                          ]
+                        }
+                      }
+                    ]
+                  }
+                },
+                "groupings": [
+                  {
+                    "groupingExpressions": [
+                      {
+                        "selection": {
+                          "directReference": {
+                            "structField": {
+                              "field": 0
+                            }
+                          },
+                          "rootReference": {}
+                        }
+                      }
+                    ]
+                  }
+                ],
+                "measures": [
+                  {
+                    "measure": {
+                      "functionReference": 6,
+                      "args": [],
+                      "sorts": [],
+                      "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT",
+                      "outputType": {
+                        "decimal": {
+                          "scale": 0,
+                          "precision": 19,
+                          "typeVariationReference": 0,
+                          "nullability": "NULLABILITY_NULLABLE"
+                        }
+                      },
+                      "invocation": "AGGREGATION_INVOCATION_ALL",
+                      "arguments": [
+                        {
+                          "value": {
+                            "selection": {
+                              "directReference": {
+                                "structField": {
+                                  "field": 1
+                                }
+                              },
+                              "rootReference": {}
+                            }
+                          }
+                        }
+                      ]
+                    }
+                  }
+                ]
+              }
+            },
+            "sorts": [
+              {
+                "expr": {
+                  "selection": {
+                    "directReference": {
+                      "structField": {
+                        "field": 1
+                      }
+                    },
+                    "rootReference": {}
+                  }
+                },
+                "direction": "SORT_DIRECTION_DESC_NULLS_FIRST"
+              }
+            ]
+          }
+        },
+        "names": [
+          "N_NAME",
+          "REVENUE"
+        ]
+      }
+    }
+  ],
+  "expectedTypeUrls": []
+}
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to