apache/druid · error · UnsupportedOperationException

BloomFilterAggregator does not support getDouble()

Error message

BloomFilterAggregator does not support getDouble()

What it means

The bloom filter aggregators produce a BloomFilter object, not a numeric value, so getDouble() is an explicitly unsupported sentinel that always throws UnsupportedOperationException. It fires only when a caller (query engine or downstream code) attempts to read the bloom-filter metric through the primitive double accessor.

Solutions

  1. Read the bloom filter via get() and use BloomKFilter-specific post-aggregators (e.g. bloom filter test) instead of numeric accessors
  2. Do not declare this aggregator where a double/float/long value is expected
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BaseBloomFilterAggregator.java:128 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07). Data as JSON: /api/errors/26b34b269b2a2f10. Report an issue: GitHub.

Appendix: source

Thrown at extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BaseBloomFilterAggregator.java:128

    return resultCopy;
  }

  @Override
  public float getFloat(ByteBuffer buf, int position)
  {
    throw new UnsupportedOperationException("BloomFilterAggregator does not support getFloat()");
  }

  @Override
  public long getLong(ByteBuffer buf, int position)
  {
    throw new UnsupportedOperationException("BloomFilterAggregator does not support getLong()");
  }

  @Override
  public double getDouble(ByteBuffer buf, int position)
  {
    throw new UnsupportedOperationException("BloomFilterAggregator does not support getDouble()");
  }

  @Override
  public void aggregate()
  {
    aggregate(collector, 0);
  }

  @Nullable
  @Override
  public Object get()
  {
    return collector;
  }

  @Override
  public float getFloat()
  {

View on GitHub (pinned to 9b90983fd2)