This file is indexed.

/usr/share/doc/libghc-postgresql-simple-doc/html/Database-PostgreSQL-Simple.html is in libghc-postgresql-simple-doc 0.4.0.2-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Database.PostgreSQL.Simple</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Database-PostgreSQL-Simple.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Database-PostgreSQL-Simple.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">postgresql-simple-0.4.0.2: Mid-Level PostgreSQL client library</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>Leon P Smith &lt;leon@melding-monads.com&gt;</td></tr><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Database.PostgreSQL.Simple</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Writing queries
</a><ul><li><a href="#g:2">The Query type
</a></li><li><a href="#g:3">Parameter substitution
</a><ul><li><a href="#g:4">Type inference
</a></li></ul></li><li><a href="#g:5">Substituting a single parameter
</a></li><li><a href="#g:6">Representing a list of values
</a></li><li><a href="#g:7">Modifying multiple rows at once
</a></li><li><a href="#g:8"><code>RETURNING</code>: modifications that returns results
</a></li></ul></li><li><a href="#g:9">Extracting results
</a><ul><li><a href="#g:10">Handling null values
</a></li><li><a href="#g:11">Type conversions
</a></li></ul></li><li><a href="#g:12">Types
</a><ul><li><a href="#g:13">Exceptions
</a></li></ul></li><li><a href="#g:14">Connection management
</a></li><li><a href="#g:15">Queries that return results
</a><ul><li><a href="#g:16">Queries taking parser as argument
</a></li></ul></li><li><a href="#g:17">Queries that stream results
</a></li><li><a href="#g:18">Statements that do not return results
</a></li><li><a href="#g:19">Transaction handling
</a></li><li><a href="#g:20">Helper functions
</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>A mid-level client library for the PostgreSQL database, aimed at ease of
 use and high performance.
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span>  <a href="#t:ConnectInfo">ConnectInfo</a>  = <a href="#v:ConnectInfo">ConnectInfo</a> {<ul class="subs"><li><a href="#v:connectHost">connectHost</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></li><li><a href="#v:connectPort">connectPort</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Word.html#t:Word16">Word16</a></li><li><a href="#v:connectUser">connectUser</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></li><li><a href="#v:connectPassword">connectPassword</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></li><li><a href="#v:connectDatabase">connectDatabase</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></li></ul>}</li><li class="src short"><span class="keyword">data</span>  <a href="#t:Connection">Connection</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Query">Query</a> </li><li class="src short"><span class="keyword">class</span>  <a href="#t:ToRow">ToRow</a> a </li><li class="src short"><span class="keyword">class</span>  <a href="#t:FromRow">FromRow</a> a </li><li class="src short"><span class="keyword">newtype</span>  <a href="#t:In">In</a> a = <a href="#v:In">In</a> a</li><li class="src short"><span class="keyword">newtype</span>  <a href="#t:Binary">Binary</a> a = <a href="#v:Binary">Binary</a> {<ul class="subs"><li><a href="#v:fromBinary">fromBinary</a> :: a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span>  <a href="#t:Only">Only</a> a = <a href="#v:Only">Only</a> {<ul class="subs"><li><a href="#v:fromOnly">fromOnly</a> :: a</li></ul>}</li><li class="src short"><span class="keyword">data</span>  h <a href="#t::.">:.</a> t = h <a href="#v::.">:.</a> t</li><li class="src short"><span class="keyword">data</span>  <a href="#t:SqlError">SqlError</a>  = <a href="#v:SqlError">SqlError</a> {<ul class="subs"><li><a href="#v:sqlState">sqlState</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></li><li><a href="#v:sqlExecStatus">sqlExecStatus</a> :: <a href="Database-PostgreSQL-Simple.html#t:ExecStatus">ExecStatus</a></li><li><a href="#v:sqlErrorMsg">sqlErrorMsg</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></li><li><a href="#v:sqlErrorDetail">sqlErrorDetail</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></li><li><a href="#v:sqlErrorHint">sqlErrorHint</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></li></ul>}</li><li class="src short"><span class="keyword">data</span>  <a href="#t:ExecStatus">ExecStatus</a> <ul class="subs"><li>= <a href="#v:EmptyQuery">EmptyQuery</a>  </li><li>| <a href="#v:CommandOk">CommandOk</a>  </li><li>| <a href="#v:TuplesOk">TuplesOk</a>  </li><li>| <a href="#v:CopyOut">CopyOut</a>  </li><li>| <a href="#v:CopyIn">CopyIn</a>  </li><li>| <a href="#v:BadResponse">BadResponse</a>  </li><li>| <a href="#v:NonfatalError">NonfatalError</a>  </li><li>| <a href="#v:FatalError">FatalError</a>  </li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:FormatError">FormatError</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:QueryError">QueryError</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:ResultError">ResultError</a> </li><li class="src short"><a href="#v:connect">connect</a> :: <a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a></li><li class="src short"><a href="#v:connectPostgreSQL">connectPostgreSQL</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a></li><li class="src short"><a href="#v:postgreSQLConnectionString">postgreSQLConnectionString</a> :: <a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:defaultConnectInfo">defaultConnectInfo</a> :: <a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a></li><li class="src short"><a href="#v:close">close</a> :: <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:query">query</a> :: (<a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q, <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r) =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; q -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> [r]</li><li class="src short"><a href="#v:query_">query_</a> :: <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> [r]</li><li class="src short"><a href="#v:queryWith">queryWith</a> :: <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q =&gt; <a href="Database-PostgreSQL-Simple-Internal.html#t:RowParser">RowParser</a> r -&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; q -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> [r]</li><li class="src short"><a href="#v:queryWith_">queryWith_</a> ::  <a href="Database-PostgreSQL-Simple-Internal.html#t:RowParser">RowParser</a> r -&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> [r]</li><li class="src short"><span class="keyword">data</span>  <a href="#t:FoldOptions">FoldOptions</a>  = <a href="#v:FoldOptions">FoldOptions</a> {<ul class="subs"><li><a href="#v:fetchQuantity">fetchQuantity</a> :: !<a href="Database-PostgreSQL-Simple.html#t:FetchQuantity">FetchQuantity</a></li><li><a href="#v:transactionMode">transactionMode</a> :: !<a href="Database-PostgreSQL-Simple-Transaction.html#t:TransactionMode">TransactionMode</a></li></ul>}</li><li class="src short"><span class="keyword">data</span>  <a href="#t:FetchQuantity">FetchQuantity</a> <ul class="subs"><li>= <a href="#v:Automatic">Automatic</a>  </li><li>| <a href="#v:Fixed">Fixed</a> !<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Int.html#t:Int">Int</a>  </li></ul></li><li class="src short"><a href="#v:defaultFoldOptions">defaultFoldOptions</a> :: <a href="Database-PostgreSQL-Simple.html#t:FoldOptions">FoldOptions</a></li><li class="src short"><a href="#v:fold">fold</a> :: (<a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> row, <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> params) =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; params -&gt; a -&gt; (a -&gt; row -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a) -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:foldWithOptions">foldWithOptions</a> :: (<a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> row, <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> params) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FoldOptions">FoldOptions</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; params -&gt; a -&gt; (a -&gt; row -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a) -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:fold_">fold_</a> :: <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; a -&gt; (a -&gt; r -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a) -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:foldWithOptions_">foldWithOptions_</a> :: <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r =&gt; <a href="Database-PostgreSQL-Simple.html#t:FoldOptions">FoldOptions</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; a -&gt; (a -&gt; r -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a) -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:forEach">forEach</a> :: (<a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q, <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r) =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; q -&gt; (r -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()) -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:forEach_">forEach_</a> :: <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; (r -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()) -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:returning">returning</a> :: (<a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q, <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r) =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; [q] -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> [r]</li><li class="src short"><a href="#v:execute">execute</a> :: <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; q -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Int.html#t:Int64">Int64</a></li><li class="src short"><a href="#v:execute_">execute_</a> :: <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Int.html#t:Int64">Int64</a></li><li class="src short"><a href="#v:executeMany">executeMany</a> :: <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; [q] -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Int.html#t:Int64">Int64</a></li><li class="src short"><a href="#v:withTransaction">withTransaction</a> ::  <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:withSavepoint">withSavepoint</a> ::  <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:begin">begin</a> :: <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:commit">commit</a> :: <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:rollback">rollback</a> :: <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:formatMany">formatMany</a> :: <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; [q] -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:formatQuery">formatQuery</a> :: <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; q -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></li></ul></div><div id="interface"><h1 id="g:1">Writing queries
</h1><div class="doc"><p>SQL-based applications are somewhat notorious for their
 susceptibility to attacks through the injection of maliciously
 crafted data. The primary reason for widespread vulnerability to
 SQL injections is that many applications are sloppy in handling
 user data when constructing SQL queries.
</p><p>This library provides a <code><a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></code> type and a parameter substitution
 facility to address both ease of use and security.
</p></div><h2 id="g:2">The Query type
</h2><div class="doc"><p>A <code><a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></code> is a <code>newtype</code>-wrapped <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></code>. It intentionally
 exposes a tiny API that is not compatible with the <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></code>
 API; this makes it difficult to construct queries from fragments of
 strings.  The <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> and <code><a href="Database-PostgreSQL-Simple.html#v:execute">execute</a></code> functions require queries to be
 of type <code><a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></code>.
</p><p>To most easily construct a query, enable GHC's <code>OverloadedStrings</code>
 language extension and write your query as a normal literal string.
</p><pre> {-# LANGUAGE OverloadedStrings #-}

 import Database.PostgreSQL.Simple

 hello = do
   conn &lt;- connect defaultConnectInfo
   query_ conn &quot;select 2 + 2&quot;
</pre><p>A <code><a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></code> value does not represent the actual query that will be
 executed, but is a template for constructing the final query.
</p></div><h2 id="g:3">Parameter substitution
</h2><div class="doc"><p>Since applications need to be able to construct queries with
 parameters that change, this library provides a query substitution
 capability.
</p><p>The <code><a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></code> template accepted by <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> and <code><a href="Database-PostgreSQL-Simple.html#v:execute">execute</a></code> can contain
 any number of &quot;<code>?</code>&quot; characters.  Both <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> and <code><a href="Database-PostgreSQL-Simple.html#v:execute">execute</a></code>
 accept a third argument, typically a tuple. When constructing the
 real query to execute, these functions replace the first &quot;<code>?</code>&quot; in
 the template with the first element of the tuple, the second
 &quot;<code>?</code>&quot; with the second element, and so on. If necessary, each
 tuple element will be quoted and escaped prior to substitution;
 this defeats the single most common injection vector for malicious
 data.
</p><p>For example, given the following <code><a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></code> template:
</p><pre> select * from user where first_name = ? and age &gt; ?
</pre><p>And a tuple of this form:
</p><pre> (&quot;Boris&quot; :: String, 37 :: Int)
</pre><p>The query to be executed will look like this after substitution:
</p><pre> select * from user where first_name = 'Boris' and age &gt; 37
</pre><p>If there is a mismatch between the number of &quot;<code>?</code>&quot; characters in
 your template and the number of elements in your tuple, a
 <code><a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></code> will be thrown.
</p><p>Note that the substitution functions do not attempt to parse or
 validate your query. It's up to you to write syntactically valid
 SQL, and to ensure that each &quot;<code>?</code>&quot; in your query template is
 matched with the right tuple element.
</p></div><h3 id="g:4">Type inference
</h3><div class="doc"><p>Automated type inference means that you will often be able to avoid
 supplying explicit type signatures for the elements of a tuple.
 However, sometimes the compiler will not be able to infer your
 types. Consider a case where you write a numeric literal in a
 parameter tuple:
</p><pre> query conn &quot;select ? + ?&quot; (40,2)
</pre><p>The above query will be rejected by the compiler, because it does
 not know the specific numeric types of the literals <code>40</code> and <code>2</code>.
 This is easily fixed:
</p><pre> query conn &quot;select ? + ?&quot; (40 :: Double, 2 :: Double)
</pre><p>The same kind of problem can arise with string literals if you have
 the <code>OverloadedStrings</code> language extension enabled.  Again, just
 use an explicit type signature if this happens.
</p></div><h2 id="g:5">Substituting a single parameter
</h2><div class="doc"><p>Haskell lacks a single-element tuple type, so if you have just one
 value you want substituted into a query, what should you do?
</p><p>The obvious approach would appear to be something like this:
</p><pre> instance (ToField a) =&gt; ToRow a where
     ...
</pre><p>Unfortunately, this wreaks havoc with type inference, so we take a
 different tack. To represent a single value <code>val</code> as a parameter, write
 a singleton list <code>[val]</code>, use <code><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#v:Just">Just</a></code> <code>val</code>, or use <code><a href="Database-PostgreSQL-Simple.html#t:Only">Only</a></code> <code>val</code>.
</p><p>Here's an example using a singleton list:
</p><pre> execute conn &quot;insert into users (first_name) values (?)&quot;
              [&quot;Nuala&quot;]
</pre></div><h2 id="g:6">Representing a list of values
</h2><div class="doc"><p>Suppose you want to write a query using an <code>IN</code> clause:
</p><pre> select * from users where first_name in ('Anna', 'Boris', 'Carla')
</pre><p>In such cases, it's common for both the elements and length of the
 list after the <code>IN</code> keyword to vary from query to query.
</p><p>To address this case, use the <code><a href="Database-PostgreSQL-Simple.html#t:In">In</a></code> type wrapper, and use a single
 &quot;<code>?</code>&quot; character to represent the list.  Omit the parentheses
 around the list; these will be added for you.
</p><p>Here's an example:
</p><pre> query conn &quot;select * from users where first_name in ?&quot; $
       In [&quot;Anna&quot;, &quot;Boris&quot;, &quot;Carla&quot;]
</pre><p>If your <code><a href="Database-PostgreSQL-Simple.html#t:In">In</a></code>-wrapped list is empty, the string <code>&quot;(null)&quot;</code> will be
 substituted instead, to ensure that your clause remains
 syntactically valid.
</p></div><h2 id="g:7">Modifying multiple rows at once
</h2><div class="doc"><p>If you know that you have many rows of data to insert into a table,
 it is much more efficient to perform all the insertions in a single
 multi-row <code>INSERT</code> statement than individually.
</p><p>The <code><a href="Database-PostgreSQL-Simple.html#v:executeMany">executeMany</a></code> function is intended specifically for helping
 with multi-row <code>INSERT</code> and <code>UPDATE</code> statements. Its rules for
 query substitution are different than those for <code><a href="Database-PostgreSQL-Simple.html#v:execute">execute</a></code>.
</p><p>What <code><a href="Database-PostgreSQL-Simple.html#v:executeMany">executeMany</a></code> searches for in your <code><a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></code> template is a
 single substring of the form:
</p><pre> values (?,?,?)
</pre><p>The rules are as follows:
</p><ul><li> The keyword <code>VALUES</code> is matched case insensitively.
</li><li> There must be no other &quot;<code>?</code>&quot; characters anywhere in your
   template.
</li><li> There must be one or more &quot;<code>?</code>&quot; in the parentheses.
</li><li> Extra white space is fine.
</li></ul><p>The last argument to <code><a href="Database-PostgreSQL-Simple.html#v:executeMany">executeMany</a></code> is a list of parameter
 tuples. These will be substituted into the query where the <code>(?,?)</code>
 string appears, in a form suitable for use in a multi-row <code>INSERT</code>
 or <code>UPDATE</code>.
</p><p>Here is an example:
</p><pre> executeMany conn
   &quot;insert into users (first_name,last_name) values (?,?)&quot;
   [(&quot;Boris&quot;,&quot;Karloff&quot;),(&quot;Ed&quot;,&quot;Wood&quot;)]
</pre><p>The query that will be executed here will look like this
 (reformatted for tidiness):
</p><pre> insert into users (first_name,last_name) values
   ('Boris','Karloff'),('Ed','Wood')
</pre></div><h2 id="g:8"><code>RETURNING</code>: modifications that returns results
</h2><div class="doc"><p>PostgreSQL supports returning values from data manipulation statements
 such as <code>INSERT</code> and <code>UPDATE</code>.   You can use these statements by
 using <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> instead of <code><a href="Database-PostgreSQL-Simple.html#v:execute">execute</a></code>.   For multi-tuple inserts,
 use <code><a href="Database-PostgreSQL-Simple.html#v:returning">returning</a></code> instead of <code><a href="Database-PostgreSQL-Simple.html#v:executeMany">executeMany</a></code>.
</p><p>For example, were there an auto-incrementing <code>id</code> column and
 timestamp column <code>t</code> that defaulted to the present time for the
 <code>sales</code> table, then the following query would insert two new
 sales records and also return their new <code>id</code>s and timestamps.
</p><pre> let q = &quot;insert into sales (amount, label) values (?,?) returning id, t&quot;
 xs :: [(Int, UTCTime)] &lt;- query conn q (15,&quot;Sawdust&quot;)
 ys :: [(Int, UTCTime)] &lt;- returning conn q [(20,&quot;Chips&quot;),(300,&quot;Wood&quot;)]
</pre></div><h1 id="g:9">Extracting results
</h1><div class="doc"><p>The <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> and <code><a href="Database-PostgreSQL-Simple.html#v:query_">query_</a></code> functions return a list of values in the
 <code><a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a></code> typeclass. This class performs automatic extraction
 and type conversion of rows from a query result.
</p><p>Here is a simple example of how to extract results:
</p><pre> import qualified Data.Text as Text

 xs &lt;- query_ conn &quot;select name,age from users&quot;
 forM_ xs $ \(name,age) -&gt;
   putStrLn $ Text.unpack name ++ &quot; is &quot; ++ show (age :: Int)
</pre><p>Notice two important details about this code:
</p><ul><li> The number of columns we ask for in the query template must
   exactly match the number of elements we specify in a row of the
   result tuple.  If they do not match, a <code><a href="Database-PostgreSQL-Simple.html#t:ResultError">ResultError</a></code> exception
   will be thrown.
</li><li> Sometimes, the compiler needs our help in specifying types. It
   can infer that <code>name</code> must be a <code>Text</code>, due to our use of the
   <code>unpack</code> function. However, we have to tell it the type of <code>age</code>,
   as it has no other information to determine the exact type.
</li></ul></div><h2 id="g:10">Handling null values
</h2><div class="doc"><p>The type of a result tuple will look something like this:
</p><pre> (Text, Int, Int)
</pre><p>Although SQL can accommodate <code>NULL</code> as a value for any of these
 types, Haskell cannot. If your result contains columns that may be
 <code>NULL</code>, be sure that you use <code><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a></code> in those positions of your
 tuple.
</p><pre> (Text, Maybe Int, Int)
</pre><p>If <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> encounters a <code>NULL</code> in a row where the corresponding
 Haskell type is not <code><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a></code>, it will throw a <code><a href="Database-PostgreSQL-Simple.html#t:ResultError">ResultError</a></code>
 exception.
</p></div><h2 id="g:11">Type conversions
</h2><div class="doc"><p>Conversion of SQL values to Haskell values is somewhat
 permissive. Here are the rules.
</p><ul><li> For numeric types, any Haskell type that can accurately represent
   all values of the given PostgreSQL type is considered &quot;compatible&quot;.
   For instance, you can always extract a PostgreSQL 16-bit <code>SMALLINT</code>
   column to a Haskell <code><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Int.html#t:Int">Int</a></code>.  The Haskell <code><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Prelude.html#t:Float">Float</a></code> type can accurately
   represent a <code>SMALLINT</code>, so it is considered compatble with those types.
</li><li> A numeric compatibility check is based only on the type of a
   column, <em>not</em> on its values. For instance, a PostgreSQL 64-bit
   <code>BIGINT</code> column will be considered incompatible with a Haskell
   <code>Int16</code>, even if it contains the value <code>1</code>.
</li><li> If a numeric incompatibility is found, <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> will throw a
   <code><a href="Database-PostgreSQL-Simple.html#t:ResultError">ResultError</a></code>.
</li><li> The <code><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></code> and <code>Text</code> types are assumed to be encoded as
   UTF-8. If you use some other encoding, decoding may fail or give
   wrong results. In such cases, write a <code>newtype</code> wrapper and a
   custom <code>Result</code> instance to handle your encoding.
</li></ul></div><h1 id="g:12">Types
</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:ConnectInfo" class="def">ConnectInfo</a>  <a href="src/Database-PostgreSQL-Simple-Internal.html#ConnectInfo" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ConnectInfo" class="def">ConnectInfo</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:connectHost" class="def">connectHost</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:connectPort" class="def">connectPort</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Word.html#t:Word16">Word16</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:connectUser" class="def">connectUser</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:connectPassword" class="def">connectPassword</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:connectDatabase" class="def">connectDatabase</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:ConnectInfo" class="caption collapser" onclick="toggleSection('i:ConnectInfo')">Instances</p><div id="section.i:ConnectInfo" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> <a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> <a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Connection" class="def">Connection</a>  <a href="src/Database-PostgreSQL-Simple-Internal.html#Connection" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Query" class="def">Query</a>  <a href="src/Database-PostgreSQL-Simple-Types.html#Query" class="link">Source</a></p><div class="doc"><p>A query string. This type is intended to make it difficult to
 construct a SQL query by concatenating string fragments, as that is
 an extremely common way to accidentally introduce SQL injection
 vulnerabilities into an application.
</p><p>This type is an instance of <code><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:IsString">IsString</a></code>, so the easiest way to
 construct a query is to enable the <code>OverloadedStrings</code> language
 extension and then simply write the query in double quotes.
</p><pre> {-# LANGUAGE OverloadedStrings #-}

 import Database.PostgreSQL.Simple

 q :: Query
 q = &quot;select ?&quot;
</pre><p>The underlying type is a <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></code>, and literal Haskell strings
 that contain Unicode characters will be correctly transformed to
 UTF-8.
</p></div><div class="subs instances"><p id="control.i:Query" class="caption collapser" onclick="toggleSection('i:Query')">Instances</p><div id="section.i:Query" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:IsString">IsString</a> <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Monoid.html#t:Monoid">Monoid</a> <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">class</span>  <a name="t:ToRow" class="def">ToRow</a> a <a href="src/Database-PostgreSQL-Simple-ToRow.html#ToRow" class="link">Source</a></p><div class="doc"><p>A collection type that can be turned into a list of rendering
 <code><a href="Database-PostgreSQL-Simple-ToField.html#t:Action">Action</a></code>s.
</p><p>Instances should use the <code>render</code> method of the <code>Param</code> class
 to perform conversion of each element of the collection.
</p></div><div class="subs instances"><p id="control.i:ToRow" class="caption collapser" onclick="toggleSection('i:ToRow')">Instances</p><div id="section.i:ToRow" class="show"><table><tr><td class="src"><a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> ()</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> [a]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (<a href="Database-PostgreSQL-Simple.html#t:Only">Only</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> b) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (a, b)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> a, <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> b) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (<a href="Database-PostgreSQL-Simple.html#t::.">:.</a> a b)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> b, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> c) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (a, b, c)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> b, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> c, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> d) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (a, b, c, d)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> b, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> c, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> d, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> e) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (a, b, c, d, e)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> b, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> c, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> d, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> e, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> f) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (a, b, c, d, e, f)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> b, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> c, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> d, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> e, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> f, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> g) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (a, b, c, d, e, f, g)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> b, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> c, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> d, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> e, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> f, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> g, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> h) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (a, b, c, d, e, f, g, h)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> b, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> c, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> d, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> e, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> f, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> g, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> h, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> i) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (a, b, c, d, e, f, g, h, i)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> b, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> c, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> d, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> e, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> f, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> g, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> h, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> i, <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> j) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (a, b, c, d, e, f, g, h, i, j)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">class</span>  <a name="t:FromRow" class="def">FromRow</a> a <a href="src/Database-PostgreSQL-Simple-FromRow.html#FromRow" class="link">Source</a></p><div class="doc"><p>A collection type that can be converted from a sequence of fields.
 Instances are provided for tuples up to 10 elements and lists of any length.
</p><p>Note that instances can be defined outside of postgresql-simple,  which is
 often useful.   For example, here's an instance for a user-defined pair:
</p><pre>data User = User { name :: String, fileQuota :: Int }

instance <code><a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a></code> User where
     fromRow = User &lt;$&gt; <code><a href="Database-PostgreSQL-Simple-FromRow.html#v:field">field</a></code> &lt;*&gt; <code><a href="Database-PostgreSQL-Simple-FromRow.html#v:field">field</a></code>
</pre><p>The number of calls to <code><a href="Database-PostgreSQL-Simple-FromRow.html#v:field">field</a></code> must match the number of fields returned
 in a single row of the query result.  Otherwise,  a <code><a href="Database-PostgreSQL-Simple-FromField.html#v:ConversionFailed">ConversionFailed</a></code>
 exception will be thrown.
</p><p>Note that <code><a href="Database-PostgreSQL-Simple-FromRow.html#v:field">field</a></code> evaluates it's result to WHNF, so the caveats listed in
 mysql-simple and very early versions of postgresql-simple no longer apply.
 Instead, look at the caveats associated with user-defined implementations
 of <code><a href="Database-PostgreSQL-Simple-FromField.html#v:fromField">fromField</a></code>.
</p></div><div class="subs instances"><p id="control.i:FromRow" class="caption collapser" onclick="toggleSection('i:FromRow')">Instances</p><div id="section.i:FromRow" class="show"><table><tr><td class="src"><a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> [a]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> [a])</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (a, b))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (a, b, c))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (a, b, c, d))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (a, b, c, d, e))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> f) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (a, b, c, d, e, f))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> f, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> g) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (a, b, c, d, e, f, g))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> f, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> g, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> h) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (a, b, c, d, e, f, g, h))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> f, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> g, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> h, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> i) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (a, b, c, d, e, f, g, h, i))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> f, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> g, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> h, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> i, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> j) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (a, b, c, d, e, f, g, h, i, j))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="/usr/share/doc/libghc-vector-doc/html/Data-Vector.html#t:Vector">Vector</a> a))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Database-PostgreSQL-Simple.html#t:Only">Only</a> a))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/libghc-vector-doc/html/Data-Vector.html#t:Vector">Vector</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="Database-PostgreSQL-Simple.html#t:Only">Only</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (a, b)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> a, <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> b) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="Database-PostgreSQL-Simple.html#t::.">:.</a> a b)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (a, b, c)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (a, b, c, d)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (a, b, c, d, e)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> f) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (a, b, c, d, e, f)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> f, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> g) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (a, b, c, d, e, f, g)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> f, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> g, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> h) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (a, b, c, d, e, f, g, h)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> f, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> g, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> h, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> i) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (a, b, c, d, e, f, g, h, i)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> b, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> c, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> d, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> e, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> f, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> g, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> h, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> i, <a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> j) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (a, b, c, d, e, f, g, h, i, j)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span>  <a name="t:In" class="def">In</a> a <a href="src/Database-PostgreSQL-Simple-Types.html#In" class="link">Source</a></p><div class="doc"><p>Wrap a list of values for use in an <code>IN</code> clause.  Replaces a
 single &quot;<code>?</code>&quot; character with a parenthesized list of rendered
 values.
</p><p>Example:
</p><pre> query c &quot;select * from whatever where id in ?&quot; (Only (In [3,4,5]))
</pre></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:In" class="def">In</a> a</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:In" class="caption collapser" onclick="toggleSection('i:In')">Instances</p><div id="section.i:In" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Database-PostgreSQL-Simple.html#t:In">In</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Database-PostgreSQL-Simple.html#t:In">In</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> (<a href="Database-PostgreSQL-Simple.html#t:In">In</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> (<a href="Database-PostgreSQL-Simple.html#t:In">In</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> (<a href="Database-PostgreSQL-Simple.html#t:In">In</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Database-PostgreSQL-Simple.html#t:In">In</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a =&gt; <a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> (<a href="Database-PostgreSQL-Simple.html#t:In">In</a> [a])</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span>  <a name="t:Binary" class="def">Binary</a> a <a href="src/Database-PostgreSQL-Simple-Types.html#Binary" class="link">Source</a></p><div class="doc"><p>Wrap binary data for use as a <code>bytea</code> value.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Binary" class="def">Binary</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:fromBinary" class="def">fromBinary</a> :: a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Binary" class="caption collapser" onclick="toggleSection('i:Binary')">Instances</p><div id="section.i:Binary" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Database-PostgreSQL-Simple.html#t:Binary">Binary</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Database-PostgreSQL-Simple.html#t:Binary">Binary</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> (<a href="Database-PostgreSQL-Simple.html#t:Binary">Binary</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> (<a href="Database-PostgreSQL-Simple.html#t:Binary">Binary</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> (<a href="Database-PostgreSQL-Simple.html#t:Binary">Binary</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Database-PostgreSQL-Simple.html#t:Binary">Binary</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> (<a href="Database-PostgreSQL-Simple.html#t:Binary">Binary</a> <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a>)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> (<a href="Database-PostgreSQL-Simple.html#t:Binary">Binary</a> <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString-Lazy.html#t:ByteString">ByteString</a>)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> (<a href="Database-PostgreSQL-Simple.html#t:Binary">Binary</a> <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a>)</td><td class="doc"><p>bytea
</p></td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> (<a href="Database-PostgreSQL-Simple.html#t:Binary">Binary</a> <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString-Lazy.html#t:ByteString">ByteString</a>)</td><td class="doc"><p>bytea
</p></td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span>  <a name="t:Only" class="def">Only</a> a <a href="src/Database-PostgreSQL-Simple-Types.html#Only" class="link">Source</a></p><div class="doc"><p>A single-value &quot;collection&quot;.
</p><p>This is useful if you need to supply a single parameter to a SQL
 query, or extract a single column from a SQL result.
</p><p>Parameter example:
</p><pre>query c &quot;select x from scores where x &gt; ?&quot; (<code><a href="Database-PostgreSQL-Simple.html#t:Only">Only</a></code> (42::Int))</pre><p>Result example:
</p><pre>xs &lt;- query_ c &quot;select id from users&quot;
forM_ xs $ \(<code><a href="Database-PostgreSQL-Simple.html#t:Only">Only</a></code> id) -&gt; {- ... -}</pre></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Only" class="def">Only</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:fromOnly" class="def">fromOnly</a> :: a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Only" class="caption collapser" onclick="toggleSection('i:Only')">Instances</p><div id="section.i:Only" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Database-PostgreSQL-Simple.html#t:Only">Only</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Database-PostgreSQL-Simple.html#t:Only">Only</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> (<a href="Database-PostgreSQL-Simple.html#t:Only">Only</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> (<a href="Database-PostgreSQL-Simple.html#t:Only">Only</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> (<a href="Database-PostgreSQL-Simple.html#t:Only">Only</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Database-PostgreSQL-Simple.html#t:Only">Only</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-ToField.html#t:ToField">ToField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (<a href="Database-PostgreSQL-Simple.html#t:Only">Only</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Database-PostgreSQL-Simple.html#t:Only">Only</a> a))</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Database-PostgreSQL-Simple-FromField.html#t:FromField">FromField</a> a =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="Database-PostgreSQL-Simple.html#t:Only">Only</a> a)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  h <a name="t::." class="def">:.</a> t <a href="src/Database-PostgreSQL-Simple-Types.html#%3A." class="link">Source</a></p><div class="doc"><p>A composite type to parse your custom data structures without
 having to define dummy newtype wrappers every time.
</p><pre> instance FromRow MyData where ...
</pre><pre> instance FromRow MyData2 where ...
</pre><p>then I can do the following for free:
</p><pre>
 res &lt;- query' c <a href="---.html">...</a>
 forM res $ \(MyData{..} :. MyData2{..}) -&gt; do
   ....
</pre></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src">h <a name="v::." class="def">:.</a> t</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i::." class="caption collapser" onclick="toggleSection('i::.')">Instances</p><div id="section.i::." class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable2">Typeable2</a> <a href="Database-PostgreSQL-Simple.html#t::.">:.</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> h, <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> t) =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> (<a href="Database-PostgreSQL-Simple.html#t::.">:.</a> h t)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> h, <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> t) =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> (<a href="Database-PostgreSQL-Simple.html#t::.">:.</a> h t)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> h, <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> t) =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Read.html#t:Read">Read</a> (<a href="Database-PostgreSQL-Simple.html#t::.">:.</a> h t)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> h, <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> t) =&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Database-PostgreSQL-Simple.html#t::.">:.</a> h t)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> a, <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> b) =&gt; <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> (<a href="Database-PostgreSQL-Simple.html#t::.">:.</a> a b)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> a, <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> b) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> (<a href="Database-PostgreSQL-Simple.html#t::.">:.</a> a b)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h2 id="g:13">Exceptions
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:SqlError" class="def">SqlError</a>  <a href="src/Database-PostgreSQL-Simple-Internal.html#SqlError" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:SqlError" class="def">SqlError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:sqlState" class="def">sqlState</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:sqlExecStatus" class="def">sqlExecStatus</a> :: <a href="Database-PostgreSQL-Simple.html#t:ExecStatus">ExecStatus</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:sqlErrorMsg" class="def">sqlErrorMsg</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:sqlErrorDetail" class="def">sqlErrorDetail</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:sqlErrorHint" class="def">sqlErrorHint</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a></dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:SqlError" class="caption collapser" onclick="toggleSection('i:SqlError')">Instances</p><div id="section.i:SqlError" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Database-PostgreSQL-Simple.html#t:SqlError">SqlError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Database-PostgreSQL-Simple.html#t:SqlError">SqlError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Exception-Base.html#t:Exception">Exception</a> <a href="Database-PostgreSQL-Simple.html#t:SqlError">SqlError</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:ExecStatus" class="def">ExecStatus</a>  </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:EmptyQuery" class="def">EmptyQuery</a></td><td class="doc"><p>The string sent to the server was empty.
</p></td></tr><tr><td class="src"><a name="v:CommandOk" class="def">CommandOk</a></td><td class="doc"><p>Successful completion of a
 command returning no data.
</p></td></tr><tr><td class="src"><a name="v:TuplesOk" class="def">TuplesOk</a></td><td class="doc"><p>Successful completion of a
 command returning data (such as a
 SELECT or SHOW).
</p></td></tr><tr><td class="src"><a name="v:CopyOut" class="def">CopyOut</a></td><td class="doc"><p>Copy Out (from server) data
 transfer started.
</p></td></tr><tr><td class="src"><a name="v:CopyIn" class="def">CopyIn</a></td><td class="doc"><p>Copy In (to server) data transfer
 started.
</p></td></tr><tr><td class="src"><a name="v:BadResponse" class="def">BadResponse</a></td><td class="doc"><p>The server's response was not understood.
</p></td></tr><tr><td class="src"><a name="v:NonfatalError" class="def">NonfatalError</a></td><td class="doc"><p>A nonfatal error (a notice or
 warning) occurred.
</p></td></tr><tr><td class="src"><a name="v:FatalError" class="def">FatalError</a></td><td class="doc"><p>A fatal error occurred.
</p></td></tr></table></div><div class="subs instances"><p id="control.i:ExecStatus" class="caption collapser" onclick="toggleSection('i:ExecStatus')">Instances</p><div id="section.i:ExecStatus" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Prelude.html#t:Enum">Enum</a> <a href="Database-PostgreSQL-Simple.html#t:ExecStatus">ExecStatus</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> <a href="Database-PostgreSQL-Simple.html#t:ExecStatus">ExecStatus</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Database-PostgreSQL-Simple.html#t:ExecStatus">ExecStatus</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:FormatError" class="def">FormatError</a>  <a href="src/Database-PostgreSQL-Simple.html#FormatError" class="link">Source</a></p><div class="doc"><p>Exception thrown if a <code><a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></code> could not be formatted correctly.
 This may occur if the number of '<code>?</code>' characters in the query
 string does not match the number of parameters provided.
</p></div><div class="subs instances"><p id="control.i:FormatError" class="caption collapser" onclick="toggleSection('i:FormatError')">Instances</p><div id="section.i:FormatError" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> <a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Exception-Base.html#t:Exception">Exception</a> <a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:QueryError" class="def">QueryError</a>  <a href="src/Database-PostgreSQL-Simple-Internal.html#QueryError" class="link">Source</a></p><div class="doc"><p>Exception thrown if <code>query</code> is used to perform an <code>INSERT</code>-like
 operation, or <code>execute</code> is used to perform a <code>SELECT</code>-like operation.
</p></div><div class="subs instances"><p id="control.i:QueryError" class="caption collapser" onclick="toggleSection('i:QueryError')">Instances</p><div id="section.i:QueryError" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> <a href="Database-PostgreSQL-Simple.html#t:QueryError">QueryError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Database-PostgreSQL-Simple.html#t:QueryError">QueryError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Database-PostgreSQL-Simple.html#t:QueryError">QueryError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Exception-Base.html#t:Exception">Exception</a> <a href="Database-PostgreSQL-Simple.html#t:QueryError">QueryError</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:ResultError" class="def">ResultError</a>  <a href="src/Database-PostgreSQL-Simple-FromField.html#ResultError" class="link">Source</a></p><div class="doc"><p>Exception thrown if conversion from a SQL value to a Haskell
 value fails.
</p></div><div class="subs instances"><p id="control.i:ResultError" class="caption collapser" onclick="toggleSection('i:ResultError')">Instances</p><div id="section.i:ResultError" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> <a href="Database-PostgreSQL-Simple.html#t:ResultError">ResultError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Database-PostgreSQL-Simple.html#t:ResultError">ResultError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Database-PostgreSQL-Simple.html#t:ResultError">ResultError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Exception-Base.html#t:Exception">Exception</a> <a href="Database-PostgreSQL-Simple.html#t:ResultError">ResultError</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:14">Connection management
</h1><div class="top"><p class="src"><a name="v:connect" class="def">connect</a> :: <a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a><a href="src/Database-PostgreSQL-Simple-Internal.html#connect" class="link">Source</a></p><div class="doc"><p>Connect with the given username to the given database. Will throw
   an exception if it cannot connect.
</p></div></div><div class="top"><p class="src"><a name="v:connectPostgreSQL" class="def">connectPostgreSQL</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a><a href="src/Database-PostgreSQL-Simple-Internal.html#connectPostgreSQL" class="link">Source</a></p><div class="doc"><p>Attempt to make a connection based on a libpq connection string.
   See <a href="http://www.postgresql.org/docs/9.1/static/libpq-connect.html">http://www.postgresql.org/docs/9.1/static/libpq-connect.html</a>
   for more information.
</p></div></div><div class="top"><p class="src"><a name="v:postgreSQLConnectionString" class="def">postgreSQLConnectionString</a> :: <a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a><a href="src/Database-PostgreSQL-Simple-Internal.html#postgreSQLConnectionString" class="link">Source</a></p><div class="doc"><p>Turns a <code><a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a></code> data structure into a libpq connection string.
</p></div></div><div class="top"><p class="src"><a name="v:defaultConnectInfo" class="def">defaultConnectInfo</a> :: <a href="Database-PostgreSQL-Simple.html#t:ConnectInfo">ConnectInfo</a><a href="src/Database-PostgreSQL-Simple-Internal.html#defaultConnectInfo" class="link">Source</a></p><div class="doc"><p>Default information for setting up a connection.
</p><p>Defaults are as follows:
</p><ul><li> Server on <code>localhost</code>
</li><li> Port on <code>5432</code>
</li><li> User <code>postgres</code>
</li><li> No password
</li><li> Database <code>postgres</code>
</li></ul><p>Use as in the following example:
</p><pre> connect defaultConnectInfo { connectHost = &quot;db.example.com&quot; }
</pre></div></div><div class="top"><p class="src"><a name="v:close" class="def">close</a> :: <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()<a href="src/Database-PostgreSQL-Simple-Internal.html#close" class="link">Source</a></p></div><h1 id="g:15">Queries that return results
</h1><div class="top"><p class="src"><a name="v:query" class="def">query</a> :: (<a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q, <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r) =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; q -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> [r]<a href="src/Database-PostgreSQL-Simple.html#query" class="link">Source</a></p><div class="doc"><p>Perform a <code>SELECT</code> or other SQL query that is expected to return
 results. All results are retrieved and converted before this
 function returns.
</p><p>When processing large results, this function will consume a lot of
 client-side memory.  Consider using <code><a href="Database-PostgreSQL-Simple.html#v:fold">fold</a></code> instead.
</p><p>Exceptions that may be thrown:
</p><ul><li> <code><a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></code>: the query string could not be formatted correctly.
</li><li> <code><a href="Database-PostgreSQL-Simple.html#t:QueryError">QueryError</a></code>: the result contains no columns (i.e. you should be
   using <code><a href="Database-PostgreSQL-Simple.html#v:execute">execute</a></code> instead of <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code>).
</li><li> <code><a href="Database-PostgreSQL-Simple.html#t:ResultError">ResultError</a></code>: result conversion failed.
</li></ul></div></div><div class="top"><p class="src"><a name="v:query_" class="def">query_</a> :: <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> [r]<a href="src/Database-PostgreSQL-Simple.html#query_" class="link">Source</a></p><div class="doc"><p>A version of <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> that does not perform query substitution.
</p></div></div><h2 id="g:16">Queries taking parser as argument
</h2><div class="top"><p class="src"><a name="v:queryWith" class="def">queryWith</a> :: <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q =&gt; <a href="Database-PostgreSQL-Simple-Internal.html#t:RowParser">RowParser</a> r -&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; q -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> [r]<a href="src/Database-PostgreSQL-Simple.html#queryWith" class="link">Source</a></p><div class="doc"><p>A version of <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> taking parser as argument
</p></div></div><div class="top"><p class="src"><a name="v:queryWith_" class="def">queryWith_</a> ::  <a href="Database-PostgreSQL-Simple-Internal.html#t:RowParser">RowParser</a> r -&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> [r]<a href="src/Database-PostgreSQL-Simple.html#queryWith_" class="link">Source</a></p><div class="doc"><p>A version of <code><a href="Database-PostgreSQL-Simple.html#v:query_">query_</a></code> taking parser as argument
</p></div></div><h1 id="g:17">Queries that stream results
</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:FoldOptions" class="def">FoldOptions</a>  <a href="src/Database-PostgreSQL-Simple.html#FoldOptions" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:FoldOptions" class="def">FoldOptions</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:fetchQuantity" class="def">fetchQuantity</a> :: !<a href="Database-PostgreSQL-Simple.html#t:FetchQuantity">FetchQuantity</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:transactionMode" class="def">transactionMode</a> :: !<a href="Database-PostgreSQL-Simple-Transaction.html#t:TransactionMode">TransactionMode</a></dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:FetchQuantity" class="def">FetchQuantity</a>  <a href="src/Database-PostgreSQL-Simple.html#FetchQuantity" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Automatic" class="def">Automatic</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:Fixed" class="def">Fixed</a> !<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Int.html#t:Int">Int</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><a name="v:defaultFoldOptions" class="def">defaultFoldOptions</a> :: <a href="Database-PostgreSQL-Simple.html#t:FoldOptions">FoldOptions</a><a href="src/Database-PostgreSQL-Simple.html#defaultFoldOptions" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:fold" class="def">fold</a> :: (<a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> row, <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> params) =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; params -&gt; a -&gt; (a -&gt; row -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a) -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a<a href="src/Database-PostgreSQL-Simple.html#fold" class="link">Source</a></p><div class="doc"><p>Perform a <code>SELECT</code> or other SQL query that is expected to return
 results. Results are streamed incrementally from the server, and
 consumed via a left fold.
</p><p>When dealing with small results, it may be simpler (and perhaps
 faster) to use <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> instead.
</p><p>This fold is <em>not</em> strict. The stream consumer is responsible for
 forcing the evaluation of its result to avoid space leaks.
</p><p>Exceptions that may be thrown:
</p><ul><li> <code><a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></code>: the query string could not be formatted correctly.
</li><li> <code><a href="Database-PostgreSQL-Simple.html#t:QueryError">QueryError</a></code>: the result contains no columns (i.e. you should be
   using <code><a href="Database-PostgreSQL-Simple.html#v:execute">execute</a></code> instead of <code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code>).
</li><li> <code><a href="Database-PostgreSQL-Simple.html#t:ResultError">ResultError</a></code>: result conversion failed.
</li></ul></div></div><div class="top"><p class="src"><a name="v:foldWithOptions" class="def">foldWithOptions</a> :: (<a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> row, <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> params) =&gt; <a href="Database-PostgreSQL-Simple.html#t:FoldOptions">FoldOptions</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; params -&gt; a -&gt; (a -&gt; row -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a) -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a<a href="src/Database-PostgreSQL-Simple.html#foldWithOptions" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:fold_" class="def">fold_</a><a href="src/Database-PostgreSQL-Simple.html#fold_" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc"><p>Query.
</p></td></tr><tr><td class="src">-&gt; a</td><td class="doc"><p>Initial state for result consumer.
</p></td></tr><tr><td class="src">-&gt; (a -&gt; r -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a)</td><td class="doc"><p>Result consumer.
</p></td></tr><tr><td class="src">-&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>A version of <code><a href="Database-PostgreSQL-Simple.html#v:fold">fold</a></code> that does not perform query substitution.
</p></div></div><div class="top"><p class="src"><a name="v:foldWithOptions_" class="def">foldWithOptions_</a><a href="src/Database-PostgreSQL-Simple.html#foldWithOptions_" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="Database-PostgreSQL-Simple.html#t:FoldOptions">FoldOptions</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc"><p>Query.
</p></td></tr><tr><td class="src">-&gt; a</td><td class="doc"><p>Initial state for result consumer.
</p></td></tr><tr><td class="src">-&gt; (a -&gt; r -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a)</td><td class="doc"><p>Result consumer.
</p></td></tr><tr><td class="src">-&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a</td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><a name="v:forEach" class="def">forEach</a><a href="src/Database-PostgreSQL-Simple.html#forEach" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q, <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc"><p>Query template.
</p></td></tr><tr><td class="src">-&gt; q</td><td class="doc"><p>Query parameters.
</p></td></tr><tr><td class="src">-&gt; (r -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ())</td><td class="doc"><p>Result consumer.
</p></td></tr><tr><td class="src">-&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>A version of <code><a href="Database-PostgreSQL-Simple.html#v:fold">fold</a></code> that does not transform a state value.
</p></div></div><div class="top"><p class="src"><a name="v:forEach_" class="def">forEach_</a><a href="src/Database-PostgreSQL-Simple.html#forEach_" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a></td><td class="doc"><p>Query template.
</p></td></tr><tr><td class="src">-&gt; (r -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ())</td><td class="doc"><p>Result consumer.
</p></td></tr><tr><td class="src">-&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>A version of <code><a href="Database-PostgreSQL-Simple.html#v:forEach">forEach</a></code> that does not perform query substitution.
</p></div></div><div class="top"><p class="src"><a name="v:returning" class="def">returning</a> :: (<a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q, <a href="Database-PostgreSQL-Simple.html#t:FromRow">FromRow</a> r) =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; [q] -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> [r]<a href="src/Database-PostgreSQL-Simple.html#returning" class="link">Source</a></p><div class="doc"><p>Execute <code>INSERT ... RETURNING</code>, <code>UPDATE ... RETURNING</code>, or other SQL
 query that accepts multi-row input and is expected to return results.
 Note that it is possible to write
    <code><code><a href="Database-PostgreSQL-Simple.html#v:query">query</a></code> conn <a href="INSERT --- RETURNING ---.html">INSERT ... RETURNING ...</a> ...</code>
 in cases where you are only inserting a single row,  and do not need
 functionality analogous to <code><a href="Database-PostgreSQL-Simple.html#v:executeMany">executeMany</a></code>.
</p><p>Throws <code><a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></code> if the query could not be formatted correctly.
</p></div></div><h1 id="g:18">Statements that do not return results
</h1><div class="top"><p class="src"><a name="v:execute" class="def">execute</a> :: <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; q -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Int.html#t:Int64">Int64</a><a href="src/Database-PostgreSQL-Simple.html#execute" class="link">Source</a></p><div class="doc"><p>Execute an <code>INSERT</code>, <code>UPDATE</code>, or other SQL query that is not
 expected to return results.
</p><p>Returns the number of rows affected.
</p><p>Throws <code><a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></code> if the query could not be formatted correctly.
</p></div></div><div class="top"><p class="src"><a name="v:execute_" class="def">execute_</a> :: <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Int.html#t:Int64">Int64</a><a href="src/Database-PostgreSQL-Simple-Internal.html#execute_" class="link">Source</a></p><div class="doc"><p>A version of <code>execute</code> that does not perform query substitution.
</p></div></div><div class="top"><p class="src"><a name="v:executeMany" class="def">executeMany</a> :: <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; [q] -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Int.html#t:Int64">Int64</a><a href="src/Database-PostgreSQL-Simple.html#executeMany" class="link">Source</a></p><div class="doc"><p>Execute a multi-row <code>INSERT</code>, <code>UPDATE</code>, or other SQL query that is not
 expected to return results.
</p><p>Returns the number of rows affected.
</p><p>Throws <code><a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></code> if the query could not be formatted correctly.
</p></div></div><h1 id="g:19">Transaction handling
</h1><div class="top"><p class="src"><a name="v:withTransaction" class="def">withTransaction</a> ::  <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a<a href="src/Database-PostgreSQL-Simple-Transaction.html#withTransaction" class="link">Source</a></p><div class="doc"><p>Execute an action inside a SQL transaction.
</p><p>This function initiates a transaction with a &quot;<code>begin
 transaction</code>&quot; statement, then executes the supplied action.  If
 the action succeeds, the transaction will be completed with
 <code><a href="Base.html#t:commit">commit</a></code> before this function returns.
</p><p>If the action throws <em>any</em> kind of exception (not just a
 PostgreSQL-related exception), the transaction will be rolled back using
 <code><a href="Database-PostgreSQL-Simple.html#v:rollback">rollback</a></code>, then the exception will be rethrown.
</p><p>For nesting transactions, see <code><a href="Database-PostgreSQL-Simple.html#v:withSavepoint">withSavepoint</a></code>.
</p></div></div><div class="top"><p class="src"><a name="v:withSavepoint" class="def">withSavepoint</a> ::  <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a<a href="src/Database-PostgreSQL-Simple-Transaction.html#withSavepoint" class="link">Source</a></p><div class="doc"><p>Create a savepoint, and roll back to it if an error occurs.  This may only
 be used inside of a transaction, and provides a sort of
 &quot;nested transaction&quot;.
</p><p>See <a href="http://www.postgresql.org/docs/current/static/sql-savepoint.html">http://www.postgresql.org/docs/current/static/sql-savepoint.html</a>
</p></div></div><div class="top"><p class="src"><a name="v:begin" class="def">begin</a> :: <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()<a href="src/Database-PostgreSQL-Simple-Transaction.html#begin" class="link">Source</a></p><div class="doc"><p>Begin a transaction.
</p></div></div><div class="top"><p class="src"><a name="v:commit" class="def">commit</a> :: <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()<a href="src/Database-PostgreSQL-Simple-Transaction.html#commit" class="link">Source</a></p><div class="doc"><p>Commit a transaction.
</p></div></div><div class="top"><p class="src"><a name="v:rollback" class="def">rollback</a> :: <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()<a href="src/Database-PostgreSQL-Simple-Transaction.html#rollback" class="link">Source</a></p><div class="doc"><p>Rollback a transaction.
</p></div></div><h1 id="g:20">Helper functions
</h1><div class="top"><p class="src"><a name="v:formatMany" class="def">formatMany</a> :: <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; [q] -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a><a href="src/Database-PostgreSQL-Simple.html#formatMany" class="link">Source</a></p><div class="doc"><p>Format a query string with a variable number of rows.
</p><p>This function is exposed to help with debugging and logging. Do not
 use it to prepare queries for execution.
</p><p>The query string must contain exactly one substitution group,
 identified by the SQL keyword &quot;<code>VALUES</code>&quot; (case insensitive)
 followed by an &quot;<code>(</code>&quot; character, a series of one or more &quot;<code>?</code>&quot;
 characters separated by commas, and a &quot;<code>)</code>&quot; character. White
 space in a substitution group is permitted.
</p><p>Throws <code><a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></code> if the query string could not be formatted
 correctly.
</p></div></div><div class="top"><p class="src"><a name="v:formatQuery" class="def">formatQuery</a> :: <a href="Database-PostgreSQL-Simple.html#t:ToRow">ToRow</a> q =&gt; <a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a> -&gt; <a href="Database-PostgreSQL-Simple.html#t:Query">Query</a> -&gt; q -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.0.2/Data-ByteString.html#t:ByteString">ByteString</a><a href="src/Database-PostgreSQL-Simple.html#formatQuery" class="link">Source</a></p><div class="doc"><p>Format a query string.
</p><p>This function is exposed to help with debugging and logging. Do not
 use it to prepare queries for execution.
</p><p>String parameters are escaped according to the character set in use
 on the <code><a href="Database-PostgreSQL-Simple.html#t:Connection">Connection</a></code>.
</p><p>Throws <code><a href="Database-PostgreSQL-Simple.html#t:FormatError">FormatError</a></code> if the query string could not be formatted
 correctly.
</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>