apache/iceberg · error · UnsupportedOperationException

this.getClass().getName() + " doesn't implement…

Error message

this.getClass().getName() + " doesn't implement caseSensitive"

What it means

Default-interface guard on SortOrderBuilder: thrown when caseSensitive(boolean) is called on a builder that did not override it, so case-insensitive sort column name resolution is unavailable. The %s names the offending runtime builder class; the boolean argument is irrelevant to the failure.

Solutions

  1. Use exact-match column names so case sensitivity does not matter
  2. Catch UnsupportedOperationException and keep the default case-sensitive resolution
  3. Implement caseSensitive in the custom sort builder
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at api/src/main/java/org/apache/iceberg/SortOrderBuilder.java:114 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/8edb1ef2c5c4c617. Report an issue: GitHub.

Appendix: source

Thrown at api/src/main/java/org/apache/iceberg/SortOrderBuilder.java:114

  }

  /**
   * Add an expression term to the sort, descending with the given null order.
   *
   * @param term an expression term
   * @param nullOrder a null order (first or last)
   * @return this for method chaining
   */
  R desc(Term term, NullOrder nullOrder);

  /**
   * Set case sensitivity of sort column name resolution.
   *
   * @param caseSensitive when true, column name resolution is case-sensitive
   * @return this for method chaining
   */
  default R caseSensitive(boolean caseSensitive) {
    throw new UnsupportedOperationException(
        this.getClass().getName() + " doesn't implement caseSensitive");
  }
}

View on GitHub (pinned to 86d9c8fc54)