You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2015/12/20 21:20:46 UTC

[jira] [Commented] (CALCITE-1031) In prepared statement, CsvScannableTable.scan is called twice

    [ 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)