### Description

As discussed in https://github.com/elastic/elasticsearch/issues/98995, queries will not have an implicit order - as such the CSV spec framework would have to account for this.
As some tests will want to check the order while others might not, it's best to have a flag or marker when the out of order occurs and use a different assertion method.
x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/CsvAssert.java
import static org.hamcrest.Matchers.instanceOf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public final class CsvAssert {
    private CsvAssert() {}
    static void assertResults(ExpectedResults expected, ActualResults actual, Logger logger) {
        assertMetadata(expected, actual, logger);
        assertData(expected, actual, logger);
    }
    static void assertMetadata(ExpectedResults expected, ActualResults actual, Logger logger) {
        assertMetadata(expected, actual.columnNames(), actual.columnTypes(), actual.pages(), logger);
    }
    public static void assertMetadata(ExpectedResults expected, List<Map<String, String>> actualColumns, Logger logger) {
        var actualColumnNames = new ArrayList<String>(actualColumns.size());
        var actualColumnTypes = actualColumns.stream()
            .peek(c -> actualColumnNames.add(c.get("name")))
            .map(c -> CsvTestUtils.Type.asType(c.get("type")))
            .toList();
        assertMetadata(expected, actualColumnNames, actualColumnTypes, List.of(), logger);
    }
    private static void assertMetadata(
        ExpectedResults expected,
        List<String> actualNames,
        List<Type> actualTypes,
        List<Page> pages,
        Logger logger
    ) {
        if (logger != null) {