本文整理汇总了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;未经允许,请勿转载。 |
请发表评论