postgresql-simple-0.2.3.0: Mid-Level PostgreSQL client library

Stabilityexperimental
MaintainerLeon P Smith <leon@melding-monads.com>
Safe HaskellSafe-Infered

Database.PostgreSQL.Simple.SqlQQ

Description

 

Synopsis

Documentation

sql :: QuasiQuoterSource

sql is a quasiquoter that eases the syntactic burden of writing big sql statements in Haskell source code. For example:

 {-# LANGUAGE QuasiQuotes #-}

 query conn [sql| SELECT column_a, column_b
                    FROM table1 NATURAL JOIN table2
                   WHERE ? <= time AND time < ?
                     AND name LIKE ?
                   ORDER BY size DESC
                   LIMIT 100                        |]
            (beginTime,endTime,string)

This quasiquoter attempts to mimimize whitespace; otherwise the above query would consist of approximately half whitespace when sent to the database backend.

The implementation of the whitespace reducer is currently incomplete. Thus it can mess up your syntax in cases where whitespace should be preserved as-is. It does preserve whitespace inside standard SQL string literals. But it can get confused by the non-standard PostgreSQL string literal syntax (which is the default setting in PostgreSQL 8 and below), the extended escape string syntax, and other similar constructs.

Of course, this caveat only applies to text written inside the SQL quasiquoter; whitespace reduction is a compile-time computation and thus will not touch the string parameter above, which is a run-time value.

Also note that this will not work if the substring |] is contained in the query.