First-Class Functions for First-Order Database Engines

Torsten GrustAlexander Ulrich

Proceedings of the 14th International Symposium on Database Programming Languages (DBPL 2013), Riva del Garda, Italy, August 30, 2013.

We describe query defunctionalization which enables off-the-shelf first-order database engines to process queries over first-class functions. Support for first-class functions is characterized by the ability to treat functions like regular data items that can be constructed at query runtime, passed to or returned from other (higher-order) functions, assigned to variables, and stored in persistent data structures. Query defunctionalization is a non-invasive approach that transforms such function-centric queries into the data-centric operations implemented by common query processors. Experiments with XQuery and PL/SQL database systems demonstrate that first-order database engines can faithfully and efficiently support the expressive functions as data paradigm.