| Copyright | (c) 2011-2012 Leon P Smith | 
|---|---|
| License | BSD3 | 
| Maintainer | Leon P Smith <leon@melding-monads.com> | 
| Stability | experimental | 
| Safe Haskell | Safe-Inferred | 
| Language | Haskell2010 | 
Database.PostgreSQL.Simple.SqlQQ
Description
Synopsis
- sql :: QuasiQuoter
Documentation
sql :: QuasiQuoter Source #
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 returns a literal string expression of type Query,
 and attempts to minimize whitespace;  otherwise the above query would
 consist of approximately half whitespace when sent to the database
 backend.  It also recognizes and strips out standard sql comments "--".
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, quoted identifiers, 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.