BaseSemanticAnalyzer sem = SemanticAnalyzerFactory.get(conf, tree);
String hookName = HiveConf.getVar(conf, ConfVars.SEMANTIC_ANALYZER_HOOK);
// Do semantic analysis and plan generation
if (hookName != null) {
AbstractSemanticAnalyzerHook hook = HiveUtils.getSemanticAnalyzerHook(conf, hookName);
HiveSemanticAnalyzerHookContext hookCtx = new HiveSemanticAnalyzerHookContextImpl();
hookCtx.setConf(conf);
hook.preAnalyze(hookCtx, tree);
sem.analyze(tree, ctx);
hook.postAnalyze(hookCtx, sem.getRootTasks());
} else {
sem.analyze(tree, ctx);
}
LOG.info("Semantic Analysis Completed");