Github user paul-rogers commented on a diff in the pull request:
https://github.com/apache/drill/pull/1026#discussion_r150359565
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/JsonConvertFrom.java
---
@@ -91,4 +92,60 @@ public void eval(){
}
}
+ @FunctionTemplate(name = "convert_fromJSON", scope =
FunctionScope.SIMPLE, nulls = NullHandling.NULL_IF_NULL, isRandom = true)
+ public static class ConvertFromJsonVarcharNonNumerics implements
DrillSimpleFunc{
+
+ @Param VarCharHolder in;
+ @Param BitHolder enableNonNumeric;
+ @Inject DrillBuf buffer;
+ @Workspace org.apache.drill.exec.vector.complex.fn.JsonReader
jsonReader;
+
+ @Output ComplexWriter writer;
+
+ public void setup(){
+ jsonReader = new
org.apache.drill.exec.vector.complex.fn.JsonReader(buffer, false, false,
false,/* do not read numbers as doubles */
+ enableNonNumeric.value == 1);
+ }
+
+ public void eval(){
+ try {
+ jsonReader.setSource(in.start, in.end, in.buffer);
+ jsonReader.write(writer);
+ buffer = jsonReader.getWorkBuf();
+
+ } catch (Exception e) {
+ throw new
org.apache.drill.common.exceptions.DrillRuntimeException("Error while
converting from JSON. ", e);
+ }
+ }
+ }
+
+ @FunctionTemplate(name = "convert_fromJSON", scope =
FunctionScope.SIMPLE, nulls = NullHandling.NULL_IF_NULL, isRandom = true)
+ public static class ConvertFromJsonNonNumerics implements
DrillSimpleFunc{
+
+ @Param VarBinaryHolder in;
+ @Param BitHolder enableNonNumeric;
+ @Inject DrillBuf buffer;
+ @Workspace org.apache.drill.exec.vector.complex.fn.JsonReader
jsonReader;
+
+ @Output ComplexWriter writer;
+
+ public void setup(){
+ jsonReader = new
org.apache.drill.exec.vector.complex.fn.JsonReader(buffer, false, false, false,
/* do not read numbers as doubles */
--- End diff --
See above. We really don't want all these duplicate copies.
---