Re: pg_dump / copy bugs with "big lines" ?
Jim Nasby <jim.nasby@bluetreble.com>
From: Jim Nasby <Jim.Nasby@BlueTreble.com>
To: Michael Paquier <michael.paquier@gmail.com>, Robert Haas
<robertmhaas@gmail.com>
Cc: Ronan Dunklau <ronan.dunklau@dalibo.com>, pgsql-hackers
<pgsql-hackers@postgresql.org>
Date: 2015-04-08T05:06:42Z
Lists: pgsql-hackers
On 4/7/15 10:29 PM, Michael Paquier wrote: > On Wed, Apr 8, 2015 at 11:53 AM, Robert Haas <robertmhaas@gmail.com> wrote: >> On Mon, Apr 6, 2015 at 1:51 PM, Jim Nasby <Jim.Nasby@bluetreble.com> wrote: >>> In any case, I don't think it would be terribly difficult to allow a bit >>> more than 1GB in a StringInfo. Might need to tweak palloc too; ISTR there's >>> some 1GB limits there too. >> >> The point is, those limits are there on purpose. Changing things >> arbitrarily wouldn't be hard, but doing it in a principled way is >> likely to require some thought. For example, in the COPY OUT case, >> presumably what's happening is that we palloc a chunk for each >> individual datum, and then palloc a buffer for the whole row. Now, we >> could let the whole-row buffer be bigger, but maybe it would be better >> not to copy all of the (possibly very large) values for the individual >> columns over into a row buffer before sending it. Some refactoring >> that avoids the need for a potentially massive (1.6TB?) whole-row >> buffer would be better than just deciding to allow it. > > I think that something to be aware of is that this is as well going to > require some rethinking of the existing libpq functions that are here > to fetch a row during COPY with PQgetCopyData, to make them able to > fetch chunks of data from one row. The discussion about upping the StringInfo limit was for cases where a change in encoding blows up because it's now larger. My impression was that these cases don't expand by a lot, so we wouldn't be significantly expanding StringInfo. I agree that buffering 1.6TB of data would be patently absurd. Handling the case of COPYing a row that's >1GB clearly needs work than just bumping up some size limits. That's why I was wondering whether this was a real scenario or just hypothetical... I'd be surprised if someone would be happy with the performance of 1GB tuples, let alone even larger than that. -- Jim Nasby, Data Architect, Blue Treble Consulting Data in Trouble? Get it in Treble! http://BlueTreble.com
Commits
-
Fix overflow check in StringInfo; add missing casts
- 42f50cb8fa98 10.0 landed
-
Permit dump/reload of not-too-large >1GB tuples
- fa2fa9955280 10.0 landed
- 646655d264f1 9.5.6 landed
- 4e01ecae9827 9.6.2 landed