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)