godfrey he created FLINK-18337: ---------------------------------- Summary: Introduce TableResult#await method to wait data ready Key: FLINK-18337 URL: https://issues.apache.org/jira/browse/FLINK-18337 Project: Flink Issue Type: Improvement Components: Table SQL / API Reporter: godfrey he
Currently, {{TableEnvironment.executeSql()}} method for INSERT statement returns TableResult once the job is submitted. Users must use {{tableResult.getJobClient.get() .getJobExecutionResult(Thread.currentThread().getContextClassLoader) .get()}} to wait the job finish. This API looks very ugly. So this issue aims to introduce {{TableResult#await}} method, the code snippet looks like: {code:java} val tEnv = ... // submit the job and wait job finish tEnv.executeSql("insert into ...").await() {code} the suggested new methods are: {code:java} /** * Wait until the data is ready. * * <p>For select operation, this method will wait unit the first row can be accessed in local. * For insert operation, this method will wait for the job to finish, because the result contains only one row. * For other operations, this method will return immediately, because the result is ready in local. * * @throws ExecutionException if this future completed exceptionally * @throws InterruptedException if the current thread was interrupted while waiting */ void await() throws InterruptedException, ExecutionException; /** * Wait until the data is ready. * * <p>For select operation, this method will wait unit the first row can be accessed in local. * For insert operation, this method will wait for the job to finish, because the result contains only one row. * For other operations, this method will return immediately, because the result is ready in local. * * @param timeout the maximum time to wait * @param unit the time unit of the timeout argument * @throws ExecutionException if this future completed exceptionally * @throws InterruptedException if the current thread was interrupted while waiting * @throws TimeoutException if the wait timed out */ void await(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException; {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)