apache/beam · error · UnsupportedOperationException

Does not support to convert

Error message

Does not support to convert %s to SerializableRexNode.

What it means

SerializableRexNode.Builder.build() only knows how to serialize RexInputRef and RexFieldAccess Calcite nodes. Any other RexNode subtype (e.g. RexCall, RexLiteral) passed to the builder cannot be converted into a serializable form, so the guard throws UnsupportedOperationException to signal the expression is too complex to serialize for this use.

Solutions

  1. Restrict usage to filter predicates that compile down to only RexInputRef/RexFieldAccess nodes, which are the only supported forms.
  2. Simplify or rewrite the pushed-down expression so it does not require serializing unsupported RexNode subtypes.
  3. If broader support is needed, extend Builder.build() to handle additional RexNode subtypes by adding corresponding SerializableRexNode classes.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/utils/SerializableRexNode.java:46 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/748b3247c8e24870. Report an issue: GitHub.

Appendix: source

Thrown at sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/utils/SerializableRexNode.java:46

    return new SerializableRexNode.Builder(rexNode);
  }

  /** SerializableRexNode.Builder. */
  public static class Builder {
    private RexNode rexNode;

    public Builder(RexNode rexNode) {
      this.rexNode = rexNode;
    }

    public SerializableRexNode build() {
      if (rexNode instanceof RexInputRef) {
        return new SerializableRexInputRef((RexInputRef) rexNode);
      } else if (rexNode instanceof RexFieldAccess) {
        return new SerializableRexFieldAccess((RexFieldAccess) rexNode);
      }

      throw new UnsupportedOperationException(
          "Does not support to convert " + rexNode.getType() + " to SerializableRexNode.");
    }
  }
}

View on GitHub (pinned to 12126d8942)