Re: restore whoes

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: restore whoes
Дата
Msg-id 15318.1013459436@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: restore whoes  (Bruce Momjian <pgman@candle.pha.pa.us>)
Ответы Re: restore whoes  (Peter Eisentraut <peter_e@gmx.net>)
Список pgsql-admin
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Tom Lane wrote:
>> In the examples given, the error didn't show up till later rows, in
>> fields where there was no \r anywhere.

> Hard to imagine why a failure would occur on anything but the first row.

Simple: suppose the dumped data contains \ \n in the body of a field,
which is the currently-accepted representation for a data newline.
Microsoft munges this to \ \r \n, which will now be read by COPY IN as a
backslashed \r (ie, a data \r) followed by a non-escaped newline.
Ergo, that's the end of the current row.  No error is detected (since a
datatype that could have contained a data \n is unlikely to reject a
data \r).  Then parsing resumes for the next row at the next input
character.  We're totally out of sync and will produce lord only knows
what peculiar error message when, eventually, some datatype input
converter doesn't like what it's given.  But that could be many rows
later than where the problem was.

Part of the problem here is that COPY IN will accept a "short" row (one
with fewer fields than the table actually has columns).  So early
termination of a line isn't recognizable as an error unless the last
column that receives some data manages to recognize a formatting error.
Personally I think it would be a good idea to change that --- but I
suppose you'll complain that that might break existing applications,
even though the "feature" has never been documented.

            regards, tom lane

В списке pgsql-admin по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: restore whoes
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: restore whoes