code: public boolean execute(final String sql, final int[] columnIndexes) throws SQLException {
      return executeInternal(sql, fetchSize, Statement.RETURN_GENERATED_KEYS);
    }
docs: Executes the given SQL statement, which may return multiple results, and signals the driver
  that the auto-generated keys indicated in the given array should be made available for
  retrieval.  This array contains the indexes of the columns in the target table that contain the
  auto-generated keys that should be made available. The driver will ignore the array if the SQL
  statement is not an <code>INSERT</code> statement, or an SQL statement able to return
  auto-generated keys (the list of such statements is vendor-specific).
  <p>Under some (uncommon) situations, a single SQL statement may return multiple result sets
  and/or update counts. Normally you can ignore this unless you are (1) executing a stored
  procedure that you know may return multiple results or (2) you are dynamically executing an
  unknown SQL string.</p> The
  <code>execute</code> method executes an SQL statement and indicates the form of the first
  result. You must then use the methods <code>getResultSet</code> or <code>getUpdateCount</code>
  to retrieve the result, and <code>getInternalMoreResults</code> to move to any subsequent
  result(s).
  
  @param sql           any SQL statement
  @param columnIndexes an array of the indexes of the columns in the inserted row that should be
  made available for retrieval by a call to the method
  <code>getGeneratedKeys</code>
  @return <code>true</code> if the first result is a <code>ResultSet</code> object;
  <code>false</code> if it is an update count or there are no results
  @throws SQLException                    if a database access error occurs, this method is
  called on a closed
  <code>Statement</code> or the elements in
  the <code>int</code> array passed to this method are
  not valid column indexes
  @see #getResultSet
  @see #getUpdateCount
  @see #getMoreResults