[ 
https://issues.apache.org/jira/browse/DRILL-5919?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16248187#comment-16248187
 ] 

ASF GitHub Bot commented on DRILL-5919:
---------------------------------------

Github user paul-rogers commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1026#discussion_r150359625
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/JsonConvertTo.java
 ---
    @@ -90,7 +91,71 @@ public void eval(){
     
           java.io.ByteArrayOutputStream stream = new 
java.io.ByteArrayOutputStream();
           try {
    -        org.apache.drill.exec.vector.complex.fn.JsonWriter jsonWriter = 
new org.apache.drill.exec.vector.complex.fn.JsonWriter(stream, true, true);
    +        org.apache.drill.exec.vector.complex.fn.JsonWriter jsonWriter = 
new org.apache.drill.exec.vector.complex.fn.JsonWriter(stream, true, true, 
false);
    +
    +        jsonWriter.write(input);
    +      } catch (Exception e) {
    +        throw new RuntimeException(e);
    +      }
    +
    +      byte [] bytea = stream.toByteArray();
    +
    +      out.buffer = buffer = buffer.reallocIfNeeded(bytea.length);
    +      out.buffer.setBytes(0, bytea);
    +      out.end = bytea.length;
    +    }
    +  }
    +
    +  @FunctionTemplate(names = { "convert_toJSON", "convert_toSIMPLEJSON" } , 
scope = FunctionScope.SIMPLE, nulls = NullHandling.NULL_IF_NULL)
    +  public static class ConvertToJsonNonNumeric implements DrillSimpleFunc{
    +
    +    @Param FieldReader input;
    +    @Param BitHolder nonNumeric;
    +    @Output VarBinaryHolder out;
    +    @Inject DrillBuf buffer;
    +
    +    public void setup(){
    +    }
    +
    +    public void eval(){
    +      out.start = 0;
    +
    +      java.io.ByteArrayOutputStream stream = new 
java.io.ByteArrayOutputStream();
    +      try {
    +        org.apache.drill.exec.vector.complex.fn.JsonWriter jsonWriter = 
new org.apache.drill.exec.vector.complex.fn.JsonWriter(stream, true, false,
    --- End diff --
    
    More copies.


> Add non-numeric support for JSON processing
> -------------------------------------------
>
>                 Key: DRILL-5919
>                 URL: https://issues.apache.org/jira/browse/DRILL-5919
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Storage - JSON
>    Affects Versions: 1.11.0
>            Reporter: Volodymyr Tkach
>            Assignee: Volodymyr Tkach
>              Labels: doc-impacting
>             Fix For: Future
>
>
> Add session options to allow drill working with non standard json strings 
> number literals like: NaN, Infinity, -Infinity. By default these options will 
> be switched off, the user will be able to toggle them during working session.
> *For documentation*
> 1. Added two session options {{store.json.reader.non_numeric_numbers}} and 
> {{store.json.reader.non_numeric_numbers}} that allow to read/write NaN and 
> Infinity as numbers. By default these options are set to false.
> 2. Extended signature of {{convert_toJSON}} and {{convert_fromJSON}} 
> functions by adding second optional parameter that enables read/write NaN and 
> Infinity.
> For example:
> {noformat}
> select convert_fromJSON('{"key": NaN}') from (values(1)); will result with 
> JsonParseException, but
> select convert_fromJSON('{"key": NaN}', true) from (values(1)); will parse 
> NaN as a number.
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to