  Interpreted execution of queries, as in the vectorized model, suffers from
interpretation overheads. By compiling queries this interpretation overhead is
eliminated at the cost of a compilation phase that delays execution,
sacrificing latency for throughput. For short-lived queries, minimizing latency
is important, while for long-running queries throughput outweighs latency.
Because neither a purely interpretive model nor a purely compiling model can
provide low latency and high throughput, adaptive solutions emerged. Adaptive
systems seamlessly transition from interpreted to compiled execution, achieving
low latency for short-lived queries and high throughput for long-running
queries. However, these adaptive systems pose an immense development effort and
require expert knowledge in both interpreter and compiler design.
  In this work, we investigate query execution by compilation to WebAssembly.
We are able to compile even complex queries in less than a millisecond to
machine code with near-optimal performance. By delegating execution of
WebAssembly to the V8 engine, we are able to seamlessly transition from rapidly
compiled yet non-optimized code to thoroughly optimized code during execution.
Our approach provides both low latency and high throughput, is adaptive out of
the box, and is straight forward to implement. The drastically reduced
compilation times even enable us to explore generative programming of library
code, that is fully inlined by construction. Our experimental evaluation
confirms that our approach yields competitive and sometimes superior
performance.
