prestodb/presto · error · OrcCorruptionException
Write validation failed: unexpected number of columns in str
Error message
Write validation failed: unexpected number of columns in stripe statistics
What it means
Write-validation error: the number of column statistics entries in the file's stripe statistics differs from what the writer recorded. Raised while re-reading the file after writing with validation on; indicates the stripe-statistics section does not match the writer's bookkeeping (corruption or writer bug).
Source
Thrown at presto-orc/src/main/java/com/facebook/presto/orc/OrcWriteValidation.java:253
public void validateFileStatistics(OrcDataSourceId orcDataSourceId, List<ColumnStatistics> actualFileStatistics)
throws OrcCorruptionException
{
validateColumnStatisticsEquivalent(orcDataSourceId, "file", actualFileStatistics, fileStatistics);
}
public void validateStripeStatistics(OrcDataSourceId orcDataSourceId, List<StripeInformation> actualStripes, List<StripeStatistics> actualStripeStatistics)
throws OrcCorruptionException
{
requireNonNull(actualStripes, "actualStripes is null");
requireNonNull(actualStripeStatistics, "actualStripeStatistics is null");
if (isDwrf()) {
// DWRF does not have stripe statistics
return;
}
if (actualStripeStatistics.size() != stripeStatistics.size()) {
throw new OrcCorruptionException(orcDataSourceId, "Write validation failed: unexpected number of columns in stripe statistics");
}
for (int stripeIndex = 0; stripeIndex < actualStripes.size(); stripeIndex++) {
long stripeOffset = actualStripes.get(stripeIndex).getOffset();
StripeStatistics actual = actualStripeStatistics.get(stripeIndex);
validateStripeStatistics(orcDataSourceId, stripeOffset, actual.getColumnStatistics());
}
}
public void validateStripeStatistics(OrcDataSourceId orcDataSourceId, long stripeOffset, List<ColumnStatistics> actual)
throws OrcCorruptionException
{
StripeStatistics expected = stripeStatistics.get(stripeOffset);
if (expected == null) {
throw new OrcCorruptionException(orcDataSourceId, "Unexpected stripe at offset %s", stripeOffset);
}
validateColumnStatisticsEquivalent(orcDataSourceId, "Stripe at " + stripeOffset, actual, expected.getColumnStatistics());
}View on GitHub (pinned to 55bb57d202)
Solutions
- Re-run the job producing the file and check for reproducibility
- Report as an ORC writer bug with the validation stack trace
- Validate the file with an external ORC tool to confirm corruption
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-orc/src/main/java/com/facebook/presto/orc/OrcWriteValidation.java:253 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/e4547a0b9c05657d.
Report an issue: GitHub.