apache/flink · error · IllegalArgumentException

A predicate on a TIMESTAMP column requires a…

Error message

A predicate on a TIMESTAMP column requires a java.sql.Timestamp literal.

What it means

Type guard in OrcFilters.castLiteral: a filter predicate targets a TIMESTAMP column but its literal is not a java.sql.Timestamp. Since ORC predicate evaluation requires an exact literal type, the mismatched literal aborts the cast and the filter is not pushed down.

Solutions

  1. Address the cause reported by the error message: A predicate on a TIMESTAMP column requires a java.sql.Timestamp literal.
  2. Verify the inputs, configuration values, and classpath/dependency setup related to this operation, then retry.

Example fix

Correct the condition described ("A predicate on a TIMESTAMP column requires a java.sql.Timestamp literal.") and rerun the job or command.
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Triggered at runtime when the operation fails because: A predicate on a TIMESTAMP column requires a java.sql.Timestamp literal.

Common situations: Commonly caused by misconfiguration, missing dependencies or files, unsupported types or operations, or invalid user input leading to: A predicate on a TIMESTAMP column requires a java.sql.Timestamp literal.


AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14). Data as JSON: /api/errors/799eeb3bbabd3e4c. Report an issue: GitHub.

Appendix: source

Thrown at flink-formats/flink-orc/src/main/java/org/apache/flink/orc/OrcFilters.java:467

                case BOOLEAN:
                    if (literal instanceof Boolean) {
                        return literal;
                    } else {
                        throw new IllegalArgumentException(
                                "A predicate on a BOOLEAN column requires a Boolean literal.");
                    }
                case DATE:
                    if (literal instanceof Date) {
                        return literal;
                    } else {
                        throw new IllegalArgumentException(
                                "A predicate on a DATE column requires a java.sql.Date literal.");
                    }
                case TIMESTAMP:
                    if (literal instanceof Timestamp) {
                        return literal;
                    } else {
                        throw new IllegalArgumentException(
                                "A predicate on a TIMESTAMP column requires a java.sql.Timestamp literal.");
                    }
                case DECIMAL:
                    if (literal instanceof BigDecimal) {
                        return new HiveDecimalWritable(HiveDecimal.create((BigDecimal) literal));
                    } else {
                        throw new IllegalArgumentException(
                                "A predicate on a DECIMAL column requires a BigDecimal literal.");
                    }
                default:
                    throw new IllegalArgumentException("Unknown literal type " + literalType);
            }
        }
    }

    abstract static class BinaryPredicate extends ColumnPredicate {
        final Serializable literal;

View on GitHub (pinned to 2f3c205e92)