Status
Current state: [One of "Under Discussion", "Accepted", "Rejected"]
Discussion thread: https://lists.apache.org/thread/k6s50gcgznon9v1oylyh396gb5kgrwmdJIRA:
here (<- link to Vote thread: https://issueslists.apache.org/thread/jira/browse/FLINK-XXXX)659wfgm94oq7484q2bjsqr02xv7r0r4y
JIRA:
Jira | ||||||
---|---|---|---|---|---|---|
|
Released: <Flink Version>1.18.0
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
...
Code Block | ||
---|---|---|
| ||
/** A context to provide necessary context used by stored procedure. */ @PublicEvolving public interface ProcedureContext { /** Return the StreamExecutionEnvironment where the procedure is called. */ StreamExecutionEnvironment getExecutionEnvironment(); } |
Note: To avoid exposing to much to early to devs, we only put StreamExecutionEnvironment to the ProcedureContext currently since it's the most needed for stored procedure. If we find we stored procedure will need other things, we put add it to the ProcedureContext in the future.
then, we propose a new interface Procedure
for stored procedure. The stored procedure providers are expected to implement Procedure
to define their own procedure.
...
Code Block | ||
---|---|---|
| ||
@PublicEvolving public interface Catalog { /** * Get the procedure. procedure name should be handled in a case insensitive way. * * @param procedurePath path of the procedure * @return the requested function * @throws ProcedureNotExistException if the function does not exist in the catalog * @throws CatalogException in case of any runtime exception */ default Procedure getProcedure(ObjectPath procedurePath) throws ProcedureNotExistException, CatalogException { throw new UnsupportedOperationException(String.format("getProcedure is not implemented for %s.", this.getClass())); } /** * List the names of all procedures in the given database. An empty list is returned if no procedure. * * @param dbName name of the database. * @return a list of the names of the procedures in this database * @throws DatabaseNotExistException if the database does not exist * @throws CatalogException in case of any runtime exception */ default List<String> listFunctionslistProcedures(String dbName) throws DatabaseNotExistException, CatalogException { throw new UnsupportedOperationException(String.format("listFunctionslistProcedures is not implemented for %s.", this.getClass())); } } |
...