I am unsure if the patch attachment came through in the previous email. I
was unable to see it on the web archive. Here's the patch directly in the
email itself.

commit a8d539ecd209812d22d4a7e2a82e5ed56e4f02a3
Author: deshwal <[email protected]>

    Test case to demonstrate the partition over problem.

diff --git
a/plus/src/test/java/org/apache/calcite/adapter/tpcds/TpcdsDeshwalTest.java
b/plus/src/test/java/org/apache/calcite/adapter/tpcds/TpcdsDeshwalTest.java
new file mode 100644
index 000000000..256032e2c
--- /dev/null
+++
b/plus/src/test/java/org/apache/calcite/adapter/tpcds/TpcdsDeshwalTest.java
@@ -0,0 +1,692 @@
+package org.apache.calcite.adapter.tpcds;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+import org.apache.calcite.avatica.util.Quoting;
+import org.apache.calcite.config.CalciteConnectionConfig;
+import org.apache.calcite.config.CalciteConnectionProperty;
+import org.apache.calcite.jdbc.CalciteSchema;
+import org.apache.calcite.jdbc.JavaTypeFactoryImpl;
+import org.apache.calcite.plan.ConventionTraitDef;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.plan.volcano.VolcanoPlanner;
+import org.apache.calcite.prepare.CalciteCatalogReader;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelRoot;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.schema.impl.AbstractTable;
+import org.apache.calcite.sql.SqlExplainFormat;
+import org.apache.calcite.sql.SqlExplainLevel;
+import org.apache.calcite.sql.SqlNode;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.sql.parser.SqlParseException;
+import org.apache.calcite.sql.parser.SqlParser;
+import org.apache.calcite.sql.type.SqlTypeName;
+import org.apache.calcite.sql.validate.SqlValidator;
+import org.apache.calcite.sql.validate.SqlValidatorUtil;
+import org.apache.calcite.sql2rel.SqlToRelConverter;
+import org.apache.calcite.sql2rel.StandardConvertletTable;
+
+import org.junit.jupiter.api.Test;
+
+// This program serves as a template for how we can use Calcite for Flux
+// query planning.
+public class TpcdsDeshwalTest {
+  private static class Column {
+    Column(String name, SqlTypeName dataType) {
+      this.name = name;
+      this.dataType = dataType;
+    }
+    private String name;
+    private SqlTypeName dataType;
+  }
+  private static class Table extends AbstractTable {
+    private final RelDataType rowType_;
+    Table(RelDataTypeFactory typeFactory, Column... columns) {
+      RelDataTypeFactory.Builder builder = new
RelDataTypeFactory.Builder(typeFactory);
+      for (Column column : columns) builder.add(column.name,
column.dataType);
+      rowType_ = builder.build();
+    }
+    @Override
+    public RelDataType getRowType(final RelDataTypeFactory typeFactory) {
+      return rowType_;
+    }
+  }
+
+  // This function returns a tpcds schema. We intentionally do not use the
+  // implementation at org.apache.calcite.adapter.tpcds.TpcdsSchema which
+  // is already provided by Calcite to illustrate how we may setup the
+  // schema for NetSpring tables.
+  // TODO: Should we convert this into a Schema instead of CalciteSchema?
+  private static CalciteSchema newTpcdsSchema(
+      RelDataTypeFactory typeFactory) {
+    CalciteSchema schema = CalciteSchema.createRootSchema(true);
+    schema.add(
+        "catalog_sales",
+        new Table(
+            typeFactory,
+            new Column("cs_sold_date_sk", SqlTypeName.BIGINT),
+            new Column("cs_sold_time_sk", SqlTypeName.BIGINT),
+            new Column("cs_ship_date_sk", SqlTypeName.BIGINT),
+            new Column("cs_bill_customer_sk", SqlTypeName.BIGINT),
+            new Column("cs_bill_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("cs_bill_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("cs_bill_addr_sk", SqlTypeName.BIGINT),
+            new Column("cs_ship_customer_sk", SqlTypeName.BIGINT),
+            new Column("cs_ship_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("cs_ship_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("cs_ship_addr_sk", SqlTypeName.BIGINT),
+            new Column("cs_call_center_sk", SqlTypeName.BIGINT),
+            new Column("cs_catalog_page_sk", SqlTypeName.BIGINT),
+            new Column("cs_ship_mode_sk", SqlTypeName.BIGINT),
+            new Column("cs_warehouse_sk", SqlTypeName.BIGINT),
+            new Column("cs_item_sk", SqlTypeName.BIGINT),
+            new Column("cs_promo_sk", SqlTypeName.BIGINT),
+            new Column("cs_order_number", SqlTypeName.BIGINT),
+            new Column("cs_quantity", SqlTypeName.BIGINT),
+            new Column("cs_wholesale_cost", SqlTypeName.DOUBLE),
+            new Column("cs_list_price", SqlTypeName.DOUBLE),
+            new Column("cs_sales_price", SqlTypeName.DOUBLE),
+            new Column("cs_ext_discount_amt", SqlTypeName.DOUBLE),
+            new Column("cs_ext_sales_price", SqlTypeName.DOUBLE),
+            new Column("cs_ext_wholesale_cost", SqlTypeName.DOUBLE),
+            new Column("cs_ext_list_price", SqlTypeName.DOUBLE),
+            new Column("cs_ext_tax", SqlTypeName.DOUBLE),
+            new Column("cs_coupon_amt", SqlTypeName.DOUBLE),
+            new Column("cs_ext_ship_cost", SqlTypeName.DOUBLE),
+            new Column("cs_net_paid", SqlTypeName.DOUBLE),
+            new Column("cs_net_paid_inc_tax", SqlTypeName.DOUBLE),
+            new Column("cs_net_paid_inc_ship", SqlTypeName.DOUBLE),
+            new Column("cs_net_paid_inc_ship_tax", SqlTypeName.DOUBLE),
+            new Column("cs_net_profit", SqlTypeName.DOUBLE)));
+    schema.add(
+        "catalog_returns",
+        new Table(
+            typeFactory,
+            new Column("cr_returned_date_sk", SqlTypeName.BIGINT),
+            new Column("cr_returned_time_sk", SqlTypeName.BIGINT),
+            new Column("cr_item_sk", SqlTypeName.BIGINT),
+            new Column("cr_refunded_customer_sk", SqlTypeName.BIGINT),
+            new Column("cr_refunded_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("cr_refunded_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("cr_refunded_addr_sk", SqlTypeName.BIGINT),
+            new Column("cr_returning_customer_sk", SqlTypeName.BIGINT),
+            new Column("cr_returning_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("cr_returning_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("cr_returning_addr_sk", SqlTypeName.BIGINT),
+            new Column("cr_call_center_sk", SqlTypeName.BIGINT),
+            new Column("cr_catalog_page_sk", SqlTypeName.BIGINT),
+            new Column("cr_ship_mode_sk", SqlTypeName.BIGINT),
+            new Column("cr_warehouse_sk", SqlTypeName.BIGINT),
+            new Column("cr_reason_sk", SqlTypeName.BIGINT),
+            new Column("cr_order_number", SqlTypeName.BIGINT),
+            new Column("cr_return_quantity", SqlTypeName.BIGINT),
+            new Column("cr_return_amount", SqlTypeName.DOUBLE),
+            new Column("cr_return_tax", SqlTypeName.DOUBLE),
+            new Column("cr_return_amt_inc_tax", SqlTypeName.DOUBLE),
+            new Column("cr_fee", SqlTypeName.DOUBLE),
+            new Column("cr_return_ship_cost", SqlTypeName.DOUBLE),
+            new Column("cr_refunded_cash", SqlTypeName.DOUBLE),
+            new Column("cr_reversed_charge", SqlTypeName.DOUBLE),
+            new Column("cr_store_credit", SqlTypeName.DOUBLE),
+            new Column("cr_net_loss", SqlTypeName.DOUBLE)));
+    schema.add(
+        "inventory",
+        new Table(
+            typeFactory,
+            new Column("inv_date_sk", SqlTypeName.BIGINT),
+            new Column("inv_item_sk", SqlTypeName.BIGINT),
+            new Column("inv_warehouse_sk", SqlTypeName.BIGINT),
+            new Column("inv_quantity_on_hand", SqlTypeName.BIGINT)));
+    schema.add(
+        "store_sales",
+        new Table(
+            typeFactory,
+            new Column("ss_sold_date_sk", SqlTypeName.BIGINT),
+            new Column("ss_sold_time_sk", SqlTypeName.BIGINT),
+            new Column("ss_item_sk", SqlTypeName.BIGINT),
+            new Column("ss_customer_sk", SqlTypeName.BIGINT),
+            new Column("ss_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("ss_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("ss_addr_sk", SqlTypeName.BIGINT),
+            new Column("ss_store_sk", SqlTypeName.BIGINT),
+            new Column("ss_promo_sk", SqlTypeName.BIGINT),
+            new Column("ss_ticket_number", SqlTypeName.BIGINT),
+            new Column("ss_quantity", SqlTypeName.BIGINT),
+            new Column("ss_wholesale_cost", SqlTypeName.DOUBLE),
+            new Column("ss_list_price", SqlTypeName.DOUBLE),
+            new Column("ss_sales_price", SqlTypeName.DOUBLE),
+            new Column("ss_ext_discount_amt", SqlTypeName.DOUBLE),
+            new Column("ss_ext_sales_price", SqlTypeName.DOUBLE),
+            new Column("ss_ext_wholesale_cost", SqlTypeName.DOUBLE),
+            new Column("ss_ext_list_price", SqlTypeName.DOUBLE),
+            new Column("ss_ext_tax", SqlTypeName.DOUBLE),
+            new Column("ss_coupon_amt", SqlTypeName.DOUBLE),
+            new Column("ss_net_paid", SqlTypeName.DOUBLE),
+            new Column("ss_net_paid_inc_tax", SqlTypeName.DOUBLE),
+            new Column("ss_net_profit", SqlTypeName.DOUBLE)));
+    schema.add(
+        "store_returns",
+        new Table(
+            typeFactory,
+            new Column("sr_returned_date_sk", SqlTypeName.BIGINT),
+            new Column("sr_return_time_sk", SqlTypeName.BIGINT),
+            new Column("sr_item_sk", SqlTypeName.BIGINT),
+            new Column("sr_customer_sk", SqlTypeName.BIGINT),
+            new Column("sr_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("sr_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("sr_addr_sk", SqlTypeName.BIGINT),
+            new Column("sr_store_sk", SqlTypeName.BIGINT),
+            new Column("sr_reason_sk", SqlTypeName.BIGINT),
+            new Column("sr_ticket_number", SqlTypeName.BIGINT),
+            new Column("sr_return_quantity", SqlTypeName.BIGINT),
+            new Column("sr_return_amt", SqlTypeName.DOUBLE),
+            new Column("sr_return_tax", SqlTypeName.DOUBLE),
+            new Column("sr_return_amt_inc_tax", SqlTypeName.DOUBLE),
+            new Column("sr_fee", SqlTypeName.DOUBLE),
+            new Column("sr_return_ship_cost", SqlTypeName.DOUBLE),
+            new Column("sr_refunded_cash", SqlTypeName.DOUBLE),
+            new Column("sr_reversed_charge", SqlTypeName.DOUBLE),
+            new Column("sr_store_credit", SqlTypeName.DOUBLE),
+            new Column("sr_net_loss", SqlTypeName.DOUBLE)));
+    schema.add(
+        "web_sales",
+        new Table(
+            typeFactory,
+            new Column("ws_sold_date_sk", SqlTypeName.BIGINT),
+            new Column("ws_sold_time_sk", SqlTypeName.BIGINT),
+            new Column("ws_ship_date_sk", SqlTypeName.BIGINT),
+            new Column("ws_item_sk", SqlTypeName.BIGINT),
+            new Column("ws_bill_customer_sk", SqlTypeName.BIGINT),
+            new Column("ws_bill_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("ws_bill_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("ws_bill_addr_sk", SqlTypeName.BIGINT),
+            new Column("ws_ship_customer_sk", SqlTypeName.BIGINT),
+            new Column("ws_ship_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("ws_ship_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("ws_ship_addr_sk", SqlTypeName.BIGINT),
+            new Column("ws_web_page_sk", SqlTypeName.BIGINT),
+            new Column("ws_web_site_sk", SqlTypeName.BIGINT),
+            new Column("ws_ship_mode_sk", SqlTypeName.BIGINT),
+            new Column("ws_warehouse_sk", SqlTypeName.BIGINT),
+            new Column("ws_promo_sk", SqlTypeName.BIGINT),
+            new Column("ws_order_number", SqlTypeName.BIGINT),
+            new Column("ws_quantity", SqlTypeName.BIGINT),
+            new Column("ws_wholesale_cost", SqlTypeName.DOUBLE),
+            new Column("ws_list_price", SqlTypeName.DOUBLE),
+            new Column("ws_sales_price", SqlTypeName.DOUBLE),
+            new Column("ws_ext_discount_amt", SqlTypeName.DOUBLE),
+            new Column("ws_ext_sales_price", SqlTypeName.DOUBLE),
+            new Column("ws_ext_wholesale_cost", SqlTypeName.DOUBLE),
+            new Column("ws_ext_list_price", SqlTypeName.DOUBLE),
+            new Column("ws_ext_tax", SqlTypeName.DOUBLE),
+            new Column("ws_coupon_amt", SqlTypeName.DOUBLE),
+            new Column("ws_ext_ship_cost", SqlTypeName.DOUBLE),
+            new Column("ws_net_paid", SqlTypeName.DOUBLE),
+            new Column("ws_net_paid_inc_tax", SqlTypeName.DOUBLE),
+            new Column("ws_net_paid_inc_ship", SqlTypeName.DOUBLE),
+            new Column("ws_net_paid_inc_ship_tax", SqlTypeName.DOUBLE),
+            new Column("ws_net_profit", SqlTypeName.DOUBLE)));
+    schema.add(
+        "web_returns",
+        new Table(
+            typeFactory,
+            new Column("wr_returned_date_sk", SqlTypeName.BIGINT),
+            new Column("wr_returned_time_sk", SqlTypeName.BIGINT),
+            new Column("wr_item_sk", SqlTypeName.BIGINT),
+            new Column("wr_refunded_customer_sk", SqlTypeName.BIGINT),
+            new Column("wr_refunded_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("wr_refunded_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("wr_refunded_addr_sk", SqlTypeName.BIGINT),
+            new Column("wr_returning_customer_sk", SqlTypeName.BIGINT),
+            new Column("wr_returning_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("wr_returning_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("wr_returning_addr_sk", SqlTypeName.BIGINT),
+            new Column("wr_web_page_sk", SqlTypeName.BIGINT),
+            new Column("wr_reason_sk", SqlTypeName.BIGINT),
+            new Column("wr_order_number", SqlTypeName.BIGINT),
+            new Column("wr_return_quantity", SqlTypeName.BIGINT),
+            new Column("wr_return_amt", SqlTypeName.DOUBLE),
+            new Column("wr_return_tax", SqlTypeName.DOUBLE),
+            new Column("wr_return_amt_inc_tax", SqlTypeName.DOUBLE),
+            new Column("wr_fee", SqlTypeName.DOUBLE),
+            new Column("wr_return_ship_cost", SqlTypeName.DOUBLE),
+            new Column("wr_refunded_cash", SqlTypeName.DOUBLE),
+            new Column("wr_reversed_charge", SqlTypeName.DOUBLE),
+            new Column("wr_account_credit", SqlTypeName.DOUBLE),
+            new Column("wr_net_loss", SqlTypeName.DOUBLE)));
+    schema.add(
+        "call_center",
+        new Table(
+            typeFactory,
+            new Column("cc_call_center_sk", SqlTypeName.BIGINT),
+            new Column("cc_call_center_id", SqlTypeName.VARCHAR),
+            new Column("cc_rec_start_date", SqlTypeName.DATE),
+            new Column("cc_rec_end_date", SqlTypeName.DATE),
+            new Column("cc_closed_date_sk", SqlTypeName.BIGINT),
+            new Column("cc_open_date_sk", SqlTypeName.BIGINT),
+            new Column("cc_name", SqlTypeName.VARCHAR),
+            new Column("cc_class", SqlTypeName.VARCHAR),
+            new Column("cc_employees", SqlTypeName.BIGINT),
+            new Column("cc_sq_ft", SqlTypeName.BIGINT),
+            new Column("cc_hours", SqlTypeName.VARCHAR),
+            new Column("cc_manager", SqlTypeName.VARCHAR),
+            new Column("cc_mkt_id", SqlTypeName.BIGINT),
+            new Column("cc_mkt_class", SqlTypeName.VARCHAR),
+            new Column("cc_mkt_desc", SqlTypeName.VARCHAR),
+            new Column("cc_market_manager", SqlTypeName.VARCHAR),
+            new Column("cc_division", SqlTypeName.BIGINT),
+            new Column("cc_division_name", SqlTypeName.VARCHAR),
+            new Column("cc_company", SqlTypeName.BIGINT),
+            new Column("cc_company_name", SqlTypeName.VARCHAR),
+            new Column("cc_street_number", SqlTypeName.VARCHAR),
+            new Column("cc_street_name", SqlTypeName.VARCHAR),
+            new Column("cc_street_type", SqlTypeName.VARCHAR),
+            new Column("cc_suite_number", SqlTypeName.VARCHAR),
+            new Column("cc_city", SqlTypeName.VARCHAR),
+            new Column("cc_county", SqlTypeName.VARCHAR),
+            new Column("cc_state", SqlTypeName.VARCHAR),
+            new Column("cc_zip", SqlTypeName.VARCHAR),
+            new Column("cc_country", SqlTypeName.VARCHAR),
+            new Column("cc_gmt_offset", SqlTypeName.DOUBLE),
+            new Column("cc_tax_percentage", SqlTypeName.DOUBLE)));
+    schema.add(
+        "catalog_page",
+        new Table(
+            typeFactory,
+            new Column("cp_catalog_page_sk", SqlTypeName.BIGINT),
+            new Column("cp_catalog_page_id", SqlTypeName.VARCHAR),
+            new Column("cp_start_date_sk", SqlTypeName.BIGINT),
+            new Column("cp_end_date_sk", SqlTypeName.BIGINT),
+            new Column("cp_department", SqlTypeName.VARCHAR),
+            new Column("cp_catalog_number", SqlTypeName.BIGINT),
+            new Column("cp_catalog_page_number", SqlTypeName.BIGINT),
+            new Column("cp_description", SqlTypeName.VARCHAR),
+            new Column("cp_type", SqlTypeName.VARCHAR)));
+    schema.add(
+        "customer",
+        new Table(
+            typeFactory,
+            new Column("c_customer_sk", SqlTypeName.BIGINT),
+            new Column("c_customer_id", SqlTypeName.VARCHAR),
+            new Column("c_current_cdemo_sk", SqlTypeName.BIGINT),
+            new Column("c_current_hdemo_sk", SqlTypeName.BIGINT),
+            new Column("c_current_addr_sk", SqlTypeName.BIGINT),
+            new Column("c_first_shipto_date_sk", SqlTypeName.BIGINT),
+            new Column("c_first_sales_date_sk", SqlTypeName.BIGINT),
+            new Column("c_salutation", SqlTypeName.VARCHAR),
+            new Column("c_first_name", SqlTypeName.VARCHAR),
+            new Column("c_last_name", SqlTypeName.VARCHAR),
+            new Column("c_preferred_cust_flag", SqlTypeName.VARCHAR),
+            new Column("c_birth_day", SqlTypeName.BIGINT),
+            new Column("c_birth_month", SqlTypeName.BIGINT),
+            new Column("c_birth_year", SqlTypeName.BIGINT),
+            new Column("c_birth_country", SqlTypeName.VARCHAR),
+            new Column("c_login", SqlTypeName.VARCHAR),
+            new Column("c_email_address", SqlTypeName.VARCHAR),
+            new Column("c_last_review_date_sk", SqlTypeName.BIGINT)));
+    schema.add(
+        "customer_address",
+        new Table(
+            typeFactory,
+            new Column("ca_address_sk", SqlTypeName.BIGINT),
+            new Column("ca_address_id", SqlTypeName.VARCHAR),
+            new Column("ca_street_number", SqlTypeName.VARCHAR),
+            new Column("ca_street_name", SqlTypeName.VARCHAR),
+            new Column("ca_street_type", SqlTypeName.VARCHAR),
+            new Column("ca_suite_number", SqlTypeName.VARCHAR),
+            new Column("ca_city", SqlTypeName.VARCHAR),
+            new Column("ca_county", SqlTypeName.VARCHAR),
+            new Column("ca_state", SqlTypeName.VARCHAR),
+            new Column("ca_zip", SqlTypeName.VARCHAR),
+            new Column("ca_country", SqlTypeName.VARCHAR),
+            new Column("ca_gmt_offset", SqlTypeName.DOUBLE),
+            new Column("ca_location_type", SqlTypeName.VARCHAR)));
+    schema.add(
+        "customer_demographics",
+        new Table(
+            typeFactory,
+            new Column("cd_demo_sk", SqlTypeName.BIGINT),
+            new Column("cd_gender", SqlTypeName.VARCHAR),
+            new Column("cd_marital_status", SqlTypeName.VARCHAR),
+            new Column("cd_education_status", SqlTypeName.VARCHAR),
+            new Column("cd_purchase_estimate", SqlTypeName.BIGINT),
+            new Column("cd_credit_rating", SqlTypeName.VARCHAR),
+            new Column("cd_dep_count", SqlTypeName.BIGINT),
+            new Column("cd_dep_employed_count", SqlTypeName.BIGINT),
+            new Column("cd_dep_college_count", SqlTypeName.BIGINT)));
+    schema.add(
+        "date_dim",
+        new Table(
+            typeFactory,
+            new Column("d_date_sk", SqlTypeName.BIGINT),
+            new Column("d_date_id", SqlTypeName.VARCHAR),
+            new Column("d_date", SqlTypeName.DATE),
+            new Column("d_month_seq", SqlTypeName.BIGINT),
+            new Column("d_week_seq", SqlTypeName.BIGINT),
+            new Column("d_quarter_seq", SqlTypeName.BIGINT),
+            new Column("d_year", SqlTypeName.BIGINT),
+            new Column("d_dow", SqlTypeName.BIGINT),
+            new Column("d_moy", SqlTypeName.BIGINT),
+            new Column("d_dom", SqlTypeName.BIGINT),
+            new Column("d_qoy", SqlTypeName.BIGINT),
+            new Column("d_fy_year", SqlTypeName.BIGINT),
+            new Column("d_fy_quarter_seq", SqlTypeName.BIGINT),
+            new Column("d_fy_week_seq", SqlTypeName.BIGINT),
+            new Column("d_day_name", SqlTypeName.VARCHAR),
+            new Column("d_quarter_name", SqlTypeName.VARCHAR),
+            new Column("d_holiday", SqlTypeName.VARCHAR),
+            new Column("d_weekend", SqlTypeName.VARCHAR),
+            new Column("d_following_holiday", SqlTypeName.VARCHAR),
+            new Column("d_first_dom", SqlTypeName.BIGINT),
+            new Column("d_last_dom", SqlTypeName.BIGINT),
+            new Column("d_same_day_ly", SqlTypeName.BIGINT),
+            new Column("d_same_day_lq", SqlTypeName.BIGINT),
+            new Column("d_current_day", SqlTypeName.VARCHAR),
+            new Column("d_current_week", SqlTypeName.VARCHAR),
+            new Column("d_current_month", SqlTypeName.VARCHAR),
+            new Column("d_current_quarter", SqlTypeName.VARCHAR),
+            new Column("d_current_year", SqlTypeName.VARCHAR)));
+    schema.add(
+        "household_demographics",
+        new Table(
+            typeFactory,
+            new Column("hd_demo_sk", SqlTypeName.BIGINT),
+            new Column("hd_income_band_sk", SqlTypeName.BIGINT),
+            new Column("hd_buy_potential", SqlTypeName.VARCHAR),
+            new Column("hd_dep_count", SqlTypeName.BIGINT),
+            new Column("hd_vehicle_count", SqlTypeName.BIGINT)));
+    schema.add(
+        "income_band",
+        new Table(
+            typeFactory,
+            new Column("ib_income_band_sk", SqlTypeName.BIGINT),
+            new Column("ib_lower_bound", SqlTypeName.BIGINT),
+            new Column("ib_upper_bound", SqlTypeName.BIGINT)));
+    schema.add(
+        "item",
+        new Table(
+            typeFactory,
+            new Column("i_item_sk", SqlTypeName.BIGINT),
+            new Column("i_item_id", SqlTypeName.VARCHAR),
+            new Column("i_rec_start_date", SqlTypeName.DATE),
+            new Column("i_rec_end_date", SqlTypeName.DATE),
+            new Column("i_item_desc", SqlTypeName.VARCHAR),
+            new Column("i_current_price", SqlTypeName.DOUBLE),
+            new Column("i_wholesale_cost", SqlTypeName.DOUBLE),
+            new Column("i_brand_id", SqlTypeName.BIGINT),
+            new Column("i_brand", SqlTypeName.VARCHAR),
+            new Column("i_class_id", SqlTypeName.BIGINT),
+            new Column("i_class", SqlTypeName.VARCHAR),
+            new Column("i_category_id", SqlTypeName.BIGINT),
+            new Column("i_category", SqlTypeName.VARCHAR),
+            new Column("i_manufact_id", SqlTypeName.BIGINT),
+            new Column("i_manufact", SqlTypeName.VARCHAR),
+            new Column("i_size", SqlTypeName.VARCHAR),
+            new Column("i_formulation", SqlTypeName.VARCHAR),
+            new Column("i_color", SqlTypeName.VARCHAR),
+            new Column("i_units", SqlTypeName.VARCHAR),
+            new Column("i_container", SqlTypeName.VARCHAR),
+            new Column("i_manager_id", SqlTypeName.BIGINT),
+            new Column("i_product_name", SqlTypeName.VARCHAR)));
+    schema.add(
+        "promotion",
+        new Table(
+            typeFactory,
+            new Column("p_promo_sk", SqlTypeName.BIGINT),
+            new Column("p_promo_id", SqlTypeName.VARCHAR),
+            new Column("p_start_date_sk", SqlTypeName.BIGINT),
+            new Column("p_end_date_sk", SqlTypeName.BIGINT),
+            new Column("p_item_sk", SqlTypeName.BIGINT),
+            new Column("p_cost", SqlTypeName.DOUBLE),
+            new Column("p_response_target", SqlTypeName.BIGINT),
+            new Column("p_promo_name", SqlTypeName.VARCHAR),
+            new Column("p_channel_dmail", SqlTypeName.VARCHAR),
+            new Column("p_channel_email", SqlTypeName.VARCHAR),
+            new Column("p_channel_catalog", SqlTypeName.VARCHAR),
+            new Column("p_channel_tv", SqlTypeName.VARCHAR),
+            new Column("p_channel_radio", SqlTypeName.VARCHAR),
+            new Column("p_channel_press", SqlTypeName.VARCHAR),
+            new Column("p_channel_event", SqlTypeName.VARCHAR),
+            new Column("p_channel_demo", SqlTypeName.VARCHAR),
+            new Column("p_channel_details", SqlTypeName.VARCHAR),
+            new Column("p_purpose", SqlTypeName.VARCHAR),
+            new Column("p_discount_active", SqlTypeName.VARCHAR)));
+    schema.add(
+        "reason",
+        new Table(
+            typeFactory,
+            new Column("r_reason_sk", SqlTypeName.BIGINT),
+            new Column("r_reason_id", SqlTypeName.VARCHAR),
+            new Column("r_reason_desc", SqlTypeName.VARCHAR)));
+    schema.add(
+        "ship_mode",
+        new Table(
+            typeFactory,
+            new Column("sm_ship_mode_sk", SqlTypeName.BIGINT),
+            new Column("sm_ship_mode_id", SqlTypeName.VARCHAR),
+            new Column("sm_type", SqlTypeName.VARCHAR),
+            new Column("sm_code", SqlTypeName.VARCHAR),
+            new Column("sm_carrier", SqlTypeName.VARCHAR),
+            new Column("sm_contract", SqlTypeName.VARCHAR)));
+    schema.add(
+        "store",
+        new Table(
+            typeFactory,
+            new Column("s_store_sk", SqlTypeName.BIGINT),
+            new Column("s_store_id", SqlTypeName.VARCHAR),
+            new Column("s_rec_start_date", SqlTypeName.DATE),
+            new Column("s_rec_end_date", SqlTypeName.DATE),
+            new Column("s_closed_date_sk", SqlTypeName.BIGINT),
+            new Column("s_store_name", SqlTypeName.VARCHAR),
+            new Column("s_number_employees", SqlTypeName.BIGINT),
+            new Column("s_floor_space", SqlTypeName.BIGINT),
+            new Column("s_hours", SqlTypeName.VARCHAR),
+            new Column("s_manager", SqlTypeName.VARCHAR),
+            new Column("s_market_id", SqlTypeName.BIGINT),
+            new Column("s_geography_class", SqlTypeName.VARCHAR),
+            new Column("s_market_desc", SqlTypeName.VARCHAR),
+            new Column("s_market_manager", SqlTypeName.VARCHAR),
+            new Column("s_division_id", SqlTypeName.BIGINT),
+            new Column("s_division_name", SqlTypeName.VARCHAR),
+            new Column("s_company_id", SqlTypeName.BIGINT),
+            new Column("s_company_name", SqlTypeName.VARCHAR),
+            new Column("s_street_number", SqlTypeName.VARCHAR),
+            new Column("s_street_name", SqlTypeName.VARCHAR),
+            new Column("s_street_type", SqlTypeName.VARCHAR),
+            new Column("s_suite_number", SqlTypeName.VARCHAR),
+            new Column("s_city", SqlTypeName.VARCHAR),
+            new Column("s_county", SqlTypeName.VARCHAR),
+            new Column("s_state", SqlTypeName.VARCHAR),
+            new Column("s_zip", SqlTypeName.VARCHAR),
+            new Column("s_country", SqlTypeName.VARCHAR),
+            new Column("s_gmt_offset", SqlTypeName.DOUBLE),
+            new Column("s_tax_precentage", SqlTypeName.DOUBLE)));
+    schema.add(
+        "time_dim",
+        new Table(
+            typeFactory,
+            new Column("t_time_sk", SqlTypeName.BIGINT),
+            new Column("t_time_id", SqlTypeName.VARCHAR),
+            new Column("t_time", SqlTypeName.BIGINT),
+            new Column("t_hour", SqlTypeName.BIGINT),
+            new Column("t_minute", SqlTypeName.BIGINT),
+            new Column("t_second", SqlTypeName.BIGINT),
+            new Column("t_am_pm", SqlTypeName.VARCHAR),
+            new Column("t_shift", SqlTypeName.VARCHAR),
+            new Column("t_sub_shift", SqlTypeName.VARCHAR),
+            new Column("t_meal_time", SqlTypeName.VARCHAR)));
+    schema.add(
+        "warehouse",
+        new Table(
+            typeFactory,
+            new Column("w_warehouse_sk", SqlTypeName.BIGINT),
+            new Column("w_warehouse_id", SqlTypeName.VARCHAR),
+            new Column("w_warehouse_name", SqlTypeName.VARCHAR),
+            new Column("w_warehouse_sq_ft", SqlTypeName.BIGINT),
+            new Column("w_street_number", SqlTypeName.VARCHAR),
+            new Column("w_street_name", SqlTypeName.VARCHAR),
+            new Column("w_street_type", SqlTypeName.VARCHAR),
+            new Column("w_suite_number", SqlTypeName.VARCHAR),
+            new Column("w_city", SqlTypeName.VARCHAR),
+            new Column("w_county", SqlTypeName.VARCHAR),
+            new Column("w_state", SqlTypeName.VARCHAR),
+            new Column("w_zip", SqlTypeName.VARCHAR),
+            new Column("w_country", SqlTypeName.VARCHAR),
+            new Column("w_gmt_offset", SqlTypeName.DOUBLE)));
+    schema.add(
+        "web_page",
+        new Table(
+            typeFactory,
+            new Column("wp_web_page_sk", SqlTypeName.BIGINT),
+            new Column("wp_web_page_id", SqlTypeName.VARCHAR),
+            new Column("wp_rec_start_date", SqlTypeName.DATE),
+            new Column("wp_rec_end_date", SqlTypeName.DATE),
+            new Column("wp_creation_date_sk", SqlTypeName.BIGINT),
+            new Column("wp_access_date_sk", SqlTypeName.BIGINT),
+            new Column("wp_autogen_flag", SqlTypeName.VARCHAR),
+            new Column("wp_customer_sk", SqlTypeName.BIGINT),
+            new Column("wp_url", SqlTypeName.VARCHAR),
+            new Column("wp_type", SqlTypeName.VARCHAR),
+            new Column("wp_char_count", SqlTypeName.BIGINT),
+            new Column("wp_link_count", SqlTypeName.BIGINT),
+            new Column("wp_image_count", SqlTypeName.BIGINT),
+            new Column("wp_max_ad_count", SqlTypeName.BIGINT)));
+    schema.add(
+        "web_site",
+        new Table(
+            typeFactory,
+            new Column("web_site_sk", SqlTypeName.BIGINT),
+            new Column("web_site_id", SqlTypeName.VARCHAR),
+            new Column("web_rec_start_date", SqlTypeName.DATE),
+            new Column("web_rec_end_date", SqlTypeName.DATE),
+            new Column("web_name", SqlTypeName.VARCHAR),
+            new Column("web_open_date_sk", SqlTypeName.BIGINT),
+            new Column("web_close_date_sk", SqlTypeName.BIGINT),
+            new Column("web_class", SqlTypeName.VARCHAR),
+            new Column("web_manager", SqlTypeName.VARCHAR),
+            new Column("web_mkt_id", SqlTypeName.BIGINT),
+            new Column("web_mkt_class", SqlTypeName.VARCHAR),
+            new Column("web_mkt_desc", SqlTypeName.VARCHAR),
+            new Column("web_market_manager", SqlTypeName.VARCHAR),
+            new Column("web_company_id", SqlTypeName.BIGINT),
+            new Column("web_company_name", SqlTypeName.VARCHAR),
+            new Column("web_street_number", SqlTypeName.VARCHAR),
+            new Column("web_street_name", SqlTypeName.VARCHAR),
+            new Column("web_street_type", SqlTypeName.VARCHAR),
+            new Column("web_suite_number", SqlTypeName.VARCHAR),
+            new Column("web_city", SqlTypeName.VARCHAR),
+            new Column("web_county", SqlTypeName.VARCHAR),
+            new Column("web_state", SqlTypeName.VARCHAR),
+            new Column("web_zip", SqlTypeName.VARCHAR),
+            new Column("web_country", SqlTypeName.VARCHAR),
+            new Column("web_gmt_offset", SqlTypeName.DOUBLE),
+            new Column("web_tax_percentage", SqlTypeName.DOUBLE)));
+    return schema;
+  }
+
+  @Test
+  void processQuery() throws IOException, SqlParseException {
+      JavaTypeFactoryImpl typeFactory = new JavaTypeFactoryImpl();
+      CalciteSchema schema = newTpcdsSchema(typeFactory);
+      String sqlQuery = "select  i_item_id\n" +
+          "      ,i_item_desc\n" +
+          "      ,i_category\n" +
+          "      ,i_class\n" +
+          "      ,i_current_price\n" +
+          "      ,sum(ws_ext_sales_price) as itemrevenue\n" +
+          "      ,sum(ws_ext_sales_price)*100/sum(sum(ws_ext_sales_price))
over\n" +
+          "          (partition by i_class) as revenueratio\n" +
+          "from\n" +
+          "  web_sales\n" +
+          "      ,item\n" +
+          "      ,date_dim\n" +
+          "where\n" +
+          "  ws_item_sk = i_item_sk\n" +
+          "    and i_category in ('Sports', 'Books', 'Home')\n" +
+          "    and ws_sold_date_sk = d_date_sk\n" +
+          "  and d_date between cast('1999-02-22' as date)\n" +
+          "        and (cast('1999-02-22' as date) + INTERVAL '30' day)\n"
+
+          "group by\n" +
+          "  i_item_id\n" +
+          "        ,i_item_desc\n" +
+          "        ,i_category\n" +
+          "        ,i_class\n" +
+          "        ,i_current_price\n" +
+          "order by\n" +
+          "  i_category\n" +
+          "        ,i_class\n" +
+          "        ,i_item_id\n" +
+          "        ,i_item_desc\n" +
+          "        ,revenueratio\n" +
+          "limit 100";
+    System.out.println(sqlQuery);
+
+    SqlParser parser = SqlParser.create(
+        sqlQuery, SqlParser.Config.DEFAULT.withQuoting(Quoting.BACK_TICK));
+    SqlNode sqlNode = parser.parseQuery();
+
+    // 3> Validate the query
+    CalciteCatalogReader catalogReader = new CalciteCatalogReader(
+        schema,
+        Collections.emptyList(),
+        typeFactory,
+        CalciteConnectionConfig.DEFAULT.set(
+            CalciteConnectionProperty.CASE_SENSITIVE, "false"));
+    SqlValidator validator = SqlValidatorUtil.newValidator(
+        SqlStdOperatorTable.instance(),
+        catalogReader,
+        typeFactory,
+        SqlValidator.Config.DEFAULT);
+    sqlNode = validator.validate(sqlNode);
+
+    // 4> Convert the query into logical plan.
+    VolcanoPlanner planner = new VolcanoPlanner();
+    planner.addRelTraitDef(ConventionTraitDef.INSTANCE);
+    RelOptCluster cluster =
+        RelOptCluster.create(planner, new RexBuilder(typeFactory));
+    SqlToRelConverter relConverter = new SqlToRelConverter(
+        new RelOptTable.ViewExpander() {  // no-op expander
+          @Override
+          public RelRoot expandView(
+              final RelDataType rowType,
+              final String queryString,
+              final List<String> schemaPath,
+              final List<String> viewPath) {
+            return null;
+          }
+        },
+        validator,
+        catalogReader,
+        cluster,
+        StandardConvertletTable.INSTANCE,
+        SqlToRelConverter.config());
+    RelNode logicalPlan = relConverter.convertQuery(sqlNode, false,
true).rel;
+    System.out.println(RelOptUtil.dumpPlan(
+        "[Initial Logical Plan]",
+        logicalPlan,
+        SqlExplainFormat.TEXT,
+        SqlExplainLevel.EXPPLAN_ATTRIBUTES));
+    logicalPlan = relConverter.decorrelate(sqlNode, logicalPlan);
+    System.out.println(RelOptUtil.dumpPlan(
+        "[Decorrelated Logical Plan]",
+        logicalPlan,
+        SqlExplainFormat.TEXT,
+        SqlExplainLevel.EXPPLAN_ATTRIBUTES));
+
+    System.out.println("---");
+  }
+}
+

On Wed, Feb 24, 2021 at 6:56 AM Priyendra Deshwal <[email protected]>
wrote:

> On Sun, Feb 21, 2021 at 3:50 AM Ruben Q L <[email protected]> wrote:
>
>> Thanks for the feedback.
>>
>> The SUBSTR function is not a SQL standard function, so it requires some
>> specific configuration (specifically the "fun" parameter).
>> Please check
>> https://calcite.apache.org/docs/reference.html#dialect-specific-operators
>> for more info (and notice how SUBSTR is listed in the table in that
>> section).
>> The alternative would be modifying the queries to use the standard
>> SUBSTRING function.
>>
>
> I am unsure how to specify the "fun" parameter. Can you point me to some
> examples. Note that I am not interacting with calcite via some sort of
> connection string. I need some programmatic way to enable this behavior. I
> can certainly modify the query but it is useful for me to use this as a
> learning aid for what is possible with Calcite.
>
> I am trying to reproduce the partition query problem within Calcite, but so
>> far I have not succeeded.
>> I tried adding your query in a test in TpcdsTest.java [1]. SqlToRel
>> conversion seems to run fine (then the query fails at execution time with
>> "CalciteException: Cannot convert null to long", but that seems a
>> different
>> problem than yours).
>> Could you please try to reproduce the exception with a unit test in
>> Calcite?
>>
>
> The test fails for me on the latest version of master (commit 03e356c65).
> I have attached a patch with this email that contains the failing test.
> Here's the stack trace that I am getting:
>
> while converting SUM(`WS_EXT_SALES_PRICE`) * 100 /
> (SUM(SUM(`WS_EXT_SALES_PRICE`)) OVER (PARTITION BY `I_CLASS`))
> java.lang.RuntimeException: while converting SUM(`WS_EXT_SALES_PRICE`) *
> 100 / (SUM(SUM(`WS_EXT_SALES_PRICE`)) OVER (PARTITION BY `I_CLASS`))
> at
> org.apache.calcite.sql2rel.ReflectiveConvertletTable.lambda$registerNodeTypeMethod$1(ReflectiveConvertletTable.java:98)
> at
> org.apache.calcite.sql2rel.SqlNodeToRexConverterImpl.convertCall(SqlNodeToRexConverterImpl.java:62)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:5234)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:4488)
> at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:161)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:5090)
> at
> org.apache.calcite.sql2rel.StandardConvertletTable.lambda$new$9(StandardConvertletTable.java:209)
> at
> org.apache.calcite.sql2rel.SqlNodeToRexConverterImpl.convertCall(SqlNodeToRexConverterImpl.java:62)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:5234)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:4488)
> at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:161)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:5090)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.createAggImpl(SqlToRelConverter.java:3297)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertAgg(SqlToRelConverter.java:3141)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:702)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:664)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3538)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:589)
> at
> org.apache.calcite.adapter.tpcds.TpcdsDeshwalTest.processQuery(TpcdsDeshwalTest.java:676)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> at
> org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675)
> at
> org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
> at
> org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:125)
> at
> org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
> at
> org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:139)
> at
> org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:131)
> at
> org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:81)
> at
> org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
> at
> org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
> at
> org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:104)
> at
> org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:62)
> at
> org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:43)
> at
> org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:35)
> at
> org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
> at
> org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
> at
> org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:202)
> at
> org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
> at
> org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:198)
> at
> org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
> at
> org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
> at
> org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
> at
> org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
> at
> org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
> at
> org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:171)
> at
> org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:115)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
> at
> org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
> at
> org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
> at
> org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
> at
> org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:171)
> at
> org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:115)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
> at
> org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
> at
> org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
> at
> org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
> at
> org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
> at
> org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:171)
> at
> java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
> at
> java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
> at
> java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
> at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
> at
> java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
> at
> java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
> Caused by: java.lang.reflect.InvocationTargetException
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> at
> org.apache.calcite.sql2rel.ReflectiveConvertletTable.lambda$registerNodeTypeMethod$1(ReflectiveConvertletTable.java:93)
> ... 77 more
> Caused by: java.lang.UnsupportedOperationException: class
> org.apache.calcite.sql.SqlBasicCall: SUM(SUM(`WS_EXT_SALES_PRICE`)) OVER
> (PARTITION BY `I_CLASS`)
> at org.apache.calcite.util.Util.needToImplement(Util.java:1085)
> at
> org.apache.calcite.sql.validate.SqlValidatorImpl.getValidatedNodeType(SqlValidatorImpl.java:1765)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertOver(SqlToRelConverter.java:2069)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.access$2000(SqlToRelConverter.java:224)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:5083)
> at
> org.apache.calcite.sql2rel.StandardConvertletTable.convertOperands(StandardConvertletTable.java:960)
> at
> org.apache.calcite.sql2rel.StandardConvertletTable.convertOperands(StandardConvertletTable.java:952)
> at
> org.apache.calcite.sql2rel.StandardConvertletTable.convertCall(StandardConvertletTable.java:915)
> ... 82 more
>
>
>
>

Reply via email to