### Description

Two indices:

**test1**
```
{
    "settings": {
        "routing_path": "event.dataset",
        "index": {
            "mode": "time_series"
        }
    },
    "mappings": {
        "properties": {
            "@timestamp": {
                "type": "date"
            },
            "bytes_counter": {
                "type": "long",
                "time_series_metric": "counter"
            },
            "event": {
                "properties": {
                    "dataset": {
                        "type": "keyword",
                        "time_series_dimension": true
                    }
                }
            }
        }
    }
}
```

with data

```
{ "index": { } }
{ "bytes":123,"@timestamp":123456789, "event.dataset":"x" }
```

**test2**
```
{
    "mappings": {
      "properties": {
        "bytes_counter": {
          "type": "long"
        }
      }
    }
}
```

with no data.

Running `from test* | limit 1` results in 

```
{
    "error": {
        "root_cause": [
            {
                "type": "illegal_argument_exception",
                "reason": "Field type [counter] is not supported"
            }
        ],
        "type": "illegal_argument_exception",
        "reason": "Field type [counter] is not supported"
    },
    "status": 400
}
```

Running `from test* | limit 0` results in

```
{
    "columns": [
        {
            "name": "@timestamp",
            "type": "date"
        },
        {
            "name": "bytes",
            "type": "long"
        },
        {
            "name": "bytes_counter",
            "type": "long"
        },
        {
            "name": "event.dataset",
            "type": "keyword"
        }
    ],
    "values": []
}
```

**Notice above `bytes_counter` as `long`**. Running `from test1 | limit 0` results in

```
{
    "columns": [
        {
            "name": "@timestamp",
            "type": "date"
        },
        {
            "name": "bytes",
            "type": "long"
        },
        {
            "name": "bytes_counter",
            "type": "unsupported"
        },
        {
            "name": "event.dataset",
            "type": "keyword"
        }
    ],
    "values": []
}
```
**Notice now the `bytes_counter` is unsupported**.
In a nutshell, `bytes_counter` is mapped as `long` in both indices, but the additional meta information about test1 variant is that this field is a time series `counter` field which is unsupported. When loading values, the source operator complains that the field is unsupported.
x-pack/plugin/sql/qa/server/src/main/java/org/elasticsearch/xpack/sql/qa/rest/RestSqlTestCase.java
index(fields.stream().map(f -> "{\"" + f + "\": 1}").toArray(String[]::new));
        testFetchAllPages(format, "SHOW COLUMNS FROM " + indexPattern("test"), fields, pageSize, false);
    }
    /**
     * Generic paging test that ensures that
     * 1. All expected documents are fetched when scrolling through all pages
     * 2. There are at most `expectedValues.size() / pageSize + 1` pages (the last one might or might not be empty)
     * 3. Optionally: That the last page is not empty.
     */
    private void testFetchAllPages(String format, String query, List<String> expectedValues, int pageSize, boolean emptyLastPage)
        throws IOException {
        int remainingPages = expectedValues.size() / pageSize + 1;
        Tuple<String, String> response = runSqlAsText(query(query).fetchSize(pageSize), format);
        StringBuilder allResults = new StringBuilder(response.v1());
        while (response.v2() != null && remainingPages > 0) {
            response = runSqlAsText(cursor(response.v2()), format);
            allResults.append("\n").append(response.v1());
            assertThat(response.v1().split("\n").length, lessThanOrEqualTo(pageSize));
            remainingPages--;
        }
        if (emptyLastPage) {
            assertTrue("Expected empty last page but got " + response.v1(), Strings.isNullOrEmpty(response.v1()));
        } else {
            assertFalse("Expected non-empty last page but got " + response.v1(), Strings.isNullOrEmpty(response.v1()));
        }
        assertNull(response.v2());
        String results = allResults.toString();
        for (String v : expectedValues) {
            assertThat(results, containsString(v));
        }