aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src/main
diff options
context:
space:
mode:
authorJinfeng Ni <jni@maprtech.com>2014-08-05 13:13:52 -0700
committerJacques Nadeau <jacques@apache.org>2014-08-06 17:30:50 -0700
commit8c66525735d011c763a4ed913d46e07cd60aea23 (patch)
tree8a99039ff72409524b57de1fcf9bdb574cc1a85b /exec/java-exec/src/main
parent49d238eea601a6764129b9d64cf9bca440209e12 (diff)
DRILL-1250 : Fix compilation error in generated code when Drill evaluates an expression that returns a repeated scalar value.
Diffstat (limited to 'exec/java-exec/src/main')
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java6
1 files changed, 3 insertions, 3 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
index 73ce45e38..caf91793b 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
@@ -265,14 +265,14 @@ public class EvaluationVisitor {
final LogicalExpression child = e.getChild();
final HoldingContainer inputContainer = child.accept(this, generator);
- final boolean complex = Types.isComplex(inputContainer.getMajorType());
- final boolean repeated = Types.isRepeated(inputContainer.getMajorType());
JBlock block = generator.getEvalBlock();
JExpression outIndex = generator.getMappingSet().getValueWriteIndex();
JVar vv = generator.declareVectorValueSetupAndMember(generator.getMappingSet().getOutgoing(), e.getFieldId());
- if (complex || repeated) {
+ // Only when the input is a reader, use writer interface to copy value.
+ // Otherwise, input is a holder and we use vv mutator to set value.
+ if (inputContainer.isReader()) {
JType writerImpl = generator.getModel()._ref(
TypeHelper.getWriterImpl(inputContainer.getMinorType(), inputContainer.getMajorType().getMode()));
JType writerIFace = generator.getModel()._ref(