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
  [email protected]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to