XMLWordPrintableJSON

Details

    Description

      This issue aims to introduce executeSql which can execute the given single statement, and returns the execution result.
      This method only supports executing a single statement which can be DDL, DML, DQL, SHOW, DESCRIBE, EXPLAIN and USE. For DML and DQL, this method returns TableResult once the job has been submitted. For DDL and DCL statements, TableResult is returned once the operation has finished.

      interface TableEnvironment {
           /**
            * Execute the given single statement and
            * the statement can be DDL/DML/DQL/SHOW/DESCRIBE/EXPLAIN/USE.
            *
            * If the statement is translated to a Flink job (DML/DQL),
            * the TableResult will be returned until the job is submitted, and
            * contains a JobClient instance to associate the job.
            * Else, the TableResult will be returned until the statement
            * execution is finished, does not contain a JobClient instance.
            *
            * @return result for DQL/SHOW/DESCRIBE/EXPLAIN, the affected row count
            * for `DML` (-1 means unknown),or a string message ("OK") for other 
            * statements.
            */
          TableResult executeSql(String statement);
      }
      
      /**
       * A TableResult is the representation of the statement execution result.
       */
      interface TableResult {
         /**
          * return JobClient if a Flink job is submitted
          * (for DML/DQL statement), else return empty (e.g. DDL).
          */
         Optional<JobClient> getJobClient();
       
         /** 
          * Get the schema of result. 
          */
          TableSchema getTableSchema();
           
          /**
           * return the ResultKind which can avoid custom parsing of
           * an "OK" row in programming
           */
          ResultKind getResultKind();
       
           /**
            * Get the result contents as an iterable rows.
            */
          Iterator<Row> collect();
       
          /**
           * Print the result contents.
           */
          void print();
      }
      
      /**
       * ResultKind defines the types of the result.
       */
      public enum ResultKind {
          // for DDL, DCL and statements with a simple "OK"
          SUCCESS,
       
          // rows with important content are available (DML, DQL)
          SUCCESS_WITH_CONTENT
      }
      

      Attachments

        Issue Links

          Activity

            People

              godfreyhe godfrey he
              godfreyhe godfrey he
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m