Skip to content


SQLite is a lightweight RDBMS meant for embedding in larger applications. Because it is not designed to be full-featured, not all Beam queries will work with SQLite. The module Database.Beam.SQLite.Checked provides many symbols usually imported from the Database.Beam module that enforce extra checks on queries to assure compliance with SQLite. Use this module in code that is SQLite specific for maximal compile-time safety. Note that this module should be imported instead of Database.Beam to avoid name clashes.


SQLite is compatible enough with Beam's query syntax, that adapting to its quirks is pretty straightforwards. The main special case for SQLite is its handling of nested set operations. On most backends, beam can output these directly, but SQLite requires us to generate subqueries.