[
https://issues.apache.org/jira/browse/CSV-290?focusedWorklogId=812238&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-812238
]
ASF GitHub Bot logged work on CSV-290:
--------------------------------------
Author: ASF GitHub Bot
Created on: 26/Sep/22 20:47
Start Date: 26/Sep/22 20:47
Worklog Time Spent: 10m
Work Description: garydgregory commented on PR #265:
URL: https://github.com/apache/commons-csv/pull/265#issuecomment-1258615088
Hello @angusdev
Thank you for updating your PR.
(1) I think you need to test for tab characters (ASCII 9) in values.
(2) In the PG docs I read
```
QUOTE
Specifies the quoting character to be used when a data value is quoted. The
default is double-quote. This must be a single one-byte character. This option
is allowed only when using CSV format.
ESCAPE
Specifies the character that should appear before a data character that
matches the QUOTE value. The default is the same as the QUOTE value (so that
the quoting character is doubled if it appears in the data). This must be a
single one-byte character. This option is allowed only when using CSV format.
```
Please help me understand why the git master code does not match this
definition.
TY!
Issue Time Tracking
-------------------
Worklog Id: (was: 812238)
Time Spent: 1h 10m (was: 1h)
> 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.6, 1.9.0
> Reporter: Anatoliy Artemenko
> Priority: Major
> Time Spent: 1h 10m
> Remaining Estimate: 0h
>
> {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", "v12");
> printer.printRecord("v21", "v22");
> printer.close();
> CSVParser parser = new CSVParser(new StringReader(sw.toString()),
> CSVFormat.POSTGRESQL_CSV.withFirstRecordAsHeader());
> System.out.println("headers: " +
> Arrays.equals(parser.getHeaderNames().toArray(), new String[] {"column1",
> "column2"}));
> Iterator<CSVRecord> i = parser.iterator();
> System.out.println("row: " + Arrays.equals(i.next().toList().toArray(), new
> String[] {"v11", "v12"}));
> System.out.println("row: " + Arrays.equals(i.next().toList().toArray(), new
> String[] {"v21", "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.20.10#820010)