prestodb/presto · error · IllegalArgumentException

Invalid ColumnIO received. Expected a GroupColumnIO, but got

Error message

Invalid ColumnIO received. Expected a GroupColumnIO, but got %s, path=%s

What it means

Type guard in findNestedColumnIO: while walking a nested column path, an intermediate element resolves to a ColumnIO that is not a GroupColumnIO, so the remaining path cannot be descended. Fires when a requested nested field path does not match the actual parquet schema structure (e.g. path descends through a primitive).

Source

Thrown at presto-parquet/src/main/java/org/apache/parquet/io/ColumnIOConverter.java:139

        return Optional.empty();
    }

    public static Optional<ColumnIO> findNestedColumnIO(ColumnIO columnIO, List<String> path)
    {
        if (columnIO == null) {
            return Optional.empty();
        }

        for (String pathElement : path) {
            if (columnIO instanceof GroupColumnIO) {
                GroupColumnIO groupColumnIO = (GroupColumnIO) columnIO;
                columnIO = lookupColumnByName(groupColumnIO, pathElement);
                if (columnIO == null) {
                    return Optional.empty();
                }
                continue;
            }
            throw new IllegalArgumentException("Invalid ColumnIO received. Expected a GroupColumnIO, but got " + columnIO.getClass().getSimpleName() +
                    ", path=" + Joiner.on(".").join(path));
        }

        return Optional.of(columnIO);
    }
}

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Verify the nested column path in the query matches the actual parquet schema nesting
  2. Check for stale or mismatched table metadata pointing at a differently structured file
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at presto-parquet/src/main/java/org/apache/parquet/io/ColumnIOConverter.java:139 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/f9a71450bd65384f. Report an issue: GitHub.