aboutsummaryrefslogtreecommitdiff
path: root/exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java
diff options
context:
space:
mode:
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.java19
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;
+ }
}