Mehant Baid created DRILL-550:
---------------------------------

             Summary: NPE while using custom Drill functions
                 Key: DRILL-550
                 URL: https://issues.apache.org/jira/browse/DRILL-550
             Project: Apache Drill
          Issue Type: New Feature
            Reporter: Mehant Baid
            Assignee: Mehant Baid


Following is the stack trace for the query:
"select repeated_count(A) from dfs.`/tmp/input.json`; "

java.lang.NullPointerException

at 
org.eigenbase.sql.util.ReflectiveSqlOperatorTable.lookupOperatorOverloads(ReflectiveSqlOperatorTable.java:88)
 ~[optiq-core-0.6.jar:na]

at 
org.apache.drill.exec.planner.sql.DrillOperatorTable.lookupOperatorOverloads(DrillOperatorTable.java:76)
 
~[drill-java-exec-1.0.0-m2-incubating-SNAPSHOT-rebuffed.jar:1.0.0-m2-incubating-SNAPSHOT]

at org.eigenbase.sql.validate.AggFinder.visit(AggFinder.java:92) 
~[optiq-core-0.6.jar:na]

at org.eigenbase.sql.validate.AggFinder.visit(AggFinder.java:32) 
~[optiq-core-0.6.jar:na]

at org.eigenbase.sql.SqlCall.accept(SqlCall.java:133) ~[optiq-core-0.6.jar:na]

at org.eigenbase.sql.util.SqlBasicVisitor.visit(SqlBasicVisitor.java:44) 
~[optiq-core-0.6.jar:na]

at org.eigenbase.sql.SqlNodeList.accept(SqlNodeList.java:149) 
~[optiq-core-0.6.jar:na]

at org.eigenbase.sql.validate.AggFinder.findAgg(AggFinder.java:62) 
~[optiq-core-0.6.jar:na]

at 
org.eigenbase.sql.validate.SqlValidatorImpl.getAgg(SqlValidatorImpl.java:2316) 
~[optiq-core-0.6.jar:na]

at 
org.eigenbase.sql.validate.SqlValidatorImpl.isAggregate(SqlValidatorImpl.java:2303)
 ~[optiq-core-0.6.jar:na]

at 
org.eigenbase.sql.validate.SqlValidatorImpl.registerQuery(SqlValidatorImpl.java:1997)
 ~[optiq-core-0.6.jar:na]

at 
org.eigenbase.sql.validate.SqlValidatorImpl.registerQuery(SqlValidatorImpl.java:1921)
 ~[optiq-core-0.6.jar:na]

at 
org.eigenbase.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:708)
 ~[optiq-core-0.6.jar:na]

at 
org.eigenbase.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:426) 
~[optiq-core-0.6.jar:na]

at net.hydromatic.optiq.prepare.PlannerImpl.validate(PlannerImpl.java:170) 
~[optiq-core-0.6.jar:na]

at 
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateNode(DefaultSqlHandler.java:101)
 
~[drill-java-exec-1.0.0-m2-incubating-SNAPSHOT-rebuffed.jar:1.0.0-m2-incubating-SNAPSHOT]

at 
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan(DefaultSqlHandler.java:86)
 
~[drill-java-exec-1.0.0-m2-incubating-SNAPSHOT-rebuffed.jar:1.0.0-m2-incubating-SNAPSHOT]

at 
org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:85)
 
~[drill-java-exec-1.0.0-m2-incubating-SNAPSHOT-rebuffed.jar:1.0.0-m2-incubating-SNAPSHOT]

at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:323) 
[drill-java-exec-1.0.0-m2-incubating-SNAPSHOT-rebuffed.jar:1.0.0-m2-incubating-SNAPSHOT]

at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:175) 
[drill-java-exec-1.0.0-m2-incubating-SNAPSHOT-rebuffed.jar:1.0.0-m2-incubating-SNAPSHOT]

at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
[na:1.7.0_51]

at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
[na:1.7.0_51]

at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51]



In DrillOperatorTable while looking up a given operator we hit NPE because the 
SqlIdentifier passed in is NULL. While registering Drill functions as Optiq's 
SqlFunction we need to use the constructor for user defined functions. 
Currently we use the same constructor as used for built-in functions where the 
SqlIdentifier is not set.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to