apache/iceberg · error · UnsupportedOperationException

caseSensitive is not supported

Error message

caseSensitive is not supported

What it means

Default-interface guard on PartitionStatisticsScan: thrown when caseSensitive(boolean) is called on a scan implementation that did not override it, so toggling case sensitivity of partition-statistics filters is unsupported for that class. The message names no class but the condition is purely about the implementation's capabilities.

Solutions

  1. Use column names in filter expressions that match exactly, avoiding the need for case-insensitive matching
  2. Catch UnsupportedOperationException and proceed with the default case-sensitive behavior
  3. Implement caseSensitive in the custom scan class
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at api/src/main/java/org/apache/iceberg/PartitionStatisticsScan.java:53 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12). Data as JSON: /api/errors/fd62bd0dd357f708. Report an issue: GitHub.

Appendix: source

Thrown at api/src/main/java/org/apache/iceberg/PartitionStatisticsScan.java:53

  /**
   * Create a new scan from the results of this, where partitions are filtered by the {@link
   * Expression}.
   *
   * @param filter a filter expression
   * @return a new scan based on this with results filtered by the expression
   */
  PartitionStatisticsScan filter(Expression filter);

  /**
   * Create a new scan from this that will configure whether column name matches in filter
   * expressions are case-sensitive. Default is true.
   *
   * @param caseSensitive whether column name matches in filter expressions should be case-sensitive
   * @return a new scan based on this with the given case sensitivity
   */
  default PartitionStatisticsScan caseSensitive(boolean caseSensitive) {
    throw new UnsupportedOperationException("caseSensitive is not supported");
  }

  /**
   * Create a new scan from this with the schema as its projection.
   *
   * @param schema a projection schema
   * @return a new scan based on this with the given projection
   */
  PartitionStatisticsScan project(Schema schema);

  /**
   * Scans a partition statistics file belonging to a particular snapshot
   *
   * @return an Iterable of partition statistics
   */
  CloseableIterable<PartitionStatistics> scan();
}

View on GitHub (pinned to 86d9c8fc54)