On 24 March 2016 at 01:14, Daniel Verite <dan...@manitou-mail.org> wrote:
> It provides a useful mitigation to dump/reload databases having
> rows in the 1GB-2GB range, but it works under these limitations:
> - no single field has a text representation exceeding 1GB.
> - no row as text exceeds 2GB (\copy from fails beyond that. AFAICS we
> could push this to 4GB with limited changes to libpq, by
> interpreting the Int32 field in the CopyData message as unsigned).
This seems like worthwhile mitigation for an issue multiple people have hit
in the wild, and more will.
Giving Pg more generally graceful handling for big individual datums is
going to be a bit of work, though. Support for wide-row, big-Datum COPY in
and out. Efficient lazy fetching of large TOASTed data by follow-up client
requests. Range fetching of large compressed TOASTed values (possibly at
the price of worse compression) without having to decompress the whole
thing up to the start of the desired range. Lots of fun.
At least we have lob / pg_largeobject.
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services