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)