[ 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_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} 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 columns to ReadEntity 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_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} -- This message was sent by Atlassian JIRA (v6.2#6252)