Description
I came across this with a recent change I was making. Why is the call to queryPlan.iterators() necessary in PhoenixInputFormat?
private QueryPlan getQueryPlan(final JobContext context) throws IOException { Preconditions.checkNotNull(context); if(queryPlan == null) { try{ final Connection connection = getConnection(); final String selectStatement = getConf().getSelectStatement(); Preconditions.checkNotNull(selectStatement); final Statement statement = connection.createStatement(); final PhoenixStatement pstmt = statement.unwrap(PhoenixStatement.class); this.queryPlan = pstmt.compileQuery(selectStatement); // FIXME: why is getting the iterator necessary here, as it will // cause the query to run. this.queryPlan.iterator(); } catch(Exception exception) { LOG.error(String.format("Failed to get the query plan with error [%s]",exception.getMessage())); throw new RuntimeException(exception); } } return queryPlan; }