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

Reply via email to