Re: pg_dump / copy bugs with "big lines" ?
От | Alvaro Herrera |
---|---|
Тема | Re: pg_dump / copy bugs with "big lines" ? |
Дата | |
Msg-id | 20161124203912.iccqstd4doqsnyuh@alvherre.pgsql обсуждение исходный текст |
Ответ на | Re: pg_dump / copy bugs with "big lines" ? ("Daniel Verite" <daniel@manitou-mail.org>) |
Ответы |
Re: pg_dump / copy bugs with "big lines" ?
|
Список | pgsql-hackers |
Daniel Verite wrote: > Here's an updated patch. Compared to the previous version: > > - removed CopyStartSend (per comment #1 in review) > > - renamed flag to allow_long (comment #2) > > - resetStringInfo no longer resets the flag (comment #3). > > - allowLongStringInfo() is removed (comment #3 and #5), > makeLongStringInfo() and initLongStringInfo() are provided > instead, as alternatives to makeStringInfo() and initStringInfo(). > > - StringInfoData.len is back to int type, 2GB max. > (addresses comment #4 incidentally). > This is safer because many routines peeking > into StringInfoData use int for offsets into the buffer, > for instance most of the stuff in backend/libpq/pqformat.c > Altough these routines are not supposed to be called on long > buffers, this assertion was not enforced in the code, and > with a 64-bit length effectively over 2GB, they would misbehave > pretty badly. Hmm, this looks a lot better I think. One change we overlooked and I just noticed is that we need to change appendStringInfoVA() to return size_t rather than int. This comment at the bottom of it gave that up: /* * Return pvsnprintf's estimate of the space needed. (Although this is * given as a size_t, we know it will fit in intbecause it's not more * than MaxAllocSize.) */return (int) nprinted; The parenthical comment is no longer true. This means we need to update all its callers to match. I suppose it won't be a problem for most of them since they are not using long stringinfos anyway, but it seems better to keep everything consistent. I hope that callers that do not adjust the type of the declared variable would get a compiler warning. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
В списке pgsql-hackers по дате отправления: