Randy Gelhausen created ZEPPELIN-2241:
-----------------------------------------

             Summary: JDBC interpreter throws npe on connecting to any db that 
has a schema with "null" name
                 Key: ZEPPELIN-2241
                 URL: https://issues.apache.org/jira/browse/ZEPPELIN-2241
             Project: Zeppelin
          Issue Type: Bug
          Components: Interpreters
            Reporter: Randy Gelhausen
            Assignee: Randy Gelhausen


For example, Apache Phoenix has a default schema without a name. Any JDBC 
command will throw a stacktrace on attempting to setup SQLCompleter's treemap.

I added logger statements to demonstrate the problem below:

INFO [2017-03-09 23:38:57,894] ({pool-2-thread-2} 
SqlCompleter.java[initFromConnection]:363) - Completer initialized with 0 
schemas, 0 tables and 281 keywords
 INFO [2017-03-09 23:38:57,896] ({pool-2-thread-2} 
JDBCInterpreter.java[interpret]:694) - Run SQL command 'select * from 
system.catalog'
 INFO [2017-03-09 23:38:57,896] ({pool-2-thread-2} 
JDBCInterpreter.java[interpret]:703) - PropertyKey: default, SQL command: 
'select * from system.catalog'
 INFO [2017-03-09 23:38:58,445] ({pool-2-thread-2} 
SqlCompleter.java[getSqlKeywordsCompletions]:219) - JDBC 
DriverName:/phoenix-remote-jdbc-driver-sql.keywords
 INFO [2017-03-09 23:38:58,526] ({pool-2-thread-2} 
SqlCompleter.java[getSchemaNames]:114) - FOUND SCHEMA: null
 INFO [2017-03-09 23:38:58,526] ({pool-2-thread-2} 
SqlCompleter.java[getSchemaNames]:114) - FOUND SCHEMA: SYSTEM
 INFO [2017-03-09 23:38:58,668] ({pool-2-thread-2} 
SqlCompleter.java[initSchemas]:280) - Connection has 2 schemas
 INFO [2017-03-09 23:38:58,668] ({pool-2-thread-2} 
SqlCompleter.java[initSchemas]:281) - [null, SYSTEM]
ERROR [2017-03-09 23:38:58,669] ({pool-2-thread-2} 
JDBCInterpreter.java[executeSql]:642) - Cannot run select * from system.catalog
java.lang.NullPointerException
        at java.util.TreeMap.compare(TreeMap.java:1290)
        at java.util.TreeMap.put(TreeMap.java:538)
        at java.util.TreeSet.add(TreeSet.java:255)
        at java.util.AbstractCollection.addAll(AbstractCollection.java:344)
        at java.util.TreeSet.addAll(TreeSet.java:312)
        at java.util.TreeSet.<init>(TreeSet.java:160)
        at 
org.apache.zeppelin.jdbc.SqlCompleter.initSchemas(SqlCompleter.java:283)
        at org.apache.zeppelin.jdbc.SqlCompleter.init(SqlCompleter.java:322)
        at 
org.apache.zeppelin.jdbc.SqlCompleter.initFromConnection(SqlCompleter.java:362)
        at 
org.apache.zeppelin.jdbc.JDBCInterpreter.createSqlCompleter(JDBCInterpreter.java:209)
        at 
org.apache.zeppelin.jdbc.JDBCInterpreter.getConnection(JDBCInterpreter.java:424)
        at 
org.apache.zeppelin.jdbc.JDBCInterpreter.executeSql(JDBCInterpreter.java:576)
        at 
org.apache.zeppelin.jdbc.JDBCInterpreter.interpret(JDBCInterpreter.java:704)
        at 
org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:94)
        at 
org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:495)
        at org.apache.zeppelin.scheduler.Job.run(Job.java:181)
        at 
org.apache.zeppelin.scheduler.ParallelScheduler$JobRunner.run(ParallelScheduler.java:162)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to