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
- Verify the nested column path in the query matches the actual parquet schema nesting
- 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.