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

Java RelCollationImpl类代码示例

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

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



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

示例1: convert

import org.apache.calcite.rel.RelCollationImpl; //导入依赖的package包/类
public static RelNode convert(Order order, ConversionContext context) throws InvalidRelException{

    // if there are compound expressions in the order by, we need to convert into projects on either side.
    RelNode input = context.toRel(order.getInput());
    List<String> fields = input.getRowType().getFieldNames();

    // build a map of field names to indices.
    Map<String, Integer> fieldMap = Maps.newHashMap();
    int i =0;
    for(String field : fields){
      fieldMap.put(field, i);
      i++;
    }

    List<RelFieldCollation> collations = Lists.newArrayList();

    for(Ordering o : order.getOrderings()){
      String fieldName = ExprHelper.getFieldName(o.getExpr());
      int fieldId = fieldMap.get(fieldName);
      RelFieldCollation c = new RelFieldCollation(fieldId, o.getDirection(), o.getNullDirection());
    }
    return new DrillSortRel(context.getCluster(), context.getLogicalTraits(), input, RelCollationImpl.of(collations));
  }
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:24,代码来源:DrillSortRel.java


示例2: convert

import org.apache.calcite.rel.RelCollationImpl; //导入依赖的package包/类
public static RelNode convert(Order order, ConversionContext context) throws InvalidRelException{

    // if there are compound expressions in the order by, we need to convert into projects on either side.
    RelNode input = context.toRel(order.getInput());
    List<String> fields = input.getRowType().getFieldNames();

    // build a map of field names to indices.
    Map<String, Integer> fieldMap = Maps.newHashMap();
    int i =0;
    for(String field : fields){
      fieldMap.put(field, i);
      i++;
    }

    List<RelFieldCollation> collations = Lists.newArrayList();

    for(Ordering o : order.getOrderings()){
      String fieldName = ExprHelper.getFieldName(o.getExpr());
      int fieldId = fieldMap.get(fieldName);
      RelFieldCollation c = new RelFieldCollation(fieldId, o.getDirection(), o.getNullDirection());
    }
    return new SortRel(context.getCluster(), context.getLogicalTraits(), input, RelCollationImpl.of(collations));
  }
 
开发者ID:dremio,项目名称:dremio-oss,代码行数:24,代码来源:SortRel.java


示例3: getCollation

import org.apache.calcite.rel.RelCollationImpl; //导入依赖的package包/类
private RelCollation getCollation(List<Integer> keys){
  List<RelFieldCollation> fields = Lists.newArrayList();
  for (int key : keys) {
    fields.add(new RelFieldCollation(key));
  }
  return RelCollationImpl.of(fields);
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:8,代码来源:WriterPrule.java


示例4: getCollation

import org.apache.calcite.rel.RelCollationImpl; //导入依赖的package包/类
private RelCollation getCollation(DrillAggregateRel rel){

    List<RelFieldCollation> fields = Lists.newArrayList();
    for (int group : BitSets.toIter(rel.getGroupSet())) {
      fields.add(new RelFieldCollation(group));
    }
    return RelCollationImpl.of(fields);
  }
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:9,代码来源:StreamAggPrule.java


示例5: convertRelCollation

import org.apache.calcite.rel.RelCollationImpl; //导入依赖的package包/类
private RelCollation convertRelCollation(RelCollation src, Map<Integer, Integer> inToOut) {
  List<RelFieldCollation> newFields = Lists.newArrayList();

  for ( RelFieldCollation field : src.getFieldCollations()) {
    if (inToOut.containsKey(field.getFieldIndex())) {
      newFields.add(new RelFieldCollation(inToOut.get(field.getFieldIndex()), field.getDirection(), field.nullDirection));
    }
  }

  if (newFields.isEmpty()) {
    return RelCollationImpl.of();
  } else {
    return RelCollationImpl.of(newFields);
  }
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:16,代码来源:ProjectPrule.java


示例6: getCollation

import org.apache.calcite.rel.RelCollationImpl; //导入依赖的package包/类
/**
 * Create a RelCollation that has partition-by as the leading keys followed by order-by keys
 * @param window The window specification
 * @return a RelCollation with {partition-by keys, order-by keys}
 */
private RelCollation getCollation(Window.Group window) {
  List<RelFieldCollation> fields = Lists.newArrayList();
  for (int group : BitSets.toIter(window.keys)) {
    fields.add(new RelFieldCollation(group));
  }

  for (RelFieldCollation field : window.orderKeys.getFieldCollations()) {
    fields.add(field);
  }

  return RelCollationImpl.of(fields);
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:18,代码来源:WindowPrule.java


示例7: getCollation

import org.apache.calcite.rel.RelCollationImpl; //导入依赖的package包/类
private RelCollation getCollation(AggregateRel rel){

    List<RelFieldCollation> fields = Lists.newArrayList();
    for (int group = 0; group < rel.getGroupSet().cardinality(); group++) {
      fields.add(new RelFieldCollation(group));
    }
    return RelCollationImpl.of(fields);
  }
 
开发者ID:dremio,项目名称:dremio-oss,代码行数:9,代码来源:StreamAggPrule.java


示例8: BeamSortRel

import org.apache.calcite.rel.RelCollationImpl; //导入依赖的package包/类
public BeamSortRel(
    RelOptCluster cluster,
    RelTraitSet traits,
    RelNode child,
    RelCollation collation,
    RexNode offset,
    RexNode fetch) {
  super(cluster, traits, child, collation, offset, fetch);

  List<RexNode> fieldExps = getChildExps();
  RelCollationImpl collationImpl = (RelCollationImpl) collation;
  List<RelFieldCollation> collations = collationImpl.getFieldCollations();
  for (int i = 0; i < fieldExps.size(); i++) {
    RexNode fieldExp = fieldExps.get(i);
    RexInputRef inputRef = (RexInputRef) fieldExp;
    fieldIndices.add(inputRef.getIndex());
    orientation.add(collations.get(i).getDirection() == RelFieldCollation.Direction.ASCENDING);

    RelFieldCollation.NullDirection rawNullDirection = collations.get(i).nullDirection;
    if (rawNullDirection == RelFieldCollation.NullDirection.UNSPECIFIED) {
      rawNullDirection = collations.get(i).getDirection().defaultNullDirection();
    }
    nullsFirst.add(rawNullDirection == RelFieldCollation.NullDirection.FIRST);
  }

  if (fetch == null) {
    throw new UnsupportedOperationException("ORDER BY without a LIMIT is not supported!");
  }

  RexLiteral fetchLiteral = (RexLiteral) fetch;
  count = ((BigDecimal) fetchLiteral.getValue()).intValue();

  if (offset != null) {
    RexLiteral offsetLiteral = (RexLiteral) offset;
    startIndex = ((BigDecimal) offsetLiteral.getValue()).intValue();
  }
}
 
开发者ID:apache,项目名称:beam,代码行数:38,代码来源:BeamSortRel.java


示例9: toJson

import org.apache.calcite.rel.RelCollationImpl; //导入依赖的package包/类
public Object toJson(RelCollationImpl node) {
  final List<Object> list = new ArrayList<Object>();
  for (RelFieldCollation fieldCollation : node.getFieldCollations()) {
    final Map<String, Object> map = jsonBuilder.map();
    map.put("field", fieldCollation.getFieldIndex());
    map.put("direction", fieldCollation.getDirection().name());
    map.put("nulls", fieldCollation.nullDirection.name());
    list.add(map);
  }
  return list;
}
 
开发者ID:apache,项目名称:calcite,代码行数:12,代码来源:RelJson.java



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

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

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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