--- warning: DO NOT CHANGE THIS MANUALLY, THIS IS GENERATED BY https://github.com/duckdb/community-extensions repository, check README there title: bloom excerpt: | DuckDB Community Extensions Accelerate multi-join queries with adaptive predicate transfer extension: name: bloom description: Accelerate multi-join queries with adaptive predicate transfer version: 0.0.3 language: C++ build: cmake license: MIT maintainers: - YimingQiao excluded_platforms: "linux_amd64_musl;linux_arm64_musl;windows_arm64;windows_amd64_mingw;wasm_mvp;wasm_eh;wasm_threads" repo: github: YimingQiao/bloom ref: e81c0f02891a4bc9b962a8acf748312b3376c4e5 docs: hello_world: | LOAD bloom; SELECT current_setting('enable_bloom'); -- true extended_description: | Bloom is an optimizer extension for analytical queries that join multiple tables. It extends robust predicate transfer (RPT), combining sampling with execution feedback to reduce the data processed by joins. Loading Bloom enables the optimizer automatically; existing SQL and query results stay the same. This release targets DuckDB v2.0.0. See the [README](https://github.com/YimingQiao/bloom) for benchmarks and [configuration and logging](https://github.com/YimingQiao/bloom/blob/main/docs/USAGE.md) for usage details. extension_star_count: 6 extension_star_count_pretty: 6 extension_download_count: null extension_download_count_pretty: n/a image: '/images/community_extensions/social_preview/preview_community_extension_bloom.png' layout: community_extension_doc --- ### Compatibility Matrix This table covers all DuckDB releases that have not reached [end-of-life](https://duckdb.org/release_calendar), including LTS releases, and shows the 2 most recent patch releases of each. Older patch releases are not listed, but the extension may be available for them as well.
| Platform | 1.4.4 | 1.4.5 | 1.5.5 | 1.5.6 | 2.0.0 | | :--- | :---: | :---: | :---: | :---: | :---: | | Linux AMD64 | ❌ | ❌ | ❌ | ❌ | ✅ | | Linux ARM64 | ❌ | ❌ | ❌ | ❌ | ✅ | | macOS AMD64 | ❌ | ❌ | ❌ | ❌ | ❌ | | macOS ARM64 | ❌ | ❌ | ❌ | ❌ | ✅ | | Windows AMD64 | ❌ | ❌ | ❌ | ❌ | ✅ | | Windows ARM64 | ❌ | ❌ | ❌ | ❌ | ❌ | | WebAssembly | ❌ | ❌ | ❌ | ❌ | ❌ | ### Installing and Loading ```sql INSTALL {{ page.extension.name }} FROM community; LOAD {{ page.extension.name }}; ``` {% if page.docs.hello_world %} ### Example ```sql {{ page.docs.hello_world }}``` {% endif %} {% if page.docs.extended_description %} ### About {{ page.extension.name }} {{ page.docs.extended_description }} {% endif %} ### Added Functions
| function_name | function_type | description | comment | examples | |-----------------------------|---------------|-------------|---------|----------| | __internal_bloom_rpt_filter | scalar | NULL | NULL | | | bloom_preload_samples | table | NULL | NULL | | ### Overloaded Functions
This extension does not add any function overloads. ### Added Types
This extension does not add any types. ### Added Settings
| name | description | input_type | scope | aliases | typed_value | |----------------------------------|-------------------------------------------------------------------------------------------------------|------------|--------|---------|-------------| | bloom_excitation_mode | Repeated-transfer information criterion: 'table_size' or exact 'join_key_ndv' equality domains | VARCHAR | GLOBAL | [] | table_size | | bloom_excitation_threshold | Re-excite below this fraction of the preceding cardinality | DOUBLE | GLOBAL | [] | 1.0 | | bloom_instant_access | Native-storage instant access policy: 'scattered' (resident data) or 'block' (cold data) | VARCHAR | GLOBAL | [] | scattered | | bloom_instant_access_points | Stratified access points used by scattered instant sampling | UBIGINT | GLOBAL | [] | 256 | | bloom_instant_block_windows | Block-aligned windows used by cold instant sampling | UBIGINT | GLOBAL | [] | 16 | | bloom_instant_parquet_row_groups | Stratified Parquet row groups sampled per table | UBIGINT | GLOBAL | [] | 8 | | bloom_instant_rows_per_access | Contiguous rows decoded at each scattered access point | UBIGINT | GLOBAL | [] | 32 | | bloom_instant_snapshot | Use the active transaction snapshot for native instant samples instead of direct base-storage reads | BOOLEAN | GLOBAL | [] | false | | bloom_late_materialize | Experimental: materialize transfer keys and row IDs, then filter the original table scan | BOOLEAN | GLOBAL | [] | false | | bloom_log_transfer_steps | Log the transfer plan to stderr for debugging | BOOLEAN | GLOBAL | [] | false | | bloom_memory_limit | Maximum in-memory budget for optimizer-time Bloom work ('auto' uses 25% of available operator memory) | VARCHAR | GLOBAL | [] | auto | | bloom_sample_cache_dir | Prepared-sample cache directory ('auto' stores it beside the database) | VARCHAR | GLOBAL | [] | auto | | bloom_sample_memory_cache | Cache prepared samples in the process object cache to skip disk reloads across queries (advanced) | BOOLEAN | GLOBAL | [] | true | | bloom_sample_mode | Base-table sampling mode: 'prepared' or 'instant' | VARCHAR | GLOBAL | [] | prepared | | bloom_sample_rate | Chunk-sampling fraction for estimating cardinalities of already-materialized intermediate data | DOUBLE | GLOBAL | [] | 0.01 | | bloom_sample_seed | Reproducible base-table sample seed | UBIGINT | GLOBAL | [] | 2 | | bloom_sample_size | Target rows for prepared, block, and Parquet sampling | UBIGINT | GLOBAL | [] | 10000 | | enable_bloom | Enable the Bloom optimizer | BOOLEAN | GLOBAL | [] | true | | temp_directory | Set the directory to which temporary files are written. | VARCHAR | GLOBAL | [] | post.db.tmp |