Hi, Julian, Thank you for reply. I am new to the open source community. What do you mean by "log a bug, with a test case"?
-JD On May 19, 2017, at 11:52 AM, Julian Hyde <[email protected]> wrote: Please log a bug, with a test case. Maybe we use some callback to create a connection. And maybe if you are using an anonymous class it causes the connection to be garbage-collected sooner. Julian On May 19, 2017, at 1:24 PM, Laptop huawei <[email protected]> wrote: Hi, I am using RelRunners to execute pre-built relnode tree. It works perfectly when I put the following code in the junit class: protected String execute(RelNode rel) { try (final PreparedStatement preparedStatement = RelRunners.run(rel)) { final ResultSet resultSet = preparedStatement.executeQuery(); return printResult(resultSet, true); } catch (SQLException e) { throw new RuntimeException(e); } } However,if I put these code inside a src class, the returned resultSet is closed. More interestingly, if I expand the RelRunners.run() in the method like this: public static ResultSet execute(RelNode rel) { /* try (final PreparedStatement preparedStatement = RelRunners.run(rel)) { return preparedStatement.executeQuery(); } catch (SQLException e) { throw new AQLExecuteErrorException(e); } */ try (Connection connection = DriverManager.getConnection("jdbc:calcite:")) { final RelRunner runner = connection.unwrap(RelRunner.class); PreparedStatement preparedStatement = runner.prepare(rel); return preparedStatement.executeQuery(); } catch (SQLException e) { throw new AQLExecuteErrorException(e); } } It works again. Has anyone seen this behavior before or has any insights? Thanks, -JD
