@Override public boolean getContextBoolean(String key, boolean defaultValue) { return query.getContextBoolean(key, defaultValue); }
@Nullable public static Filter convertToCNFFromQueryContext(Query query, @Nullable Filter filter) { if (filter == null) { return null; } boolean useCNF = query.getContextBoolean(CTX_KEY_USE_FILTER_CNF, false); return useCNF ? convertToCNF(filter) : filter; }
@Override public Sequence<T> run(final QueryPlus<T> queryPlus, Map<String, Object> responseContext) { DataSource dataSource = queryPlus.getQuery().getDataSource(); boolean forcePushDownNestedQuery = queryPlus.getQuery() .getContextBoolean( GroupByQueryConfig.CTX_KEY_FORCE_PUSH_DOWN_NESTED_QUERY, false ); if (dataSource instanceof QueryDataSource && !forcePushDownNestedQuery) { return run(queryPlus.withQuery((Query<T>) ((QueryDataSource) dataSource).getQuery()), responseContext); } else { QueryPlus newQuery = queryPlus; if (forcePushDownNestedQuery) { // Disable any more push downs before firing off the query. But do let the historical know // that it is executing the complete nested query and not just the inner most part of it newQuery = queryPlus.withQuery( queryPlus.getQuery() .withOverriddenContext( ImmutableMap.of( GroupByQueryConfig.CTX_KEY_FORCE_PUSH_DOWN_NESTED_QUERY, false, GroupByQueryConfig.CTX_KEY_EXECUTING_NESTED_QUERY, true ) ) ); } return baseRunner.run(newQuery, responseContext); } } }
Assert.assertEquals("true", serdeQuery.getContextValue("populateCache")); Assert.assertEquals(true, serdeQuery.getContextValue("finalize")); Assert.assertEquals(true, serdeQuery.getContextBoolean("useCache", false)); Assert.assertEquals(true, serdeQuery.getContextBoolean("populateCache", false)); Assert.assertEquals(true, serdeQuery.getContextBoolean("finalize", false));
@Nullable public static Filter convertToCNFFromQueryContext(Query query, @Nullable Filter filter) { if (filter == null) { return null; } boolean useCNF = query.getContextBoolean(CTX_KEY_USE_FILTER_CNF, false); return useCNF ? convertToCNF(filter) : filter; }