rajagopr commented on code in PR #11540:
URL: https://github.com/apache/pinot/pull/11540#discussion_r1320621901
##########
pinot-plugins/pinot-input-format/pinot-csv/src/main/java/org/apache/pinot/plugin/inputformat/csv/CSVRecordReader.java:
##########
@@ -104,50 +103,42 @@ public void init(File dataFile, @Nullable Set<String>
fieldsToRead, @Nullable Re
}
}
char delimiter = config.getDelimiter();
- format = format.withDelimiter(delimiter);
+ format = format.builder().setDelimiter(delimiter).build();
if (config.isSkipUnParseableLines()) {
_useLineIterator = true;
}
- String csvHeader = config.getHeader();
- if (csvHeader == null) {
- format = format.withHeader();
- } else {
- // do not validate header if using the line iterator
- if (_useLineIterator) {
- String[] header = StringUtils.split(csvHeader, delimiter);
- setHeaderMap(header);
- format = format.withHeader(header);
- _isHeaderProvided = true;
- } else {
- // validate header for the delimiter before splitting
- validateHeaderForDelimiter(delimiter, csvHeader, format);
- format = format.withHeader(StringUtils.split(csvHeader, delimiter));
- }
- }
- format = format.withSkipHeaderRecord(config.isSkipHeader());
+ _isHeaderProvided = config.getHeader() != null;
_skipHeaderRecord = config.isSkipHeader();
- format = format.withCommentMarker(config.getCommentMarker());
- format = format.withEscape(config.getEscapeCharacter());
- format = format.withIgnoreEmptyLines(config.isIgnoreEmptyLines());
- format =
format.withIgnoreSurroundingSpaces(config.isIgnoreSurroundingSpaces());
- format = format.withQuote(config.getQuoteCharacter());
+ _format = format.builder()
+ .setHeader()
+ .setSkipHeaderRecord(config.isSkipHeader())
+ .setCommentMarker(config.getCommentMarker())
+ .setEscape(config.getEscapeCharacter())
+ .setIgnoreEmptyLines(config.isIgnoreEmptyLines())
+ .setIgnoreSurroundingSpaces(config.isIgnoreSurroundingSpaces())
+ .setQuote(config.getQuoteCharacter())
+ .build();
if (config.getQuoteMode() != null) {
- format =
format.withQuoteMode(QuoteMode.valueOf(config.getQuoteMode()));
+ _format =
_format.builder().setQuoteMode(QuoteMode.valueOf(config.getQuoteMode())).build();
Review Comment:
It will return the new builder object.
##########
pinot-plugins/pinot-input-format/pinot-csv/src/main/java/org/apache/pinot/plugin/inputformat/csv/CSVRecordReader.java:
##########
@@ -104,50 +103,42 @@ public void init(File dataFile, @Nullable Set<String>
fieldsToRead, @Nullable Re
}
}
char delimiter = config.getDelimiter();
- format = format.withDelimiter(delimiter);
+ format = format.builder().setDelimiter(delimiter).build();
if (config.isSkipUnParseableLines()) {
_useLineIterator = true;
}
- String csvHeader = config.getHeader();
- if (csvHeader == null) {
- format = format.withHeader();
- } else {
- // do not validate header if using the line iterator
- if (_useLineIterator) {
- String[] header = StringUtils.split(csvHeader, delimiter);
- setHeaderMap(header);
- format = format.withHeader(header);
- _isHeaderProvided = true;
- } else {
- // validate header for the delimiter before splitting
- validateHeaderForDelimiter(delimiter, csvHeader, format);
- format = format.withHeader(StringUtils.split(csvHeader, delimiter));
- }
- }
- format = format.withSkipHeaderRecord(config.isSkipHeader());
+ _isHeaderProvided = config.getHeader() != null;
Review Comment:
Those conditions are not always true.
1) having multiple values
If user is providing a header record and the input file has a single record
the above validation will not hold
2) check for delimiter
if input file is as follows, there will be no delimiter
```
id
100
101
102
```
##########
pinot-plugins/pinot-input-format/pinot-csv/src/main/java/org/apache/pinot/plugin/inputformat/csv/CSVRecordReader.java:
##########
@@ -77,7 +76,7 @@ public void init(File dataFile, @Nullable Set<String>
fieldsToRead, @Nullable Re
CSVRecordReaderConfig config = (CSVRecordReaderConfig) recordReaderConfig;
Character multiValueDelimiter = null;
if (config == null) {
- _format =
CSVFormat.DEFAULT.withDelimiter(CSVRecordReaderConfig.DEFAULT_DELIMITER).withHeader();
+ _format =
CSVFormat.DEFAULT.builder().setDelimiter(CSVRecordReaderConfig.DEFAULT_DELIMITER).setHeader().build();
Review Comment:
Newer version of the library API is backwards compatible but the older set*
methods are marked as deprecated.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]