public static boolean isStructUDF(ExprNodeDesc columnDesc) { if (columnDesc instanceof ExprNodeGenericFuncDesc) { ExprNodeGenericFuncDesc exprNodeGenericFuncDesc = (ExprNodeGenericFuncDesc) columnDesc; return (exprNodeGenericFuncDesc.getGenericUDF() instanceof GenericUDFStruct); } return false; }
/** * Return the expression node descriptor if the input expression node is a GenericUDFIn. * Else, return null. * @param en Expression Node Descriptor * @return The expression node descriptor if the input expression node represents an IN clause. * Else, return null. */ private ExprNodeGenericFuncDesc getInExprNode(ExprNodeDesc en) { if (en == null) { return null; } if (en instanceof ExprNodeGenericFuncDesc && ((ExprNodeGenericFuncDesc)(en)).getGenericUDF() instanceof GenericUDFIn) { return (ExprNodeGenericFuncDesc) en; } return null; }
/** * Get the UDF class from an exprNodeDesc. Returns null if the exprNodeDesc * does not contain a UDF class. */ private static Class<? extends GenericUDF> getGenericUDFClassFromExprDesc(ExprNodeDesc desc) { if (!(desc instanceof ExprNodeGenericFuncDesc)) { return null; } ExprNodeGenericFuncDesc genericFuncDesc = (ExprNodeGenericFuncDesc) desc; return genericFuncDesc.getGenericUDF().getClass(); }
/** * Get the UDF class from an exprNodeDesc. Returns null if the exprNodeDesc * does not contain a UDF class. */ private static Class<? extends GenericUDF> getGenericUDFClassFromExprDesc(ExprNodeDesc desc) { if (!(desc instanceof ExprNodeGenericFuncDesc)) { return null; } ExprNodeGenericFuncDesc genericFuncDesc = (ExprNodeGenericFuncDesc) desc; return genericFuncDesc.getGenericUDF().getClass(); }
public void visit(ExprNodeGenericFuncDesc fnExpr) throws HiveException { GenericUDF fn = fnExpr.getGenericUDF(); if (fn instanceof GenericUDFLead || fn instanceof GenericUDFLag ) { llInfo.addLLFuncExprForTopExpr(topExpr, fnExpr); } } }
/** * Returns whether the exprNodeDesc is node of "cast". */ public static boolean isOpCast(ExprNodeDesc desc) { if (!(desc instanceof ExprNodeGenericFuncDesc)) { return false; } return isOpCast(((ExprNodeGenericFuncDesc)desc).getGenericUDF()); }
/** * Returns whether the exprNodeDesc is node of "cast". */ public static boolean isOpCast(ExprNodeDesc desc) { if (!(desc instanceof ExprNodeGenericFuncDesc)) { return false; } return isOpCast(((ExprNodeGenericFuncDesc)desc).getGenericUDF()); }
public void visit(ExprNodeGenericFuncDesc fnExpr) throws HiveException { GenericUDF fn = fnExpr.getGenericUDF(); if (fn instanceof GenericUDFLead || fn instanceof GenericUDFLag ) { llInfo.addLLFuncExprForTopExpr(topExpr, fnExpr); } } }
private boolean containsLeadLag(ExprNodeDesc exprNodeDesc) { if (exprNodeDesc instanceof ExprNodeGenericFuncDesc) { ExprNodeGenericFuncDesc genericFuncDesc = (ExprNodeGenericFuncDesc) exprNodeDesc; GenericUDF genFuncClass = genericFuncDesc.getGenericUDF(); if (genFuncClass instanceof GenericUDFLag || genFuncClass instanceof GenericUDFLead) { return true; } return containsLeadLag(genericFuncDesc.getChildren()); } else { // ExprNodeColumnDesc, ExprNodeConstantDesc, ExprNodeDynamicValueDesc, etc do not have // LEAD/LAG inside. return false; } }
public static ExprNodeDesc foldExpr(ExprNodeGenericFuncDesc funcDesc) { GenericUDF udf = funcDesc.getGenericUDF(); if (!isConstantFoldableUdf(udf, funcDesc.getChildren())) { return funcDesc; } return evaluateFunction(funcDesc.getGenericUDF(),funcDesc.getChildren(), funcDesc.getChildren()); }
public static boolean isPermanentFunction(ExprNodeGenericFuncDesc fnExpr) { GenericUDF udf = fnExpr.getGenericUDF(); if (udf == null) { return false; } Class<?> clazz = udf.getClass(); if (udf instanceof GenericUDFBridge) { clazz = ((GenericUDFBridge)udf).getUdfClass(); } if (clazz != null) { // Use session registry - see Registry.isPermanentFunc() return SessionState.getRegistryForWrite().isPermanentFunc(clazz); } return false; }
public static ExprNodeDesc foldExpr(ExprNodeGenericFuncDesc funcDesc) { GenericUDF udf = funcDesc.getGenericUDF(); if (!isDeterministicUdf(udf, funcDesc.getChildren())) { return funcDesc; } return evaluateFunction(funcDesc.getGenericUDF(),funcDesc.getChildren(), funcDesc.getChildren()); }
public static boolean isPermanentFunction(ExprNodeGenericFuncDesc fnExpr) { GenericUDF udf = fnExpr.getGenericUDF(); if (udf == null) return false; Class<?> clazz = udf.getClass(); if (udf instanceof GenericUDFBridge) { clazz = ((GenericUDFBridge)udf).getUdfClass(); } if (clazz != null) { // Use session registry - see Registry.isPermanentFunc() return SessionState.getRegistryForWrite().isPermanentFunc(clazz); } return false; }
private boolean mergeCardinalityViolationBranch(final Operator input) { if(input instanceof SelectOperator) { SelectOperator selectOp = (SelectOperator)input; if(selectOp.getConf().getColList().size() == 1) { ExprNodeDesc colExpr = selectOp.getConf().getColList().get(0); if(colExpr instanceof ExprNodeGenericFuncDesc) { ExprNodeGenericFuncDesc func = (ExprNodeGenericFuncDesc)colExpr ; if(func.getGenericUDF() instanceof GenericUDFCardinalityViolation){ return true; } } } } return false; }
public static void connectLeadLagFunctionsToPartition(LeadLagInfo leadLagInfo, PTFPartitionIterator<Object> pItr) throws HiveException { if (leadLagInfo == null || leadLagInfo.getLeadLagExprs() == null) { return; } for (ExprNodeGenericFuncDesc llFnDesc : leadLagInfo.getLeadLagExprs()) { GenericUDFLeadLag llFn = (GenericUDFLeadLag) llFnDesc.getGenericUDF(); llFn.setpItr(pItr); } }
private void setWriteIdForSurrogateKeys(LoadTableDesc ltd, Operator input) throws SemanticException { Map<String, ExprNodeDesc> columnExprMap = input.getConf().getColumnExprMap(); if (ltd == null || columnExprMap == null) { return; } for (ExprNodeDesc desc : columnExprMap.values()) { if (desc instanceof ExprNodeGenericFuncDesc) { GenericUDF genericUDF = ((ExprNodeGenericFuncDesc)desc).getGenericUDF(); if (genericUDF instanceof GenericUDFSurrogateKey) { ((GenericUDFSurrogateKey)genericUDF).setWriteId(ltd.getWriteId()); } } } }
public static void connectLeadLagFunctionsToPartition(LeadLagInfo leadLagInfo, PTFPartitionIterator<Object> pItr) throws HiveException { if (leadLagInfo == null || leadLagInfo.getLeadLagExprs() == null) { return; } for (ExprNodeGenericFuncDesc llFnDesc : leadLagInfo.getLeadLagExprs()) { GenericUDFLeadLag llFn = (GenericUDFLeadLag) llFnDesc.getGenericUDF(); llFn.setpItr(pItr); } }
private static boolean isWideningCast(ExprNodeGenericFuncDesc engfd) { GenericUDF udf = engfd.getGenericUDF(); if (!FunctionRegistry.isOpCast(udf)) { // It is not a cast return false; } return TypeInfoUtils.implicitConvertible(engfd.getChildren().get(0).getTypeInfo(), engfd.getTypeInfo()); }
private static boolean isWideningCast(ExprNodeGenericFuncDesc engfd) { GenericUDF udf = engfd.getGenericUDF(); if (!FunctionRegistry.isOpCast(udf)) { // It is not a cast return false; } return TypeInfoUtils.implicitConvertible(engfd.getChildren().get(0).getTypeInfo(), engfd.getTypeInfo()); }
private static boolean checkForStatefulFunctions(List<ExprNodeDesc> list) { for (ExprNodeDesc node : list) { if (node instanceof ExprNodeGenericFuncDesc) { GenericUDF nodeUDF = ((ExprNodeGenericFuncDesc) node).getGenericUDF(); // Stateful? if (FunctionRegistry.isStateful(nodeUDF)) { return true; } if (node.getChildren() != null && !node.getChildren().isEmpty() && checkForStatefulFunctions(node.getChildren())) { return true; } } } return false; }