prestodb/presto · error · ParquetCorruptionException
Metadata is missing for column: %s
Error message
Metadata is missing for column: %s
What it means
Lookup guard for encrypted Parquet files: the column's decryption setup (ColumnPath -> ordinal) is absent from the file's encryption metadata, so a page reader cannot be built. Means the footer encryption metadata is incomplete or references a column that does not exist.
Source
Thrown at presto-parquet/src/main/java/com/facebook/presto/parquet/reader/ParquetReader.java:527
int columnOrdinal = fileDecryptor.get().getColumnSetup(ColumnPath.get(columnChunk.getDescriptor().getColumnDescriptor().getPath())).getOrdinal();
return columnChunk.buildPageReader(fileDecryptor, currentBlock, columnOrdinal);
}
private boolean isEncryptedColumn(Optional<InternalFileDecryptor> fileDecryptor, ColumnDescriptor columnDescriptor)
{
ColumnPath columnPath = ColumnPath.get(columnDescriptor.getPath());
return fileDecryptor.isPresent() && !fileDecryptor.get().plaintextFile() && fileDecryptor.get().getColumnSetup(columnPath).isEncrypted();
}
private ColumnChunkMetaData getColumnChunkMetaData(ColumnDescriptor columnDescriptor)
throws IOException
{
for (ColumnChunkMetaData metadata : currentBlockMetadata.getColumns()) {
if (!HiddenColumnChunkMetaData.isHiddenColumn(metadata) && metadata.getPath().equals(ColumnPath.get(columnDescriptor.getPath()))) {
return metadata;
}
}
throw new ParquetCorruptionException("Metadata is missing for column: %s", columnDescriptor);
}
private void initializeColumnReaders()
{
for (PrimitiveColumnIO columnIO : columns) {
RichColumnDescriptor column = new RichColumnDescriptor(columnIO.getColumnDescriptor(), columnIO.getType().asPrimitiveType());
columnReaders[columnIO.getId()] = ColumnReaderFactory.createReader(column, batchReadEnabled);
if (enableVerification) {
verificationColumnReaders[columnIO.getId()] = ColumnReaderFactory.createReader(column, false);
}
}
}
public Block readBlock(Field field)
throws IOException
{
return readColumnChunk(field).getBlock();View on GitHub (pinned to 55bb57d202)
Solutions
- Confirm the file's encryption metadata lists every encrypted column
- Regenerate the file with a writer that emits complete encryption metadata
- Verify the schema path in the query matches the file's column paths
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-parquet/src/main/java/com/facebook/presto/parquet/reader/ParquetReader.java:527 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/42539b4182280425.
Report an issue: GitHub.