Andrew Dunstan wrote:
> Andrew Dunstan said:
> > Bruce Momjian said:
> >> Log Message:
> >> -----------
> >> Add regression tests for CSV and \., and add automatic quoting of a
> single column dump that has a \. value, so the load works properly. I also
> added documentation describing this issue.
> >>
> >
> > This seems unnecessarily elaborate, in code that is already byzantine. I
> think we can safely quote *any* field that has \. regardless of whether or
> not it is a singleton. There's no need to make a single column a special
> case - if it's valid for a singleton it's valid for any, and vice versa.
> >
>
>
> Now that I've woken up properly I realise that it's also just wrong - it
> will miss the case we need to catch of the first column of a multi-column
> line beginning with \. - just treat them all the same and all will be well.
>
> Also, this test is suspicious:
>
> strcmp(string, "\\.") == 0
>
> Don't we also want to quote it if the field reads \.x ?
> strncmp(string, "\\.",2) == 0
> seems like it would be a better test.
Have you looked at the regression tests I added? \.x will no longer be
interpreted as an end-of-data marker:
COPY testeoc FROM stdin CSV;
a\.
\.b
c\.d
"\."
\.
COPY testeoc TO stdout CSV;
a\.
\.b
c\.d
"\."
Our documentation says \. must appear alone on a line. With non-CSV, we
allow \. to appear on the end of a line too because it can not be a data
value, but for CSV, we have to enforce that.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073