diff options
Diffstat (limited to 'exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java')
-rw-r--r-- | exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java b/exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java index 73b2b551e..d1cc3b4a1 100644 --- a/exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java +++ b/exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java @@ -37,6 +37,7 @@ import org.apache.drill.exec.expr.holders.NullableBitHolder; import org.apache.drill.exec.expr.holders.TimeHolder; import org.apache.drill.exec.expr.holders.TimeStampHolder; import org.apache.drill.exec.expr.holders.VarCharHolder; +import org.apache.drill.exec.expr.holders.VarDecimalHolder; import org.apache.drill.exec.memory.BufferAllocator; import org.apache.drill.exec.util.DecimalUtility; @@ -200,4 +201,22 @@ public class ValueHolderHelper { return dch; } + + public static VarDecimalHolder getVarDecimalHolder(DrillBuf buf, String decimal) { + VarDecimalHolder dch = new VarDecimalHolder(); + + BigDecimal bigDecimal = new BigDecimal(decimal); + + byte[] bytes = bigDecimal.unscaledValue().toByteArray(); + int length = bytes.length; + + dch.scale = bigDecimal.scale(); + dch.precision = bigDecimal.precision(); + dch.start = 0; + dch.end = length; + dch.buffer = buf.reallocIfNeeded(length); + dch.buffer.setBytes(0, bytes); + + return dch; + } } |