This is the reproducibility artifact for the paper Simplified Unification of Programming Languages and SQL via WebAssembly, which presents WasmUnifier: an approach that unifies a general-purpose programming language with SQL by compiling both to WebAssembly and linking them into a single binary executed inside the research RDBMS mutable. The paper compares WasmUnifier against an API-based integration and against the state-of-the-art unifier Flummi.
The folder mutable_fork contains a fork of mutable including the WasmUnifier implementation (in pl-sql-unifier/).
You have to download and install Docker for your operating system either through the downloads on the respective website or your systems package manager. No other software is required.
An internet connection is required during the image build: the container downloads and builds mutable's public third-party dependencies (Binaryen, Boost, Eigen, Catch2, nlohmann/json, replxx) from their upstream repositories. It also downloads the TPC-H data generator dbgen to generate the TPC-H tables at scale factor 1, which are too large to ship. Wasmtime is shipped inside the fork and is not downloaded.
Additionally, the docker image requires memory up 25 GB on Linux and up to 40 GB on macOS.
Note that we tested our reproducibility script on both Arch Linux and macOS. Unfortunately, it does not work on the new Apple Silicon chips, however, on Intel chips.
Note that the Flummi project is not contained in our artifacts. Please refer to the original paper and its authors for a Flummi evaluation.
To execute the entire query optimization approaches reproducibility, please run the following command.
$ ./run.shThis command will create and start the docker image including installing all required packages and building mutable, perform all experiments, visualize the results, and build the entire paper with the new measurements.
Afterward, you find the created paper as main.pdf on your host machine.
Note that this process may take several hours to complete.
To execute the query optimization approaches reproducibility step by step, please follow the following instructions (which are contained in run.sh).
First, create and start docker image.
$ docker compose build mutable
$ docker compose up mutable --detachExecute the benchmark script inside the docker image to perform all experiments.
$ docker compose exec -it mutable /run_benchmarks.shYou can also perform only parts of the experiments by utilizing the -b option of the respective command in this script. Alternatively, we provided our own measurements which you can copy into the docker image as follows.
$ docker compose cp ./results/eval_mutable.out mutable:/results/eval_mutable.outAfterward, you can execute the paper script inside the docker image to visualize the measured data (or the copied data provided by us) and to recreate our paper.
$ docker compose exec -it mutable /build_paper.shThen, copy the paper to your host machine.
$ docker compose cp mutable:paper/main.pdf main.pdfFinally, stop the docker image.
$ docker compose downThe following folder and files inside the mutable_fork repository were added:
- pl-sql-unifier/ (all files in this folder)