Oliver Lee created CALCITE-6301:
-----------------------------------

             Summary: Extend ‘Must-filter’ columns to support a conditional 
bypass list
                 Key: CALCITE-6301
                 URL: https://issues.apache.org/jira/browse/CALCITE-6301
             Project: Calcite
          Issue Type: Improvement
            Reporter: Oliver Lee
            Assignee: Oliver Lee


In [CALCITE-6219] we introduced SemanticTable, where tables that implement this 
interface can define fields to be ‘must-filter’, and a query without those 
filters in any of its WHERE or HAVING clauses, it will throw a validation error.
 
I would like to extend this functionality to support a by-pass list of fields 
such that if any field from this secondary list is present in a WHERE / HAVING 
clause, then the must-filter fields can be ignored and will not raise an 
exception if not filtered on. 
 
Ex.
 
EMP table specifies the following:
Must-filter-fields: [EMPNO, DEPTNO]
Bypass-fields: [ENAME]
 
 
SELECT * FROM EMP WHERE EMPNO = 1 and DEPTNO = 2 -> No error
SELECT * FROM EMP WHERE EMPNO = 1 -> Error
SELECT * FROM EMP WHERE EMPNO = 1 and ENAME = ’name’ -> No error
SELECT * FROM EMP WHERE ENAME = ’name’ -> No error
 
 
 
Again, special considerations are for handling 
 
 * Joins
 * CTEs
 * Subqueries

 
 
And a similar exhaustive suite of tests like the one for [CALCITE-6219] should 
be employed



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to