Oliver Lee created CALCITE-6219:
-----------------------------------

             Summary: Support SQL Validation for Tables with columns tagged as 
'filter required'
                 Key: CALCITE-6219
                 URL: https://issues.apache.org/jira/browse/CALCITE-6219
             Project: Calcite
          Issue Type: New Feature
            Reporter: Oliver Lee
            Assignee: Oliver Lee


Suppose that a user's Table definitions come in with a tag on certain columns 
that indicates the the column is required to have a filter on it for all 
incoming queries. 

 

I would like to add support to validate that incoming queries satisfies the 
table condition.

If all of the table's specified fields has a filter on it (present in a WHERE 
or HAVING clause for the query), then it will not error. 

 

ex. 

{{EMP}} table specifies that {{EMPNO}} requires a filter

 

{{select * from emp where empno = 1}}  -> No error

{{select * from emp where ename = 'bob' -> Error}}

{{select * from emp -> Error}}

 

The validation would occur after the namespace validation in 
{{SqlValidatorImpl}} as a separate pass.

 

I am envisioning that the full filter validation algorithm will form a couple 
of key steps
 *  Scanning the catalog/schema/tables and determining which fields are tagged 
to always require filters
 * A pass through the SQL statement to see if a certain field needs to be 
filtered multiple times (potentially for CTE, joins? needs further 
investigation) 
 * A pass through the SQL statement to discover filters on the statement 

 

In determining whether a {{WHERE}} or {{HAVING}} clause contains a certain 
field identifier, there will need to be a helper visitor for WHERE or HAVING 
SqlNodes to collect all of the SqlIdentifiers that could be nested within the 
{{operandList}} 

 

Special considerations:
 * joins
 * CTEs
 * subqueries



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

Reply via email to