[ 
https://issues.apache.org/jira/browse/ARROW-16926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthew Topol resolved ARROW-16926.
-----------------------------------
    Fix Version/s: 9.0.0
       Resolution: Fixed

Issue resolved by pull request 13451
[https://github.com/apache/arrow/pull/13451]

> csv reader errors clobbered by subsequent reads
> -----------------------------------------------
>
>                 Key: ARROW-16926
>                 URL: https://issues.apache.org/jira/browse/ARROW-16926
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Go
>            Reporter: Whispell Whispell
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 9.0.0
>
>   Original Estimate: 168h
>          Time Spent: 40m
>  Remaining Estimate: 167h 20m
>
> Currently you can reproduce this issue by reading a csv file with garbage 
> string values where float64 are expected. If you place the bad data in the 
> first part of the file, then subsequent r.r.Read() will clobber the parse err 
> that was set inside r.read(rec)
> So at the bottom of the loop body, r.read(rec) is called, we end up in func 
> (r *Reader) parseFloat64(field array.Builder, str string)
> it encounters an error, and sets err on the reader:
> v, err := strconv.ParseFloat(str, 64)
> if err != nil && r.err == nil {
> r.err = err
> field.AppendNull()
> return
> }
> However, when we come back out of the call to the loop, we advance in the for 
> loop without checking the err and on the subsequent call to r.r.Read() we 
> clobber the r.err.
> This means that if the last chunk has no error, after we read the csv, calls 
> to r.Err() on the reader will return nil, even though an err took place 
> during parse.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to