[ 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)