@Test public void testWindowFunctionPushdown2() throws Exception { BasicSourceCapabilities caps = getTypicalCapabilities(); caps.setCapabilitySupport(Capability.ELEMENTARY_OLAP, true); caps.setCapabilitySupport(Capability.WINDOW_FUNCTION_ORDER_BY_AGGREGATES, true); caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true); caps.setSourceProperty(Capability.QUERY_ORDERBY_DEFAULT_NULL_ORDER, NullOrder.UNKNOWN); ProcessorPlan plan = TestOptimizer.helpPlan( "select max(e1) over (order by e1 nulls first) as y from pm1.g1", //$NON-NLS-1$ RealMetadataFactory.example1Cached(), null, new DefaultCapabilitiesFinder(caps), new String[] {"SELECT g_0.e1 FROM pm1.g1 AS g_0"}, ComparisonMode.EXACT_COMMAND_STRING); // $NON-NLS-1$ checkNodeTypes( plan, new int[] {1, 1, 1}, new Class<?>[] {AccessNode.class, WindowFunctionProjectNode.class, ProjectNode.class}); caps.setCapabilitySupport(Capability.QUERY_ORDERBY_NULL_ORDERING, true); plan = TestOptimizer.helpPlan( "select max(e1) over (order by e1 nulls first) as y from pm1.g1", //$NON-NLS-1$ RealMetadataFactory.example1Cached(), null, new DefaultCapabilitiesFinder(caps), new String[] { "SELECT MAX(g_0.e1) OVER (ORDER BY g_0.e1 NULLS FIRST) FROM pm1.g1 AS g_0" }, ComparisonMode.EXACT_COMMAND_STRING); // $NON-NLS-1$ checkNodeTypes(plan, FULL_PUSHDOWN); }