diff options
Diffstat (limited to 'exec/vector/src/main/codegen/templates/HolderReaderImpl.java')
-rw-r--r-- | exec/vector/src/main/codegen/templates/HolderReaderImpl.java | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/exec/vector/src/main/codegen/templates/HolderReaderImpl.java b/exec/vector/src/main/codegen/templates/HolderReaderImpl.java index e46989ba5..4b7be4fd7 100644 --- a/exec/vector/src/main/codegen/templates/HolderReaderImpl.java +++ b/exec/vector/src/main/codegen/templates/HolderReaderImpl.java @@ -42,6 +42,7 @@ import java.math.BigDecimal; import java.math.BigInteger; import org.apache.drill.exec.expr.holders.*; +import org.apache.drill.exec.expr.BasicTypeHelper; import org.joda.time.Period; // Source code generated using FreeMarker template ${.template_name} @@ -96,10 +97,14 @@ public class ${holderMode}${name}HolderReaderImpl extends AbstractFieldReader { @Override public MajorType getType() { -<#if holderMode == "Repeated"> - return this.repeatedHolder.TYPE; +<#if name?contains("Decimal")> + return BasicTypeHelper.getType(holder); <#else> + <#if holderMode == "Repeated"> + return this.repeatedHolder.TYPE; + <#else> return this.holder.TYPE; + </#if> </#if> } @@ -161,7 +166,7 @@ public class ${holderMode}${name}HolderReaderImpl extends AbstractFieldReader { <#if minor.class == "VarBinary"> return value; <#elseif minor.class == "VarDecimal"> - return org.apache.drill.exec.util.DecimalUtility.getBigDecimalFromDrillBuf(holder.buffer, holder.start, holder.end-holder.start, holder.scale); + return org.apache.drill.exec.util.DecimalUtility.getBigDecimalFromDrillBuf(holder.buffer, holder.start, holder.end - holder.start, holder.scale); <#elseif minor.class == "Var16Char"> return new String(value); <#elseif minor.class == "VarChar"> @@ -236,7 +241,7 @@ public class ${holderMode}${name}HolderReaderImpl extends AbstractFieldReader { <#if minor.class == "VarBinary"> return value; <#elseif minor.class == "VarDecimal"> - return org.apache.drill.exec.util.DecimalUtility.getBigDecimalFromDrillBuf(holder.buffer, holder.start, holder.end-holder.start, holder.scale); + return org.apache.drill.exec.util.DecimalUtility.getBigDecimalFromDrillBuf(holder.buffer, holder.start, holder.end - holder.start, holder.scale); <#elseif minor.class == "Var16Char"> return new String(value); <#elseif minor.class == "VarChar"> |