presto-jmx/src/main/java/io/prestosql/plugin/jmx/JmxRecordSetProvider.java/JmxRecordSetProvider/getRecordSet
class JmxRecordSetProvider:    @Override
    public RecordSet getRecordSet(ConnectorTransactionHandle transaction, ConnectorSession session, ConnectorSplit split, ConnectorTableHandle table, List<? extends ColumnHandle> columns)
    {
        JmxTableHandle tableHandle = (JmxTableHandle) table;

        requireNonNull(columns, "columns is null");
        checkArgument(!columns.isEmpty(), "must provide at least one column");

        List<List<Object>> rows;
        try {
            if (tableHandle.isLiveData()) {
                rows = getLiveRows(tableHandle, columns);
            }
            else {
                List<Integer> selectedColumns = calculateSelectedColumns(tableHandle.getColumnHandles(), getColumnNames(columns));
                rows = tableHandle.getObjectNames().stream()
                        .flatMap(objectName -> jmxHistoricalData.getRows(objectName, selectedColumns).stream())
                        .collect(toImmutableList());
            }
        }
        catch (JMException e) {
            rows = ImmutableList.of();
        }

        return new InMemoryRecordSet(getColumnTypes(columns), rows);
    }