THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||
---|---|---|
| ||
public interface FunctionDefinitionFactory { /** * Creates a {@link FunctionDefinition} from given {@link CatalogFunction}. If the * {@link CatalogFunction} is created by user defined resource, the user of * {@link FunctionDefinitionFactory} needs to override this method explicitly. * The implementation logic needs to use the user class loader to load custom classes * instead of the thread context class loader. * @param name name of the {@link CatalogFunction} * @param catalogFunction the catalog function * @param userClassLoader the class loader is used to load user defined function's class * @return */ default FunctionDefinition createFunctionDefinition( String name, CatalogFunction catalogFunction, ClassLoader userClassLoader) { if (catalogFunction.getFunctionResources().isPresent() && !CollectionUtil.isNullOrEmpty(catalogFunction.getFunctionResources().get())) { throw new UnsupportedOperationException( String.format("%s need to override default createFunctionDefinition for " + "loading user defined function class", this.getClass().getSimpleName())); } else { return createFunctionDefinition(name, catalogFunction); } } } |
TableEnvironment
Providing some methods that are used to register UDF for Table API user.
Code Block | ||
---|---|---|
| ||
@PublicEvolving
public interface TableEnvironment {
/**
* Registers a {@link UserDefinedFunction} class as a temporary system function by the specific
* class name and user defined resource uri.
*
* <p>Compared to {@link #createTemporarySystemFunction(String, Class)}, this method allow
* registering a user defined function by only provide a full path class name and an available
* resource which may be local or remote. User doesn't need to initialize the function instance
* in advance.
*
* <p>Temporary functions can shadow permanent ones. If a permanent function under a given name
* exists, it will be inaccessible in the current session. To make the permanent function
* available again one can drop the corresponding temporary system function.
*
* @param name The name under which the function will be registered globally.
* @param className The class name of UDF to be registered.
* @param resourceUri The udf resource uri in local or remote.
*/
void createTemporarySystemFunction(String name, String className, ResourceUri resourceUri);
/**
* Registers a {@link UserDefinedFunction} class as a catalog function in the given path by the
* specific class name and user defined resource uri.
*
* <p>Compared to {@link #createFunction(String, Class)}, this method allow registering a user
* defined function by only provide a full path class name and an available resource which may
* be local or remote. User doesn't need to initialize the function instance in advance.
*
* <p>Compared to system functions with a globally defined name, catalog functions are always
* (implicitly or explicitly) identified by a catalog and database.
*
* <p>There must not be another function (temporary or permanent) registered under the same
* path.
*
* @param path The path under which the function will be registered. See also the {@link
* TableEnvironment} class description for the format of the path.
* @param className The class name of UDF to be registered.
* @param resourceUri The udf resource uri in local or remote.
*/
void createFunction(String path, String className, ResourceUri resourceUri);
/**
* Registers a {@link UserDefinedFunction} class as a catalog function in the given path by the
* specific class name and user defined resource uri.
*
* <p>Compared to {@link #createFunction(String, Class)}, this method allow registering a user
* defined function by only provide a full path class name and an available resource which may
* be local or remote. User doesn't need to initialize the function instance in advance.
*
* <p>Compared to system functions with a globally defined name, catalog functions are always
* (implicitly or explicitly) identified by a catalog and database.
*
* <p>There must not be another function (temporary or permanent) registered under the same
* path.
*
* @param path The path under which the function will be registered. See also the {@link
* TableEnvironment} class description for the format of the path.
* @param className The class name of UDF to be registered.
* @param resourceUri The udf resource uri in local or remote.
* @param ignoreIfExists If a function exists under the given path and this flag is set, no
* operation is executed. An exception is thrown otherwise.
*/
void createFunction(
String path, String className, ResourceUri resourceUri, boolean ignoreIfExists);
/**
* Registers a {@link UserDefinedFunction} class as a temporary catalog function in the given
* path by the specific class name and user defined resource uri.
*
* <p>Compared to {@link #createTemporaryFunction(String, Class)}, this method allow registering
* a user defined function by only provide a full path class name and an available resource uri
* which may be local or remote. User doesn't need to initialize the function instance in
* advance.
*
* <p>Compared to {@link #createTemporarySystemFunction(String, String, ResourceUri)} with a
* globally defined name, catalog functions are always (implicitly or explicitly) identified by
* a catalog and database.
*
* <p>Temporary functions can shadow permanent ones. If a permanent function under a given name
* exists, it will be inaccessible in the current session. To make the permanent function
* available again one can drop the corresponding temporary function.
*
* @param path The path under which the function will be registered. See also the {@link
* TableEnvironment} class description for the format of the path.
* @param className The class name of UDF to be registered.
* @param resourceUri The udf resource uri in local or remote.
*/
void createTemporaryFunction(String path, String className, ResourceUri resourceUri);
} |
StreamExecutionEnvironment
...