kz930 opened a new issue, #8602:
URL: https://github.com/apache/texera/issues/8602

   ### What happened?
   
   The Limit on a file-scan source is meant to bound how many rows the operator 
outputs. It also bounds the sample `sourceSchema()` reads to infer the columns, 
so a Limit of 0 leaves the inference nothing to look at and the operator 
reports a schema that does not describe the file.
   
   The three readers fail differently on the same file. CSV File Scan and JSONL 
File Scan return a schema with no attributes at all. CSVOld File Scan throws 
`ArrayIndexOutOfBoundsException`, because it takes the column names from the 
header row and the types from the sample, then asks the empty type array for 
the first header's type.
   
   Zero is a value the property editor accepts, and it is the natural way to 
ask for no rows. The columns of a file do not depend on how many of its rows 
the user wants, so a Limit of 0 should give an operator with the file's schema 
and an empty output, not one with no columns or one that throws.
   
   ### How to reproduce?
   
   Point a CSVOld File Scan at a CSV with a header and a couple of data rows, 
set Limit to 0, and run. The execution fails as the executor is constructed, on 
the operator's own schema inference, before a row is read. The same two steps 
on a CSV File Scan or a JSONL File Scan instead give downstream operators an 
operator with no columns.
   
   Set Limit to 1 on any of the three and the schema is correct again, which is 
what tells the two concerns apart: `CSVOldScanSourceOpDesc.sourceSchema` reads 
its inference sample from `slice(startOffset, startOffset + limit)`, and 
`CSVScanSourceOpDesc` and `JSONLScanSourceOpDesc` bound theirs the same way.
   
   ### Version/Branch
   
   1.4.0-incubating-SNAPSHOT (main)
   
   ### Commit Hash (Optional)
   
   e7d1676e1
   
   ### What browsers are you seeing the problem on?
   
   _No response_
   
   ### Relevant log output
   
   ```shell
   java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
        at 
org.apache.texera.amber.operator.source.scan.csvOld.CSVOldScanSourceOpDesc.$anonfun$sourceSchema$8(CSVOldScanSourceOpDesc.scala:204)
        at 
org.apache.texera.amber.operator.source.scan.csvOld.CSVOldScanSourceOpDesc.sourceSchema(CSVOldScanSourceOpDesc.scala:201)
        at 
org.apache.texera.amber.operator.source.scan.csvOld.CSVOldScanSourceOpExec.<init>(CSVOldScanSourceOpExec.scala:38)
   ```
   


-- 
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]

Reply via email to