[teiid-commits] teiid SVN: r3575 - in trunk/engine/src: test/java/org/teiid/query/parser and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Fri Oct 21 16:18:54 EDT 2011


Author: shawkins
Date: 2011-10-21 16:18:54 -0400 (Fri, 21 Oct 2011)
New Revision: 3575

Modified:
   trunk/engine/src/main/javacc/org/teiid/query/parser/SQLParser.jj
   trunk/engine/src/test/java/org/teiid/query/parser/TestParser.java
Log:
TEIID-1790 fix for substring parsing

Modified: trunk/engine/src/main/javacc/org/teiid/query/parser/SQLParser.jj
===================================================================
--- trunk/engine/src/main/javacc/org/teiid/query/parser/SQLParser.jj	2011-10-20 17:09:57 UTC (rev 3574)
+++ trunk/engine/src/main/javacc/org/teiid/query/parser/SQLParser.jj	2011-10-21 20:18:54 UTC (rev 3575)
@@ -3588,6 +3588,7 @@
     
 	Expression expression = null;
 	ArrayList args = new ArrayList(2);
+	ArrayList otherArgs = null;
 	Token funcToken = null;
 }
 {
@@ -3620,14 +3621,14 @@
 		<RPAREN>				
 	)
 	|
-	LOOKAHEAD(4, {getToken(1).image.equalsIgnoreCase("SUBSTRING")}) (
+	LOOKAHEAD(2, {getToken(1).image.equalsIgnoreCase("SUBSTRING")}) (
 	   funcName = nonReserved("SUBSTRING")
 	   <LPAREN>
 	   expression = expression(info)
 	   {
 	      args.add(expression);
 	   }
-	   <FROM> expression = expression(info)
+	   ((<FROM> expression = expression(info)
 	   {
 	      args.add(expression);
 	   }
@@ -3635,7 +3636,7 @@
 	    {
 	      args.add(expression);
 	    }
-	   ]
+	   ])|(<COMMA> otherArgs = expressionList(info)) {args.addAll(otherArgs);})
 	   <RPAREN>
 	)
 	|

Modified: trunk/engine/src/test/java/org/teiid/query/parser/TestParser.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/parser/TestParser.java	2011-10-20 17:09:57 UTC (rev 3574)
+++ trunk/engine/src/test/java/org/teiid/query/parser/TestParser.java	2011-10-21 20:18:54 UTC (rev 3575)
@@ -6862,5 +6862,11 @@
     @Test public void testTrim1() {
     	helpException("select trim('xy' from e1) from pm1.g1");
     }
+    
+    @Test public void testSubString() throws QueryParserException {
+		Query actualCommand = (Query)QueryParser.getQueryParser().parseCommand("SELECT substring(RTRIM(MED.BATDAT), 4, 4) FROM FCC.MEDMAS AS MED", new ParseInfo());
+		String actualString = actualCommand.toString();
+		assertEquals("SELECT substring(RTRIM(MED.BATDAT), 4, 4) FROM FCC.MEDMAS AS MED", actualString);
+    }
 
 }



More information about the teiid-commits mailing list