Search in sources :

Example 1 with LogicalPlan

use of org.apache.drill.common.logical.LogicalPlan in project drill by apache.

the class Foreman method parseAndRunLogicalPlan.

private void parseAndRunLogicalPlan(final String json) throws ExecutionSetupException {
    LogicalPlan logicalPlan;
    try {
        logicalPlan = drillbitContext.getPlanReader().readLogicalPlan(json);
    } catch (final IOException e) {
        throw new ForemanException("Failure parsing logical plan.", e);
    }
    if (logicalPlan.getProperties().resultMode == ResultMode.LOGICAL) {
        throw new ForemanException("Failure running plan.  You requested a result mode of LOGICAL and submitted a logical plan.  In this case you're output mode must be PHYSICAL or EXEC.");
    }
    log(logicalPlan);
    final PhysicalPlan physicalPlan = convert(logicalPlan);
    if (logicalPlan.getProperties().resultMode == ResultMode.PHYSICAL) {
        returnPhysical(physicalPlan);
        return;
    }
    log(physicalPlan);
    runPhysicalPlan(physicalPlan);
}
Also used : PhysicalPlan(org.apache.drill.exec.physical.PhysicalPlan) LogicalPlan(org.apache.drill.common.logical.LogicalPlan) IOException(java.io.IOException)

Example 2 with LogicalPlan

use of org.apache.drill.common.logical.LogicalPlan in project drill by apache.

the class TestOptiqPlans method doLogicalTest.

private SimpleRootExec doLogicalTest(final BootStrapContext context, UserClientConnection connection, String file, ClusterCoordinator coord, DataConnectionCreator com, Controller controller, WorkEventBus workBus) throws Exception {
    new NonStrictExpectations() {

        {
            context.getMetrics();
            result = new MetricRegistry();
            context.getAllocator();
            result = RootAllocatorFactory.newRoot(config);
            context.getConfig();
            result = config;
        }
    };
    final RemoteServiceSet lss = RemoteServiceSet.getLocalServiceSet();
    final DrillbitContext bitContext = new DrillbitContext(DrillbitEndpoint.getDefaultInstance(), context, coord, controller, com, workBus, new LocalPersistentStoreProvider(config));
    final QueryContext qc = new QueryContext(UserSession.Builder.newBuilder().setSupportComplexTypes(true).build(), bitContext, QueryId.getDefaultInstance());
    final PhysicalPlanReader reader = bitContext.getPlanReader();
    final LogicalPlan plan = reader.readLogicalPlan(Files.toString(FileUtils.getResourceAsFile(file), Charsets.UTF_8));
    final PhysicalPlan pp = new BasicOptimizer(qc, connection).optimize(new BasicOptimizer.BasicOptimizationContext(qc), plan);
    final FunctionImplementationRegistry registry = new FunctionImplementationRegistry(config);
    final FragmentContext fctxt = new FragmentContext(bitContext, PlanFragment.getDefaultInstance(), connection, registry);
    final SimpleRootExec exec = new SimpleRootExec(ImplCreator.getExec(fctxt, (FragmentRoot) pp.getSortedOperators(false).iterator().next()));
    return exec;
}
Also used : DrillbitContext(org.apache.drill.exec.server.DrillbitContext) BasicOptimizer(org.apache.drill.exec.opt.BasicOptimizer) PhysicalPlan(org.apache.drill.exec.physical.PhysicalPlan) FragmentContext(org.apache.drill.exec.ops.FragmentContext) LocalPersistentStoreProvider(org.apache.drill.exec.store.sys.store.provider.LocalPersistentStoreProvider) PhysicalPlanReader(org.apache.drill.exec.planner.PhysicalPlanReader) MetricRegistry(com.codahale.metrics.MetricRegistry) FragmentRoot(org.apache.drill.exec.physical.base.FragmentRoot) QueryContext(org.apache.drill.exec.ops.QueryContext) RemoteServiceSet(org.apache.drill.exec.server.RemoteServiceSet) LogicalPlan(org.apache.drill.common.logical.LogicalPlan) NonStrictExpectations(mockit.NonStrictExpectations) FunctionImplementationRegistry(org.apache.drill.exec.expr.fn.FunctionImplementationRegistry)

Example 3 with LogicalPlan

use of org.apache.drill.common.logical.LogicalPlan in project drill by apache.

the class JdbcDataTest method testProjectFilterSubqueryPlan.

@Test
public void testProjectFilterSubqueryPlan() throws Exception {
    LogicalPlan plan = JdbcAssert.withModel(MODEL, "DONUTS").sql("select d['name'] as name, d['xx'] as xx from (\n" + " select _MAP['donuts'] as d from donuts)\n" + "where cast(d['ppu'] as double) > 0.6").logicalPlan();
    PlanProperties planProperties = plan.getProperties();
    Assert.assertEquals("optiq", planProperties.generator.type);
    Assert.assertEquals("na", planProperties.generator.info);
    Assert.assertEquals(1, planProperties.version);
    Assert.assertEquals(PlanProperties.PlanType.APACHE_DRILL_LOGICAL, planProperties.type);
    Map<String, StoragePluginConfig> seConfigs = plan.getStorageEngines();
    StoragePluginConfig config = seConfigs.get("donuts-json");
    //    Assert.assertTrue(config != null && config instanceof ClasspathRSE.ClasspathRSEConfig);
    config = seConfigs.get("queue");
    //    Assert.assertTrue(config != null && config instanceof QueueRSE.QueueRSEConfig);
    Scan scan = findOnlyOperator(plan, Scan.class);
    Assert.assertEquals("donuts-json", scan.getStorageEngine());
    Filter filter = findOnlyOperator(plan, Filter.class);
    Assert.assertTrue(filter.getInput() instanceof Scan);
    Project[] projects = Iterables.toArray(findOperator(plan, Project.class), Project.class);
    Assert.assertEquals(2, projects.length);
    Assert.assertEquals(1, projects[0].getSelections().size());
    Assert.assertEquals(Filter.class, projects[0].getInput().getClass());
    Assert.assertEquals(2, projects[1].getSelections().size());
    Assert.assertEquals(Project.class, projects[1].getInput().getClass());
    Store store = findOnlyOperator(plan, Store.class);
    Assert.assertEquals("queue", store.getStorageEngine());
    Assert.assertEquals("output sink", store.getMemo());
    Assert.assertEquals(Project.class, store.getInput().getClass());
}
Also used : Project(org.apache.drill.common.logical.data.Project) PlanProperties(org.apache.drill.common.logical.PlanProperties) Filter(org.apache.drill.common.logical.data.Filter) Store(org.apache.drill.common.logical.data.Store) LogicalPlan(org.apache.drill.common.logical.LogicalPlan) StoragePluginConfig(org.apache.drill.common.logical.StoragePluginConfig) Scan(org.apache.drill.common.logical.data.Scan) Test(org.junit.Test)

Example 4 with LogicalPlan

use of org.apache.drill.common.logical.LogicalPlan in project drill by apache.

the class JdbcDataTest method testProjectPlan.

/** Checks the logical plan. */
@Test
public void testProjectPlan() throws Exception {
    LogicalPlan plan = JdbcAssert.withModel(MODEL, "DONUTS").sql("select _MAP['ppu'] as ppu from donuts").logicalPlan();
    PlanProperties planProperties = plan.getProperties();
    Assert.assertEquals("optiq", planProperties.generator.type);
    Assert.assertEquals("na", planProperties.generator.info);
    Assert.assertEquals(1, planProperties.version);
    Assert.assertEquals(PlanProperties.PlanType.APACHE_DRILL_LOGICAL, planProperties.type);
    Map<String, StoragePluginConfig> seConfigs = plan.getStorageEngines();
    StoragePluginConfig config = seConfigs.get("donuts-json");
    //    Assert.assertTrue(config != null && config instanceof ClasspathRSE.ClasspathRSEConfig);
    config = seConfigs.get("queue");
    //    Assert.assertTrue(config != null && config instanceof QueueRSE.QueueRSEConfig);
    Scan scan = findOnlyOperator(plan, Scan.class);
    Assert.assertEquals("donuts-json", scan.getStorageEngine());
    Project project = findOnlyOperator(plan, Project.class);
    Assert.assertEquals(1, project.getSelections().size());
    Assert.assertEquals(Scan.class, project.getInput().getClass());
    Store store = findOnlyOperator(plan, Store.class);
    Assert.assertEquals("queue", store.getStorageEngine());
    Assert.assertEquals("output sink", store.getMemo());
    Assert.assertEquals(Project.class, store.getInput().getClass());
}
Also used : Project(org.apache.drill.common.logical.data.Project) PlanProperties(org.apache.drill.common.logical.PlanProperties) Store(org.apache.drill.common.logical.data.Store) LogicalPlan(org.apache.drill.common.logical.LogicalPlan) StoragePluginConfig(org.apache.drill.common.logical.StoragePluginConfig) Scan(org.apache.drill.common.logical.data.Scan) Test(org.junit.Test)

Example 5 with LogicalPlan

use of org.apache.drill.common.logical.LogicalPlan in project drill by apache.

the class BasicOptimizerTest method parseSimplePlan.

@Test
public void parseSimplePlan() throws Exception {
    DrillConfig c = DrillConfig.create();
    LogicalPlanPersistence lpp = PhysicalPlanReaderTestFactory.defaultLogicalPlanPersistence(c);
    LogicalPlan plan = LogicalPlan.parse(lpp, FileUtils.getResourceAsString("/scan_screen_logical.json"));
    String unparse = plan.unparse(lpp);
//        System.out.println(unparse);
//System.out.println( new BasicOptimizer(DrillConfig.create()).convert(plan).unparse(c.getMapper().writer()));
}
Also used : DrillConfig(org.apache.drill.common.config.DrillConfig) LogicalPlan(org.apache.drill.common.logical.LogicalPlan) LogicalPlanPersistence(org.apache.drill.common.config.LogicalPlanPersistence) Test(org.junit.Test) ExecTest(org.apache.drill.exec.ExecTest)

Aggregations

LogicalPlan (org.apache.drill.common.logical.LogicalPlan)6 Test (org.junit.Test)4 DrillConfig (org.apache.drill.common.config.DrillConfig)2 LogicalPlanPersistence (org.apache.drill.common.config.LogicalPlanPersistence)2 PlanProperties (org.apache.drill.common.logical.PlanProperties)2 StoragePluginConfig (org.apache.drill.common.logical.StoragePluginConfig)2 Project (org.apache.drill.common.logical.data.Project)2 Scan (org.apache.drill.common.logical.data.Scan)2 Store (org.apache.drill.common.logical.data.Store)2 PhysicalPlan (org.apache.drill.exec.physical.PhysicalPlan)2 MetricRegistry (com.codahale.metrics.MetricRegistry)1 IOException (java.io.IOException)1 NonStrictExpectations (mockit.NonStrictExpectations)1 Filter (org.apache.drill.common.logical.data.Filter)1 ScanResult (org.apache.drill.common.scanner.persistence.ScanResult)1 ExecTest (org.apache.drill.exec.ExecTest)1 FunctionImplementationRegistry (org.apache.drill.exec.expr.fn.FunctionImplementationRegistry)1 FragmentContext (org.apache.drill.exec.ops.FragmentContext)1 QueryContext (org.apache.drill.exec.ops.QueryContext)1 BasicOptimizer (org.apache.drill.exec.opt.BasicOptimizer)1