public static ProcessorPlan helpPlan(String sql, QueryMetadataInterface md, String[] expected, CapabilitiesFinder capFinder, ComparisonMode mode) throws TeiidComponentException, TeiidProcessingException { return helpPlan(sql, md, null, capFinder, expected, mode); }
private BatchedUpdatePlan helpPlan(String[] sql, QueryMetadataInterface md, CapabilitiesFinder capFinder, boolean shouldSucceed) throws TeiidComponentException, QueryMetadataException, TeiidProcessingException { Command command = helpGetCommand(sql, md); if (capFinder == null){ capFinder = getGenericFinder(); } return helpPlanCommand(command, md, capFinder, shouldSucceed); }
public static ProcessorPlan helpPlan(String sql, QueryMetadataInterface md, List<String> bindings, CapabilitiesFinder capFinder, String[] expectedAtomic, ComparisonMode mode) throws TeiidComponentException, TeiidProcessingException { Command command = helpGetCommand(sql, md); return helpPlanCommand(command, md, capFinder, null, expectedAtomic, mode); }
@Test public void testPlannerNoCommandsBatched() throws Exception { String[] sql = {"INSERT INTO pm1.g1 (e1, e2, e3, e4) values ('string1', 1, {b'true'}, 1.0)", //$NON-NLS-1$ "INSERT INTO pm1.g2 (e1, e2, e3, e4) values ('string1', 1, {b'true'}, 1.0)", //$NON-NLS-1$ "DELETE FROM pm1.g1 WHERE e2 > 5000", //$NON-NLS-1$ "UPDATE pm1.g1 set e2 = -1 WHERE e2 = 4999" //$NON-NLS-1$ }; FakeCapabilitiesFinder finder = new FakeCapabilitiesFinder(); finder.addCapabilities("pm1", new FakeCapabilities(false)); //$NON-NLS-1$ boolean[] expectedBatching = {false, false, false, false}; helpTestPlanner(sql, expectedBatching, finder); }
/** * Test that access node with unsatisfied access pattern is made dependent * (Same query written slightly different way) */ @Test public void testMakeDependentAccessPattern1a() throws Exception { ProcessorPlan plan = TestOptimizer.helpPlan("select pm1.g1.e1 from pm4.g1, pm1.g1 where pm4.g1.e1 = pm1.g1.e1", RealMetadataFactory.example1Cached(), //$NON-NLS-1$ new String[] { "SELECT g_0.e1 FROM pm4.g1 AS g_0 WHERE g_0.e1 IN (<dependent values>)", "SELECT g_0.e1 FROM pm1.g1 AS g_0" }, TestOptimizer.getGenericFinder(false), TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$ //$NON-NLS-2$ checkDependentGroups(plan, new String[] {"pm4.g1"}); //$NON-NLS-1$ }
@Test public void testNoUnnest() { ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x FROM /*+ no_unnest */ (SELECT e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z order by x", //$NON-NLS-1$ RealMetadataFactory.example1Cached(), null, TestAggregatePushdown.getAggregatesFinder(), new String[] { "SELECT v_0.c_0 FROM (SELECT MAX(g_0.e2) AS c_0 FROM pm1.g1 AS g_0 GROUP BY g_0.e1) AS v_0 ORDER BY c_0"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN); }
protected void runTest(InlineViewCase testCase) throws Exception { FakeCapabilitiesFinder capFinder = getInliveViewCapabilitiesFinder(); QueryMetadataInterface metadata = RealMetadataFactory.exampleBQTCached(); ProcessorPlan plan = TestOptimizer.helpPlan(testCase.userQuery, metadata, null, capFinder, new String[] {testCase.optimizedQuery}, TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING); TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN); }
private BatchedUpdatePlan helpPlan(String[] sql, QueryMetadataInterface md) throws TeiidComponentException, QueryMetadataException, TeiidProcessingException { return helpPlan(sql, md, getGenericFinder(), true); }
@Test public void testUnaliasedViewAgg() throws Exception { String sql = "SELECT MIN(x.count) FROM agg x"; //$NON-NLS-1$ TransformationMetadata metadata = RealMetadataFactory.fromDDL("create foreign table smalla (intkey integer); create view agg (count integer) as select count(*) from smalla", "x", "y"); TestOptimizer.helpPlan(sql, metadata, new String[] {"SELECT MIN(v_0.c_0) FROM (SELECT COUNT(*) AS c_0 FROM y.smalla AS g_0) AS v_0"}, TestAggregatePushdown.getAggregatesFinder(), ComparisonMode.EXACT_COMMAND_STRING); }
public static void checkNodeTypes(ProcessorPlan root, int[] expectedCounts) { checkNodeTypes(root, expectedCounts, COUNT_TYPES); }
public AutoGenDataService() { super("FakeConnector","FakeConnector"); //$NON-NLS-1$ //$NON-NLS-2$ caps = TestOptimizer.getTypicalCapabilities(); }
public static CapabilitiesFinder getGenericFinder() { return getGenericFinder(true); }
/** * Test that second access pattern of access node is chosen to make * dependent with */ @Test public void testMakeDependentAccessPattern3() throws Exception { ProcessorPlan plan = TestOptimizer.helpPlan("select pm1.g1.e1 from pm1.g1, pm4.g2 where pm1.g1.e1 = pm4.g2.e5", RealMetadataFactory.example1Cached(), //$NON-NLS-1$ new String[] { "SELECT g_0.e5 FROM pm4.g2 AS g_0 WHERE g_0.e5 IN (<dependent values>)", "SELECT g_0.e1 FROM pm1.g1 AS g_0" }, TestOptimizer.getGenericFinder(false), TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$ //$NON-NLS-2$ checkDependentGroups(plan, new String[] {"pm4.g2"}); //$NON-NLS-1$ }
@Test public void testSimpleMergeGroupBy4() { ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x, x FROM (SELECT e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$ RealMetadataFactory.example1Cached(), null, TestAggregatePushdown.getAggregatesFinder(), new String[] { "SELECT v_0.c_0 FROM (SELECT MAX(g_0.e2) AS c_0 FROM pm1.g1 AS g_0 GROUP BY g_0.e1) AS v_0"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN); }
@Test public void testAliasCreationWithInlineView() throws TeiidComponentException, TeiidProcessingException { FakeCapabilitiesFinder capFinder = getInliveViewCapabilitiesFinder(); QueryMetadataInterface metadata = RealMetadataFactory.exampleBQTCached(); ProcessorPlan plan = helpPlan("select a, b from (select distinct count(intNum) a, count(stringKey), bqt1.smalla.intkey as b from bqt1.smalla group by bqt1.smalla.intkey) q1 order by q1.a", //$NON-NLS-1$ metadata, null, capFinder, new String[] {"SELECT COUNT(g_0.IntNum) AS c_0, g_0.IntKey AS c_1 FROM BQT1.SmallA AS g_0 GROUP BY g_0.IntKey ORDER BY c_0"}, ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$ checkNodeTypes(plan, FULL_PUSHDOWN); }
public static ProcessorPlan helpPlan(String sql, QueryMetadataInterface md, String[] expectedAtomic, ComparisonMode mode) throws TeiidComponentException, TeiidProcessingException { return helpPlan(sql, md, null, getGenericFinder(), expectedAtomic, mode); }
void checkJoinCounts(ProcessorPlan plan, int semi, int antiSemi) { checkNodeTypes(plan, new int[] {semi, antiSemi}, new Class[] {SemiJoin.class, AntiSemiJoin.class}); }
/** * Tests two access nodes, each with access patterns, but one already * satisfied by user criteria - the other should be made dependent * (same query written slightly different). */ @Test public void testNodesBothHaveAccessPatterns1a() throws Exception { ProcessorPlan plan = TestOptimizer.helpPlan("select pm4.g1.e1 from pm4.g2, pm4.g1 where pm4.g2.e1 = pm4.g1.e1 and pm4.g2.e5 = 'abc'", RealMetadataFactory.example1Cached(), //$NON-NLS-1$ new String[] { "SELECT g_0.e1 FROM pm4.g1 AS g_0 WHERE g_0.e1 IN (<dependent values>)", "SELECT g_0.e1 FROM pm4.g2 AS g_0 WHERE g_0.e5 = 'abc'"}, TestOptimizer.getGenericFinder(false), TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$ //$NON-NLS-2$ TestDependentJoins.checkDependentGroups(plan, new String[] {"pm4.g1"}); //$NON-NLS-1$ }
@Test public void testSimpleMergeGroupBy7() { QueryMetadataInterface metadata = RealMetadataFactory.example1Cached(); ProcessorPlan plan = TestOptimizer.helpPlan("SELECT distinct x, e1 FROM (SELECT distinct min(e1) as e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$ metadata, null, TestAggregatePushdown.getAggregatesFinder(), new String[] { "SELECT DISTINCT MAX(e2) AS x, MIN(e1) FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN); }
public static void checkDependentJoinCount(ProcessorPlan plan, int expectedCount) { checkNodeTypes(plan, new int[] {expectedCount}, new Class[] {DependentJoin.class}); }