Return-Path: X-Original-To: apmail-db-derby-dev-archive@www.apache.org Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2245DDF4B for ; Tue, 10 Jul 2012 11:44:39 +0000 (UTC) Received: (qmail 21772 invoked by uid 500); 10 Jul 2012 11:44:39 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 21675 invoked by uid 500); 10 Jul 2012 11:44:37 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 20384 invoked by uid 99); 10 Jul 2012 11:44:35 -0000 Received: from issues-vm.apache.org (HELO issues-vm) (140.211.11.160) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Jul 2012 11:44:35 +0000 Received: from isssues-vm.apache.org (localhost [127.0.0.1]) by issues-vm (Postfix) with ESMTP id D24EA141BF8 for ; Tue, 10 Jul 2012 11:44:34 +0000 (UTC) Date: Tue, 10 Jul 2012 11:44:34 +0000 (UTC) From: "Knut Anders Hatlen (JIRA)" To: derby-dev@db.apache.org Message-ID: <960517650.27739.1341920674864.JavaMail.jiratomcat@issues-vm> In-Reply-To: <38722488.41708.1324619490910.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (DERBY-5554) NullPointerException in generated VTI code MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/DERBY-5554?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13410266#comment-13410266 ] Knut Anders Hatlen commented on DERBY-5554: ------------------------------------------- If I understand the description of the 04-ab patch, it should not be dependent on the join order. That makes me wonder from which row in the base table it reads the value that it passes as an argument to the VTI, if the VTI happens to be the outer table in the join. Will the VTI be executed just once, with the value taken from the first row in the base table? I tried to test it by forcing the join order with an optimizer override, but then I just got "ERROR 42Y70: The user specified an illegal join order. This could be caused by a join column from an inner table being passed as a parameter to an external virtual table." So it may be that the optimizer knows not to use the VTI as the outer table, but it's not entirely obvious to me. I tried a variant of Bryan's original query, just with a different ordering of the FROM list, and I'm afraid I still see a NullPointerException with the 04-ab patch: ij> create table t1(x int); 0 rows inserted/updated/deleted ij> create table t2(y int); 0 rows inserted/updated/deleted ij> SELECT T2.*, systabs.*, syscgs.conglomeratenumber FROM sys.sysconglomerates syscgs, TABLE (SYSCS_DIAG.SPACE_TABLE(systabs.tablename)) AS T2, SYS.SYSTABLES systabs WHERE systabs.tabletype = 'T' and systabs.tableid = syscgs.tableid; ERROR 38000: The exception 'java.lang.NullPointerException' was thrown while evaluating an expression. (errorCode = 20000) ERROR XJ001: Java exception: ': java.lang.NullPointerException'. (errorCode = 20000) > NullPointerException in generated VTI code > ------------------------------------------ > > Key: DERBY-5554 > URL: https://issues.apache.org/jira/browse/DERBY-5554 > Project: Derby > Issue Type: Bug > Components: SQL > Affects Versions: 10.3.1.4, 10.4.1.3, 10.5.1.1, 10.6.1.0, 10.7.1.1, 10.8.2.2 > Reporter: Bryan Pendleton > Assignee: Rick Hillegas > Labels: derby_triage10_9 > Attachments: derby-5554-01-aa-addTableIDcolumn.diff, derby-5554-01-ab-addTableIDcolumn.diff, derby-5554-02-aa-0argConstructor.diff, derby-5554-03-aa-forbidVTItoVTIjoins.diff, derby-5554-04-aa-forceVTIAfterJoin.diff, derby-5554-04-ab-remapVTIarg.diff, releaseNote.html, releaseNote.html > > > With the latest 10.8.2.2 binary distribution, the following short script produces a NullPointerException: > java -Dij.exceptionTrace=true org.apache.derby.tools.ij > ij> connect 'jdbc:derby:brydb;create=true'; > ij> create table t1 (a int); > ij> SELECT T2.*, systabs.*, syscgs.conglomeratenumber > FROM > SYS.SYSTABLES systabs, sys.sysconglomerates syscgs, > TABLE (SYSCS_DIAG.SPACE_TABLE(systabs.tablename)) AS T2 > WHERE systabs.tabletype = 'T' and systabs.tableid = syscgs.tableid; > The exception trace is pasted below: > ERROR 38000: The exception 'java.lang.NullPointerException' was thrown while evaluating an expression. > java.sql.SQLException: The exception 'java.lang.NullPointerException' was thrown while evaluating an expression. > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source) > at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source) > at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source) > at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source) > at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source) > at org.apache.derby.impl.tools.ij.Main.go(Unknown Source) > at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source) > at org.apache.derby.impl.tools.ij.Main.main(Unknown Source) > at org.apache.derby.tools.ij.main(Unknown Source) > Caused by: java.sql.SQLException: The exception 'java.lang.NullPointerException' was thrown while evaluating an expression. > at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) > ... 18 more > Caused by: java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > ... 15 more > Caused by: java.lang.NullPointerException > at org.apache.derby.exe.acf81e0010x0134x6972x0511x0000033820000.g0(Unknown Source) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:616) > at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(Unknown Source) > at org.apache.derby.impl.sql.execute.VTIResultSet.openCore(Unknown Source) > at org.apache.derby.impl.sql.execute.JoinResultSet.openRight(Unknown Source) > at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source) > at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source) > at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown Source) > at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source) > ... 11 more > ERROR XJ001: Java exception: ': java.lang.NullPointerException'. > java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source) > at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source) > at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source) > at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source) > at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source) > at org.apache.derby.impl.tools.ij.Main.go(Unknown Source) > at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source) > at org.apache.derby.impl.tools.ij.Main.main(Unknown Source) > at org.apache.derby.tools.ij.main(Unknown Source) > Caused by: java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) > ... 19 more > Caused by: java.lang.NullPointerException > at org.apache.derby.exe.acf81e0010x0134x6972x0511x0000033820000.g0(Unknown Source) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:616) > at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(Unknown Source) > at org.apache.derby.impl.sql.execute.VTIResultSet.openCore(Unknown Source) > at org.apache.derby.impl.sql.execute.JoinResultSet.openRight(Unknown Source) > at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source) > at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source) > at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown Source) > at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source) > ... 11 more -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira