/** * Adds to the set of synonyms of the supplied function. * @param funcName * @param funcInfo * @param synonyms */ public void getFunctionSynonyms( String funcName, FunctionInfo funcInfo, Set<String> synonyms) throws SemanticException { lock.lock(); try { Class<?> funcClass = funcInfo.getFunctionClass(); for (Map.Entry<String, FunctionInfo> entry : mFunctions.entrySet()) { String name = entry.getKey(); if (name.contains(WINDOW_FUNC_PREFIX) || name.equals(funcName)) { continue; } FunctionInfo function = entry.getValue(); if (function.getFunctionClass() == funcClass) { synonyms.add(name); } } } finally { lock.unlock(); } }
/** * Adds to the set of synonyms of the supplied function. * @param funcName * @param funcInfo * @param synonyms */ public void getFunctionSynonyms( String funcName, FunctionInfo funcInfo, Set<String> synonyms) throws SemanticException { lock.lock(); try { Class<?> funcClass = funcInfo.getFunctionClass(); for (Map.Entry<String, FunctionInfo> entry : mFunctions.entrySet()) { String name = entry.getKey(); if (name.contains(WINDOW_FUNC_PREFIX) || name.equals(funcName)) { continue; } FunctionInfo function = entry.getValue(); if (function.getFunctionClass() == funcClass) { synonyms.add(name); } } } finally { lock.unlock(); } }
public static TableFunctionResolver getTableFunctionResolver(String functionName) throws SemanticException { FunctionInfo tfInfo = getFunctionInfo(functionName); if (tfInfo != null && tfInfo.isTableFunction()) { return (TableFunctionResolver) ReflectionUtils.newInstance(tfInfo.getFunctionClass(), null); } return null; }
private Class<?> getPermanentUdfClass(FunctionInfo function) { Class<?> functionClass = function.getFunctionClass(); if (functionClass == null) { // Expected for permanent UDFs at this point. ClassLoader loader = Utilities.getSessionSpecifiedClassLoader(); try { functionClass = Class.forName(function.getClassName(), true, loader); } catch (ClassNotFoundException ex) { throw new RuntimeException(ex); } } return functionClass; }
private Class<?> getPermanentUdfClass(FunctionInfo function) { Class<?> functionClass = function.getFunctionClass(); if (functionClass == null) { // Expected for permanent UDFs at this point. ClassLoader loader = Utilities.getSessionSpecifiedClassLoader(); try { functionClass = Class.forName(function.getClassName(), true, loader); } catch (ClassNotFoundException ex) { throw new RuntimeException(ex); } } return functionClass; }
public static TableFunctionResolver getTableFunctionResolver(String functionName) throws SemanticException { FunctionInfo tfInfo = getFunctionInfo(functionName); if (tfInfo != null && tfInfo.isTableFunction()) { return (TableFunctionResolver) ReflectionUtils.newInstance(tfInfo.getFunctionClass(), null); } return null; }
FunctionInfo prev = mFunctions.get(functionName); if (prev != null) { if (isBuiltInFunc(prev.getFunctionClass())) { String message = String.format("Function (%s / %s) is hive builtin function, which cannot be overridden.", functionName, prev.getFunctionClass()); LOG.debug(message); throw new RuntimeException(message); builtIns.add(function.getFunctionClass()); } else if (function.isPersistent() && !isNative) {
FunctionInfo prev = mFunctions.get(functionName); if (prev != null) { if (isBuiltInFunc(prev.getFunctionClass())) { throw new RuntimeException("Function " + functionName + " is hive builtin function, " + "which cannot be overridden."); builtIns.add(function.getFunctionClass()); } else if (function.isPersistent() && !isNative) {
FunctionInfo functionInfo = FunctionRegistry.getFunctionInfo(funcName); if (functionInfo != null) { funcClass = functionInfo.getFunctionClass();
FunctionInfo functionInfo = FunctionRegistry.getFunctionInfo(funcName); if (functionInfo != null) { funcClass = functionInfo.getFunctionClass();
private void checkFunctionClass(FunctionInfo cfi) throws ClassNotFoundException { // This call will fail for non-generic UDFs using GenericUDFBridge Class<?> udfClass = cfi.getFunctionClass(); // Even if we have a reference to the class (which will be the case for GenericUDFs), // the classloader may not be able to resolve the class, which would mean reflection-based // methods would fail such as for plan deserialization. Make sure this works too. Class.forName(udfClass.getName(), true, Utilities.getSessionSpecifiedClassLoader()); }
/** * Adds to the set of synonyms of the supplied function. * @param funcName * @param funcInfo * @param synonyms */ public synchronized void getFunctionSynonyms( String funcName, FunctionInfo funcInfo, Set<String> synonyms) throws SemanticException { Class<?> funcClass = funcInfo.getFunctionClass(); for (Map.Entry<String, FunctionInfo> entry : mFunctions.entrySet()) { String name = entry.getKey(); if (name.contains(WINDOW_FUNC_PREFIX) || name.equals(funcName)) { continue; } FunctionInfo function = entry.getValue(); if (function.getFunctionClass() == funcClass) { synonyms.add(name); } } }
/** * Returns the set of synonyms of the supplied function. * * @param funcName * the name of the function * @return Set of synonyms for funcName */ public static Set<String> getFunctionSynonyms(String funcName) { Set<String> synonyms = new HashSet<String>(); FunctionInfo funcInfo = getFunctionInfo(funcName); if (null == funcInfo) { return synonyms; } Class<?> funcClass = funcInfo.getFunctionClass(); for (String name : mFunctions.keySet()) { if (name.equals(funcName)) { continue; } if (mFunctions.get(name).getFunctionClass().equals(funcClass)) { synonyms.add(name); } } return synonyms; }
public static TableFunctionResolver getTableFunctionResolver(String functionName) throws SemanticException { FunctionInfo tfInfo = getFunctionInfo(functionName); if (tfInfo != null && tfInfo.isTableFunction()) { return (TableFunctionResolver) ReflectionUtils.newInstance(tfInfo.getFunctionClass(), null); } return null; }
private synchronized void addFunction(String functionName, FunctionInfo function) { if (isNative ^ function.isNative()) { throw new RuntimeException("Function " + functionName + " is not for this registry"); } functionName = functionName.toLowerCase(); FunctionInfo prev = mFunctions.get(functionName); if (prev != null) { if (isBuiltInFunc(prev.getFunctionClass())) { throw new RuntimeException("Function " + functionName + " is hive builtin function, " + "which cannot be overriden."); } prev.discarded(); } mFunctions.put(functionName, function); if (function.isBuiltIn()) { builtIns.add(function.getFunctionClass()); } }
static protected Class resolveFunc(String funcName) throws IOException { String className = funcName; Class udfClass; if (FunctionRegistry.getFunctionNames().contains(funcName)) { FunctionInfo func; try { func = FunctionRegistry.getFunctionInfo(funcName); } catch (SemanticException e) { throw new IOException(e); } udfClass = func.getFunctionClass(); } else { udfClass = PigContext.resolveClassName(className); if (udfClass == null) { throw new IOException("Cannot find Hive UDF " + funcName); } } return udfClass; }
FunctionInfo functionInfo = FunctionRegistry.getFunctionInfo(funcName); if (functionInfo != null) { funcClass = functionInfo.getFunctionClass();
FunctionInfo functionInfo = FunctionRegistry.getFunctionInfo(funcName); if (functionInfo != null) { funcClass = functionInfo.getFunctionClass();