[ 
https://issues.apache.org/jira/browse/FLINK-8331?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16307168#comment-16307168
 ] 

ASF GitHub Bot commented on FLINK-8331:
---------------------------------------

Github user fhueske commented on a diff in the pull request:

    https://github.com/apache/flink/pull/5218#discussion_r159137345
  
    --- Diff: 
flink-core/src/test/java/org/apache/flink/types/parser/ParserTestBase.java ---
    @@ -407,26 +407,47 @@ public void testStaticParseMethodWithInvalidValues() {
        @Test
        public void testEmptyFieldInIsolation() {
                try {
    -                   String [] emptyStrings = new String[] {"|"};
    +                   FieldParser<T> parser = getParser();
    +
    +                   byte[] bytes = 
"|".getBytes(ConfigConstants.DEFAULT_CHARSET);
    +                   int numRead = parser.parseField(bytes, 0, bytes.length, 
new byte[]{'|'}, parser.createValue());
    +
    +                   assertEquals(FieldParser.ParseErrorState.EMPTY_COLUMN, 
parser.getErrorState());
    +
    +                   if (this.allowsEmptyField()) {
    +                           assertTrue("Parser declared the empty string as 
invalid.", numRead != -1);
    +                           assertEquals("Invalid number of bytes read 
returned.", bytes.length, numRead);
    +                   } else {
    +                           assertTrue("Parser accepted the empty string.", 
numRead == -1);
    +                   }
    +           } catch (Exception e) {
    +                   System.err.println(e.getMessage());
    +                   e.printStackTrace();
    +                   fail("Test erroneous: " + e.getMessage());
    +           }
    +   }
    +
    +   @Test
    +   public void testTailingEmptyField() {
    +           try {
    +                   String[] tailingEmptyFieldStrings = new String[]{"a|", 
"a||"};
     
                        FieldParser<T> parser = getParser();
     
    -                   for (String emptyString : emptyStrings) {
    -                           byte[] bytes = 
emptyString.getBytes(ConfigConstants.DEFAULT_CHARSET);
    -                           int numRead = parser.parseField(bytes, 0, 
bytes.length, new byte[]{'|'}, parser.createValue());
    +                   for (String tailingEmptyFieldString : 
tailingEmptyFieldStrings) {
    +                           byte[] bytes = 
tailingEmptyFieldString.getBytes(ConfigConstants.DEFAULT_CHARSET);
    +                           int numRead = parser.parseField(bytes, 1, 
bytes.length, new byte[]{'|'}, parser.createValue());
     
                                
assertEquals(FieldParser.ParseErrorState.EMPTY_COLUMN, parser.getErrorState());
     
    -                           if(this.allowsEmptyField()) {
    +                           if (this.allowsEmptyField()) {
    --- End diff --
    
    Yes, you are right. I misinterpreted the `allowsEmptyField()` method. We 
need to keep it.


> FieldParsers do not correctly set EMPT_COLUMN error state
> ---------------------------------------------------------
>
>                 Key: FLINK-8331
>                 URL: https://issues.apache.org/jira/browse/FLINK-8331
>             Project: Flink
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.5.0, 1.4.1
>            Reporter: Fabian Hueske
>            Assignee: sunjincheng
>
> Some {{FieldParser}} do not correctly set the EMPTY_COLUMN error state if a 
> field is empty.
> Instead, they try to parse the field value from an empty String which fails, 
> e.g., in case of the {{DoubleParser}} with a {{NumberFormatException}}.
> The {{RowCsvInputFormat}} has a flag to interpret empty fields as {{null}} 
> values. The implementation requires that all {{FieldParser}} correctly return 
> the EMPTY_COLUMN error state in case of an empty field.
> Affected {{FieldParser}}:
> - BigDecParser
> - BigIntParser
> - DoubleParser
> - FloatParser
> - SqlDateParser
> - SqlTimeParser
> - SqlTimestampParser



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to