Garcia, MiguelMiguelGarciaIzmaylova, AnastasiaAnastasiaIzmaylovaSchupp, SibylleSibylleSchupp2019-11-042019-11-042010Journal of Object Technology 4 (9): 45-68 (2010)http://hdl.handle.net/11420/3708The 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 languageintegrated 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. ©JOT 2010.en1660-1769Journal of object technology201044568ETH Zürich, Department of Computer ScienceCompiler pluginsLanguage-integrated queryScala programming languageTypedirected program transformationInformatikExtending scala with database query capabilityJournal Article10.5381/jot.2010.9.4.a3Other