You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Anatoliy Artemenko (Jira)" <ji...@apache.org> on 2021/09/30 16:38:00 UTC

[jira] [Created] (CSV-290) Produced CSV using PostgreSQL format cannot be read

Anatoliy Artemenko created CSV-290:
--------------------------------------

             Summary: Produced CSV using PostgreSQL format cannot be read
                 Key: CSV-290
                 URL: https://issues.apache.org/jira/browse/CSV-290
             Project: Commons CSV
          Issue Type: Bug
          Components: Parser
    Affects Versions: 1.9.0, 1.6
            Reporter: Anatoliy Artemenko


{code:java}
// code placeholder
{code}
CSV, produced using printer:

 

CSVPrinter printer = new CSVPrinter(sw, CSVFormat.POSTGRESQL_CSV.withFirstRecordAsHeader());

 

cannot be be read with same format parser:

 

CSVParser parser = new CSVParser(new StringReader(sw.toString()), CSVFormat.POSTGRESQL_CSV.withFirstRecordAsHeader());

 

To reproduce: 

 
{code:java}
StringWriter sw = new StringWriter(); 

CSVPrinter printer = new CSVPrinter(sw, CSVFormat.POSTGRESQL_CSV.withFirstRecordAsHeader());  

printer.printRecord("column1", "column2"); 
printer.printRecord("v11", "v21"); 
printer.printRecord("v21", "v22");  

printer.close();  

CSVParser parser = new CSVParser(new StringReader(sw.toString()), CSVFormat.POSTGRESQL_CSV.withFirstRecordAsHeader()); 

Arrays.equals(parser.getHeaderNames().toArray(), new String[] {"v11", "v12"});  

Iterator<CSVRecord> i = parser.iterator(); 
Arrays.equals(i.next().toList().toArray(), new String[] {"v11", "v12"}); 
Arrays.equals(i.next().toList().toArray(), new String[] {"v12", "v22"});{code}
I'd expect the above code to work, but it fails:
{code:java}
java.io.IOException: (startline 1) EOF reached before encapsulated token finishedjava.io.IOException: (startline 1) EOF reached before encapsulated token finished 

at org.apache.commons.csv.Lexer.parseEncapsulatedToken(Lexer.java:371) 
at org.apache.commons.csv.Lexer.nextToken(Lexer.java:285) 
at org.apache.commons.csv.CSVParser.nextRecord(CSVParser.java:701) 
at org.apache.commons.csv.CSVParser.createHeaders(CSVParser.java:480) 
at org.apache.commons.csv.CSVParser.<init>(CSVParser.java:432) 
at org.apache.commons.csv.CSVParser.<init>(CSVParser.java:398) 
at Test.main(Test.java:25)
{code}
 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)