Thread

  1. COPY from file

    Ole Gjerde <gjerde@icebox.org> — 2000-02-08T17:23:35Z

    Hey,
    I have found what looks to be a bug in the COPY command.
    
    This is current CVS as of monday at 7pm CST.
    
    I have a tab delimited file(It's actually just a dump) that includes
    some non-normal ascii characters, the one in question being y with 2 dots.
    If the data has ANY of those in a char(or vchar) field the COPY finishes
    successfully with no errors, but the table is empty.  If I edit
    the data file and remove that y(there was only one), it works just fine.
    So basically, COPY silently dropped that line on the floor and didn't say
    anything about it.
    
    Postgres was compiled like this: 
    ./configure --prefix=/home/postgres --with-maxbackends=128 ; make
    and ran like this: postmaster -d 9 -o '-F'
    on Linux 2.2.14 (Mandrake 7.0)
    
    The above scenario happens when I just try to run on a one line data 
    file(which I can provide if necessary).  If I try the big macdaddy file
    with around 350 MB of data(and about 12 out of the 3-4 million rows has
    that pesky y in it), more interesting things happen.
    
    The backend log with -d 9 says: 
    FATAL 1:  Socket command type (y with 2 dots goes here) unknown
    NOTICE:  AbortTransaction and not in in-progress state   
    
    And psql says this:
     psql:parts.dump:42: Backend message type 0x45 arrived while idle 
    pqReadData() -- backend closed the channel unexpectedly.
            This probably means the backend terminated abnormally 
            before or while processing the request. 
    PQsendQuery() -- There is no connection to the backend. 
    PQsendQuery() -- There is no connection to the backend. 
    PQsendQuery() -- There is no connection to the backend.
    PQsendQuery() -- There is no connection to the backend. 
    PQsendQuery() -- There is no connection to the backend. 
    PQsendQuery() -- There is no connection to the backend. 
    PQsendQuery() -- There is no connection to the backend. 
    PQsendQuery() -- There is no connection to the backend.
    PQsendQuery() -- There is no connection to the backend.                         
    
    2 weird things here.  psql takes a good 30-40 seconds to notice that the
    backend has died and I had another session(idle) of psql going, and that
    backend died as well, but the postmaster was still running.
    
    All of the data above will import just fine into 6.5.3(on the same
    machine/os).
    
    Thanks,
    Ole Gjerde