private NamedBlobRecord run_get_v2(String accountName, String containerName, String blobName, GetOption option,
      short accountId, short containerId, Connection connection) throws Exception {
    String query = "";
    try (PreparedStatement statement = connection.prepareStatement(GET_QUERY)) {
      statement.setInt(1, accountId);
      statement.setInt(2, containerId);
      statement.setString(3, blobName);
      query = statement.toString();
      logger.debug("Getting blob name from MySql. Query {}", query);
      metricsRecoder.namedBlobGetRate.mark();
      try (ResultSet resultSet = statement.executeQuery()) {
        if (!resultSet.next()) {
          throw buildException("GET: Blob not found", RestServiceErrorCode.NotFound, accountName, containerName,
              blobName);
        }
        String blobId = Base64.encodeBase64URLSafeString(resultSet.getBytes(1));
        long version = resultSet.getLong(2);
        Timestamp deletionTime = resultSet.getTimestamp(3);
        long currentTime = this.time.milliseconds();
        if (compareTimestamp(deletionTime, currentTime) <= 0 && !includeDeletedOrExpiredOptions.contains(option)) {
          throw buildException("GET: Blob is not available due to it is deleted or expired",
              RestServiceErrorCode.Deleted, accountName, containerName, blobName);
        } else {
          return new NamedBlobRecord(accountName, containerName, blobName, blobId, timestampToMs(deletionTime),
              version);
        }
      }
    } catch (SQLException e) {
      logger.error("Failed to execute query {}, {}", query, e.getMessage());
      throw e;
    }
  }
Exposed for integration test usage.
@return a map from datacenter name to {@link DataSource}.
ambry-named-mysql/src/main/java/com/github/ambry/named/MySqlNamedBlobDb.java