diff options
Diffstat (limited to 'exec/java-exec/src/main/codegen/templates/NumericToCharFunctions.java')
-rw-r--r-- | exec/java-exec/src/main/codegen/templates/NumericToCharFunctions.java | 65 |
1 files changed, 28 insertions, 37 deletions
diff --git a/exec/java-exec/src/main/codegen/templates/NumericToCharFunctions.java b/exec/java-exec/src/main/codegen/templates/NumericToCharFunctions.java index 3fc45dffb..b192be36e 100644 --- a/exec/java-exec/src/main/codegen/templates/NumericToCharFunctions.java +++ b/exec/java-exec/src/main/codegen/templates/NumericToCharFunctions.java @@ -48,45 +48,36 @@ import java.text.DecimalFormat; * This class is generated using freemarker and the ${.template_name} template. */ @SuppressWarnings("unused") -@FunctionTemplate(name = "to_char", scope = FunctionTemplate.FunctionScope.SIMPLE, nulls = NullHandling.NULL_IF_NULL) +@FunctionTemplate(name = "to_char", + scope = FunctionTemplate.FunctionScope.SIMPLE, + nulls = NullHandling.NULL_IF_NULL) public class G${type}ToChar implements DrillSimpleFunc { - @Param ${type}Holder left; - @Param VarCharHolder right; - @Inject DrillBuf buffer; - @Workspace java.text.NumberFormat outputFormat; - @Output VarCharHolder out; + @Param ${type}Holder left; + @Param VarCharHolder right; + @Inject DrillBuf buffer; + @Workspace java.text.NumberFormat outputFormat; + @Output VarCharHolder out; - public void setup() { - buffer = buffer.reallocIfNeeded(100); - byte[] buf = new byte[right.end - right.start]; - right.buffer.getBytes(right.start, buf, 0, right.end - right.start); - String inputFormat = new String(buf); - outputFormat = new java.text.DecimalFormat(inputFormat); - } + public void setup() { + buffer = buffer.reallocIfNeeded(100); + byte[] buf = new byte[right.end - right.start]; + right.buffer.getBytes(right.start, buf, 0, right.end - right.start); + String inputFormat = new String(buf); + outputFormat = new java.text.DecimalFormat(inputFormat); + } - public void eval() { - - <#if type == "VarDecimal"> - java.math.BigDecimal bigDecimal = org.apache.drill.exec.util.DecimalUtility.getBigDecimalFromDrillBuf(left.buffer, left.start, left.end - left.start, left.scale); - String str = outputFormat.format(bigDecimal); - <#elseif type == "Decimal9" || type == "Decimal18"> - java.math.BigDecimal bigDecimal = new java.math.BigDecimal(java.math.BigInteger.valueOf(left.value), left.scale); - String str = outputFormat.format(bigDecimal); - <#elseif type == "Decimal28Sparse" || type == "Decimal38Sparse"> - java.math.BigDecimal bigDecimal = org.apache.drill.exec.util.DecimalUtility.getBigDecimalFromDrillBuf(left.buffer, left.start, left.nDecimalDigits, left.scale, true); - String str = outputFormat.format(bigDecimal); - <#elseif type == "Decimal28Dense" || type == "Decimal38Dense"> - java.math.BigDecimal bigDecimal = org.apache.drill.exec.util.DecimalUtility.getBigDecimalFromDense(left.buffer, left.start, left.nDecimalDigits, left.scale, left.maxPrecision, left.WIDTH); - String str = outputFormat.format(bigDecimal); - <#else> - String str = outputFormat.format(left.value); - </#if> - out.buffer = buffer; - out.start = 0; - out.end = Math.min(100, str.length()); // truncate if target type has length smaller than that of input's string - out.buffer.setBytes(0, str.substring(0,out.end).getBytes()); - - } + public void eval() { + <#if type == "VarDecimal"> + java.math.BigDecimal bigDecimal = org.apache.drill.exec.util.DecimalUtility.getBigDecimalFromDrillBuf(left.buffer, left.start, left.end - left.start, left.scale); + String str = outputFormat.format(bigDecimal); + <#else> + String str = outputFormat.format(left.value); + </#if> + out.buffer = buffer; + out.start = 0; + out.end = Math.min(100, str.length()); // truncate if target type has length smaller than that of input's string + out.buffer.setBytes(0, str.substring(0, out.end).getBytes()); + } } -</#list>
\ No newline at end of file +</#list> |