File: CHANGES.md

package info (click to toggle)
haskell-postgresql-simple 0.7.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 560 kB
  • sloc: haskell: 6,442; makefile: 2
file content (746 lines) | stat: -rw-r--r-- 29,138 bytes parent folder | download | duplicates (2)
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
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
### Version 0.7.0.0 (2023-07-31)

  * Remove Eq Null instance. (Future `base` may break it, we remove it profilacticly).
  * Use `postgresql-libpq >=0.10.0.0`. It includes critical fixes,
    by using `postgresql-simple >=0.7` you won't get older `postgresql-libpq`.
  * Drop support for GHC prior 8.6
  * Added a class for `postgresql-simple` exceptions: `SomePostgreSqlException`.
    This allows to catch all `postgresql-simple` exceptions at once.
    (c.f. `AsyncException` in `base).

### Version 0.6.5.1 (2023-07-09)

  * Support `aeson-2.2.0.0`

### Version 0.6.5 (2022-10-30)

  * Add `withConnect`

### Version 0.6.4 (2021-01-06)

  * Add foldCopyData helper function
    Thanks to Sebastián Estrella for the implementation
    https://github.com/haskellari/postgresql-simple/pull/56
  * Implement support for postgresql 'interval' type
    Thanks to Andre Marques Lee for the implementation
    https://github.com/haskellari/postgresql-simple/pull/60
  * Depend on `time-compat` to provide uniform `time` related interface.

### Version 0.6.3 (2020-11-15)

  * Add `fromFieldJSONByteString`
    Thanks to tomjaguarpaw for the implementation
    https://github.com/haskellari/postgresql-simple/pull/47
  * Add `attoFieldParser`
    Thanks to Victor Nawothnig for the implementation
    https://github.com/haskellari/postgresql-simple/pull/45
  * Add `Identity` and `Const` instance
    Thanks to Cary Robbins for the implementation
    https://github.com/haskellari/postgresql-simple/pull/46
  * Add `withTransactionModeRetry'`, a variant of `withTransactionModeRetry`
    for all exception types.
    Thanks to Elliot Cameron for the implementation
    https://github.com/haskellari/postgresql-simple/pull/42
  * Fix spurious aborts when retrying transactions
    Thanks to Elliot Cameron for the implementation
    https://github.com/haskellari/postgresql-simple/pull/34
  * Add `Database.PostgreSQL.Simple.Newtypes` module
    with `Aeson` newtype.
    https://github.com/haskellari/postgresql-simple/pull/55

### Version 0.6.2 (2019-04-26)
  
  * Define `MonadFail Ok`.

### Version 0.6.1 (2019-03-04)

  * Escape double '??' to a literal '?
    Thanks to Felix Paulusma for the implementation.
    https://github.com/phadej/postgresql-simple/pull/5

  * Mention GHC Generics support in the documentation.
    Thanks to Gabriel Gonzalez for the implementation.
    https://github.com/phadej/postgresql-simple/pull/6

  * Better error message for "Query resulted in a command response
    Thanks to Max Amanshauser for the implementation.
    https://github.com/phadej/postgresql-simple/pull/7

  * fromJSONField: Include JSONPath on JSON parse errors
    Thanks to Simon Hengel for the implementation.
    https://github.com/phadej/postgresql-simple/pull/2

  * No TH in implementation
    https://github.com/phadej/postgresql-simple/pull/4

### Version 0.6 (2018-10-16)

  * *Breaking change*: Use `Only` package's `Only` for a common 1-tuple.

    Consider a downstream library depending already both on
    `Only` and `postgresql-simple` package. This library my define
    a `MyClass` with instances for `Only.Only` and `PostgreSQL.Only`.
    As now these types are the same, a library would break.
    Therefore I consider "merging" types a breaking change.

    There are two ways for adopting this change in that scenario:

    - Either CPP-guard `PostgreSQL.Only` instance with

      ```haskell
      #if !MIN_VERSION_postgresql_simple(0,6,0)
      instance MyClass (PostgreSQL.Only a) where ...
      #endif
      ```

    - or simply remove it and add `postgresql-simple >=0.6` lower bound,
      making sure that there's only single `Only`.

  * Add `ToField` instances for case-insensitive strict and lazy text.
    Thanks to Max Tagher for the implementation.
    https://github.com/lpsmith/postgresql-simple/pull/232

  * Add support to CockroachDB.
    Thanks to Georte Steel.
    https://github.com/lpsmith/postgresql-simple/pull/245

  * Add Generic ConnectInfo instance
    Thanks to Dmitry Dzhus.
    https://github.com/lpsmith/postgresql-simple/pull/235

  * Add `fromFieldRange :: Typeable a => FieldParser a -> FieldParser (PGRange a)`
    https://github.com/lpsmith/postgresql-simple/pull/221

  * Add `fromFieldJSONByteString :: FieldParser ByteString`
    https://github.com/lpsmith/postgresql-simple/pull/222/files

  * Fix off-by-one error in year builder.
    Thanks to Nathan Ferris Hunter.
    https://github.com/lpsmith/postgresql-simple/pull/230

  * Extend ToRow and FromRow to tuples of size 18
    Thanks to Bardur Arantsson.
    https://github.com/lpsmith/postgresql-simple/pull/229

  * Add `Vector` and `Vector.Unboxed` `query` variants.
    These are more memory efficient
    (especially, if you anyway will convert to some vector)
    https://github.com/phadej/1

  * Documentation improvements
    https://github.com/lpsmith/postgresql-simple/pull/227
    https://github.com/lpsmith/postgresql-simple/pull/236

### Version 0.5.4.0 (2018-05-23)
  * Support GHC-8.4 (Semigroup/Monoid)

### Version 0.5.3.0 (2017-05-15)
  * Refactored some rudimentary cursor handling code out of the
    implementation of the fold operators,  into a new
    `Database.PostgreSQL.Simple.Cursor` module,  thanks to Bardur Arantsson.

  * Made the `FromField` instance for `Char` compatible with
    postgresql's `bpchar` type.  Thanks to Ivan Lazar Miljenovic for
    reporting the issue.

  * Added `Show` and `Eq` instances for `Notification`, thanks to
    Matvey Aksenov.

  * Fixed some example code, thanks to Matvey Aksenov.

  * Fixed a problem with using `conversionError` to throw exceptions
    of type `SomeException`.  Previously, the exception would be
    wrapped in a second `SomeException` dynamic constructor which
    would cause normal GHC typecase idioms over `SomeException` to fail.

### Version 0.5.2.1 (2016-06-29)
  * Bumped the lower bound for `base` to 4.6.   Thanks to Herbert
    Valerio Riedel for reporting the issue.

  * Added an `Eq` instance for `SqlError`, thanks to Chris Allen

  * Fixed a bug where a all-caps `"NULL"` text value inside a
    postgresql array would get parsed as the SQL null value.  Thanks
    goes to Edgar Gomes and Silk for finding and fixing this mistake.

  * Modified `withTransaction` and friends to ignore `IOError`s when
    attempting to roll back the transaction.   This fixes a buggy
    interaction between `withTransaction` and async exceptions (e.g.
    `System.Timeout`) on unix platforms.  Thanks goes to Erik
    Hesselink and Silk for providing the test case that exposed this
    issue.

  * Added the `testTimeout` regression test for the problem above.

### Version 0.5.2.0 (2016-05-25)
  * Significantly improved the error reporting from
    `Copy.putCopyData`, thanks to Ben Gamari.

  * Moved the test suite to use `tasty`,  with a big thanks
    to Ben Gamari.

  * Added `FromField.optionalField`,  and updated the documentation
    of `FromField.fromJSONField`, as inspired by an email conversation
    with Ian Wagner.

  * Updated all links in the haddocks to use https,  and added a link
    to the documentation of `connectPostgreSQL`.

  * Added a truncated changelog to the source distribution.

### Version 0.5.1.3 (2016-04-30)
  * Implemented the Monad of No Return proposal, future-proofing
    postgresql-simple against future releases of GHC.

  * Fixed a rare and usually benign race condition where
    `getNotification` could end up waiting on a newly reallocated
    file descriptor index, potentially leading to deadlock if the
    descriptor does not become readable promptly.  This fix only
    applies to GHC 7.8 or later, as it depends on `threadWaitReadSTM`.

  * Tweaked the time parsers to accept times of day of the form `hh:mm`,
    omitting seconds,  following changes made to aeson.

  * Updated the documentation of the `In` type to point out a gotcha
    when using the SQL fragment `... NOT IN ?` with `In []`.  Thanks
    goes to Simon Michael and Dan Haraj for bringing this issue to
    my attention.

### Version 0.5.1.2 (2015-12-14)
  * The syntax generated for empty arrays was changed so that
    postgresql's type inference would work better,  thanks to
    Amit Levy.

  * Further revision and expansion of the new Time documentation.

### Version 0.5.1.1 (2015-12-02)
  * This is a documentation-only release

  * The documentation of the `Time` module has been completely
    rewritten, and is far longer and more informative.  It contains
    a brief overview of civil time, the semantics of postgresql's
    time types,  and their relation to Haskell's time types via
    postgresql-simple.

  * The documentation of `connectPostgreSQL` has been modified to
    mention the effects of environment variables on the connection
    string parameters.

  * The documentation of `HStore.Internal` has been unhidden from
    haddock.

  * A typo in example code was fixed courtesy of Levi Notik.

### Version 0.5.1.0 (2015-10-22)
  * Optimized the implementation of the streaming operators to avoid
    creating intermediate lists of rows,  thanks to Timo von Holtz.

  * Added default instances for `ToRow` and `FromRow` that depend on
    Generics,  thanks to Alexey Khudyakov.

  * Fixed support for bytestring-0.9 and GHC 7.4.

### Version 0.5.0.1 (2015-09-21)
  * Fixed a bug when printing a `ZonedTime` with a negative offset
    that is not a whole number of hours.

### Version 0.5.0.0 (2015-09-19)
  * Removed the deprecated `BuiltinTypes` module.

  * Modified the SQL quasiquoter so that it returns a `Query`,  not
    an overloaded string,  and so that the `OverloadedStrings` language
    extension is no longer necessary,  thanks to Mike Ledger.

  * Moved away from `blaze-builder` in favor of `bytestring-builder`.  This
    shouldn't affect very many people, but does reduce the transitive
    dependencies.

  * Rewrote the timestamp printers to use the new `Prim`
    infrastructure in `bytestring-builder`.   The new printers should
    be a fair bit faster.

  * Added support for exclusion violations to the `ConstraintViolation`
    type in the Errors module,  thanks to João Cristóvão.

  * Moved away from the `uuid` package in favor of the `uuid-types` package,
    thanks to Bardur Arantsson.  This shouldn't affect anybody, but does
    reduce the transitive dependencies.

  * Postgresql-simple now explicitly assumes the UTF8 character encoding
    for communication between the client and server.   All database encodings
    support UTF8 except for Mule Internal Code,  the Multilingual
    Extensions for Emacs.   An exception should be raised upon
    connecting to a database by the backend if the backend cannot
    accommodate this requirement.

  * Added `Eq` and `Typeable` instances for `Connection`.

  * Added the `foldWith`, `forEachWith`, and `returningWith` families
    of functions courtesy of Travis Staton.

  * Support for Ranged types,  with thanks to Leonid Onokhov for his
    contributions.

  * The `FromField` instance for JSON now allows for top-level values that
    are not objects or arrays,  thanks to Sam Rijs.

  * The timestamp parsers have been replaced with those now in Aeson.
    Janne Hellsten adapted the old parsers from postgresql-simple for
    inclusion in Aeson;  Bryan O'Sullivan rewrote those parsers to be
    faster,  with some tweaks contributed by myself.   And now to
    bring the effort full circle,  the result has been brought back to
    postgresql-simple,  with some adaptations.

  * Fixed a bug in the typeinfo system where postgresql's `_record` type
    was being reported as a basic type and not an array type.   Thanks to
    Nickolay Kolev for helping to expose this issue.

  * Fixed a bug with the `typeInfo` operator, thanks to Timmy Tofu.  In the
    case of parsing subfields of arrays and composites,  it would fetch the
    `TypeInfo` of the array or composite type and not the subtype.

### Version 0.4.10.0 (2015-02-26)
  * Added a blurb about SSL/TLS in the documentation for connectPostgreSQL

  * Moved some functions into the Internal module,  courtesy of Aleksey
    Uimanov.

### Version 0.4.9.0 (2014-12-27)
  * Made the fromField method for PGArray available as pgArrayFieldParser,
    outside of the typeclass courtesy of Tom Ellis.

  * Fixed a missing OverloadedStrings pragma in the documentation of SqlQQ.

  * Fixed deprecation warnings, courtesy of Simon Hengel.

### Version 0.4.8.0 (2014-11-24)
  * Added support for postgresql's citext type extension via the
    case-insensitive package.

  * Added the function parseHStoreList to the HStore module.

### Version 0.4.7.0 (2014-10-27)
  * Added support for very old timestamps to UTCTime.   Depending on time
    zone,  very old timestamps can be returned with a offset from UTC that
    contains seconds.

    All timezones in the TZ database moved to a time standard offset an
    integer number of minutes from UTC before 1973, almost all locations
    moved before 1938,  and a solid majority moved before 1921.

    ZonedTime assumes offsets are a whole number of minutes,  and thus the
    conversion to ZonedTime does not support these timestamps and will
    still throw a conversion error.

    Note that PostgreSQL's "timestamp with time zone" (or "timestamptz")
    type is nearly universally misunderstood.  For an explanation, see:

        https://github.com/lpsmith/postgresql-simple/issues/69

    Thanks to Michael Snoyman for his assistance with this issue.

### Version 0.4.6.0 (2014-10-07)
  * Added an instance ToField NominalDiffTime.

### Version 0.4.5.0 (2014-09-26)
  * Added support for retrieving NaN and ±Infinity floating point values
    from postgres to the FromField instances for Float, Double, and Rational.
    The instance for Scientific is unchanged due to the fact it has no
    way of representing these special values.  Thanks goes to Tom Nielsen
    for reporting the issue.

### Version 0.4.4.1 (2014-09-07)
  * Fixed a rather serious bug that prevented the COPY module from working
    at all on unix clients since version 0.4.3.0.   Thanks goes to
    Dmitry Dzhus for reporting the issue.

  * Added a regression test for the COPY module to the test suite.

### Version 0.4.4.0 (2014-08-26)
  * Added the jsonb type debuting in PostgreSQL 9.4 to the TypeInfo.Static
    and Builtin tables, and extended the out-of-box json instances to
    be compatible with the new type.   Thanks to Tobias Florek for the
    patch.

  * Ported some expanded documentation from mysql-simple,  and fixed
    a documentation typo.

### Version 0.4.3.0 (2014-07-10)
  * connect and exec now use libpq asynchronously on non-Windows platforms.
    This means we are using threadWaitRead and threadWaitWrite to
    have GHC's IO manager schedule non-blocking C calls to libpq,
    instead of using blocking C calls and having the OS kernel do the
    scheduling.  Among other things, this now means that System.Timeout
    will work with connect and exec on unix platforms.

  * connect and exec now throw IOErrors instead of SQLErrors in
    some cases.   The intention is for SQLErrors to represent
    an error returned by the server,  and to use IOErrors for errors
    that originate from client-side code.    However,  this goal
    isn't perfectly achieved as of yet.

### Version 0.4.2.3 (2014-06-04)
  * This is strictly a documentation release,  with no code changes.

  * Fixed several documentation typos,  thanks to Chris Allen and remdezx.

  * Expanded the documentation of connectPostgreSQL,  including a short
    overview of common use cases and two new links to the official Postgres
    documentation about the authentication process.

  * De-emphasized connect and ConnectInfo in favor of connectPostgreSQL.

### Version 0.4.2.2 (2014-05-15)
  * Fixed compatibility with scientific-0.3.\*,  thanks to Adam Bergmark

  * Improved documentation of the FromField module, as well as the fold,
    foldWithOptions, executeMany,  and returning operators.

### Version 0.4.2.1 (2014-03-27)
  * Fixed bug in Values syntax generation

  * Improved documentation,  including examples of multi-row update,
    a better example for Values,  documenting the inaccuracies in reading
    floating point numbers from the database,  and the IsString instance
    for QualifiedIdentifier.

### Version 0.4.2.0 (2014-03-22)
  * Added ToField and FromField instances for the scientific package

  * Changed the Identifier and QualifiedIdentifier to use Text in
    order to avoid encoding errors.  Technically this requires a
    major version bump, but let's pretend 0.4.1.0 didn't happen.

  * Removed non-exhaustive cases in the ToField instance for Values,
    and tweaked error messages.

### Version 0.4.1.0 (2014-03-22)
  * Fixed the parsing of arrays containing null values, courtesy of
    Francesco Mazzoli

  * Added support for properly escaped identifiers,  courtesy of
    Tobias Florek.   See the new Identifier and QualifiedIdentifier
    types inside Database.PostgreSQL.Simple.Types.

  * Added support for parameterized VALUES expressions.   This is
    more general than executeMany and returning.   See the
    Database.PostgreSQL.Simple.Types.Values data type.

### Version 0.4.0.2 (2014-01-12)
  * Tweaked C preprocessor directive to be more portable

  * Tweaked testsuite for compatibility with aeson-0.7

### Version 0.4.0.1 (2013-12-21)
  * Relaxed dependency on aeson to >= 0.6

  * Update the documentation of `fromField`

### Version 0.4.0.0 (2013-12-21)
  * Changed the calling code of `fromField` so that it always sends
    a copy of the raw data.  This should be a small but significant
    performance bump for most people most of the time;  however it
    may slow down retrieval of large values not converted directly
    to ByteString,  such as large json, hstore, and array values.
    See commit 8635f8 for more information.

  * Added the PGArray type.  Thanks to Joey Adams for the suggestion

  * Fixed JSON decoding,  which was almost entirely broken up until now,
    due to bugs in the version of aeson currently available on Hackage.
    Thanks to Amit Levy for the report.

  * Added FromField instances for IORef, MVar, and IOVector.

### Version 0.3.10.0 (2013-12-17)
  * Added the queryWith function, courtesy of Leonid Onokhov

  * Added the Default type,  for representing postgresql's default values

### Version 0.3.9.1 (2013-10-28)
  * Removed dependency on hashable

### Version 0.3.9.0 (2013-10-27)
  * Added FromField and ToField instances for the `uuid` package,
    courtesy of Bas van Dijk.

  * Added instance FromRow (Maybe a) for most pre-packaged FromRow
    instances.  See issue #64 for some discussion.

  * Added the fromBinary, fromHStoreMap, and fromHStoreList newtype
    unwrapper functions, courtesy of Bas van Dijk.

### Version 0.3.8.0 (2013-10-11)
  * Fixed the example code in `FromField`, thanks to Adam Bergmark.

  * Added `Notification.getBackendPID`.

### Version 0.3.7.1 (2013-09-12)
  * Relaxed the dependency on bytestring-0.10 back to bytestring-0.9,
    courtesy of Michael Snoyman

### Version 0.3.7.0 (2013-09-11)
  * Added `aeson` as a dependency.

  * Added ToField and FromField instances for aeson's JSON.Value type,
    courtesy of Bas van Dijk.

  * Added toJSONField and fromJSONField helper functions for declaring
    FromField/ToField JSON instances to other Haskell types, courtesy
    of Bas van Dijk.

  * Added a FromField instance for (), corresponding to postgresql's void
    type.

  * Added liftConversion and liftRowParser functions to the Internal
    module, for lifting IO actions into the respective monads.

  * The SqlError predicates available in the Transaction module are now
    also exported from the Errors module.

  * Various documentation fixes.

### Version 0.3.6.0 (2013-08-19)
  * Added the json type to BuiltinTypes and TypeInfo.Static, courtesy of
    Manuel Gómez.

  * Removed the remaining internal dependencies on BuiltinTypes from
    FromField.   Added the TypeInfo.Macro module as a result.

  * Deprecated the BuiltinTypes module,  which will be removed several
    months from now.  Fixed the example code in FromField to reflect
    this change.

### Version 0.3.5.0 (2013-08-09)
  * Added an FromRow instance for Vector,  semantically identical to the
    existing FromRow instance for [],  courtesy of Doug Beardsley

  * Reworked the documentation for the Copy module,  and tweaked the
    documentation for the LargeObjects module.

### Version 0.3.4.0 (2013-07-23)
  * Added direct support for COPY IN and COPY OUT,  without having
    to use raw postgresql-libpq calls and postgresql-simple's Internal
    module.

  * Changed `getNotification` so that it throws a IOError (resource vanished)
    exception instead of an ErrorCall exception when it fails to fetch
    the connection's file descriptor from libpq.

### Version 0.3.3.2 (2013-06-18)
  * Optimized the definition of `mconcat` in the Monoid instance for
    the Query type,  courtesy of Joey Adams.

### Version 0.3.3.1 (2013-06-06)
  * `getNotification` now works on Windows,  albeit using a one-second
    polling loop,  courtesy of Joey Adams.

### Version 0.3.3.0 (2013-05-29)
  * Fixed two issues with the fold operator:  fold would raise the wrong
    exception,  and gave the database cursor a static name preventing
    folds from being nested.  Thanks to Joey Adams for his
    work on these issues.

### Version 0.3.2.0 (2013-05-20)
  * Added a savepoint abstraction to the Transaction module, courtesy
    of Joey Adams

### Version 0.3.1.2 (2013-04-29)
  * Fixed hstore parser to not unnecessarily reverse the key-value pairs

### Version 0.3.1.1 (2013-04-29)
  * Fixed hstore parser to recognize empty hstores, courtesy of Simon
    Meier

### Version 0.3.1.0 (2013-04-26)
  * Added support for Range and Composite types to the TypeInfo system.

  * Added support for hstore types in the Simple.HStore module.

  * Improved documentation of the FromField module.

### Version 0.3.0.1 (2013-03-26)
  * A large chunk of the documentation inside the FromField module had
    silently failed to render in Haddock.

### Version 0.3.0.0 (2013-03-25)
  * Added support for PostgreSQL's Array Types.  Thanks to Jason Dusek
    for his work on this feature.

  * Added a brand new TypeInfo system that gives FromField instances
    convenient and efficient access to the pg_type metatable.   This
    replaced the older typename cache,  and was necessary to properly
    support postgres array types.   Thanks to Bas van Dijk for his
    work on this feature.

  * Changed the type of the `fromField` and `fromRow` methods to allow
    a restricted set of IO actions,  and stopped pre-calculating the type
    name of every column.    As a result,  the type of the `typename`
    operator changed from `Field -> ByteString` to
    `Field -> Conversion ByteString`,  where Conversion is the new monad
    that conversion computations run inside.

  * Improved the documentation of the FromField module.

  * Added the Database.PostgreSQL.Simple.Errors module,  which offers
    some predicates and functions for interpreting SqlError values, courtesy
    of Leonid Onokhov.

  * Added a the name of a column and the associated table's object identifier
    to ResultError exceptions,  courtesy of Jeff Chu.

  * Moved most of the more detailed transaction operators into the
    Database.PostgreSQL.Simple.Transaction module.

  * Changed withTransactionModeRetry to accept a predicate of which
    SqlErrors to retry,  due to the fact that serialization errors can
    sometimes manifest themselves as constraint violations.   Thanks
    to Oliver Charles for pointing this out and implementing the change.

  * Added simple tests of the fold operator,  thanks to Joey Adams.

  * Added simple tests of the array conversion code.

  * Added recognition of -- comments in the quasiquoter,  which are
    now stripped out.


### Version 0.2.4.1 (2012-08-29)
  * Fixed the documentation of `In`.   Thanks to rekado and dstcruz for
    pointing this out.

### Version 0.2.4.0 (2012-08-23)
  * Added the `withTransactionSerializable` and `withTransactionModeRetry`
    operators,  thanks to Joey Adams.

### Version 0.2.3.0 (2012-08-09)
  * Added the `returning` operator, thanks to Jason Dusek

### Version 0.2.2.0 (2012-07-26)
  * Added a ToRow instance for the (:.) type, courtesy of Leonid Onokhov

  * Added the type oid for PostgreSQL's `uuid` type to BuiltinTypes

### Version 0.2.1.0 (2012-07-23)
  * Added the FromRow.fieldWith operator, thanks to Leonid Onokhov

  * Added a type synonym for FieldParser

### Version 0.2.0.1 (2012-06-21)
  * Fixed a compatibility problem with PostgreSQL 8.1,  which does not allow
    clients to set their own value for `standard_conforming_strings`.  This
    connection variable is still set to `on` for PostgreSQL 8.2 and later.

### Version 0.2: (2012-06-19)
  * Removed the conversion from `timestamp` to `UTCTime`.  Some code will be
    broken even though it will still compile.

  * Renamed a number of data constructors, mostly in the BuiltinTypes module.

  * Exported ToRow/FromRow from Database.PostgreSQL.Simple


### Version 0.1.4.3: (2012-06-10)
  * Fix language extensions for compatibility with GHC 7.0

### Version 0.1.4.2: (2012-06-10)
  * Fix a wayward dependency on Text.

### Version 0.1.4.1: (2012-06-10)
  * Added support for timezones with minutes in their UTC offset.

### Version 0.1.4: (2012-06-10)
  * Removed pcre-light dependency,  courtesy of Joey Adams.

  * Reworked support for the Time types.

      * The conversion from PostgreSQL's `timestamp` (without time zone) type
        to Haskell's `UTCTime` type is deprecated and will be removed in 0.2.

      * `Data.Time.LocalTime` now has `FromField`/`ToField` instances.  It is
        now the preferred way of dealing with `timestamp` (without time zone).

      * `Database.PostgreSQL.Simple.Time` is a new module that offers types
        that accommodate PostgreSQL's infinities.

      * All time-related `FromField`/`ToField` instances are now based on new,
        higher-speed parsers and printers instead of those provided by the
        time package included in GHC.

  * Planned breaking changes for 0.2:

      * Removing the conversion from `timestamp` to `UTCTime`.

      * Renaming some of the type names in `BuiltinTypes`.


### Version 0.1.3: (2012-05-30)
  * Made ZonedTime an instance of FromField and ToField

  * Added getNotificationNonBlocking


### Version 0.1.2: (2012-05-09)
  * Switched to libpq-based escaping for bytea types;  Binary now works with
    PostgreSQL 8 courtesy of Joey Adams.

  * postgresql-simple now sets standard_conforming_strings to "on".  This
    per-connection variable is initialized according to the server
    configuration,  which defaults to "off" for PostgreSQL < 9,  and "on"
    for PostgreSQL >= 9.   You may need to adjust any string literals in
    your SQL queries,  or set the variable yourself.

  * Exported (:.) from Database.PostgreSQL.Simple


### Version 0.1.1: (2012-05-06)
  * Added some preliminary documentation for the Ok, Notification, and
    LargeObjects modules

  * Implemented the `fail` method for the monad instance for `Ok`.

  * Fixed a bug relating to handling the transaction level


### Version 0.1:   (2012-05-04)
  * Renamed several modules, typeclasses, and functions:

        QueryParams  (renderParams)   -> ToRow   (toRow)
        QueryResults (convertResults) -> FromRow (fromRow)
        Param  (render)  -> ToField   (toField)
        Result (convert) -> FromField (fromField)

  * Added the `Database.PostgreSQL.Simple.Ok` module,  a variation of
    `Either SomeException` that has an instance for `Alternative` and also
    uses a list of exceptions to track the ways it has failed.

  * Changed the return type of `fromField` and `fromRow` from
    `Either SomeException` to `Ok`.

  * Thanks to suggestions from Ozgun Ataman, the `FromRow` typeclass has been
    massively improved.  The result is simpler definitions and better
    compositionality.  Also, user-defined instances need not be to be
    concerned about forcing the converted results to WHNF.  Here is an
    example comparing the old to the new:

        instance (Result a, Result b) => QueryResults (a,b) where
            convertResults [fa,fb] [va,vb] = do
                !a <- convert fa va
                !b <- convert fb vb
                return (a,b)
            convertResults fs vs  = convertError fs vs 2

        instance (FromField a, FromField b) => FromRow (a,b) where
            fromRow = (,) <$> field <*> field

  * Added `(:.)`, a pair that allows one to compose `FromRow` instances:

        instance (FromRow a, FromRow b) => FromRow (a :. b) where
            fromRow = (:.) <$> fromRow <*> fromRow

  * Moved the contents `Field` module into the `FromField` module.

  * Removed the `RawResult` type.

  * Added `DefaultIsolationLevel` as a distinct `IsolationLevel` option
    and   `DefaultReadWriteMode`  as a distinct `ReadWriteMode`.