public RelMetadataProvider getMetadataProvider() { return ChainedRelMetadataProvider.of( ImmutableList.of( ReflectiveRelMetadataProvider.reflectiveSource(this, BuiltInMethod.NON_CUMULATIVE_COST.method), RelMdPercentageOriginalRows.SOURCE)); }
public RelMetadataProvider getMetadataProvider() { return ChainedRelMetadataProvider.of( ImmutableList.of( ReflectiveRelMetadataProvider.reflectiveSource(this, BuiltInMethod.NON_CUMULATIVE_COST.method), RelMdPercentageOriginalRows.SOURCE)); }
public RelMetadataProvider getMetadataProvider() { // Create cost metadata provider final HiveCostModel cm; if (HiveConf.getVar(this.hiveConf, HiveConf.ConfVars.HIVE_EXECUTION_ENGINE).equals("tez") && HiveConf.getBoolVar(this.hiveConf, HiveConf.ConfVars.HIVE_CBO_EXTENDED_COST_MODEL)) { cm = HiveOnTezCostModel.getCostModel(hiveConf); } else { cm = HiveDefaultCostModel.getCostModel(); } // Get max split size for HiveRelMdParallelism final Double maxSplitSize = (double) HiveConf.getLongVar( this.hiveConf, HiveConf.ConfVars.MAPREDMAXSPLITSIZE); // Return MD provider return ChainedRelMetadataProvider.of(ImmutableList .of( HiveRelMdDistinctRowCount.SOURCE, new HiveRelMdCost(cm).getMetadataProvider(), HiveRelMdSelectivity.SOURCE, HiveRelMdRowCount.SOURCE, HiveRelMdUniqueKeys.SOURCE, HiveRelMdColumnUniqueness.SOURCE, HiveRelMdSize.SOURCE, HiveRelMdMemory.SOURCE, new HiveRelMdParallelism(maxSplitSize).getMetadataProvider(), HiveRelMdDistribution.SOURCE, HiveRelMdCollation.SOURCE, HiveRelMdPredicates.SOURCE, DefaultRelMetadataProvider.INSTANCE)); }
public RelMetadataProvider getMetadataProvider() { // Create cost metadata provider final HiveCostModel cm; if (HiveConf.getVar(this.hiveConf, HiveConf.ConfVars.HIVE_EXECUTION_ENGINE).equals("tez") && HiveConf.getBoolVar(this.hiveConf, HiveConf.ConfVars.HIVE_CBO_EXTENDED_COST_MODEL)) { cm = HiveOnTezCostModel.getCostModel(hiveConf); } else { cm = HiveDefaultCostModel.getCostModel(); } // Get max split size for HiveRelMdParallelism final Double maxSplitSize = (double) HiveConf.getLongVar( this.hiveConf, HiveConf.ConfVars.MAPREDMAXSPLITSIZE); // Return MD provider return ChainedRelMetadataProvider.of(ImmutableList .of( HiveRelMdDistinctRowCount.SOURCE, new HiveRelMdCost(cm).getMetadataProvider(), HiveRelMdSelectivity.SOURCE, HiveRelMdRowCount.SOURCE, HiveRelMdUniqueKeys.SOURCE, HiveRelMdSize.SOURCE, HiveRelMdMemory.SOURCE, new HiveRelMdParallelism(maxSplitSize).getMetadataProvider(), HiveRelMdDistribution.SOURCE, HiveRelMdCollation.SOURCE, HiveRelMdPredicates.SOURCE, DefaultRelMetadataProvider.INSTANCE)); }
RelMetadataProvider chainedProvider = ChainedRelMetadataProvider.of(list); optCluster.setMetadataProvider(new CachingRelMetadataProvider(chainedProvider, hepPlanner));
RelMetadataProvider chainedProvider = ChainedRelMetadataProvider.of(list); optCluster.setMetadataProvider(new CachingRelMetadataProvider(chainedProvider, hepPlanner));
list.add(mdProvider); planner.registerMetadataProviders(list); RelMetadataProvider chainedProvider = ChainedRelMetadataProvider.of(list); basePlan.getCluster().setMetadataProvider( new CachingRelMetadataProvider(chainedProvider, planner));
list.add(mdProvider); planner.registerMetadataProviders(list); RelMetadataProvider chainedProvider = ChainedRelMetadataProvider.of(list); basePlan.getCluster().setMetadataProvider( new CachingRelMetadataProvider(chainedProvider, planner));
list.add(mdProvider.getMetadataProvider()); planner.registerMetadataProviders(list); RelMetadataProvider chainedProvider = ChainedRelMetadataProvider.of(list);
public RelMetadataProvider getMetadataProvider() { return ChainedRelMetadataProvider.of( ImmutableList.of( ReflectiveRelMetadataProvider.reflectiveSource(this, BuiltInMethod.NON_CUMULATIVE_COST.method), RelMdPercentageOriginalRows.SOURCE)); }
public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { final HepPlanner hepPlanner = new HepPlanner(hepProgram, null, noDag, null, RelOptCostImpl.FACTORY); List<RelMetadataProvider> list = Lists.newArrayList(); if (metadataProvider != null) { list.add(metadataProvider); } hepPlanner.registerMetadataProviders(list); RelMetadataProvider plannerChain = ChainedRelMetadataProvider.of(list); rel.getCluster().setMetadataProvider(plannerChain); hepPlanner.setRoot(rel); return hepPlanner.findBestExp(); } };
/** Creates a program that executes a {@link HepProgram}. */ public static Program of(final HepProgram hepProgram, final boolean noDag, final RelMetadataProvider metadataProvider) { return (planner, rel, requiredOutputTraits, materializations, lattices) -> { final HepPlanner hepPlanner = new HepPlanner(hepProgram, null, noDag, null, RelOptCostImpl.FACTORY); List<RelMetadataProvider> list = new ArrayList<>(); if (metadataProvider != null) { list.add(metadataProvider); } hepPlanner.registerMetadataProviders(list); RelMetadataProvider plannerChain = ChainedRelMetadataProvider.of(list); rel.getCluster().setMetadataProvider(plannerChain); hepPlanner.setRoot(rel); return hepPlanner.findBestExp(); }; }
/** Creates a program that executes a {@link HepProgram}. */ public static Program of(final HepProgram hepProgram, final boolean noDag, final RelMetadataProvider metadataProvider) { return (planner, rel, requiredOutputTraits, materializations, lattices) -> { final HepPlanner hepPlanner = new HepPlanner(hepProgram, null, noDag, null, RelOptCostImpl.FACTORY); List<RelMetadataProvider> list = new ArrayList<>(); if (metadataProvider != null) { list.add(metadataProvider); } hepPlanner.registerMetadataProviders(list); RelMetadataProvider plannerChain = ChainedRelMetadataProvider.of(list); rel.getCluster().setMetadataProvider(plannerChain); hepPlanner.setRoot(rel); return hepPlanner.findBestExp(); }; }
@Test public void testBrokenCustomProvider() { final List<String> buf = new ArrayList<>(); ColTypeImpl.THREAD_LIST.set(buf); final String sql = "select deptno, count(*) from emp where deptno > 10 " + "group by deptno having count(*) = 0"; final RelRoot root = tester .withClusterFactory(cluster -> { cluster.setMetadataProvider( ChainedRelMetadataProvider.of( ImmutableList.of(BrokenColTypeImpl.SOURCE, cluster.getMetadataProvider()))); return cluster; }) .convertSqlToRel(sql); final RelNode rel = root.rel; assertThat(rel, instanceOf(LogicalFilter.class)); final MyRelMetadataQuery mq = new MyRelMetadataQuery(); try { assertThat(colType(mq, rel, 0), equalTo("DEPTNO-rel")); fail("expected error"); } catch (IllegalArgumentException e) { final String value = "No handler for method [public abstract java.lang.String " + "org.apache.calcite.test.RelMetadataTest$ColType.getColType(int)] " + "applied to argument of type [interface org.apache.calcite.rel.RelNode]; " + "we recommend you create a catch-all (RelNode) handler"; assertThat(e.getMessage(), is(value)); } }
public RelMetadataProvider getMetadataProvider() { // Create cost metadata provider final HiveCostModel cm; if (HiveConf.getVar(this.hiveConf, HiveConf.ConfVars.HIVE_EXECUTION_ENGINE).equals("tez") && HiveConf.getBoolVar(this.hiveConf, HiveConf.ConfVars.HIVE_CBO_EXTENDED_COST_MODEL)) { cm = HiveOnTezCostModel.getCostModel(hiveConf); } else { cm = HiveDefaultCostModel.getCostModel(); } // Get max split size for HiveRelMdParallelism final Double maxSplitSize = (double) HiveConf.getLongVar( this.hiveConf, HiveConf.ConfVars.MAPREDMAXSPLITSIZE); // Return MD provider return ChainedRelMetadataProvider.of(ImmutableList .of( HiveRelMdDistinctRowCount.SOURCE, new HiveRelMdCost(cm).getMetadataProvider(), HiveRelMdSelectivity.SOURCE, HiveRelMdRowCount.SOURCE, HiveRelMdUniqueKeys.SOURCE, HiveRelMdSize.SOURCE, HiveRelMdMemory.SOURCE, new HiveRelMdParallelism(maxSplitSize).getMetadataProvider(), HiveRelMdDistribution.SOURCE, HiveRelMdCollation.SOURCE, new DefaultRelMetadataProvider())); }
@Test public void testBrokenCustomProvider() { final List<String> buf = new ArrayList<>(); ColTypeImpl.THREAD_LIST.set(buf); final String sql = "select deptno, count(*) from emp where deptno > 10 " + "group by deptno having count(*) = 0"; final RelRoot root = tester .withClusterFactory(cluster -> { cluster.setMetadataProvider( ChainedRelMetadataProvider.of( ImmutableList.of(BrokenColTypeImpl.SOURCE, cluster.getMetadataProvider()))); return cluster; }) .convertSqlToRel(sql); final RelNode rel = root.rel; assertThat(rel, instanceOf(LogicalFilter.class)); final MyRelMetadataQuery mq = new MyRelMetadataQuery(); try { assertThat(colType(mq, rel, 0), equalTo("DEPTNO-rel")); fail("expected error"); } catch (IllegalArgumentException e) { final String value = "No handler for method [public abstract java.lang.String " + "org.apache.calcite.test.RelMetadataTest$ColType.getColType(int)] " + "applied to argument of type [interface org.apache.calcite.rel.RelNode]; " + "we recommend you create a catch-all (RelNode) handler"; assertThat(e.getMessage(), is(value)); } }
list.add(mdProvider); planner.registerMetadataProviders(list); RelMetadataProvider chainedProvider = ChainedRelMetadataProvider.of(list); basePlan.getCluster().setMetadataProvider( new CachingRelMetadataProvider(chainedProvider, planner));
planner.registerMetadataProviders(list); RelMetadataProvider plannerChain = ChainedRelMetadataProvider.of(list); final RelOptCluster cluster = relInitial.getCluster(); cluster.setMetadataProvider(plannerChain);
list.add(DefaultRelMetadataProvider.INSTANCE); planner.registerMetadataProviders(list); RelMetadataProvider plannerChain = ChainedRelMetadataProvider.of(list); relInitial.getCluster().setMetadataProvider( new CachingRelMetadataProvider(plannerChain, planner));
list.add(DefaultRelMetadataProvider.INSTANCE); planner.registerMetadataProviders(list); RelMetadataProvider plannerChain = ChainedRelMetadataProvider.of(list); relInitial.getCluster().setMetadataProvider( new CachingRelMetadataProvider(plannerChain, planner));