You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by "Mehant Baid (JIRA)" <ji...@apache.org> on 2014/04/21 02:38:14 UTC

[jira] [Created] (DRILL-550) NPE while using custom Drill functions

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)