- Motivation: - TPCH Q01 profile - parallelism - efficiency - more cores than DB X - parallelism doesn't scale infinitly - nonparallel bits - Identified bottlenecks: - plain expression evaluation - aggregate transition values - tuple deforming - grouping comparisons & hashing (aggregation, set functions) - sorting! - very brief intro into expression evaluation - So, what's JIT? - create executable code - linearize expression evalution - remove branches for deforming - inline functions - example generated code - example assembler - Parts: - expression evaluation machinery (v10) - known tupledescs for scan, left, right tree - jit infrastructure (lifetime, errors, settings, inlining) - Remaining work: - planner: when to jit and how much to optimize - executor: - OOM handling - expression engine for hashing - make tupledescs known in more places - determine NOT NULL in upper tupledescs - ... - JIT: - correct inlining implementation - Qs