[PROPOSAL] Add Context-Aware Functions for Apache Polaris #1620
+174
−18
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
About the change
I’d like to propose adding context-aware functions to Apache Polaris so that view definitions can resolve security context on the Polaris side (aka catalog end without depending on engines).
Proposed functions
Why it matters
These predicates make views dynamic. Example:
When a user whose one of principal roles include ANALYST calls LOAD VIEW, Polaris rewrites the view to
For everyone else the view becomes
The result is better and consistent control of the identity resolution without relying on the engine side changes and giving Polaris more authority in enforcing things.
Note the same can be extrapolated to any Polaris stored entity.
Proof of concept
I’ve put together a quick POC branch:
here ^^^
Prior art
Snowflake context functions : https://docs.snowflake.com/en/sql-reference/functions-context
Databricks Unity Catalog offers a similar mechanism called dynamic views:
https://docs.databricks.com/aws/en/views/dynamic
Next steps
If the community is interested, we can discuss API surface, engine implications, and a roadmap for merging.