Class EnumerableRelImplementor
- java.lang.Object
-
- org.apache.calcite.adapter.enumerable.JavaRelImplementor
-
- org.apache.calcite.adapter.enumerable.EnumerableRelImplementor
-
- All Implemented Interfaces:
RelImplementor
public class EnumerableRelImplementor extends JavaRelImplementor
Subclass ofRelImplementor
for relational operators ofEnumerableConvention
calling convention.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
EnumerableRelImplementor.TypeFinder
Visitor that finds types in anExpression
tree.private class
EnumerableRelImplementor.TypeRegistrar
Adds a declaration of each synthetic type found in a code block.
-
Field Summary
Fields Modifier and Type Field Description protected Function1<java.lang.String,RexToLixTranslator.InputGetter>
allCorrelateVariables
private java.util.Map<java.lang.String,RexToLixTranslator.InputGetter>
corrVars
java.util.Map<java.lang.String,java.lang.Object>
map
private java.util.Map<java.lang.Object,ParameterExpression>
stashedParameters
-
Constructor Summary
Constructors Constructor Description EnumerableRelImplementor(RexBuilder rexBuilder, java.util.Map<java.lang.String,java.lang.Object> internalParameters)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private ClassDeclaration
classDecl(JavaTypeFactoryImpl.SyntheticRecordType type)
void
clearCorrelVariable(java.lang.String name)
SqlConformance
getConformance()
Returns the desired SQL conformance.RexToLixTranslator.InputGetter
getCorrelVariableGetter(java.lang.String name)
ClassDeclaration
implementRoot(EnumerableRel rootRel, EnumerableRel.Prefer prefer)
void
registerCorrelVariable(java.lang.String name, ParameterExpression pe, BlockBuilder corrBlock, PhysType physType)
EnumerableRel.Result
result(PhysType physType, BlockStatement block)
<T> Expression
stash(T input, java.lang.Class<? super T> clazz)
Stashes a value for the executor.EnumerableRel.Result
visitChild(EnumerableRel parent, int ordinal, EnumerableRel child, EnumerableRel.Prefer prefer)
-
Methods inherited from class org.apache.calcite.adapter.enumerable.JavaRelImplementor
getRexBuilder, getRootExpression, getTypeFactory
-
-
-
-
Field Detail
-
map
public final java.util.Map<java.lang.String,java.lang.Object> map
-
corrVars
private final java.util.Map<java.lang.String,RexToLixTranslator.InputGetter> corrVars
-
stashedParameters
private final java.util.Map<java.lang.Object,ParameterExpression> stashedParameters
-
allCorrelateVariables
protected final Function1<java.lang.String,RexToLixTranslator.InputGetter> allCorrelateVariables
-
-
Constructor Detail
-
EnumerableRelImplementor
public EnumerableRelImplementor(RexBuilder rexBuilder, java.util.Map<java.lang.String,java.lang.Object> internalParameters)
-
-
Method Detail
-
visitChild
public EnumerableRel.Result visitChild(EnumerableRel parent, int ordinal, EnumerableRel child, EnumerableRel.Prefer prefer)
-
implementRoot
public ClassDeclaration implementRoot(EnumerableRel rootRel, EnumerableRel.Prefer prefer)
-
classDecl
private ClassDeclaration classDecl(JavaTypeFactoryImpl.SyntheticRecordType type)
-
stash
public <T> Expression stash(T input, java.lang.Class<? super T> clazz)
Stashes a value for the executor. Given values are de-duplicated if identical (seeIdentityHashMap
).For instance, to pass
ArrayList
to your method, you can useExpressions.call(method, implementor.stash(arrayList))
.For simple literals (strings, numbers) the result is equivalent to
Expressions.constant(Object, java.lang.reflect.Type)
.Note: the input value is held in memory as long as the statement is alive. If you are using just a subset of its content, consider creating a slimmer holder.
- Type Parameters:
T
- Java class type of the value when it is used- Parameters:
input
- Value to be stashedclazz
- Java class type of the value when it is used- Returns:
- Expression that will represent
input
in runtime
-
registerCorrelVariable
public void registerCorrelVariable(java.lang.String name, ParameterExpression pe, BlockBuilder corrBlock, PhysType physType)
-
clearCorrelVariable
public void clearCorrelVariable(java.lang.String name)
-
getCorrelVariableGetter
public RexToLixTranslator.InputGetter getCorrelVariableGetter(java.lang.String name)
-
result
public EnumerableRel.Result result(PhysType physType, BlockStatement block)
-
getConformance
public SqlConformance getConformance()
Description copied from interface:RelImplementor
Returns the desired SQL conformance.
-
-