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

Java Expressions类代码示例

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

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



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

示例1: implement

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
public Result implement(EnumerableRelImplementor implementor, Prefer pref) {
  final JavaTypeFactory typeFactory = implementor.getTypeFactory();
  final BlockBuilder builder = new BlockBuilder();
  final PhysType physType =
      PhysTypeImpl.of(typeFactory, getRowType(), JavaRowFormat.ARRAY);
  final Expression interpreter_ = builder.append("interpreter",
      Expressions.new_(Interpreter.class,
          implementor.getRootExpression(),
          implementor.stash(getInput(), RelNode.class)));
  final Expression sliced_ =
      getRowType().getFieldCount() == 1
          ? Expressions.call(BuiltInMethod.SLICE0.method, interpreter_)
          : interpreter_;
  builder.add(sliced_);
  return implementor.result(physType, builder.toBlock());
}
 
开发者ID:apache,项目名称:calcite,代码行数:17,代码来源:EnumerableInterpreter.java


示例2: implementSpark

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
public Result implementSpark(Implementor implementor) {
  // Generate:
  //   Enumerable source = ...;
  //   return SparkRuntime.createRdd(sparkContext, source);
  final BlockBuilder list = new BlockBuilder();
  final EnumerableRel child = (EnumerableRel) getInput();
  final PhysType physType =
      PhysTypeImpl.of(
          implementor.getTypeFactory(), getRowType(),
          JavaRowFormat.CUSTOM);
  final Expression source = null; // TODO:
  final Expression sparkContext =
      Expressions.call(
          SparkMethod.GET_SPARK_CONTEXT.method,
          implementor.getRootExpression());
  final Expression rdd =
      list.append(
          "rdd",
          Expressions.call(
              SparkMethod.CREATE_RDD.method,
              sparkContext,
              source));
  list.add(
      Expressions.return_(null, rdd));
  return implementor.result(physType, list.toBlock());
}
 
开发者ID:apache,项目名称:calcite,代码行数:27,代码来源:EnumerableToSparkConverter.java


示例3: testWriteTryCatch

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testWriteTryCatch() {
  final ParameterExpression cce_ =
      Expressions.parameter(Modifier.FINAL, ClassCastException.class, "cce");
  final ParameterExpression re_ =
      Expressions.parameter(0, RuntimeException.class, "re");
  Node node =
      Expressions.tryCatch(
          Expressions.block(
              Expressions.return_(null,
                  Expressions.call(Expressions.constant("foo"), "length"))),
          Expressions.catch_(cce_,
              Expressions.return_(null, Expressions.constant(null))),
          Expressions.catch_(re_,
              Expressions.return_(null,
                  Expressions.call(re_, "toString"))));
  assertEquals(
      "try {\n"
          + "  return \"foo\".length();\n"
          + "} catch (final ClassCastException cce) {\n"
          + "  return null;\n"
          + "} catch (RuntimeException re) {\n"
          + "  return re.toString();\n"
          + "}\n",
      Expressions.toString(node));
}
 
开发者ID:apache,项目名称:calcite,代码行数:26,代码来源:ExpressionTest.java


示例4: field

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
public Expression field(BlockBuilder list, int index, Type storageType) {
  MethodCallExpression recFromCtx = Expressions.call(
      DataContext.ROOT,
      BuiltInMethod.DATA_CONTEXT_GET.method,
      Expressions.constant("inputRecord"));
  Expression recFromCtxCasted =
      RexToLixTranslator.convert(recFromCtx, Object[].class);
  IndexExpression recordAccess = Expressions.arrayIndex(recFromCtxCasted,
      Expressions.constant(index));
  if (storageType == null) {
    final RelDataType fieldType =
        rowType.getFieldList().get(index).getType();
    storageType = ((JavaTypeFactory) typeFactory).getJavaClass(fieldType);
  }
  return RexToLixTranslator.convert(recordAccess, storageType);
}
 
开发者ID:apache,项目名称:calcite,代码行数:17,代码来源:RexExecutorImpl.java


示例5: testTestCustomOptimizer

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testTestCustomOptimizer() {
  BlockBuilder b = new BlockBuilder() {
    @Override protected Shuttle createOptimizeShuttle() {
      return new OptimizeShuttle() {
        @Override public Expression visit(BinaryExpression binary,
            Expression expression0, Expression expression1) {
          if (binary.getNodeType() == ExpressionType.Add
              && ONE.equals(expression0) && TWO.equals(expression1)) {
            return FOUR;
          }
          return super.visit(binary, expression0, expression1);
        }
      };
    }
  };
  b.add(Expressions.return_(null, Expressions.add(ONE, TWO)));
  assertEquals("{\n  return 4;\n}\n", b.toBlock().toString());
}
 
开发者ID:apache,项目名称:calcite,代码行数:19,代码来源:BlockBuilderTest.java


示例6: testNonDeterministicMethodCall

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testNonDeterministicMethodCall() {
  assertThat(
      optimize(
          Expressions.new_(
              Runnable.class,
              Collections.<Expression>emptyList(),
              Expressions.methodDecl(
                  0,
                  int.class,
                  "test",
                  Collections.<ParameterExpression>emptyList(),
                  Blocks.toFunctionBlock(
                      Expressions.call(null,
                          Types.lookupMethod(TestClass.class,
                              "nonDeterministic", int.class),
                          ONE))))),
      equalTo("{\n"
          + "  return new Runnable(){\n"
          + "      int test() {\n"
          + "        return org.apache.calcite.linq4j.test.DeterministicTest.TestClass.nonDeterministic(1);\n"
          + "      }\n"
          + "\n"
          + "    };\n"
          + "}\n"));
}
 
开发者ID:apache,项目名称:calcite,代码行数:26,代码来源:DeterministicTest.java


示例7: testAssignInConditionMultipleUsage

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testAssignInConditionMultipleUsage() {
  // int t;
  // return (t = 1) != a ? t : c
  final BlockBuilder builder = new BlockBuilder(true);
  final ParameterExpression t = Expressions.parameter(int.class, "t");

  builder.add(Expressions.declare(0, t, null));

  Expression v = builder.append("v",
      Expressions.makeTernary(ExpressionType.Conditional,
          Expressions.makeBinary(ExpressionType.NotEqual,
              Expressions.assign(t, Expressions.constant(1)),
              Expressions.parameter(int.class, "a")),
          t,
          Expressions.parameter(int.class, "c")));
  builder.add(Expressions.return_(null, v));
  assertEquals(
      "{\n"
          + "  int t;\n"
          + "  return (t = 1) != a ? t : c;\n"
          + "}\n",
      Expressions.toString(builder.toBlock()));
}
 
开发者ID:apache,项目名称:calcite,代码行数:24,代码来源:InlinerTest.java


示例8: testFactorOutBinaryAddMul

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testFactorOutBinaryAddMul() {
  assertThat(
      optimize(
          Expressions.new_(
              Runnable.class,
              Collections.<Expression>emptyList(),
              Expressions.methodDecl(
                  0,
                  int.class,
                  "test",
                  Collections.<ParameterExpression>emptyList(),
                  Blocks.toFunctionBlock(
                      Expressions.multiply(Expressions.add(ONE, TWO),
                          THREE))))),
      equalTo("{\n"
          + "  return new Runnable(){\n"
          + "      int test() {\n"
          + "        return $L4J$C$1_2_3;\n"
          + "      }\n"
          + "\n"
          + "      static final int $L4J$C$1_2 = 1 + 2;\n"
          + "      static final int $L4J$C$1_2_3 = $L4J$C$1_2 * 3;\n"
          + "    };\n"
          + "}\n"));
}
 
开发者ID:apache,项目名称:calcite,代码行数:26,代码来源:DeterministicTest.java


示例9: testFor

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testFor() throws NoSuchFieldException {
  final BlockBuilder builder = new BlockBuilder();
  final ParameterExpression i_ = Expressions.parameter(int.class, "i");
  builder.add(
      Expressions.for_(
          Expressions.declare(
              0, i_, Expressions.constant(0)),
          Expressions.lessThan(i_, Expressions.constant(10)),
          Expressions.postIncrementAssign(i_),
          Expressions.block(
              Expressions.statement(
                  Expressions.call(
                      Expressions.field(
                          null, System.class.getField("out")),
                      "println",
                      i_)))));
  assertEquals(
      "{\n"
          + "  for (int i = 0; i < 10; i++) {\n"
          + "    System.out.println(i);\n"
          + "  }\n"
          + "}\n",
      Expressions.toString(builder.toBlock()));
}
 
开发者ID:apache,项目名称:calcite,代码行数:25,代码来源:ExpressionTest.java


示例10: subSchemaExpression

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
/** Returns the expression for a sub-schema. */
public static Expression subSchemaExpression(SchemaPlus schema, String name,
    Class type) {
  // (Type) schemaExpression.getSubSchema("name")
  final Expression schemaExpression = expression(schema);
  Expression call =
      Expressions.call(
          schemaExpression,
          BuiltInMethod.SCHEMA_GET_SUB_SCHEMA.method,
          Expressions.constant(name));
  //CHECKSTYLE: IGNORE 2
  //noinspection unchecked
  if (false && type != null && !type.isAssignableFrom(Schema.class)) {
    return unwrap(call, type);
  }
  return call;
}
 
开发者ID:apache,项目名称:calcite,代码行数:18,代码来源:Schemas.java


示例11: implement

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
public Expression implement(
    RexToLixTranslator translator,
    RexCall call,
    List<Expression> translatedOperands) {
  final Expression expression;
  if (Modifier.isStatic(method.getModifiers())) {
    expression = Expressions.call(method, translatedOperands);
  } else {
    expression = Expressions.call(translatedOperands.get(0), method,
        Util.skip(translatedOperands, 1));
  }

  final Type returnType =
      translator.typeFactory.getJavaClass(call.getType());
  return Types.castIfNecessary(returnType, expression);
}
 
开发者ID:apache,项目名称:calcite,代码行数:17,代码来源:RexImpTable.java


示例12: testIfElseIfElse

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testIfElseIfElse() {
  assertEquals(
      "if (true) {\n"
          + "  return;\n"
          + "} else if (false) {\n"
          + "  return;\n"
          + "} else {\n"
          + "  return 1;\n"
          + "}\n",
      Expressions.toString(
          Expressions.ifThenElse(
              Expressions.constant(true),
              Expressions.return_(null),
              Expressions.constant(false),
              Expressions.return_(null),
              Expressions.return_(null, Expressions.constant(1)))));
}
 
开发者ID:apache,项目名称:calcite,代码行数:18,代码来源:ExpressionTest.java


示例13: testFactorOutBinaryAddNameCollision

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testFactorOutBinaryAddNameCollision() {
  assertThat(
      optimize(
          Expressions.new_(
              Runnable.class,
              Collections.<Expression>emptyList(),
              Expressions.methodDecl(
                  0,
                  int.class,
                  "test",
                  Collections.<ParameterExpression>emptyList(),
                  Blocks.toFunctionBlock(
                      Expressions.multiply(Expressions.add(ONE, TWO),
                          Expressions.subtract(ONE, TWO)))))),
      equalTo("{\n"
          + "  return new Runnable(){\n"
          + "      int test() {\n"
          + "        return $L4J$C$1_2_1_20;\n"
          + "      }\n"
          + "\n"
          + "      static final int $L4J$C$1_2 = 1 + 2;\n"
          + "      static final int $L4J$C$1_20 = 1 - 2;\n"
          + "      static final int $L4J$C$1_2_1_20 = $L4J$C$1_2 * $L4J$C$1_20;\n"
          + "    };\n"
          + "}\n"));
}
 
开发者ID:apache,项目名称:calcite,代码行数:27,代码来源:DeterministicTest.java


示例14: testNoInlineMultipleUsage

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testNoInlineMultipleUsage() {
  ParameterExpression p1 = Expressions.parameter(int.class, "p1");
  ParameterExpression p2 = Expressions.parameter(int.class, "p2");
  DeclarationStatement decl = Expressions.declare(16, "x",
      Expressions.subtract(p1, p2));
  b.add(decl);
  b.add(
      Expressions.return_(null,
          Expressions.add(decl.parameter, decl.parameter)));
  assertEquals(
      "{\n"
          + "  final int x = p1 - p2;\n"
          + "  return x + x;\n"
          + "}\n",
      b.toBlock().toString());
}
 
开发者ID:apache,项目名称:calcite,代码行数:17,代码来源:InlinerTest.java


示例15: implementResult

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
public Expression implementResult(AggContext info,
    AggResultContext result) {
  WinAggResultContext winResult = (WinAggResultContext) result;

  List<RexNode> rexArgs = winResult.rexArguments();

  Expression tiles =
      winResult.rowTranslator(winResult.index()).translate(
          rexArgs.get(0), int.class);

  Expression ntile =
      Expressions.add(Expressions.constant(1),
          Expressions.divide(
              Expressions.multiply(
                  tiles,
                  Expressions.subtract(
                      winResult.index(), winResult.startIndex())),
              winResult.getPartitionRowCount()));

  return ntile;
}
 
开发者ID:apache,项目名称:calcite,代码行数:22,代码来源:RexImpTable.java


示例16: testIntegerValueOfZeroComplexTest

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testIntegerValueOfZeroComplexTest() {
  // Integer.valueOf(0) is optimized in complex expressions
  assertThat(
      optimize(
          Expressions.new_(Runnable.class,
              Collections.<Expression>emptyList(),
              Expressions.methodDecl(0, int.class, "test",
                  Collections.<ParameterExpression>emptyList(),
                  Blocks.toFunctionBlock(
                      Expressions.call(
                          getMethod(Integer.class, "valueOf", int.class),
                          Expressions.constant(0)))))),
      equalTo("{\n"
          + "  return new Runnable(){\n"
          + "      int test() {\n"
          + "        return $L4J$C$Integer_valueOf_0_;\n"
          + "      }\n"
          + "\n"
          + "      static final Integer $L4J$C$Integer_valueOf_0_ = Integer.valueOf(0);\n"
          + "    };\n"
          + "}\n"));
}
 
开发者ID:apache,项目名称:calcite,代码行数:23,代码来源:DeterministicTest.java


示例17: testTableWhere

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testTableWhere() throws SQLException,
    ClassNotFoundException {
  final Connection connection =
      CalciteAssert.that(CalciteAssert.Config.JDBC_FOODMART).connect();
  final CalciteConnection calciteConnection =
      connection.unwrap(CalciteConnection.class);
  final SchemaPlus rootSchema = calciteConnection.getRootSchema();
  ParameterExpression c =
      Expressions.parameter(JdbcTest.Customer.class, "c");
  String s =
      Schemas.queryable(Schemas.createDataContext(connection, rootSchema),
          rootSchema.getSubSchema("foodmart"),
          JdbcTest.Customer.class, "customer")
          .where(
              Expressions.<Predicate1<JdbcTest.Customer>>lambda(
                  Expressions.lessThan(
                      Expressions.field(c, "customer_id"),
                      Expressions.constant(5)),
                  c))
          .toList()
          .toString();
  Util.discard(s);
}
 
开发者ID:apache,项目名称:calcite,代码行数:24,代码来源:LinqFrontJdbcBackTest.java


示例18: testConditionalIfBoolFalseTrue

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
@Test public void testConditionalIfBoolFalseTrue() {
  // if (bool) {1} else if (false) {2} if (true) {4} else {5}
  Expression bool = Expressions.parameter(boolean.class, "bool");
  assertEquals(
      "{\n"
          + "  if (bool) {\n"
          + "    return 1;\n"
          + "  } else {\n"
          + "    return 4;\n"
          + "  }\n"
          + "}\n",
      optimize(
          Expressions.ifThenElse(bool,
              Expressions.return_(null, ONE),
              FALSE,
              Expressions.return_(null, TWO),
              TRUE,
              Expressions.return_(null, FOUR),
              Expressions.return_(null, Expressions.constant(5)))));
}
 
开发者ID:apache,项目名称:calcite,代码行数:21,代码来源:OptimizerTest.java


示例19: toEnumerable

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
private Expression toEnumerable(Expression expression) {
  final Type type = expression.getType();
  if (Types.isArray(type)) {
    if (Types.toClass(type).getComponentType().isPrimitive()) {
      expression =
          Expressions.call(BuiltInMethod.AS_LIST.method, expression);
    }
    return Expressions.call(BuiltInMethod.AS_ENUMERABLE.method, expression);
  } else if (Types.isAssignableFrom(Iterable.class, type)
      && !Types.isAssignableFrom(Enumerable.class, type)) {
    return Expressions.call(BuiltInMethod.AS_ENUMERABLE2.method,
        expression);
  } else if (Types.isAssignableFrom(Queryable.class, type)) {
    // Queryable extends Enumerable, but it's too "clever", so we call
    // Queryable.asEnumerable so that operations such as take(int) will be
    // evaluated directly.
    return Expressions.call(expression,
        BuiltInMethod.QUERYABLE_AS_ENUMERABLE.method);
  }
  return expression;
}
 
开发者ID:apache,项目名称:calcite,代码行数:22,代码来源:EnumerableTableScan.java


示例20: implementAdd

import org.apache.calcite.linq4j.tree.Expressions; //导入依赖的package包/类
public void implementAdd(AggContext info, AggAddContext add) {
  List<Expression> acc = add.accumulator();
  Expression flag = acc.get(0);
  add.currentBlock().add(
      Expressions.ifThen(flag,
          Expressions.throw_(
              Expressions.new_(IllegalStateException.class,
                  Expressions.constant("more than one value in agg "
                      + info.aggregation())))));
  add.currentBlock().add(
      Expressions.statement(
          Expressions.assign(flag, Expressions.constant(true))));
  add.currentBlock().add(
      Expressions.statement(
          Expressions.assign(acc.get(1), add.arguments().get(0))));
}
 
开发者ID:apache,项目名称:calcite,代码行数:17,代码来源:RexImpTable.java



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Java TranslatableTable类代码示例发布时间:2022-05-22
下一篇:
Java Sampler类代码示例发布时间: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