Compiling PL/SQL Away

Denis HirnTorsten GrustChristian Duta

Proceedings of the 10th Conference on Innovative Data Systems Research (CIDR 2020), Amsterdam, The Netherlands, January 2020.

“PL/SQL functions are slow,” is common developer wisdom that derives from the tension between set-oriented SQL evaluation and statement-by-statement PL/SQL interpretation. We pursue the radical approach of compiling PL/SQL away, turning interpreted functions into regular subqueries that can then be efficiently evaluated together with their embracing SQL query, avoiding any PL/SQL↔︎SQL context switches. Input PL/SQL functions may exhibit arbitrary control flow. Iteration, in particular, is compiled into SQL-level recursion. RDBMSs across the board reward this compilation effort with significant run time savings that render established developer lore questionable.

Slide set (PDF) for the CIDR 2020 talk