prestodb/presto · error · UnsupportedOperationException
Unsupported type for 'day':
Error message
Unsupported type for 'day':
What it means
PartitionTransforms.getColumnTransform implements the day transform only for DATE and TIMESTAMP types; an unsupported type reaching the day branch raises this NOT_SUPPORTED error for the mismatched partition field.
Source
Thrown at presto-iceberg/src/main/java/com/facebook/presto/iceberg/PartitionTransforms.java:159
if (type.equals(TIMESTAMP)) {
LongUnaryOperator transformDay = value -> epochDay(value);
return new ColumnTransform(transform, INTEGER,
block -> transformBlock(TIMESTAMP, block, transformDay),
ValueTransform.from(TIMESTAMP, transformDay));
}
if (type.equals(TIMESTAMP_MICROSECONDS)) {
LongUnaryOperator transformDay = value -> epochDay(Math.floorDiv(value, 1000));
return new ColumnTransform(transform, INTEGER,
block -> transformBlock(TIMESTAMP_MICROSECONDS, block, transformDay),
ValueTransform.from(TIMESTAMP_MICROSECONDS, transformDay));
}
if (type.equals(TIMESTAMP_WITH_TIME_ZONE)) {
LongUnaryOperator transformDay = value -> epochDay(unpackMillisUtc(value));
return new ColumnTransform(transform, INTEGER,
block -> transformBlock(TIMESTAMP_WITH_TIME_ZONE, block, transformDay),
ValueTransform.from(TIMESTAMP_WITH_TIME_ZONE, transformDay));
}
throw new UnsupportedOperationException("Unsupported type for 'day': " + field);
case "hour":
if (type.equals(TIMESTAMP)) {
LongUnaryOperator transformHour = value -> epochHour(value);
return new ColumnTransform(transform, INTEGER,
block -> transformBlock(TIMESTAMP, block, transformHour),
ValueTransform.from(TIMESTAMP, transformHour));
}
if (type.equals(TIMESTAMP_MICROSECONDS)) {
LongUnaryOperator transformHour = value -> epochHour(Math.floorDiv(value, 1000));
return new ColumnTransform(transform, INTEGER,
block -> transformBlock(TIMESTAMP_MICROSECONDS, block, transformHour),
ValueTransform.from(TIMESTAMP_MICROSECONDS, transformHour));
}
if (type.equals(TIMESTAMP_WITH_TIME_ZONE)) {
LongUnaryOperator transformHour = value -> epochHour(unpackMillisUtc(value));
return new ColumnTransform(transform, INTEGER,
block -> transformBlock(TIMESTAMP_WITH_TIME_ZONE, block, transformHour),
ValueTransform.from(TIMESTAMP_WITH_TIME_ZONE, transformHour));View on GitHub (pinned to 55bb57d202)
Solutions
- Use day() only on DATE/TIMESTAMP partition columns
- Fix the partition spec to match a transform supported by the column type
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-iceberg/src/main/java/com/facebook/presto/iceberg/PartitionTransforms.java:159 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/9c5530d1a12c2b96.
Report an issue: GitHub.