db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bryan Pendleton (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3094) Grouping of expressions causes NullPointerException
Date Sun, 10 Feb 2008 20:21:07 GMT

    [ https://issues.apache.org/jira/browse/DERBY-3094?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12567471#action_12567471
] 

Bryan Pendleton commented on DERBY-3094:
----------------------------------------

OK, I think I'm getting close. Note the following:
 - select a*(b/1.0), count(*) from xx group by a*(b/1.0);    -- WORKS
 - select a*(b/1.0), count(*) from xx group by a,a*(b/1.0);  -- FAILS
 - select a*(b/1.0), count(*) from xx group by a,b,a*(b/1.0);  -- WORKS

I think the problem is related to these lines in GroupByNode.java
(near line 388 or so):

			SubstituteExpressionVisitor se = 
				new SubstituteExpressionVisitor(
						gbc.getColumnExpression(),
						vc,
						AggregateNode.class);
			parent.getResultColumns().accept(se);

This code is processing the ResultColumn instances in the
"parent" (outer) PRNode to update their ColumnReference values.

But (I think) this code only updates the ColumnReference values
for those columns which are directly referenced as column references
in the grouping list. That's why the references to column "a" in the
expression are correctly fixed up, but ther references to column "b"
are not, because "b" wasn't directly in the group by list.

If true, this suggests a possible workaround: include all columns
that are mentioned by any expressions in the group by list
redundantly, as simple column references.

I'll continue to study GroupByNode.addUnAggColumns, to see if I
can construct a possible alternate way to process the columns.


> Grouping of expressions causes NullPointerException
> ---------------------------------------------------
>
>                 Key: DERBY-3094
>                 URL: https://issues.apache.org/jira/browse/DERBY-3094
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.3.1.4
>         Environment: Windows XP, Eclipse 3.2.2, java 1.5.0.11
>            Reporter: Peter Balon
>            Assignee: Bryan Pendleton
>            Priority: Critical
>
> Following steps to reproduce the bug:
> create table xx (a double, b double);
> insert into xx values (2, 3);
> select a, a*(b/100.000000), count(*) from xx  group by a, a*(b/100.000000);
> Starting run
> select a, a*(b/100.000000), count(*) from xx 
> group by a, a*(b/100.000000)
> Run successful
> SQL State = 38000 SQL Code = 20000 SQL Message = Bei der Auswertung eines Ausdrucks wurde
die Ausnahme 'java.lang.NullPointerException' ausgelöst. Exception message = java.sql.SQLException:
Bei der Auswertung eines Ausdrucks wurde die Ausnahme 'java.lang.NullPointerException' ausgelöst.
> Work around:
> select a, a*(b/100.000000), count(*) from xx group by a, b, a*(b/100.000000) 
> Stack trace from application:
> java.sql.SQLException: Bei der Auswertung eines Ausdrucks wurde die Ausnahme 'java.lang.NullPointerException'
ausgelöst.
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory.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.EmbedResultSet.closeOnTransactionError(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source)
> 	at de.arcor.billy.report.views.designer.ReportViewerView.setInput(ReportViewerView.java:255)
> 	at de.arcor.billy.report.views.designer.ReportViewerView.createPartControl(ReportViewerView.java:113)
> 	at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:332)
> 	at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:197)
> 	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:566)
> 	at org.eclipse.ui.internal.Perspective.showView(Perspective.java:1675)
> 	at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:987)
> 	at org.eclipse.ui.internal.WorkbenchPage.access$13(WorkbenchPage.java:968)
> 	at org.eclipse.ui.internal.WorkbenchPage$13.run(WorkbenchPage.java:3514)
> 	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
> 	at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3511)
> 	at de.arcor.billy.report.data.ReportDataAdvisor$2.perspectiveChanged(ReportDataAdvisor.java:268)
> 	at de.arcor.billy.system.actions.AbstractOpenPerspectiveActionDelegate$1.run(AbstractOpenPerspectiveActionDelegate.java:66)
> 	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
> 	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
> 	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3325)
> 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2971)
> 	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1930)
> 	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1894)
> 	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:422)
> 	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
> 	at de.arcor.billy.product.Billy.run(Billy.java:15)
> 	at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
> 	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
> 	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
> 	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
> 	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
> 	at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
> 	at org.eclipse.core.launcher.Main.run(Main.java:977)
> 	at org.eclipse.core.launcher.Main.main(Main.java:952)
> Caused by: java.sql.SQLException: Java-Ausnahme: ': java.lang.NullPointerException'.
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory.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)
> 	... 42 more
> Caused by: java.lang.NullPointerException
> 	at org.apache.derby.exe.ac9b638174x0115x5f93x1332x0000046fd8a01b.e10(Unknown Source)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.doProjection(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown
Source)
> 	at org.apache.derby.impl.sql.execute.ScrollInsensitiveResultSet.getNextRowFromSource(Unknown
Source)
> 	at org.apache.derby.impl.sql.execute.ScrollInsensitiveResultSet.getNextRowCore(Unknown
Source)
> 	at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(Unknown Source)
> 	... 37 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message