diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java index daf1894..7e19607 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java @@ -55,7 +55,7 @@ // Bean methods private static final long serialVersionUID = 1L; - List operatorHooks; + List operatorHooks = null; private Configuration configuration; protected List> childOperators; @@ -436,16 +436,15 @@ public void passExecContext(ExecMapperContext execContext) { } } - private void enterOperatorHooks(OperatorHookContext opHookContext) throws HiveException { - if (this.operatorHooks == null) { - return; - } + private void enterOperatorHooks(Object row, int tag) throws HiveException { + OperatorHookContext opHookContext = new OperatorHookContext(this, row, tag); for(OperatorHook opHook : this.operatorHooks) { opHook.enter(opHookContext); } } - private void exitOperatorHooks(OperatorHookContext opHookContext) throws HiveException { + private void exitOperatorHooks(Object row, int tag) throws HiveException { + OperatorHookContext opHookContext = new OperatorHookContext(this, row, tag); if (this.operatorHooks == null) { return; } @@ -527,9 +526,13 @@ public void process(Object row, int tag) throws HiveException { } OperatorHookContext opHookContext = new OperatorHookContext(this, row, tag); preProcessCounter(); - enterOperatorHooks(opHookContext); + if (this.operatorHooks != null) { + enterOperatorHooks(row, tag); + } processOp(row, tag); - exitOperatorHooks(opHookContext); + if (this.operatorHooks != null) { + exitOperatorHooks(row, tag); + } postProcessCounter(); } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorHookUtils.java ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorHookUtils.java index d7be357..7ea6ca3 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorHookUtils.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorHookUtils.java @@ -30,11 +30,11 @@ public static final Log LOG = LogFactory.getLog("OperatorHookUtils"); public static List getOperatorHooks(Configuration hconf) throws Exception { - List opHooks = new ArrayList(); String csOpHooks = HiveConf.getVar(hconf, HiveConf.ConfVars.OPERATORHOOKS); if(csOpHooks == null) { - return opHooks; + return null; } + List opHooks = new ArrayList(); String[] opHookClasses = csOpHooks.split(","); for(String opHookClass: opHookClasses) { try {