• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Java RuleSet类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.apache.calcite.tools.RuleSet的典型用法代码示例。如果您正苦于以下问题:Java RuleSet类的具体用法?Java RuleSet怎么用?Java RuleSet使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



RuleSet类属于org.apache.calcite.tools包,在下文中一共展示了RuleSet类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: getDrillUserConfigurableLogicalRules

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
/**
 * Get a list of logical rules that can be turned on or off by session/system options.
 *
 * If a rule is intended to always be included with the logical set, it should be added
 * to the immutable list created in the getDrillBasicRules() method below.
 *
 * @param optimizerRulesContext - used to get the list of planner settings, other rules may
 *                                also in the future need to get other query state from this,
 *                                such as the available list of UDFs (as is used by the
 *                                DrillMergeProjectRule created in getDrillBasicRules())
 * @return - a list of rules that have been filtered to leave out
 *         rules that have been turned off by system or session settings
 */
public static RuleSet getDrillUserConfigurableLogicalRules(OptimizerRulesContext optimizerRulesContext) {
  final PlannerSettings ps = optimizerRulesContext.getPlannerSettings();

  // This list is used to store rules that can be turned on an off
  // by user facing planning options
  final Builder<RelOptRule> userConfigurableRules = ImmutableSet.<RelOptRule>builder();

  if (ps.isConstantFoldingEnabled()) {
    // TODO - DRILL-2218
    userConfigurableRules.add(ReduceExpressionsRule.PROJECT_INSTANCE);

    userConfigurableRules.add(DrillReduceExpressionsRule.FILTER_INSTANCE_DRILL);
    userConfigurableRules.add(DrillReduceExpressionsRule.CALC_INSTANCE_DRILL);
  }

  return new DrillRuleSet(userConfigurableRules.build());
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:31,代码来源:DrillRuleSets.java


示例2: getDrillBasicRules

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
/**
 * Get an immutable list of rules that will always be used when running
 * logical planning.
 *
 * This cannot be a static singleton because some of the rules need to
 * reference state owned by the current query (including its allocator).
 *
 * If a logical rule needs to be user configurable, such as turning
 * it on and off with a system/session option, add it in the
 * getDrillUserConfigurableLogicalRules() method instead of here.
 *
 * @param optimizerRulesContext - shared state used during planning, currently used here
 *                                to gain access to the function registry described above.
 * @return - a RuleSet containing the logical rules that will always
 *           be used, either by VolcanoPlanner directly, or
 *           used VolcanoPlanner as pre-processing for LOPTPlanner.
 *
 * Note : Join permutation rule is excluded here.
 */
public static RuleSet getDrillBasicRules(OptimizerRulesContext optimizerRulesContext) {
  /*
   * We have to create another copy of the ruleset with the context dependent elements;
   * this cannot be reused across queries.
   */
  final ImmutableSet<RelOptRule> basicRules = ImmutableSet.<RelOptRule>builder()
      .addAll(staticRuleSet)
      .add(
          DrillMergeProjectRule.getInstance(true, RelFactories.DEFAULT_PROJECT_FACTORY,
              optimizerRulesContext.getFunctionRegistry()),

          PruneScanRule.getFilterOnProject(optimizerRulesContext),
          PruneScanRule.getFilterOnScan(optimizerRulesContext),
          ParquetPruneScanRule.getFilterOnProjectParquet(optimizerRulesContext),
          ParquetPruneScanRule.getFilterOnScanParquet(optimizerRulesContext)
          )
      .build();

  return new DrillRuleSet(basicRules);
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:40,代码来源:DrillRuleSets.java


示例3: getRules

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
private RuleSet[] getRules(QueryContext context) {
  StoragePluginRegistry storagePluginRegistry = context.getStorage();
  RuleSet drillLogicalRules = DrillRuleSets.mergedRuleSets(
      DrillRuleSets.getDrillBasicRules(context),
      DrillRuleSets.getJoinPermRules(context),
      DrillRuleSets.getDrillUserConfigurableLogicalRules(context));
  RuleSet drillPhysicalMem = DrillRuleSets.mergedRuleSets(
      DrillRuleSets.getPhysicalRules(context),
      storagePluginRegistry.getStoragePluginRuleSet(context));

  // Following is used in LOPT join OPT.
  RuleSet logicalConvertRules = DrillRuleSets.mergedRuleSets(
      DrillRuleSets.getDrillBasicRules(context),
      DrillRuleSets.getDrillUserConfigurableLogicalRules(context));

  RuleSet[] allRules = new RuleSet[] {drillLogicalRules, drillPhysicalMem, logicalConvertRules};

  return allRules;
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:20,代码来源:DrillSqlWorker.java


示例4: testThreeQueryUnion

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
/** Test case for
 * <a href="https://issues.apache.org/jira/browse/CALCITE-1586">[CALCITE-1586]
 * JDBC adapter generates wrong SQL if UNION has more than two inputs</a>. */
@Test public void testThreeQueryUnion() {
  String query = "SELECT \"product_id\" FROM \"product\" "
      + " UNION ALL "
      + "SELECT \"product_id\" FROM \"sales_fact_1997\" "
      + " UNION ALL "
      + "SELECT \"product_class_id\" AS product_id FROM \"product_class\"";
  String expected = "SELECT \"product_id\"\n"
      + "FROM \"foodmart\".\"product\"\n"
      + "UNION ALL\n"
      + "SELECT \"product_id\"\n"
      + "FROM \"foodmart\".\"sales_fact_1997\"\n"
      + "UNION ALL\n"
      + "SELECT \"product_class_id\" AS \"PRODUCT_ID\"\n"
      + "FROM \"foodmart\".\"product_class\"";

  final HepProgram program =
      new HepProgramBuilder().addRuleClass(UnionMergeRule.class).build();
  final RuleSet rules = RuleSets.ofList(UnionMergeRule.INSTANCE);
  sql(query)
      .optimize(rules, new HepPlanner(program))
      .ok(expected);
}
 
开发者ID:apache,项目名称:calcite,代码行数:26,代码来源:RelToSqlConverterTest.java


示例5: checkThatMaterialize

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
/** Checks that a given query can use a materialized view with a given
 * definition. */
private CalciteAssert.AssertQuery checkThatMaterialize(String materialize,
    String query, String name, boolean existing, String model,
    Function<ResultSet, Void> explainChecker, final RuleSet rules) {
  try (final TryThreadLocal.Memo ignored = Prepare.THREAD_TRIM.push(true)) {
    MaterializationService.setThreadLocal();
    CalciteAssert.AssertQuery that = CalciteAssert.that()
        .withMaterializations(model, existing, name, materialize)
        .query(query)
        .enableMaterializations(true);

    // Add any additional rules required for the test
    if (rules.iterator().hasNext()) {
      that.withHook(Hook.PLANNER, new Function<RelOptPlanner, Void>() {
        public Void apply(RelOptPlanner planner) {
          for (RelOptRule rule : rules) {
            planner.addRule(rule);
          }
          return null;
        }
      });
    }

    return that.explainMatches("", explainChecker);
  }
}
 
开发者ID:apache,项目名称:calcite,代码行数:28,代码来源:MaterializationTest.java


示例6: mergedRuleSets

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
public static RuleSet mergedRuleSets(RuleSet...ruleSets) {
  final Builder<RelOptRule> relOptRuleSetBuilder = ImmutableSet.builder();
  for (final RuleSet ruleSet : ruleSets) {
    for (final RelOptRule relOptRule : ruleSet) {
      relOptRuleSetBuilder.add(relOptRule);
    }
  }
  return new DrillRuleSet(relOptRuleSetBuilder.build());
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:10,代码来源:DrillRuleSets.java


示例7: getStoragePluginRuleSet

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
public RuleSet getStoragePluginRuleSet(OptimizerRulesContext optimizerRulesContext) {
  // query registered engines for optimizer rules and build the storage plugin RuleSet
  Builder<RelOptRule> setBuilder = ImmutableSet.builder();
  for (StoragePlugin plugin : this.plugins.values()) {
    Set<? extends RelOptRule> rules = plugin.getOptimizerRules(optimizerRulesContext);
    if (rules != null && rules.size() > 0) {
      setBuilder.addAll(rules);
    }
  }

  return DrillRuleSets.create(setBuilder.build());
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:13,代码来源:StoragePluginRegistry.java


示例8: getRules

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
public RuleSet getRules(PlannerPhase phase) {
  Collection<StoragePlugin> plugins = Lists.newArrayList();
  for (Entry<String, StoragePlugin> k : context.getStorage()) {
    plugins.add(k.getValue());
  }
  return phase.getRules(context, plugins);
}
 
开发者ID:axbaretto,项目名称:drill,代码行数:8,代码来源:SqlHandlerConfig.java


示例9: getDefaultRuleSet

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
/**
 * Gets the default set of rules for planning process
 */
public static RuleSet getDefaultRuleSet() {
  ImmutableList.Builder<RelOptRule> builder
      = ImmutableList.builder();
  builder.addAll(DEFAULT_RULES).addAll(ENUMERABLE_RULES);
  return new QuarkRuleSet(builder.build());
}
 
开发者ID:qubole,项目名称:quark,代码行数:10,代码来源:RuleSets.java


示例10: getPrograms

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
private List<Program> getPrograms() {
  ImmutableList.Builder<Program> builder
      = ImmutableList.builder();
  for (RuleSet ruleSet: getRules()) {
    builder.add(Programs.sequence(
        new EnumerableProgram(ruleSet, this.context, this.plannerHolder),
        Programs.CALC_PROGRAM));
  }
  return builder.build();
}
 
开发者ID:qubole,项目名称:quark,代码行数:11,代码来源:SqlWorker.java


示例11: optimize

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
Sql optimize(final RuleSet ruleSet, final RelOptPlanner relOptPlanner) {
  return new Sql(schemaSpec, sql, dialect, config,
      FlatLists.append(transforms, new Function<RelNode, RelNode>() {
        public RelNode apply(RelNode r) {
          Program program = Programs.of(ruleSet);
          return program.run(relOptPlanner, r, r.getTraitSet(),
              ImmutableList.<RelOptMaterialization>of(),
              ImmutableList.<RelOptLattice>of());
        }
      }));
}
 
开发者ID:apache,项目名称:calcite,代码行数:12,代码来源:RelToSqlConverterTest.java


示例12: run

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
private static RelNode run(PropAction action, RuleSet rules)
    throws Exception {

  FrameworkConfig config = Frameworks.newConfigBuilder()
      .ruleSets(rules).build();

  final Properties info = new Properties();
  final Connection connection = DriverManager
      .getConnection("jdbc:calcite:", info);
  final CalciteServerStatement statement = connection
      .createStatement().unwrap(CalciteServerStatement.class);
  final CalcitePrepare.Context prepareContext =
        statement.createPrepareContext();
  final JavaTypeFactory typeFactory = prepareContext.getTypeFactory();
  CalciteCatalogReader catalogReader =
        new CalciteCatalogReader(prepareContext.getRootSchema(),
            prepareContext.getDefaultSchemaPath(),
            typeFactory,
            prepareContext.config());
  final RexBuilder rexBuilder = new RexBuilder(typeFactory);
  final RelOptPlanner planner = new VolcanoPlanner(config.getCostFactory(),
      config.getContext());

  // set up rules before we generate cluster
  planner.clearRelTraitDefs();
  planner.addRelTraitDef(RelCollationTraitDef.INSTANCE);
  planner.addRelTraitDef(ConventionTraitDef.INSTANCE);

  planner.clear();
  for (RelOptRule r : rules) {
    planner.addRule(r);
  }

  final RelOptCluster cluster = RelOptCluster.create(planner, rexBuilder);
  return action.apply(cluster, catalogReader,
      prepareContext.getRootSchema().plus());
}
 
开发者ID:apache,项目名称:calcite,代码行数:38,代码来源:TraitPropagationTest.java


示例13: getJoinPermRules

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
public static RuleSet getJoinPermRules(OptimizerRulesContext optimizerRulesContext) {
  return new DrillRuleSet(ImmutableSet.<RelOptRule> builder().add( //
      JoinPushThroughJoinRule.RIGHT,
      JoinPushThroughJoinRule.LEFT
      ).build());
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:7,代码来源:DrillRuleSets.java


示例14: getPhysicalRules

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
public static final RuleSet getPhysicalRules(OptimizerRulesContext optimizerRulesContext) {
  final List<RelOptRule> ruleList = new ArrayList<RelOptRule>();
  final PlannerSettings ps = optimizerRulesContext.getPlannerSettings();

  ruleList.add(ConvertCountToDirectScan.AGG_ON_PROJ_ON_SCAN);
  ruleList.add(ConvertCountToDirectScan.AGG_ON_SCAN);
  ruleList.add(SortConvertPrule.INSTANCE);
  ruleList.add(SortPrule.INSTANCE);
  ruleList.add(ProjectPrule.INSTANCE);
  ruleList.add(ScanPrule.INSTANCE);
  ruleList.add(ScreenPrule.INSTANCE);
  ruleList.add(ExpandConversionRule.INSTANCE);
  ruleList.add(FilterPrule.INSTANCE);
  ruleList.add(LimitPrule.INSTANCE);
  ruleList.add(WriterPrule.INSTANCE);
  ruleList.add(WindowPrule.INSTANCE);
  ruleList.add(PushLimitToTopN.INSTANCE);
  ruleList.add(LimitUnionExchangeTransposeRule.INSTANCE);
  ruleList.add(UnionAllPrule.INSTANCE);
  ruleList.add(ValuesPrule.INSTANCE);

  if (ps.isHashAggEnabled()) {
    ruleList.add(HashAggPrule.INSTANCE);
  }

  if (ps.isStreamAggEnabled()) {
    ruleList.add(StreamAggPrule.INSTANCE);
  }

  if (ps.isHashJoinEnabled()) {
    ruleList.add(HashJoinPrule.DIST_INSTANCE);

    if(ps.isBroadcastJoinEnabled()){
      ruleList.add(HashJoinPrule.BROADCAST_INSTANCE);
    }
  }

  if (ps.isMergeJoinEnabled()) {
    ruleList.add(MergeJoinPrule.DIST_INSTANCE);

    if(ps.isBroadcastJoinEnabled()){
      ruleList.add(MergeJoinPrule.BROADCAST_INSTANCE);
    }

  }

  // NLJ plans consist of broadcasting the right child, hence we need
  // broadcast join enabled.
  if (ps.isNestedLoopJoinEnabled() && ps.isBroadcastJoinEnabled()) {
    ruleList.add(NestedLoopJoinPrule.INSTANCE);
  }

  return new DrillRuleSet(ImmutableSet.copyOf(ruleList));
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:55,代码来源:DrillRuleSets.java


示例15: create

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
public static RuleSet create(ImmutableSet<RelOptRule> rules) {
  return new DrillRuleSet(rules);
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:4,代码来源:DrillRuleSets.java


示例16: getRules

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
public RuleSet getRules(PlannerPhase phase) {
  return phase.getRules(context, getPlugins());
}
 
开发者ID:dremio,项目名称:dremio-oss,代码行数:4,代码来源:SqlHandlerConfig.java


示例17: getRuleSets

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
public static RuleSet[] getRuleSets() {
  return new RuleSet[] { new BeamRuleSet(
      ImmutableSet.<RelOptRule>builder().addAll(calciteToBeamConversionRules).build()) };
}
 
开发者ID:apache,项目名称:beam,代码行数:5,代码来源:BeamRuleSets.java


示例18: getRules

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
private RuleSet[] getRules() {
  RuleSet defaultRule = RuleSets.getDefaultRuleSet();
  RuleSet[] allRules = new RuleSet[] {defaultRule};
  return allRules;
}
 
开发者ID:qubole,项目名称:quark,代码行数:6,代码来源:SqlWorker.java


示例19: EnumerableProgram

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
private EnumerableProgram(RuleSet ruleSet, QueryContext context,
                          QuarkMaterializeCluster.RelOptPlannerHolder holder) {
  this.ruleSet = ruleSet;
  this.context = context;
  this.plannerHolder = holder;
}
 
开发者ID:qubole,项目名称:quark,代码行数:7,代码来源:SqlWorker.java


示例20: checkMaterializeWithRules

import org.apache.calcite.tools.RuleSet; //导入依赖的package包/类
/** Checks that a given query can use a materialized view with a given
 * definition. */
private void checkMaterializeWithRules(String materialize, String query, RuleSet rules) {
  checkMaterialize(materialize, query, HR_FKUK_MODEL, CONTAINS_M0, rules);
}
 
开发者ID:apache,项目名称:calcite,代码行数:6,代码来源:MaterializationTest.java



注:本文中的org.apache.calcite.tools.RuleSet类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java PublicUserInfo类代码示例发布时间:2022-05-22
下一篇:
Java EnumBiMap类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap