protected void initialize(PartitionedTableFunctionDef def) throws HiveException { ShapeDetails inpShape = def.getInput().getOutputShape(); /* * 1. initialize args */ if (def.getArgs() != null) { for (PTFExpressionDef arg : def.getArgs()) { initialize(arg, inpShape); } } /* * 2. setup resolve, make connections */ TableFunctionEvaluator tEval = def.getTFunction(); // TableFunctionResolver tResolver = FunctionRegistry.getTableFunctionResolver(def.getName()); TableFunctionResolver tResolver = constructResolver(def.getResolverClassName()); tResolver.initialize(ptfDesc, def, tEval); /* * 3. give Evaluator chance to setup for RawInput execution; setup RawInput shape */ if (tEval.isTransformsRawInput()) { tResolver.initializeRawInputOI(); initialize(def.getRawInputShape(), tEval.getRawInputOI()); } else { def.setRawInputShape(inpShape); } inpShape = def.getRawInputShape(); /* * 4. give Evaluator chance to setup for Output execution; setup Output shape. */ tResolver.initializeOutputOI(); initialize(def.getOutputShape(), tEval.getOutputOI()); }