[
https://issues.apache.org/jira/browse/HIVE-7730?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Xiaomeng Huang updated HIVE-7730:
---------------------------------
Description:
-Now what we get from HiveSemanticAnalyzerHookContextImpl is limited. If we
have hook of HiveSemanticAnalyzerHook, we may want to get more things from
hookContext. (e.g. the needed colums from query).-
-So we should get instance of HiveSemanticAnalyzerHookContext from
configuration, extends HiveSemanticAnalyzerHookContext with a new
implementation, overide the HiveSemanticAnalyzerHookContext.update() and put
what you want to the class.-
Hive should store accessed columns to ReadEntity when we set
HIVE_STATS_COLLECT_SCANCOLS is true.
Then we can get accessed columns when do authorization in compile before
execute.
Here is the quick implement in SemanticAnalyzer.analyzeInternal() below:
{code} boolean isColumnInfoNeedForAuth =
SessionState.get().isAuthorizationModeV2()
&& HiveConf.getBoolVar(conf,
HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED);
if (isColumnInfoNeedForAuth
|| HiveConf.getBoolVar(this.conf,
HiveConf.ConfVars.HIVE_STATS_COLLECT_SCANCOLS) == true) {
ColumnAccessAnalyzer columnAccessAnalyzer = new
ColumnAccessAnalyzer(pCtx);
setColumnAccessInfo(columnAccessAnalyzer.analyzeColumnAccess());
// TODO: we can put accessed column map to ReadEntity getting from
columnAccessInfo
}
{code}
was:
-Now what we get from HiveSemanticAnalyzerHookContextImpl is limited. If we
have hook of HiveSemanticAnalyzerHook, we may want to get more things from
hookContext. (e.g. the needed colums from query).-
-So we should get instance of HiveSemanticAnalyzerHookContext from
configuration, extends HiveSemanticAnalyzerHookContext with a new
implementation, overide the HiveSemanticAnalyzerHookContext.update() and put
what you want to the class.-
Hive should store accessed columns to ReadEntity when we set
HIVE_AUTHORIZATION_ENABLED or HIVE_STATS_COLLECT_SCANCOLS is true.
Then we can get accessed columns when do authorization in compile before
execute.
Here is the quick implement in SemanticAnalyzer.analyzeInternal() below:
{code} boolean isColumnInfoNeedForAuth =
SessionState.get().isAuthorizationModeV2()
&& HiveConf.getBoolVar(conf,
HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED);
if (isColumnInfoNeedForAuth
|| HiveConf.getBoolVar(this.conf,
HiveConf.ConfVars.HIVE_STATS_COLLECT_SCANCOLS) == true) {
ColumnAccessAnalyzer columnAccessAnalyzer = new
ColumnAccessAnalyzer(pCtx);
setColumnAccessInfo(columnAccessAnalyzer.analyzeColumnAccess());
// TODO: we can put accessed column map to ReadEntity getting from
columnAccessInfo
}
{code}
> Extend ReadEntity to add accessed columns from query
> ----------------------------------------------------
>
> Key: HIVE-7730
> URL: https://issues.apache.org/jira/browse/HIVE-7730
> Project: Hive
> Issue Type: Bug
> Reporter: Xiaomeng Huang
> Attachments: HIVE-7730.001.patch
>
>
> -Now what we get from HiveSemanticAnalyzerHookContextImpl is limited. If we
> have hook of HiveSemanticAnalyzerHook, we may want to get more things from
> hookContext. (e.g. the needed colums from query).-
> -So we should get instance of HiveSemanticAnalyzerHookContext from
> configuration, extends HiveSemanticAnalyzerHookContext with a new
> implementation, overide the HiveSemanticAnalyzerHookContext.update() and put
> what you want to the class.-
> Hive should store accessed columns to ReadEntity when we set
> HIVE_STATS_COLLECT_SCANCOLS is true.
> Then we can get accessed columns when do authorization in compile before
> execute.
> Here is the quick implement in SemanticAnalyzer.analyzeInternal() below:
> {code} boolean isColumnInfoNeedForAuth =
> SessionState.get().isAuthorizationModeV2()
> && HiveConf.getBoolVar(conf,
> HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED);
> if (isColumnInfoNeedForAuth
> || HiveConf.getBoolVar(this.conf,
> HiveConf.ConfVars.HIVE_STATS_COLLECT_SCANCOLS) == true) {
> ColumnAccessAnalyzer columnAccessAnalyzer = new
> ColumnAccessAnalyzer(pCtx);
> setColumnAccessInfo(columnAccessAnalyzer.analyzeColumnAccess());
> // TODO: we can put accessed column map to ReadEntity getting from
> columnAccessInfo
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)