You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "jean-claude (JIRA)" <ji...@apache.org> on 2016/08/22 14:28:20 UTC

[jira] [Commented] (DRILL-4858) REPEATED_COUNT on JSON containing an array of maps

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

jean-claude commented on DRILL-4858:
------------------------------------

Enabling these functions reveals the problem.
{code}
Error: SYSTEM ERROR: CompileException: Line 61, Column 22: "end" is neither a method, a field, nor a member class of "org.apache.drill.exec.vector.complex.reader.FieldReader"

Fragment 0:0

[Error Id: d21af24d-4340-4f13-8279-51560bb83151 on 192.168.1.3:31010] (state=,code=0)
{code}

This is due to the fact that the code generation for a RepeatedMapHolder seems to be wrong. Instead of providing a RepeatedMapHolder it provides a FieldReader. Here's the code generated.

{code}
   public void doEval(int inIndex, int outIndex)
        throws SchemaChangeException
    {
        {
            ComplexHolder out3 = new ComplexHolder();
            complex:
            vv0 .getReader().reset();
            vv0 .getReader().setPosition((inIndex));
            reader4 = vv0 .getReader();
            //---- start of eval portion of repeated_count function. ----//
            IntHolder out5 = new IntHolder();
            {
                final IntHolder out = new IntHolder();
                FieldReader input = reader4;
                 
SimpleRepeatedFunctions$RepeatedLengthMap_eval: {
    out.value = input.end - input.start;
}
 
                out5 = out;
            }
            //---- end of eval portion of repeated_count function. ----//
            vv6 .getMutator().set((outIndex), out5 .value);
        }
    }
{code}


> REPEATED_COUNT on JSON containing an array of maps
> --------------------------------------------------
>
>                 Key: DRILL-4858
>                 URL: https://issues.apache.org/jira/browse/DRILL-4858
>             Project: Apache Drill
>          Issue Type: Bug
>            Reporter: jean-claude
>            Priority: Minor
>
> REPEATED_COUNT of JSON containing an array of map does not work.
> JSON file
> {code}
> drill$ cat /Users/jccote/repeated_count.json 
> {"intArray": [1,2,3,4], "mapArray": [{"name": "foo"},{"name": "foo"}], "label": "foo"}
> {"intArray": [1,2,3,4], "mapArray": [{"name": "foo"},{"name": "foo"}], "label": "foo"}
> {"intArray": [1,2,3,4], "mapArray": [{"name": "foo"},{"name": "foo"}], "label": "foo"}
> {"intArray": [1,2,3,4], "mapArray": [{"name": "foo"},{"name": "foo"}], "label": "foo"}
> {"intArray": [1,2,3,4], "mapArray": [{"name": "foo"},{"name": "foo"}], "label": "foo"}
> {"intArray": [1,2,3,4], "mapArray": [{"name": "foo"},{"name": "foo"}], "label": "foo"}
> {"intArray": [1,2,3,4], "mapArray": [{"name": "foo"},{"name": "foo"}], "label": "foo"}
> {"intArray": [1,2,3,4], "mapArray": [{"name": "foo"},{"name": "foo"}], "label": "foo"}
> {code}
> select
> {code}
> 0: jdbc:drill:zk=local> select repeated_count(mapArray) from dfs.`/Users/jccote/repeated_count.json`;
> {code}
> error
> {code}
> Error: SYSTEM ERROR: SchemaChangeException: Failure while trying to materialize incoming schema.  Errors:
>  
> Error in expression at index -1.  Error: Missing function implementation: [repeated_count(MAP-REPEATED)].  Full expression: --UNKNOWN EXPRESSION--..
> Fragment 0:0
> [Error Id: 1057bb8e-1cc4-4a9a-a748-3a6a14092858 on 192.168.1.3:31010] (state=,code=0)
> {code}
> Looking at the org.apache.drill.exec.expr.fn.impl.SimpleRepeatedFunctions
> Looks like it's not enabled yet. 
> {code}
>   // TODO - need to confirm that these work   SMP: They do not
>   @FunctionTemplate(name = "repeated_count", scope = FunctionTemplate.FunctionScope.SIMPLE)
>   public static class RepeatedLengthMap implements DrillSimpleFunc {
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)