prestodb/presto · error · OrcCorruptionException
Write validation failed: unexpected bloom filter in %s stati
Error message
Write validation failed: unexpected bloom filter in %s statistics
What it means
Write-validation error: the bloom filter recorded for a column's statistics differs from the one present in the re-read file (or exists where none was expected). The %s names the statistics section; a post-write consistency check for bloom filter indexes.
Source
Thrown at presto-orc/src/main/java/com/facebook/presto/orc/OrcWriteValidation.java:586
if (!Objects.equals(actualColumnStatistics.getStringStatistics(), expectedStringStatistics) && expectedStringStatistics != null) {
// expectedStringStatistics (or the min/max of it) could be null while the actual one might not because
// expectedStringStatistics is calculated by merging all row group stats in the stripe but the actual one is by scanning each row in the stripe on disk.
// Merging row group stats can produce nulls given we have string stats limit.
if (actualStringStatistics == null ||
actualStringStatistics.getSum() != expectedStringStatistics.getSum() ||
(expectedStringStatistics.getMax() != null && !Objects.equals(actualStringStatistics.getMax(), expectedStringStatistics.getMax())) ||
(expectedStringStatistics.getMin() != null && !Objects.equals(actualStringStatistics.getMin(), expectedStringStatistics.getMin()))) {
throw new OrcCorruptionException(orcDataSourceId, "Write validation failed: unexpected string range in %s statistics", name);
}
}
if (!Objects.equals(actualColumnStatistics.getDateStatistics(), expectedColumnStatistics.getDateStatistics())) {
throw new OrcCorruptionException(orcDataSourceId, "Write validation failed: unexpected date range in %s statistics", name);
}
if (!Objects.equals(actualColumnStatistics.getDecimalStatistics(), expectedColumnStatistics.getDecimalStatistics())) {
throw new OrcCorruptionException(orcDataSourceId, "Write validation failed: unexpected decimal range in %s statistics", name);
}
if (!Objects.equals(actualColumnStatistics.getBloomFilter(), expectedColumnStatistics.getBloomFilter())) {
throw new OrcCorruptionException(orcDataSourceId, "Write validation failed: unexpected bloom filter in %s statistics", name);
}
}
public static class WriteChecksum
{
private final long totalRowCount;
private final long stripeHash;
private final List<Long> columnHashes;
public WriteChecksum(long totalRowCount, long stripeHash, List<Long> columnHashes)
{
this.totalRowCount = totalRowCount;
this.stripeHash = stripeHash;
this.columnHashes = columnHashes;
}
public long getTotalRowCount()
{View on GitHub (pinned to 55bb57d202)
Solutions
- Report as an ORC writer bug with validation output
- Check bloom filter writing config consistency across workers
- Rewrite the file and re-validate
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-orc/src/main/java/com/facebook/presto/orc/OrcWriteValidation.java:586 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/211902f8ddcb31fa.
Report an issue: GitHub.