I have noticed an inconsistency for the following
==========[START model]========== { "version": "1.0", "defaultSchema": "foodmart", "schemas": [ { "name": "foodmart", "type": "custom", "factory": "example.Factory", "operand": { "tables": [ { "file": "product_class.json" }, { "file": "product.json" }, { "file": "sales_fact_1997.json" }, { "file": "time_by_day.json" } ] }, "lattices": [ { "name": "star", "sql": [ "select 1 from \"foodmart\".\"sales_fact_1997\" as \"s\"", "join \"foodmart\".\"product\" as \"p\" using (\"product_id\")", "join \"foodmart\".\"time_by_day\" as \"t\" using (\"time_id\")", "join \"foodmart\".\"product_class\" as \"pc\" on \"p\".\"product_class_id\" = \"pc\".\"product_class_id\"" ], "auto": false, "algorithm": true, "rowCountEstimate": 86837, "defaultMeasures": [ { "agg": "count" } ], "tiles": [ { "dimensions": [ "the_year", [ "t", "quarter" ] ], "measures": [ { "agg": "sum", "args": "unit_sales" }, { "agg": "sum", "args": "store_sales" }, { "agg": "count" } ] } ] } ], "tables": [ { "name": "v_sales_fact_1997", "type": "view", "sql": "select product_id, customer_id from foodmart.sales_fact_1997 where product_id=123", "modifiable": false } ] } ] } ==========[END model]========== ==========[START happy path]========== FrameworkConfig frameworkConfig = Frameworks.newConfigBuilder() .parserConfig( SqlParser.config() .withCaseSensitive(false) .withUnquotedCasing(Casing.UNCHANGED) .withLex(Lex.JAVA) ) .defaultSchema(connection.getRootSchema().getSubSchema(connection.getSchema())) .build(); Planner planner = Frameworks.getPlanner(frameworkConfig); // THIS WORKS // ===> String sqlInput = "select customer_id, product_name from foodmart.star"; System.out.println("\nInput SQL is: \n"+sqlInput); SqlNode sqlNodeInput = planner.parse(sqlInput); SqlNode sqlNodeInputValidated = planner.validate(sqlNodeInput); ==========[END happy path]========== ==========[START unhappy path]========== FrameworkConfig frameworkConfig = Frameworks.newConfigBuilder() .parserConfig( SqlParser.config() .withCaseSensitive(false) .withUnquotedCasing(Casing.UNCHANGED) .withLex(Lex.JAVA) ) .defaultSchema(connection.getRootSchema().getSubSchema(connection.getSchema())) .build(); Planner planner = Frameworks.getPlanner(frameworkConfig); // THIS FAILS // ===> String sqlInput = "select customer_id, product_name from foodmart.v_sales_fact_1997"; System.out.println("\nInput SQL is: \n"+sqlInput); SqlNode sqlNodeInput = planner.parse(sqlInput); SqlNode sqlNodeInputValidated = planner.validate(sqlNodeInput); ==========[END unhappy path]========== The error is as follows: Exception in thread "main" org.apache.calcite.tools.ValidationException: org.apache.calcite.runtime.CalciteContextException: From line 1, column 37 to line 1, column 60: Object 'FOODMART' not found; did you mean 'foodmart'? Why does parsing a query for a view get converted to uppercase, while parsing a query for a lattice does not get converted to uppercase? I believe this is a mistake as both entities should be treated the same. From, Hugh Pearse