diff options
Diffstat (limited to 'exec/vector/src/main/codegen/templates/ComplexReaders.java')
-rw-r--r-- | exec/vector/src/main/codegen/templates/ComplexReaders.java | 66 |
1 files changed, 39 insertions, 27 deletions
diff --git a/exec/vector/src/main/codegen/templates/ComplexReaders.java b/exec/vector/src/main/codegen/templates/ComplexReaders.java index 1f0b92b02..d72c7c696 100644 --- a/exec/vector/src/main/codegen/templates/ComplexReaders.java +++ b/exec/vector/src/main/codegen/templates/ComplexReaders.java @@ -53,20 +53,20 @@ public class ${nullMode}${name}ReaderImpl extends AbstractFieldReader { private final ${nullMode}${name}Vector vector; - public ${nullMode}${name}ReaderImpl(${nullMode}${name}Vector vector){ + public ${nullMode}${name}ReaderImpl(${nullMode}${name}Vector vector) { super(); this.vector = vector; } - public MajorType getType(){ + public MajorType getType() { return vector.getField().getType(); } - public MaterializedField getField(){ + public MaterializedField getField() { return vector.getField(); } - public boolean isSet(){ + public boolean isSet() { <#if nullMode == "Nullable"> return !vector.getAccessor().isNull(idx()); <#else> @@ -74,76 +74,85 @@ public class ${nullMode}${name}ReaderImpl extends AbstractFieldReader { </#if> } - - - <#if mode == "Repeated"> - public void copyAsValue(${minor.class?cap_first}Writer writer){ + public void copyAsValue(${minor.class?cap_first}Writer writer) { Repeated${minor.class?cap_first}WriterImpl impl = (Repeated${minor.class?cap_first}WriterImpl) writer; impl.vector.copyFromSafe(idx(), impl.idx(), vector); } - - public void copyAsField(String name, MapWriter writer){ - Repeated${minor.class?cap_first}WriterImpl impl = (Repeated${minor.class?cap_first}WriterImpl) writer.list(name).${lowerName}(); + + <#if minor.class == "VarDecimal"> + public void copyAsField(String name, MapWriter writer, int scale, int precision) { + Repeated${minor.class?cap_first}WriterImpl impl + = (Repeated${minor.class?cap_first}WriterImpl) writer.list(name).${lowerName}(scale, precision); + <#else> + public void copyAsField(String name, MapWriter writer) { + Repeated${minor.class?cap_first}WriterImpl impl = (Repeated${minor.class?cap_first}WriterImpl) writer.list(name).${lowerName}(); + </#if> impl.vector.copyFromSafe(idx(), impl.idx(), vector); } - public int size(){ + public int size() { return vector.getAccessor().getInnerValueCountAt(idx()); } - public void read(int arrayIndex, ${minor.class?cap_first}Holder h){ + public void read(int arrayIndex, ${minor.class?cap_first}Holder h) { vector.getAccessor().get(idx(), arrayIndex, h); } - public void read(int arrayIndex, Nullable${minor.class?cap_first}Holder h){ + + public void read(int arrayIndex, Nullable${minor.class?cap_first}Holder h) { vector.getAccessor().get(idx(), arrayIndex, h); } - public ${friendlyType} read${safeType}(int arrayIndex){ + public ${friendlyType} read${safeType}(int arrayIndex) { return vector.getAccessor().getSingleObject(idx(), arrayIndex); } - public List<Object> readObject(){ + public List<Object> readObject() { return (List<Object>) (Object) vector.getAccessor().getObject(idx()); } <#else> - public void copyAsValue(${minor.class?cap_first}Writer writer){ + public void copyAsValue(${minor.class?cap_first}Writer writer) { ${nullMode}${minor.class?cap_first}WriterImpl impl = (${nullMode}${minor.class?cap_first}WriterImpl) writer; impl.vector.copyFromSafe(idx(), impl.idx(), vector); } - - public void copyAsField(String name, MapWriter writer){ + + <#if minor.class == "VarDecimal"> + public void copyAsField(String name, MapWriter writer, int scale, int precision) { + ${nullMode}${minor.class?cap_first}WriterImpl impl + = (${nullMode}${minor.class?cap_first}WriterImpl) writer.${lowerName}(name, scale, precision); +<#else> + public void copyAsField(String name, MapWriter writer) { ${nullMode}${minor.class?cap_first}WriterImpl impl = (${nullMode}${minor.class?cap_first}WriterImpl) writer.${lowerName}(name); + </#if> impl.vector.copyFromSafe(idx(), impl.idx(), vector); } <#if nullMode != "Nullable"> - public void read(${minor.class?cap_first}Holder h){ + public void read(${minor.class?cap_first}Holder h) { vector.getAccessor().get(idx(), h); } </#if> - public void read(Nullable${minor.class?cap_first}Holder h){ + public void read(Nullable${minor.class?cap_first}Holder h) { vector.getAccessor().get(idx(), h); } - public ${friendlyType} read${safeType}(){ + public ${friendlyType} read${safeType}() { return vector.getAccessor().getObject(idx()); } - public void copyValue(FieldWriter w){ + public void copyValue(FieldWriter w) { } - public Object readObject(){ + public Object readObject() { return vector.getAccessor().getObject(idx()); } - </#if> } </#if> @@ -155,7 +164,7 @@ package org.apache.drill.exec.vector.complex.reader; <#include "/@includes/vv_imports.ftl" /> @SuppressWarnings("unused") -public interface ${name}Reader extends BaseReader{ +public interface ${name}Reader extends BaseReader { <#if mode == "Repeated"> public int size(); @@ -171,8 +180,11 @@ public interface ${name}Reader extends BaseReader{ </#if> public boolean isSet(); public void copyAsValue(${minor.class}Writer writer); + <#if minor.class == "VarDecimal"> + public void copyAsField(String name, ${minor.class}Writer writer, int scale, int precision); + <#else> public void copyAsField(String name, ${minor.class}Writer writer); - + </#if> } |