What is FFX? • Requirements • Build & test • Run an example • Documentation • Team • Cite
FFX is a C++ engine for join-heavy workloads: factorized intermediates plus vectorized execution. It runs standard analytical joins and filters, and can plug in an LLM step where the query asks for it.
| Tool | Version |
|---|---|
| CMake | 3.5+ |
| C++ compiler | C++17 (GCC 7+ or Clang 15+) |
| Libraries | libcurl, nlohmann-json, fmt (dev packages) |
| Python 3.7 or above | Optional, for example scripts |
Install libcurl, nlohmann-json, and fmt so CMake can find_package them.
Debian / Ubuntu
sudo apt update
sudo apt install -y build-essential cmake \
libcurl4-openssl-dev nlohmann-json3-dev libfmt-devmacOS (Homebrew) — brew install cmake nlohmann-json fmt curl (set CMAKE_PREFIX_PATH to brew --prefix if CMake cannot find packages).
Clone and build:
git clone https://github.com/dais-polymtl/ffx.git
cd ffx
cmake -S . -B RELEASE -DCMAKE_BUILD_TYPE=RELEASE
cmake --build RELEASE -jTests (optional):
cd RELEASE && ctestSee examples/analytical/ and examples/semantic/ for end-to-end demos of analytical and semantic queries. Each folder contains a setup_data.py script to prepare the data and a run_query.py script to execute the engine.
Or invoke the engine directly:
/path/to/your/build/query_eval_exec <serialized_root_dir> "<query>" "<ordering>"Developed by the Data & AI Systems Laboratory (DAIS Lab) at Polytechnique Montréal.
@article{DBLP:journals/pacmmod/YasserDM26,
author = {Sunny Yasser and Anas Dorbani and Amine Mhedhbi},
title = {Factorized and Vectorized Execution: Optimizing Analytical and Semantic Queries over Relations},
journal = {Proc. {ACM} Manag. Data},
volume = {4},
number = {3},
year = {2026},
url = {https://doi.org/10.1145/3802055},
doi = {10.1145/3802055}
}