Index: java/engine/org/apache/derby/impl/sql/compile/SubstituteExpressionVisitor.java
===================================================================
--- java/engine/org/apache/derby/impl/sql/compile/SubstituteExpressionVisitor.java	(revision 620568)
+++ java/engine/org/apache/derby/impl/sql/compile/SubstituteExpressionVisitor.java	(working copy)
@@ -68,8 +68,12 @@
 
 	public boolean skipChildren(Visitable node) 
 	{
-		return (skipOverClass == null) ?
-				false:
-				skipOverClass.isInstance(node);
+		if (skipOverClass != null && skipOverClass.isInstance(node))
+			return true;
+		if (source instanceof ColumnReference &&
+				(node instanceof ResultColumn ||
+				node instanceof ResultColumnList))
+			return true;
+		return false;
 	}
 }
Index: java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization.sql
===================================================================
--- java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization.sql	(revision 620568)
+++ java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization.sql	(working copy)
@@ -78,6 +78,7 @@
 select c1, sum(c2) from t2 group by c1;
 values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
 -- ordered, but in reverse order 
+select * from t2;
 select c2, c1, sum(c3) from t2 group by c2, c1;
 values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
 
