                        Apache Commons CSV
                        Version 1.8
                        Release Notes


INTRODUCTION:

This document contains the release notes for the 1.8 version of Apache Commons CSV.
Commons CSV reads and writes files in variations of the Comma Separated Value (CSV) format.

Commons CSV requires at least Java 8.

This release fixes serialization compatibility of CSVRecord with versions 1.0 to 1.6. New fields added since 
1.7 are not serialized. Support for Serializable is scheduled to be removed in version 2.0.

Changes in this version include:

NEW FEATURES
==============

o CSV-255:  Add CSVRecord.isSet(int) method #52. Thanks to 0x100.

FIXED BUGS
============

o CSV-135:  Char escape doesn't work properly with quoting. Thanks to Mateusz Zakarczemny.
o CSV-244:  Test case failures following CSVFormat#equals() update.
o CSV-243:  CSVFormat withTrim() and withIgnoreSurroundingSpaces() need better docs.
o CSV-242:  CSVFormat equals() and hashCode() don't use all fields.
o CSV-241:  CSVFormat#validate() does not account for allowDuplicateHeaderNames #43. Thanks to LuckyIlam, Gary Gregory.
o CSV-245:  Post 1.7 release fixes. Thanks to Alex Herbert.
o CSV-252:  Upgrade test framework to JUnit 5 Jupiter #49, #50. Thanks to Alex Herbert.
o CSV-247:  A single empty header is allowed when not allowing empty column headers. #47. Thanks to Alex Herbert, Gary Gregory.
o CSV-248:  CSVRecord is not Serializable. Thanks to Alex Herbert.
o           Use test scope for supercsv #48. Thanks to Alex Herbert.

CHANGES
=========

o           Update tests from H2 1.4.199 to 1.4.200. Thanks to Gary Gregory.
o           Update tests from Hamcrest 2.1 to 2.2. Thanks to Gary Gregory.
o           Update tests from Mockito 3.1.0 to 3.2.4. Thanks to Gary Gregory.
o           Fix typos in site and test #53. Thanks to Chen.
o           Fix typo performance test #55. Thanks to Chen.


Historical list of changes: https://commons.apache.org/proper/commons-csv/changes-report.html

For complete information on Apache Commons CSV, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons CSV website:

https://commons.apache.org/proper/commons-csv/

Download page: https://commons.apache.org/proper/commons-csv/download_csv.cgi

Have fun!
-Apache Commons CSV team

------------------------------------------------------------------------------

                        Apache Commons CSV
                        Version 1.7
                        Release Notes


INTRODUCTION:

This document contains the release notes for the 1.7 version of Apache Commons CSV.
Commons CSV reads and writes files in variations of the Comma Separated Value (CSV) format.

The Apache Commons CSV library provides a simple interface for reading and writing
CSV files of various types.

Feature and bug fix release (Java 8)

Changes in this version include:

NEW FEATURES
==============

o CSV-233:  Add predefined CSVFormats for printing MongoDB CSV and TSV. Thanks to Gary Gregory.
o CSV-234:  Add support for java.sql.Clob. Thanks to Roberto Benedetti, Gary Gregory.
o CSV-239:  Cannot get headers in column order from CSVRecord. Thanks to Gary Gregory, Dave Moten.

FIXED BUGS
============

o CSV-208:  Fix escape character for POSTGRESQL_TEXT and POSTGRESQL_CSV formats. Thanks to Jurrie Overgoor.
o CSV-232:  Site link "Source Repository" does not work. Thanks to Jurrie Overgoor, Gary Gregory.
o CSV-238:  Escape quotes in CLOBs #39. Thanks to Stephen Olander-Waters.

CHANGES
=========

o CSV-237:  Update to Java 8. Thanks to Gary Gregory.
o           Update tests from H2 1.4.198 to 1.4.199. Thanks to Gary Gregory.


Historical list of changes: https://commons.apache.org/proper/commons-csv/changes-report.html

For complete information on Apache Commons CSV, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons CSV website:

https://commons.apache.org/proper/commons-csv/

Download it from https://commons.apache.org/proper/commons-csv/download_csv.cgi

Have fun!
-Apache Commons CSV team

------------------------------------------------------------------------------

                        Apache Commons CSV
                        Version 1.6
                        Release Notes


INTRODUCTION:

This document contains the release notes for the 1.6 version of
Apache Commons CSV. Commons CSV reads and writes files in variations of the
Comma Separated Value (CSV) format.

CSV requires at least Java 7.

The Apache Commons CSV library provides a simple interface for reading and
writing CSV files of various types.

Feature and bug fix release.

Changes in this version include:

NEW FEATURES
==============

o CSV-217:  Add autoFlush option for CsvPrinter. PR #24.
            Thanks to Korolyov Alexei.
o CSV-220:  Add API org.apache.commons.csv.CSVFormat.withSystemRecordSeparator().
            Thanks to Gary Gregory.

FIXED BUGS
============

o CSV-219:  The behavior of quote char using is not similar as Excel does when
            the first string contains CJK char(s). Thanks to Zhang Hongda.
o CSV-172:  Don't quote cells just because they have UTF-8 encoded characters.
            Thanks to Andrew Pennebaker.
o CSV-223:  Inconsistency between Javadoc of CSVFormat DEFAULT EXCEL.
            Thanks to Samuel Martin.
o CSV-209:  Create CSVFormat.ORACLE preset. Thanks to Gary Gregory.
o CSV-224:  Some multi-iterator parsing peek sequences incorrectly consume
            elements. Thanks to David Warshaw.
o CSV-225:  Parse method should avoid creating a redundant BufferedReader.
            Thanks to Anson Schwabecher.

CHANGES
=========

o CSV-231:  Add more documentation to CSVPrinter.


Have fun!
-Apache Commons CSV team

------------------------------------------------------------------------------

                        Apache Commons CSV
                        Version 1.5
                        Release Notes


INTRODUCTION:

This document contains the release notes for the 1.5 version of Apache Commons CSV.
Commons CSV reads and writes files in variations of the Comma Separated Value (CSV) format.

CSV requires at least Java 7.

The Apache Commons CSV library provides a simple interface for reading and writing
CSV files of various types.

Feature and bug fix release

Changes in this version include:

NEW FEATURES
==============

o CSV-189:  CSVParser: Add factory method accepting InputStream. Thanks to Peter Holzwarth, Gary Gregory.
o CSV-190:  Add convenience API CSVFormat.print(File, Charset). Thanks to Gary Gregory.
o CSV-191:  Add convenience API CSVFormat.print(Path, Charset). Thanks to Gary Gregory.
o CSV-192:  Add convenience API CSVParser.parse(Path, Charset, CSVFormat). Thanks to Gary Gregory.
o CSV-205:  Add convenience API CSVFormat#printer() to print to System.out. Thanks to Gary Gregory.
o CSV-207:  Provide a CSV Format for printing PostgreSQL CSV and Text formats. Thanks to Gary Gregory.
o CSV-214:  Adding a placeholder in the Lexer and CSV parser to store the end-of-line string. Thanks to Nitin Mahendru, Gary Gregory.

FIXED BUGS
============

o CSV-203:  withNullString value is printed without quotes when QuoteMode.ALL is specified; add QuoteMode.ALL_NON_NULL. PR #17. Thanks to Richard Wheeldon, Kai Paroth.
o CSV-194:  Fix outdated comments about FileReader in CSVParser #13. Thanks to Marc Prud'hommeaux.
o CSV-193:  Fix incorrect method name 'withFirstRowAsHeader' in user guide. Thanks to Matthias Wiehl.
o CSV-171:  Negative numeric values in the first column are always quoted in minimal mode. Thanks to Gary Gregory, Michael Graessle, Adrian Bridgett.

CHANGES
=========

o CSV-187: Update platform requirement from Java 6 to 7. Thanks to Gary Gregory.
o CSV-201: Do not use RuntimeException in CSVParser.iterator().new Iterator() {...}.getNextRecord(). Thanks to Benedikt Ritter, Gary Gregory.


Historical list of changes: https://commons.apache.org/proper/commons-csv/changes-report.html

For complete information on Apache Commons CSV, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons CSV website:

https://commons.apache.org/proper/commons-csv/

Have fun!
-Apache Commons CSV team

------------------------------------------------------------------------------

                        Apache Commons CSV
                        Version 1.4
                        Release Notes


INTRODUCTION:

This document contains the release notes for the 1.4 version of Apache Commons CSV.
Commons CSV reads and writes files in variations of the Comma Separated Value (CSV) format.

CSV requires at least Java 6.

The Apache Commons CSV library provides a simple interface for reading and writing
CSV files of various types.

Feature and bug fix release

Changes in this version include:

NEW FEATURES
==============

o CSV-182:  Allow some printing operations directly from CSVFormat. Thanks to Gary Gregory.


CHANGES
=========

o CSV-181:  Make CSVPrinter.print(Object) GC-free. Thanks to Gary Gregory.
o CSV-183:  Drop ferc.gov tests.  


Historical list of changes: https://commons.apache.org/proper/commons-csv/changes-report.html

For complete information on Apache Commons CSV, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons CSV website:

https://commons.apache.org/proper/commons-csv/

Have fun!
-Apache Commons CSV team

------------------------------------------------------------------------------

                        Apache Commons CSV
                        Version 1.3
                        Release Notes


INTRODUCTION:

This document contains the release notes for the 1.3 version of Apache Commons CSV.
Commons CSV reads and writes files in variations of the Comma Separated Value (CSV) format.

CSV requires at least Java 6.

The Apache Commons CSV library provides a simple interface for reading and writing
CSV files of various types.

Feature and bug fix release.

Changes in this version include:

NEW FEATURES
==============

o CSV-179:  Add shortcut method for using first record as header to CSVFormat.
o CSV-180:  Add withHeader(Class? extends Enum>) to CSVFormat.
o CSV-159:  Add IgnoreCase option for accessing header names. Thanks to Yamil Medina.
o CSV-169:  The null string should be case-sensitive when reading records. Thanks to Gary Gregory.
o CSV-175:  Support for ignoring trailing delimiter. Thanks to Gary Gregory, Chris Jones.
o CSV-177:  Support trimming leading and trailing blanks. Thanks to Gary Gregory.
o CSV-178:  Create default formats for Informix UNLOAD and UNLOAD CSV. Thanks to Gary Gregory.

FIXED BUGS
============

o CSV-168:  CSVFormat.nullString should not be escaped. Thanks to Gary Gregory, cornel creanga.
o CSV-170:  CSVFormat.MYSQL nullString should be "\N". Thanks to Gary Gregory, cornel creanga.
o CSV-161:  Fix Javadoc to say CSVFormat with() methods return a new CSVFormat. Thanks to Gary Gregory, Kristof Meixner, Emmanuel Bourg.

CHANGES
============

o CSV-167:  Comment line hides next record; update Javadoc to make behavior clear. Thanks to Rene.
o CSV-153:  CSVPrinter doesn't skip creation of header record if skipHeaderRecord is set to true. Thanks to Wren.


Have fun!
-Apache Commons CSV team

------------------------------------------------------------------------------

                        Apache Commons CSV
                        Version 1.2
                        Release Notes


INTRODUCTION:

This document contains the release notes for the 1.2 version of Apache Commons CSV.
Commons CSV reads and writes files in variations of the Comma Separated Value (CSV) format.

CSV requires at least Java 6.

The Apache Commons CSV library provides a simple interface for reading and writing
CSV files of various types.

Feature and bug fix release

Changes in this version include:

NEW FEATURES
==============

o CSV-157:  Add enum CSVFormat.Predefined that contains the default CSVFormat values.

FIXED BUGS
============

o CSV-145:  CSVFormat.with* methods clear the header comments. Thanks to Frank Ulbricht.
o CSV-156:  Incorrect Javadoc on QuoteMode.NONE. Thanks to Jason Steenstra-Pickens.


Historical list of changes: https://commons.apache.org/proper/commons-csv/changes-report.html

For complete information on Apache Commons CSV, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons CSV website:

https://commons.apache.org/proper/commons-csv/

Have fun!
-Apache Commons CSV team

------------------------------------------------------------------------------

                        Apache Commons CSV
                        Version 1.1
                        Release Notes


INTRODUCTION:

This document contains the release notes for the 1.1 version of Apache Commons CSV.
Commons CSV reads and writes files in variations of the Comma Separated Value (CSV) format.

CSV requires at least Java 6.

The Apache Commons CSV library provides a simple interface for reading and writing
CSV files of various types.

This is our second release.

Changes in this version include:

New features:
o [CSV-129] Add CSVFormat#with 0-arg methods matching boolean arg methods. 
o [CSV-131] Save positions of records to enable random access. Thanks to Holger Stratmann. 
o [CSV-139] CSVPrinter.printRecord(ResultSet) with metadata. 

Fixed Bugs:
o [CSV-140] QuoteMode.NON_NUMERIC doesn't work with CSVPrinter.printRecords(ResultSet). Thanks to Damjan Jovanovic. 
o [CSV-130] CSVFormat#withHeader doesn't work well with #printComment, add withHeaderComments(String...). Thanks to Sergei Lebedev. 
o [CSV-128] CSVFormat.EXCEL should ignore empty header names. 
o [CSV-132] Incorrect Javadoc referencing org.apache.commons.csv.CSVFormat withQuote(). Thanks to Sascha Szott. 

Changes:
o [CSV-124] Improve toString() implementation of CSVRecord. Thanks to Kalyan. 
o [CSV-134] Unified parameter validation. Thanks to wu wen. 

Historical list of changes: https://commons.apache.org/proper/commons-csv/changes-report.html

For complete information on Apache Commons CSV, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons CSV website:

https://commons.apache.org/proper/commons-csv/

Have fun!
-Apache Commons CSV team

-------------------------------------------------------------------------------

                        Apache Commons CSV
                        Version 1.0
                        Release Notes


INTRODUCTION:

This document contains the release notes for the 1.0 version of Apache Commons CSV.
Commons CSV reads and writes files in variations of the Comma Separated Value (CSV) format.

CSV requires at least Java 6.0.

The Apache Commons CSV library provides a simple interface for reading and writing
CSV files of various types.

First release

Changes in this version include:

NEW FEATURES
============

o CSV-121:  IllegalArgumentException thrown when the header contains duplicate names when the column names are empty.
            Thanks to Sebastian Hardt.
o CSV-120:  CSVFormat#withHeader doesn't work with CSVPrinter Thanks to Sergei Lebedev.
o CSV-119:  CSVFormat is missing a print(...) method Thanks to Sergei Lebedev.
o CSV-105:  Add Map conversion API to CSVRecord
o CSV-52:   Keep track of record number
o CSV-92:   Need a way to extract parsed headers, e.g. for use in formatting
            output
o CSV-65:   Header support
o CSV-48:   Predefined format for MYSQL

FIXED BUGS
==========

o CSV-125:  No longer works with Java 6
o CSV-122:  NullPointerException when empty header string and and null string of "".
            Thanks to Mike Lewis.
o CSV-118:  CSVRecord.toMap() throws NPE on formats with no
            headers. Thanks to Enrique Lara.
o CSV-113:  Check whether ISE/IAE are being used appropriately
o CSV-114:  CSVFormat constructor should reject a header array with duplicate
            entries
o CSV-112:  HeaderMap is inconsistent when it is parsed from an input with
            duplicate columns names
o CSV-111:  CSVRecord.toMap() fails if row length shorter than header length
o CSV-106:  CSVFormat.format allways append null
o CSV-100:  CSVParser: getHeaderMap throws NPE
o CSV-53:   CSVRecord does not verify that the length of the header mapping
            matches the number of values
o CSV-54:   Confusing semantic of the ignore leading/trailing spaces parameters
o CSV-34:   CSVFormat describes itself as immutable, but it is not - in
            particular it is not thread-safe
o CSV-36:   Endless loops in CSV parser
o CSV-13:   NullPointerException in CSVPrinter.print()/println()
o CSV-23:   Excel strategy uses wrong separator

CHANGES
=======

o CSV-117:  Validate format parameters in constructor
o CSV-42:   Lots of possible changes Thanks to Bob Smith.
o CSV-78:   Use Character instead of char for char fields except delimiter
o CSV-99:   Revert Builder implementation in CSVFormat
o CSV-93:   Allow the handling of NULL values
o CSV-68:   Use the Builder pattern for CSVFormat
o CSV-84:   Clarify comment handling
o CSV-25:   CSVParser.nextValue() seems pointless
o CSV-97:   Allow the String value for null to be customized for the CSV
            printer
o CSV-88:   Not possible to create a CSVFormat from scratch
o CSV-94:   Lexer should only use char fields
o CSV-71:   Add convenience methods to CSVLexer
o CSV-59:   Is CharBuffer really needed, now that StringBuilder is available?
o CSV-55:   Replace while(true)-loop in CSVParser.getRecord with do-while-loop
o CSV-45:   CSVPrinter overhaul
o CSV-49:   CSVStrategy has modifiable public static variables Thanks to Bob Smith.
o CSV-46:   Reduce visibility of methods in internal classes
o CSV-26:   ExtendedBufferedReader does too much
o CSV-27:   Decide whether to keep the csv.writer subpackage


Historical list of changes: https://commons.apache.org/proper/commons-csv/changes-report.html

For complete information on Apache Commons CSV, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons CSV website:

https://commons.apache.org/proper/commons-csv/

Have fun!
-Apache Commons CSV team

