[teiid-commits] teiid SVN: r1145 - in trunk/engine/src: test/java/com/metamatrix/query/optimizer/relational and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Fri Jul 17 10:43:11 EDT 2009


Author: shawkins
Date: 2009-07-17 10:43:11 -0400 (Fri, 17 Jul 2009)
New Revision: 1145

Modified:
   trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/AliasGenerator.java
   trunk/engine/src/test/java/com/metamatrix/query/optimizer/relational/TestAliasGenerator.java
Log:
TEIID-514 update to order by alias generation to not change unrelated output names.

Modified: trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/AliasGenerator.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/AliasGenerator.java	2009-07-17 11:08:06 UTC (rev 1144)
+++ trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/AliasGenerator.java	2009-07-17 14:43:11 UTC (rev 1145)
@@ -330,29 +330,27 @@
         for (int i = 0; i < obj.getVariableCount(); i++) {
             SingleElementSymbol element = obj.getVariable(i);
             String name = visitor.namingContext.getElementName(element, false);
-            boolean needsAlias = true;
-            
-            Expression expr = SymbolMap.getExpression(element);
-                        
-            if (!(expr instanceof SingleElementSymbol)) {
-                expr = new ExpressionSymbol(element.getShortName(), expr);
-            } else if (expr instanceof ElementSymbol) {
-                needsAlias = needsAlias(name, (ElementSymbol)expr);
-            } 
-                        
-            if (needsAlias) {
-                element = new AliasSymbol(element.getShortName(), (SingleElementSymbol)expr);
-                obj.getVariables().set(i, element);
+            if (name != null) {
+	            boolean needsAlias = true;
+	            
+	            Expression expr = SymbolMap.getExpression(element);
+	                        
+	            if (!(expr instanceof SingleElementSymbol)) {
+	                expr = new ExpressionSymbol(element.getShortName(), expr);
+	            } else if (expr instanceof ElementSymbol) {
+	                needsAlias = needsAlias(name, (ElementSymbol)expr);
+	            } 
+	                        
+	            if (needsAlias) {
+	                element = new AliasSymbol(element.getShortName(), (SingleElementSymbol)expr);
+	                obj.getVariables().set(i, element);
+	            }
+	            element.setOutputName(name);
             }
-            element.setOutputName(name);
-        }
-        
-        super.visit(obj);
-        
-        //we prefer to use the short name
-        for (int i = 0; i < obj.getVariableCount(); i++) {
-        	SingleElementSymbol element = obj.getVariable(i);
-        	if (element instanceof ElementSymbol) {
+            
+            visitNode(element);
+            
+            if (name != null && element instanceof ElementSymbol) {
         		element.setOutputName(SingleElementSymbol.getShortName(element.getOutputName()));
         	}
         }

Modified: trunk/engine/src/test/java/com/metamatrix/query/optimizer/relational/TestAliasGenerator.java
===================================================================
--- trunk/engine/src/test/java/com/metamatrix/query/optimizer/relational/TestAliasGenerator.java	2009-07-17 11:08:06 UTC (rev 1144)
+++ trunk/engine/src/test/java/com/metamatrix/query/optimizer/relational/TestAliasGenerator.java	2009-07-17 14:43:11 UTC (rev 1145)
@@ -22,8 +22,10 @@
 
 package com.metamatrix.query.optimizer.relational;
 
-import junit.framework.TestCase;
+import static org.junit.Assert.*;
 
+import org.junit.Test;
+
 import com.metamatrix.api.exception.query.QueryValidatorException;
 import com.metamatrix.query.metadata.QueryMetadataInterface;
 import com.metamatrix.query.parser.QueryParser;
@@ -36,7 +38,7 @@
 import com.metamatrix.query.sql.symbol.SingleElementSymbol;
 import com.metamatrix.query.unittest.FakeMetadataFactory;
 
-public class TestAliasGenerator extends TestCase {
+public class TestAliasGenerator {
     
     private Command helpTest(String sql,
                           String expected, 
@@ -52,7 +54,7 @@
     /**
      * Ensures that views are named with v_ even without metadata
      */
-    public void testViewAliasing() throws Exception {
+    @Test public void testViewAliasing() throws Exception {
         String sql = "select y.e1 from (select pm1.g1.e1 from pm1.g1) y"; //$NON-NLS-1$
         Query command = (Query)QueryParser.getQueryParser().parseCommand(sql);
         ((ElementSymbol)command.getSelect().getSymbol(0)).setGroupSymbol(new GroupSymbol("y")); //$NON-NLS-1$
@@ -60,13 +62,13 @@
         assertEquals("SELECT v_0.c_0 FROM (SELECT pm1.g1.e1 AS c_0 FROM pm1.g1 AS g_0) AS v_0", command.toString()); //$NON-NLS-1$
     }
     
-    public void testLongOrderByAlias() throws Exception {
+    @Test public void testLongOrderByAlias() throws Exception {
         String sql = "select pm1.g1.e1 || pm1.g1.e2 as asfasdfadfasdfasdfadfasdfadsfasdfasdfasdfasdfasdfadfa, pm1.g1.e2 from pm1.g1 order by asfasdfadfasdfasdfadfasdfadsfasdfasdfasdfasdfasdfadfa"; //$NON-NLS-1$
         String expected = "SELECT concat(g_0.e1, g_0.e2) AS c_0, g_0.e2 AS c_1 FROM pm1.g1 AS g_0 ORDER BY c_0"; //$NON-NLS-1$
         helpTest(sql, expected, true, FakeMetadataFactory.example1Cached());
     }
     
-    public void testOrderBySymbolName() throws Exception {
+    @Test public void testOrderBySymbolName() throws Exception {
         String sql = "select e1 from pm1.g1 order by e1"; //$NON-NLS-1$
         String expected = "SELECT g_0.e1 AS c_0 FROM pm1.g1 AS g_0 ORDER BY c_0"; //$NON-NLS-1$
         Query command = (Query)helpTest(sql, expected, true, FakeMetadataFactory.example1Cached());
@@ -74,64 +76,70 @@
         assertEquals(((SingleElementSymbol)command.getProjectedSymbols().get(0)).getShortName(), "e1"); //$NON-NLS-1$
     }
     
-    public void testInlineViewWithSubQuery() throws Exception {
+    @Test public void testInlineViewWithSubQuery() throws Exception {
         String sql = "select intnum from (select intnum from bqt1.smallb where intnum in (select intnum a from bqt1.smalla)) b"; //$NON-NLS-1$
         String expected = "SELECT v_0.c_0 FROM (SELECT g_0.intnum AS c_0 FROM bqt1.smallb AS g_0 WHERE g_0.intnum IN (SELECT g_1.intnum FROM bqt1.smalla AS g_1)) AS v_0"; //$NON-NLS-1$
         helpTest(sql, expected, true, FakeMetadataFactory.exampleBQTCached());
     }
     
-    public void testInlineViewOrderBy() throws Exception {
+    @Test public void testInlineViewOrderBy() throws Exception {
         String sql = "select intnum from (select intnum from bqt1.smallb) b order by b.intnum"; //$NON-NLS-1$
         String expected = "SELECT v_0.c_0 FROM (SELECT g_0.intnum AS c_0 FROM bqt1.smallb AS g_0) AS v_0 ORDER BY c_0"; //$NON-NLS-1$
         helpTest(sql, expected, true, FakeMetadataFactory.exampleBQTCached());
     }
     
-    public void testNestedInlineViewOrderBy() throws Exception {
+    @Test public void testNestedInlineViewOrderBy() throws Exception {
         String sql = "select * from (select intnum x from (select intnum from bqt1.smallb) b order by x) y order by x"; //$NON-NLS-1$
         String expected = "SELECT v_1.c_0 FROM (SELECT v_0.c_0 FROM (SELECT g_0.intnum AS c_0 FROM bqt1.smallb AS g_0) AS v_0) AS v_1 ORDER BY c_0"; //$NON-NLS-1$
         helpTest(sql, expected, true, FakeMetadataFactory.exampleBQTCached());
     }
     
-    public void testInlineViewWithOnClause() throws Exception {
+    @Test public void testInlineViewWithOnClause() throws Exception {
         String sql = "select abcd.efg from (select intkey as efg from bqt1.smalla) abcd inner join (select intnum from bqt1.smallb) b on (b.intnum = abcd.efg)"; //$NON-NLS-1$
         String expected = "SELECT v_0.c_0 FROM (SELECT g_0.intkey AS c_0 FROM bqt1.smalla AS g_0) AS v_0 INNER JOIN (SELECT g_1.intnum AS c_0 FROM bqt1.smallb AS g_1) AS v_1 ON v_1.c_0 = v_0.c_0"; //$NON-NLS-1$
         helpTest(sql, expected, true, FakeMetadataFactory.exampleBQTCached());
     }
 
-    public void testUnionOrderBy() throws Exception {
+    @Test public void testUnionOrderBy() throws Exception {
         String sql = "select e1, e2 as c_0 from pm1.g1 union all select 1, e1 from pm1.g2 order by e1"; //$NON-NLS-1$
         String expected = "SELECT g_1.e1 AS c_0, g_1.e2 AS c_1 FROM pm1.g1 AS g_1 UNION ALL SELECT '1' AS c_0, g_0.e1 AS c_1 FROM pm1.g2 AS g_0 ORDER BY c_0"; //$NON-NLS-1$
         helpTest(sql, expected, true, FakeMetadataFactory.example1Cached());
     }
     
-    public void testDuplicateShortElementName() throws Exception {
+    @Test public void testDuplicateShortElementName() throws Exception {
     	String sql = "select pm1.g1.e1, pm1.g2.e1 from pm1.g1, pm1.g2 order by pm1.g1.e1, pm1.g2.e1"; //$NON-NLS-1$
         String expected = "SELECT g_0.e1 AS c_0, g_1.e1 AS c_1 FROM pm1.g1 AS g_0, pm1.g2 AS g_1 ORDER BY c_0, c_1"; //$NON-NLS-1$
         helpTest(sql, expected, true, FakeMetadataFactory.example1Cached());
     }
     
-    public void testCorrelatedRefernce() throws Exception {
+    @Test public void testCorrelatedRefernce() throws Exception {
     	String sql = "select intnum, stringnum from (select intnum, stringnum from bqt1.smallb) b where intnum in (select b.stringnum || b.intnum from (select intnum from bqt1.smalla) b) "; //$NON-NLS-1$
         String expected = "SELECT v_0.c_0, v_0.c_1 FROM (SELECT g_0.intnum AS c_0, g_0.stringnum AS c_1 FROM bqt1.smallb AS g_0) AS v_0 WHERE v_0.c_0 IN (SELECT concat(v_0.c_1, v_1.c_0) FROM (SELECT g_1.intnum AS c_0 FROM bqt1.smalla AS g_1) AS v_1)"; //$NON-NLS-1$
         helpTest(sql, expected, true, FakeMetadataFactory.exampleBQTCached());
     }
 
-    public void testCorrelatedRefernce1() throws Exception {
+    @Test public void testCorrelatedRefernce1() throws Exception {
     	String sql = "select intnum, stringnum from bqt1.smallb where intnum in (select stringnum || b.intnum from (select intnum from bqt1.smalla) b) "; //$NON-NLS-1$
         String expected = "SELECT g_0.intnum, g_0.stringnum FROM bqt1.smallb AS g_0 WHERE g_0.intnum IN (SELECT concat(g_0.stringnum, v_0.c_0) FROM (SELECT g_1.intnum AS c_0 FROM bqt1.smalla AS g_1) AS v_0)"; //$NON-NLS-1$
         helpTest(sql, expected, true, FakeMetadataFactory.exampleBQTCached());
     }
     
-    public void testGroupAliasNotSupported() throws Exception {
+    @Test public void testGroupAliasNotSupported() throws Exception {
     	String sql = "select b.intkey from bqt1.smalla b"; //$NON-NLS-1$
         String expected = "SELECT bqt1.smalla.intkey FROM bqt1.smalla"; //$NON-NLS-1$
         helpTest(sql, expected, false, FakeMetadataFactory.exampleBQTCached());
     }
     
-    public void testUnionAliasing() throws Exception {
+    @Test public void testUnionAliasing() throws Exception {
     	String sql = "SELECT IntKey FROM BQT1.SmallA UNION ALL SELECT IntNum FROM BQT1.SmallA"; //$NON-NLS-1$
         String expected = "SELECT BQT1.SmallA.IntKey AS c_0 FROM BQT1.SmallA UNION ALL SELECT BQT1.SmallA.IntNum AS c_0 FROM BQT1.SmallA"; //$NON-NLS-1$
         helpTest(sql, expected, false, FakeMetadataFactory.exampleBQTCached());
     }
 
+    @Test public void testUnrelatedOrderBy() throws Exception {
+    	String sql = "SELECT b.IntKey FROM BQT1.SmallA a, BQT1.SmallA b ORDER BY a.StringKey"; //$NON-NLS-1$
+        String expected = "SELECT g_1.IntKey AS c_0 FROM BQT1.SmallA AS g_0, BQT1.SmallA AS g_1 ORDER BY g_0.StringKey"; //$NON-NLS-1$
+        helpTest(sql, expected, true, FakeMetadataFactory.exampleBQTCached());
+    }
+    
 }



More information about the teiid-commits mailing list