presto-benchmark-driver/src/main/java/io/prestosql/benchmark/driver/BenchmarkResultsPrinter.java/BenchmarkResultsPrinter/store
class BenchmarkResultsPrinter:    @Override
    public void store(BenchmarkSchema benchmarkSchema, BenchmarkQueryResult result)
    {
        Map<String, String> tags = new LinkedHashMap<>();
        tags.putAll(result.getBenchmarkQuery().getTags());
        tags.putAll(benchmarkSchema.getTags());

        // only print first line of error message
        Optional<String> errorMessage = result.getErrorMessage().map(error -> getFirst(Splitter.on(anyOf("\r\n")).trimResults().split(error), ""));

        printRow(ImmutableList.builder()
                .add(result.getSuite().getName())
                .add(result.getBenchmarkQuery().getName())
                .addAll(tagNames.stream().map(forMap(tags, "")).iterator())
                .add(NANOSECONDS.toMillis((long) result.getWallTimeNanos().getMedian()))
                .add(NANOSECONDS.toMillis((long) result.getWallTimeNanos().getMean()))
                .add(NANOSECONDS.toMillis((long) result.getWallTimeNanos().getStandardDeviation()))
                .add(NANOSECONDS.toMillis((long) result.getProcessCpuTimeNanos().getMedian()))
                .add(NANOSECONDS.toMillis((long) result.getProcessCpuTimeNanos().getMean()))
                .add(NANOSECONDS.toMillis((long) result.getProcessCpuTimeNanos().getStandardDeviation()))
                .add(NANOSECONDS.toMillis((long) result.getQueryCpuTimeNanos().getMedian()))
                .add(NANOSECONDS.toMillis((long) result.getQueryCpuTimeNanos().getMean()))
                .add(NANOSECONDS.toMillis((long) result.getQueryCpuTimeNanos().getStandardDeviation()))
                .add(result.getStatus().toString().toLowerCase(Locale.ENGLISH))
                .add(errorMessage.orElse(""))
                .build());
    }