private int executeUpdateSQL(final String sql)
      throws TException, IoTDBSQLException, SQLException {
    final TSExecuteStatementReq execReq = new TSExecuteStatementReq(sessionId, sql, stmtId);
    final TSExecuteStatementResp execResp =
        callWithRetryAndReconnect(
            () -> client.executeUpdateStatement(execReq), TSExecuteStatementResp::getStatus);
    if (execResp.isSetQueryId()) {
      queryId = execResp.getQueryId();
    }
    try {
      RpcUtils.verifySuccess(execResp.getStatus());
    } catch (final StatementExecutionException e) {
      throw new IoTDBSQLException(e.getMessage(), execResp.getStatus());
    }
    return 0;
  }
There are two kinds of sql here: (1) query sql (2) update sql.

<p>(1) return IoTDBJDBCResultSet or IoTDBNonAlignJDBCResultSet (2) simply get executed
iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java