[
https://issues.apache.org/jira/browse/CALCITE-2769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16761387#comment-16761387
]
Chiradip Mandal commented on CALCITE-2769:
------------------------------------------
How to reproduce:
Use this as DEPTS.csv content
DEPTNO:int,NAME:string
DEPTNO:int,NAME:string
10,"Sales"
20,"Marketing"
30,"Accounts"
31,"My Dept"
32, "My Another Depts"
Run "mvn clean test -DskipGenerate -pl example/csv"
Test fails with this message:
[*ERROR*] *Tests* *run: 39*, Failures: 0, *Errors: 5*, *Skipped: 3*, Time
elapsed: 2.337 s *<<< FAILURE!* - in org.apache.calcite.test.*CsvTest*
[*ERROR*] testPrepared(org.apache.calcite.test.CsvTest) Time elapsed: 0.152 s
<<< ERROR!
java.lang.ArrayIndexOutOfBoundsException: 1
at org.apache.calcite.test.CsvTest.collect(CsvTest.java:374)
at org.apache.calcite.test.CsvTest.lambda$expect$1(CsvTest.java:320)
at org.apache.calcite.test.CsvTest.testPrepared(CsvTest.java:691)
[*ERROR*] testJoinOnString(org.apache.calcite.test.CsvTest) Time elapsed:
0.055 s <<< ERROR!
java.lang.RuntimeException:
java.sql.SQLException: Error while executing SQL "select * from emps
join depts on emps.name = depts.name": 1
at org.apache.calcite.test.CsvTest.testJoinOnString(CsvTest.java:409)
Caused by: java.sql.SQLException:
Error while executing SQL "select * from emps
join depts on emps.name = depts.name": 1
at org.apache.calcite.test.CsvTest.checkSql(CsvTest.java:355)
at org.apache.calcite.test.CsvTest.access$300(CsvTest.java:67)
at org.apache.calcite.test.CsvTest.testJoinOnString(CsvTest.java:409)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at org.apache.calcite.test.CsvTest.checkSql(CsvTest.java:355)
at org.apache.calcite.test.CsvTest.access$300(CsvTest.java:67)
at org.apache.calcite.test.CsvTest.testJoinOnString(CsvTest.java:409)
[*ERROR*] testSelectSingleProject(org.apache.calcite.test.CsvTest) Time
elapsed: 0.017 s <<< ERROR!
java.lang.ArrayIndexOutOfBoundsException: 1
at org.apache.calcite.test.CsvTest.output(CsvTest.java:393)
at org.apache.calcite.test.CsvTest.output(CsvTest.java:961)
at org.apache.calcite.test.CsvTest.checkSql(CsvTest.java:357)
at org.apache.calcite.test.CsvTest.access$300(CsvTest.java:67)
at org.apache.calcite.test.CsvTest.testSelectSingleProject(CsvTest.java:185)
[*ERROR*] testReadme(org.apache.calcite.test.CsvTest) Time elapsed: 0.1 s <<<
ERROR!
java.lang.RuntimeException: java.sql.SQLException: Error while executing SQL
"SELECT d.name, COUNT(*) cnt FROM emps AS e JOIN depts AS d ON e.deptno =
d.deptno GROUP BY d.name": 1
at org.apache.calcite.test.CsvTest.testReadme(CsvTest.java:471)
Caused by: java.sql.SQLException: Error while executing SQL "SELECT d.name,
COUNT(*) cnt FROM emps AS e JOIN depts AS d ON e.deptno = d.deptno GROUP BY
d.name": 1
at org.apache.calcite.test.CsvTest.checkSql(CsvTest.java:355)
at org.apache.calcite.test.CsvTest.access$300(CsvTest.java:67)
at org.apache.calcite.test.CsvTest.testReadme(CsvTest.java:471)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at org.apache.calcite.test.CsvTest.checkSql(CsvTest.java:355)
at org.apache.calcite.test.CsvTest.access$300(CsvTest.java:67)
at org.apache.calcite.test.CsvTest.testReadme(CsvTest.java:471)
[*ERROR*] testBlankLinesAndSpaces(org.apache.calcite.test.CsvTest) Time
elapsed: 0.067 s <<< ERROR!
java.lang.RuntimeException: java.sql.SQLException: Error while executing SQL
"SELECT d.name, COUNT(*) cnt FROM emps AS e JOIN depts AS d ON e.deptno =
d.deptno GROUP BY d.name": 1
at org.apache.calcite.test.CsvTest.testBlankLinesAndSpaces(CsvTest.java:480)
Caused by: java.sql.SQLException: Error while executing SQL "SELECT d.name,
COUNT(*) cnt FROM emps AS e JOIN depts AS d ON e.deptno = d.deptno GROUP BY
d.name": 1
at org.apache.calcite.test.CsvTest.checkSql(CsvTest.java:355)
at org.apache.calcite.test.CsvTest.access$300(CsvTest.java:67)
at org.apache.calcite.test.CsvTest.testBlankLinesAndSpaces(CsvTest.java:480)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at org.apache.calcite.test.CsvTest.checkSql(CsvTest.java:355)
at org.apache.calcite.test.CsvTest.access$300(CsvTest.java:67)
at org.apache.calcite.test.CsvTest.testBlankLinesAndSpaces(CsvTest.java:480)
[*INFO*]
[*INFO*] Results:
[*INFO*]
[*ERROR*] *Errors:*
[*ERROR*] *CsvTest.testBlankLinesAndSpaces:480 » Runtime
java.sql.SQLException: Error whi...*
[*ERROR*] *CsvTest.testJoinOnString:409 » Runtime java.sql.SQLException:
Error while exec...*
[*ERROR*] *CsvTest.testPrepared:691->lambda$expect$1:320->collect:374 »
ArrayIndexOutOfBounds*
[*ERROR*] *CsvTest.testReadme:471 » Runtime java.sql.SQLException: Error
while executing ...*
[*ERROR*]
*CsvTest.testSelectSingleProject:185->access$300:67->checkSql:357->output:961->output:393
» ArrayIndexOutOfBounds*
[*INFO*]
[*ERROR*] *Tests run: 39, Failures: 0, Errors: 5, Skipped: 3*
[*INFO*]
[*INFO*]
*------------------------------------------------------------------------*
[*INFO*] *BUILD FAILURE*
> CSV Adapter does not handle - Empty and malformed csv lines, space before or
> after comma
> ----------------------------------------------------------------------------------------
>
> Key: CALCITE-2769
> URL: https://issues.apache.org/jira/browse/CALCITE-2769
> Project: Calcite
> Issue Type: Bug
> Components: csv-adapter
> Affects Versions: 1.18.0
> Reporter: Chiradip Mandal
> Assignee: Julian Hyde
> Priority: Major
> Fix For: next
>
>
> File: org.apache.calcite.adapter.csv.CsvEnumerator.java in example folder did
> not handle CSV with space between delimiter i.e."," and also did not handle
> empty lines or malformed lines in the middle of the file or to the end. The
> sqlline crashes is there is an empty line with
> java.lang.ArrayIndexOutOfBoundsException.
>
> java.lang.ArrayIndexOutOfBoundsException: 1
> at
> org.apache.calcite.adapter.csv.CsvEnumerator$ArrayRowConverter.convertNormalRow(CsvEnumerator.java:347)
> at
> org.apache.calcite.adapter.csv.CsvEnumerator$ArrayRowConverter.convertRow(CsvEnumerator.java:339)
> at
> org.apache.calcite.adapter.csv.CsvEnumerator$ArrayRowConverter.convertRow(CsvEnumerator.java:317)
> at
> org.apache.calcite.adapter.csv.CsvEnumerator.moveNext(CsvEnumerator.java:204)
> at
> org.apache.calcite.linq4j.EnumerableDefaults$10$1.moveNext(EnumerableDefaults.java:1878)
> at
> org.apache.calcite.linq4j.EnumerableDefaults$10$1.moveNext(EnumerableDefaults.java:1878)
> at
> org.apache.calcite.linq4j.TransformedEnumerator.moveNext(TransformedEnumerator.java:35)
> at org.apache.calcite.linq4j.Linq4j$EnumeratorIterator.next(Linq4j.java:684)
> at org.apache.calcite.avatica.util.IteratorCursor.next(IteratorCursor.java:46)
> at org.apache.calcite.avatica.AvaticaResultSet.next(AvaticaResultSet.java:217)
> at sqlline.IncrementalRows.hasNext(IncrementalRows.java:73)
> at sqlline.TableOutputFormat.print(TableOutputFormat.java:38)
> at sqlline.SqlLine.print(SqlLine.java:1719)
> at sqlline.Commands.execute(Commands.java:949)
> at sqlline.Commands.sql(Commands.java:882)
> at sqlline.SqlLine.dispatch(SqlLine.java:725)
> at sqlline.SqlLine.begin(SqlLine.java:540)
> at sqlline.SqlLine.start(SqlLine.java:264)
> at sqlline.SqlLine.main(SqlLine.java:195)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)