On Wed, Feb 24, 2021 at 8:26 AM Ruben Q L <rube...@gmail.com> wrote:

> Could you please verify if changing this line:
>   SqlValidator.Config.DEFAULT
> and using this instead:
>    SqlValidator.Config.DEFAULT.withIdentifierExpansion(true)
> solves your issue with the partition query?
>

Nice. That did solve the issue for me. Can you provide me some explanation
for what may be happening here?

On Wed, Feb 24, 2021 at 3:26 PM Priyendra Deshwal <priyen...@gmail.com>
> wrote:
>
> > 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 <priyen...@gmail.com>
> >
> >     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 <priyen...@gmail.com>
> > wrote:
> >
> > > On Sun, Feb 21, 2021 at 3:50 AM Ruben Q L <rube...@gmail.com> 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