// 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);
}