[
https://issues.apache.org/jira/browse/CALCITE-1031?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15065892#comment-15065892
]
Julian Hyde commented on CALCITE-1031:
--------------------------------------
I can reproduce on master. See
https://github.com/julianhyde/calcite/tree/1031-scan-twice, which has
* a test case against CsvScannableTable that succeeds but demonstrates the
issue if you set a break point, and
* another test case in ScannableTableTest that counts the number of times scan
is called, and fails.
The heart of the problem is in AvaticaConnection.executeQueryInternal, which
calls execute from line 463 then again from line 489. By the way, I checked and
the issue already existed when [~elserj] changed that method to fix CALCITE-903.
> In prepared statement, CsvScannableTable.scan is called twice
> -------------------------------------------------------------
>
> Key: CALCITE-1031
> URL: https://issues.apache.org/jira/browse/CALCITE-1031
> Project: Calcite
> Issue Type: Bug
> Components: avatica
> Affects Versions: 1.5.0
> Environment: jdk 1.8.0_20 linux mint 17.3
> Reporter: Anıl Chalil
> Assignee: Julian Hyde
> Priority: Minor
> Attachments: threads_report.txt, threads_report2.txt
>
>
> Hi,
> I just noticed something when i am playing with examples.
> {code}
> Class.forName("org.apache.calcite.jdbc.Driver")
> val properties: Properties = new Properties()
> properties.setProperty("caseSensitive","true")
> val connection = DriverManager.getConnection("jdbc:calcite:", properties)
> val calciteConnection=connection.unwrap(classOf[CalciteConnection])
> val schema= (new
> CsvSchemaFactory()).create(calciteConnection.getRootSchema,null,Map[String,AnyRef]("directory"
> -> "src/main/resources/csv","flavor" -> "scannable").asJava)
> calciteConnection.getRootSchema.add("TEST",schema)
> val statement2=calciteConnection.prepareStatement("select \"tarih\" from
> \"TEST\".\"timeseries\" where \"sensor\" = ?")
> statement2.setString(1,"sensor38")
> val resultSet1=statement2.executeQuery()
> while(resultSet1.next())
> println(resultSet1.getString("tarih"))
> {code}
> My example like above. But when i call executeQuery i noticed that
> CsvScannableTable.scan called twice and enumerator iterating on values. When
> i inspected stacktraces i found that one of the call come from
> AvaticaConnection.java:463 and the other one is AvaticaConnection:489 .
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)