private PutResult apply_ttl_update(NamedBlobRecord record, short accountId, short containerId, Connection connection)
      throws Exception {
    String query = "";
    try (PreparedStatement statement = connection.prepareStatement(TTL_UPDATE_QUERY)) {
      statement.setInt(1, accountId);
      statement.setInt(2, containerId);
      statement.setString(3, record.getBlobName());
      statement.setLong(4, record.getVersion());
      query = statement.toString();
      logger.debug("Updating TTL in MySql. Query {}", query);
      metricsRecoder.namedBlobUpdateRate.mark();
      int rowCount = statement.executeUpdate();
      if (rowCount == 0) {
        metricsRecoder.namedTtlupdateErrorCount.inc();
        throw buildException("TTL Update: Blob not found", RestServiceErrorCode.NotFound, record.getAccountName(),
            record.getContainerName(), record.getBlobName());
      }
    } catch (SQLException e) {
      logger.error("Failed to execute query {}, {}", query, e.getMessage());
      throw e;
    }
    return new PutResult(record);
  }
Construct a list query statement with prefix when {@link MySqlNamedBlobDbConfig#listNamedBlobsSQLOption} is 3
@param statement The {@link PreparedStatement} to set the parameters on.
@param accountId The account id
@param containerId The container id
@param blobNamePrefix The blobname prefix
@param pageToken The page token
@param maxKeysValue The max key to return
@throws SQLException
ambry-named-mysql/src/main/java/com/github/ambry/named/MySqlNamedBlobDb.java