Extending Scala with Database Query Capability

By: Miguel Garcia, Anastasia Izmaylova, Sibylle Schupp


The integration of database and programming languages is difficult due to the different data models and type systems prevalent in each field. We present a solution where the developer may express queries encompassing program and database data. The notation used for queries is based on comprehensions, a declarative style that does not impose any specific execution strategy. In our approach, the type safety of language-integrated queries is analyzed at compile-time, followed by a translation that optimizes for database evaluation. We show the translation total and semantics preserving, and introduce a language-independent classification. According to this classification, our approach compares favorably with Microsoft's LINQ, today's best known representative. We provide an implementation in terms of Scala compiler plugins, accepting two notations for queries: LINQ and the native Scala syntax for comprehensions. The prototype relies on Ferry, a query language that already supports comprehensions yet targets SQL:1999. The reported techniques pave the way for further progress in bridging the programming and the database worlds.


Language-integrated query, Scala programming language, Type-directed program transformation, Compiler plugins.

Cite as:

Miguel Garcia, Anastasia Izmaylova, Sibylle Schupp, “Extending Scala with Database Query Capability”, Journal of Object Technology, Volume 9, no. 4 (July 2010), pp. 45-68, doi:10.5381/jot.2010.9.4.a3.

PDF | DOI | BiBTeX | Tweet this | Post to CiteULike | Share on LinkedIn