[ 
https://issues.apache.org/jira/browse/CALCITE-2194?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16392092#comment-16392092
 ] 

Piotr Bojko commented on CALCITE-2194:
--------------------------------------

Thx for quick feedback.
* reformatting is my bad, will try to fix
* periods - to be fixed
* RexImpTable - it was a hocus pocus to me, but suddenly the files just blows 
with errors. Totally forgot to look at it after the poc was done. My bad - will 
inwestigate this further
* Full access instead hidden feature - you're the boss, win win :)
* as for Fairy - I'm not stick to names I can rename it. ThreadLocal like 
implementation was the quickest solution to drag the principal for almost all 
of the calcite stack - spring implements such features in the same threadlocal 
way. Any suggestion how can propagate the principal and I would try to ship it. 
 
* System.getProperty - previous implementation of 
USER/CURRENT_USER/SESSION_USER had used "user.name" property. I've added the 
fallback to previous behaviour in case an end user has not provided the user on 
the connection.
* boolean indirect and INDIRECT_SELECT was provided to implement my needed 
case. You map the user to INDIRECT_SELECT in schema now and this user can use 
such schema only through views from another schema. You can map user to SELECT 
in schema (but not INDIRECT_SELECT) and such user can use schema only through 
direct selects and not through views from other schemas.
* .gitgnore - will fix

What do you think in general about the change? Do you consider to accept the 
change to calcite after patching you doubts? For me only the 
"SqlAccessEnum.INDIRECT_SELECT" change is something more than an implementation 
and it is your call whether to accept another access type or to look to 
redesign my change.  

> Ability to hide a schema
> ------------------------
>
>                 Key: CALCITE-2194
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2194
>             Project: Calcite
>          Issue Type: New Feature
>          Components: core
>    Affects Versions: 1.16.0
>            Reporter: Piotr Bojko
>            Assignee: Piotr Bojko
>            Priority: Minor
>
> See: 
> [https://mail-archives.apache.org/mod_mbox/calcite-dev/201711.mbox/ajax/%3C6F6E52D4-6860-4384-A1CB-A2301D05394D%40apache.org%3E]
> I've looked into the core and the notion of an user could be hard to achieved 
> now. 
> Though, I am able to implement the "hidden schema" feature through following 
> changes:
>  # JsonSchema - add a holder for the feature, boolean flag or flags field 
> with enum (CACHED which now exists as a separate flag - some deprecation 
> could be needed, HIDDEN)
>  # CalciteSchema - pass through of a flag
>  # RelOptSchema - pass through of a flag
>  # CalciteCatalogReader - pass through of a flag
>  # Other derivatives of RelOptSchema - mocked value, false
>  # RelOptTable and impl - pass through of a flag
>  # SqlValidatorImpl - validation whether object from hidden schema is used 
> (in the same places like validateAccess)
>  # ViewTableMacro.apply ->  Schemas.analyzeView -> 
> CalcitePrepareImpl.analyzeView -> CalcitePrepareImpl.parse_ -> 
> CalcitePrepareImpl.CalcitePrepareImpl - this path of execution should build 
> SqlValidatorImpl which has the check from point 7 disabled- 
> Such feature could be useful for end users. 
> If the solution is ok - I can contribute it.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to