org.apache.calcite.rel.RelNode.explain()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(7.5k)|赞(0)|评价(0)|浏览(150)

本文整理了Java中org.apache.calcite.rel.RelNode.explain方法的一些代码示例,展示了RelNode.explain的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RelNode.explain方法的具体详情如下:
包路径:org.apache.calcite.rel.RelNode
类名称:RelNode
方法名:explain

RelNode.explain介绍

[英]Describes the inputs and attributes of this relational expression. Each node should call super.explain, then call the org.apache.calcite.rel.externalize.RelWriterImpl#input(String,RelNode)and org.apache.calcite.rel.externalize.RelWriterImpl#item(String,Object)methods for each input and attribute.
[中]描述此关系表达式的输入和属性。每个节点都应该调用super。解释一下,然后打电话给组织。阿帕奇。方解石雷尔。外化RelWriterImpl#输入(字符串、RelNode)和组织。阿帕奇。方解石雷尔。外化每个输入和属性的RelWriterImpl#item(字符串、对象)方法。

代码示例

代码示例来源:origin: dremio/dremio-oss

private void explainInputs(List<RelNode> inputs) {
 for (RelNode input : inputs) {
  input.explain(this);
 }
}

代码示例来源:origin: dremio/dremio-oss

private void explainInputs(List<RelNode> inputs) {
 for (RelNode input : inputs) {
  input.explain(this);
 }
}

代码示例来源:origin: Qihoo360/Quicksql

private void explainInputs(List<RelNode> inputs) {
 for (RelNode input : inputs) {
  input.explain(this);
 }
}

代码示例来源:origin: org.apache.calcite/calcite-core

private void explainInputs(List<RelNode> inputs) {
 for (RelNode input : inputs) {
  input.explain(this);
 }
}

代码示例来源:origin: Qihoo360/Quicksql

@Override public void explain(RelWriter pw) {
 currentRel.explain(pw);
}

代码示例来源:origin: org.apache.calcite/calcite-core

@Override public void explain(RelWriter pw) {
 currentRel.explain(pw);
}

代码示例来源:origin: Qihoo360/Quicksql

private List<Object> explainInputs(List<RelNode> inputs) {
 final List<Object> list = jsonBuilder.list();
 for (RelNode input : inputs) {
  String id = relIdMap.get(input);
  if (id == null) {
   input.explain(this);
   id = previousId;
  }
  list.add(id);
 }
 return list;
}

代码示例来源:origin: org.apache.calcite/calcite-core

private List<Object> explainInputs(List<RelNode> inputs) {
 final List<Object> list = jsonBuilder.list();
 for (RelNode input : inputs) {
  String id = relIdMap.get(input);
  if (id == null) {
   input.explain(this);
   id = previousId;
  }
  list.add(id);
 }
 return list;
}

代码示例来源:origin: Qihoo360/Quicksql

/**
 * Converts a relational expression to a string.
 */
public static String toString(
  final RelNode rel,
  SqlExplainLevel detailLevel) {
 if (rel == null) {
  return null;
 }
 final StringWriter sw = new StringWriter();
 final RelWriter planWriter =
   new RelWriterImpl(
     new PrintWriter(sw), detailLevel, false);
 rel.explain(planWriter);
 return sw.toString();
}

代码示例来源:origin: org.apache.calcite/calcite-core

/**
 * Converts a relational expression to a string.
 */
public static String toString(
  final RelNode rel,
  SqlExplainLevel detailLevel) {
 if (rel == null) {
  return null;
 }
 final StringWriter sw = new StringWriter();
 final RelWriter planWriter =
   new RelWriterImpl(
     new PrintWriter(sw), detailLevel, false);
 rel.explain(planWriter);
 return sw.toString();
}

代码示例来源:origin: org.apache.drill.exec/drill-java-exec

private void explainInputs(LateralJoinPrel lateralJoinPrel) {
 lateralJoinPrel.getInput(0).explain(this);
 this.register(lateralJoinPrel);
 lateralJoinPrel.getInput(1).explain(this);
 this.unRegister(lateralJoinPrel);
}

代码示例来源:origin: Qihoo360/Quicksql

case JSON:
 planWriter = new RelJsonWriter();
 rel.explain(planWriter);
 return ((RelJsonWriter) planWriter).asString();
default:
 planWriter = new RelWriterImpl(pw, detailLevel, false);
rel.explain(planWriter);
pw.flush();
return sw.toString();

代码示例来源:origin: org.apache.calcite/calcite-core

case JSON:
 planWriter = new RelJsonWriter();
 rel.explain(planWriter);
 return ((RelJsonWriter) planWriter).asString();
default:
 planWriter = new RelWriterImpl(pw, detailLevel, false);
rel.explain(planWriter);
pw.flush();
return sw.toString();

代码示例来源:origin: org.apache.drill.exec/drill-java-exec

private void explainInputs(RelNode rel) {
 if (rel instanceof LateralJoinPrel) {
  this.explainInputs((LateralJoinPrel) rel);
 } else {
  List<RelNode> inputs = rel.getInputs();
  if (rel instanceof HashJoinPrel && ((HashJoinPrel) rel).isSwapped()) {
   HashJoinPrel joinPrel = (HashJoinPrel) rel;
   inputs = FlatLists.of(joinPrel.getRight(), joinPrel.getLeft());
  }
  for (RelNode input : inputs) {
   input.explain(this);
  }
 }
}

代码示例来源:origin: org.apache.calcite/calcite-core

@Test public void testExplainAsXml() {
 String sql = "select 1 + 2, 3 from (values (true))";
 final RelNode rel = tester.convertSqlToRel(sql).rel;
 StringWriter sw = new StringWriter();
 PrintWriter pw = new PrintWriter(sw);
 RelXmlWriter planWriter =
   new RelXmlWriter(pw, SqlExplainLevel.EXPPLAN_ATTRIBUTES);
 rel.explain(planWriter);
 pw.flush();
 TestUtil.assertEqualsVerbose(
   "<RelNode type=\"LogicalProject\">\n"
     + "\t<Property name=\"EXPR$0\">\n"
     + "\t\t+(1, 2)\t</Property>\n"
     + "\t<Property name=\"EXPR$1\">\n"
     + "\t\t3\t</Property>\n"
     + "\t<Inputs>\n"
     + "\t\t<RelNode type=\"LogicalValues\">\n"
     + "\t\t\t<Property name=\"tuples\">\n"
     + "\t\t\t\t[{ true }]\t\t\t</Property>\n"
     + "\t\t\t<Inputs/>\n"
     + "\t\t</RelNode>\n"
     + "\t</Inputs>\n"
     + "</RelNode>\n",
   Util.toLinux(sw.toString()));
}

代码示例来源:origin: Qihoo360/Quicksql

@Test public void testExplainAsXml() {
 String sql = "select 1 + 2, 3 from (values (true))";
 final RelNode rel = tester.convertSqlToRel(sql).rel;
 StringWriter sw = new StringWriter();
 PrintWriter pw = new PrintWriter(sw);
 RelXmlWriter planWriter =
   new RelXmlWriter(pw, SqlExplainLevel.EXPPLAN_ATTRIBUTES);
 rel.explain(planWriter);
 pw.flush();
 TestUtil.assertEqualsVerbose(
   "<RelNode type=\"LogicalProject\">\n"
     + "\t<Property name=\"EXPR$0\">\n"
     + "\t\t+(1, 2)\t</Property>\n"
     + "\t<Property name=\"EXPR$1\">\n"
     + "\t\t3\t</Property>\n"
     + "\t<Inputs>\n"
     + "\t\t<RelNode type=\"LogicalValues\">\n"
     + "\t\t\t<Property name=\"tuples\">\n"
     + "\t\t\t\t[{ true }]\t\t\t</Property>\n"
     + "\t\t\t<Inputs/>\n"
     + "\t\t</RelNode>\n"
     + "\t</Inputs>\n"
     + "</RelNode>\n",
   Util.toLinux(sw.toString()));
}

代码示例来源:origin: org.apache.calcite/calcite-core

spacer.add(2);
for (RelNode input : rel.getInputs()) {
 input.explain(this);

代码示例来源:origin: Qihoo360/Quicksql

spacer.add(2);
for (RelNode input : rel.getInputs()) {
 input.explain(this);

代码示例来源:origin: Qihoo360/Quicksql

public static void foo(RelNode rel) {
  // Convert rel tree to JSON.
  final RelJsonWriter writer = new RelJsonWriter();
  rel.explain(writer);
  final String json = writer.asString();

  // Find the schema. If there are no tables in the plan, we won't need one.
  final RelOptSchema[] schemas = {null};
  rel.accept(new RelShuttleImpl() {
   @Override public RelNode visit(TableScan scan) {
    schemas[0] = scan.getTable().getRelOptSchema();
    return super.visit(scan);
   }
  });

  // Convert JSON back to rel tree.
  Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
   final RelJsonReader reader = new RelJsonReader(
     cluster,
     schemas[0], rootSchema);
   try {
    RelNode x = reader.read(json);
   } catch (IOException e) {
    throw new RuntimeException(e);
   }
   return null;
  });
 }
}

代码示例来源:origin: org.apache.calcite/calcite-core

public static void foo(RelNode rel) {
  // Convert rel tree to JSON.
  final RelJsonWriter writer = new RelJsonWriter();
  rel.explain(writer);
  final String json = writer.asString();

  // Find the schema. If there are no tables in the plan, we won't need one.
  final RelOptSchema[] schemas = {null};
  rel.accept(new RelShuttleImpl() {
   @Override public RelNode visit(TableScan scan) {
    schemas[0] = scan.getTable().getRelOptSchema();
    return super.visit(scan);
   }
  });

  // Convert JSON back to rel tree.
  Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
   final RelJsonReader reader = new RelJsonReader(
     cluster,
     schemas[0], rootSchema);
   try {
    RelNode x = reader.read(json);
   } catch (IOException e) {
    throw new RuntimeException(e);
   }
   return null;
  });
 }
}

相关文章