You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by ja...@apache.org on 2013/09/11 04:04:45 UTC

[02/29] DRILL-221 Add license header to all files

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/src/main/antlr3/org/apache/drill/parsers/impl/drqlantlr/DrqlAntlr.g
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/src/main/antlr3/org/apache/drill/parsers/impl/drqlantlr/DrqlAntlr.g b/sandbox/query-parser/src/main/antlr3/org/apache/drill/parsers/impl/drqlantlr/DrqlAntlr.g
deleted file mode 100644
index 85654af..0000000
--- a/sandbox/query-parser/src/main/antlr3/org/apache/drill/parsers/impl/drqlantlr/DrqlAntlr.g
+++ /dev/null
@@ -1,289 +0,0 @@
-/**
- * Copyright 2010, BigDataCraft.com
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-grammar DrqlAntlr;
-
-options {output=AST; ASTLabelType=CommonTree; backtrack=false; k=1;}
-
-tokens {
-N_SELECT_STATEMENT; 
-N_SELECT; N_COLUMN; N_COLUMN_NAME; N_ALIAS; N_WITHIN; N_WITHIN_RECORD;
-N_FROM; N_TABLE; N_TABLE_NAME;
-N_JOIN; N_INNER;N_LEFTOUTER; N_JOIN_ON; N_JOIN_ON_LIST;
-N_WHERE; 
-N_GROUPBY; 
-N_HAVING; 
-N_ORDERBY; N_ASC; N_DESC;
-N_LIMIT; 
-N_EXPRESSION; N_ID; N_NAME;N_IN; N_CALL; N_OP;N_LOGICAL_OR;N_LOGICAL_AND;
-N_BITWISE_OR;N_BITWISE_XOR;N_BITWISE_AND;N_EQUAL;N_NOT_EQUAL;N_LESS_THAN;
-N_LESS_THAN_OR_EQUAL;N_GREATER_THAN;N_LOGICAL_NOT;N_BITWISE_NOT;
-N_CONTAINS;N_REMAINDER;N_GREATER_THAN_OR_EQUAL;N_BITWISE_RIGHT_SHIFT;
-N_DIVIDE;N_MULTIPLY;N_SUBSTRUCT;N_ADD;N_BITWISE_RIGHT_SHIFT;
-N_BITWISE_LEFT_SHIFT;N_IN_PARAMS;N_CALL_PARAMS;N_INT; N_FLOAT; N_STRING;
-}
-
-@header {package org.apache.drill.parsers.impl.drqlantlr;}
-
-@lexer::header {package org.apache.drill.parsers.impl.drqlantlr;}
-
-///Starting production 
-request: selectStatement (SEMICOLON!)? EOF!;
-
-//Select statement
-selectStatement: selectClause fromClause joinClause? whereClause? 
-    havingClause? groupbyClause? orderbyClause? limitClause?-> 
-        ^(N_SELECT_STATEMENT fromClause selectClause joinClause? whereClause? 
-        groupbyClause? havingClause? orderbyClause? limitClause?);
-
-//Select clause
-selectClause: SELECT columnExpr (COMMA columnExpr)* ->
-    ^(N_SELECT columnExpr+);
-    
-//Expression
-columnExpr: expr withinClause? (AS ID)? -> 
-    ^(N_COLUMN expr ^(N_ALIAS ID)? withinClause? );
-withinClause: (WITHIN (RECORD -> ^(N_WITHIN_RECORD) | columnPath ->
-	^(N_WITHIN columnPath)));
-	
-//From clause
-fromClause: FROM subSelectStatement (COMMA subSelectStatement)* ->
-    ^(N_FROM subSelectStatement+);
-subSelectStatement : (tableName | (LPAREN! selectStatement RPAREN!));
-
-//Join clause (TODO add productions)
-joinClause: joinClauseDesc JOIN joinClauseFrom ON joinConditionList ->
-    ^(N_JOIN joinClauseDesc joinClauseFrom joinConditionList);
-joinClauseDesc: (INNER?) -> ^(N_INNER) | (LEFT OUTER) -> ^(N_LEFTOUTER);
-joinClauseFrom: optionallyAliasedTable -> ^(N_TABLE optionallyAliasedTable) | 
-    aliasedSubSelectStatement -> ^(N_TABLE aliasedSubSelectStatement);
-optionallyAliasedTable: tableName (AS ID)? -> ^(N_TABLE tableName ID?);
-aliasedSubSelectStatement:	LPAREN selectStatement RPAREN AS tableName ->
-    ^(N_TABLE selectStatement tableName);
-joinConditionList:	joinCondition (LOGICAL_AND joinCondition)* ->
-    ^(N_JOIN_ON_LIST joinCondition+);
-joinCondition: a=columnPath EQUAL b=columnPath -> ^(N_JOIN_ON $a $b);
-
-//Where Clause 
-whereClause: WHERE expr -> ^(N_WHERE expr);
-
-//Groupby Clause
-groupbyClause: GROUPBY columnName (COMMA columnName)* -> 
-    ^(N_GROUPBY columnName+);
-
-//Having Clause
-havingClause: HAVING expr -> ^(N_HAVING expr);
-
-//Orderby Clause
-orderbyClause: ( ORDERBY orderbyColumnName (COMMA orderbyColumnName)*)	->
-    ^(N_ORDERBY orderbyColumnName+);
-orderbyColumnName:	columnName (ASC -> ^(N_ASC columnName) | DESC ->
-    ^(N_DESC columnName) | /* default sort order */	->	^(N_ASC columnName));
-						
-//Limit clause
-limitClause: ( LIMIT INT ) -> ^(N_LIMIT INT);
-
-///Column names
-columnPath: columnPath2 -> ^(N_ID columnPath2);
-columnPath2: columnName (DOT! columnName)*;
-columnName: ID -> ^(N_NAME ID) | STAR -> ^(N_NAME STAR);
-
-//Table names
-tablePath: tablePath2 -> ^(N_TABLE tablePath2);
-tablePath2:	tableName (DOT! tableName)*;						
-tableName: ID -> ^(N_TABLE_NAME ID);
-
-//Expressions
-expr: expr2 -> ^(N_EXPRESSION expr2);
-expr2:(a=b10e->$a) (o=b11o b=b10e -> ^($o $expr2 $b))*;
-b10e: (a=b9e->$a) (o=b10o b=b9e -> ^($o $b10e $b))*;
-b9e:  (a=b8e->$a) (o=b9o b=b8e  -> ^($o $b9e $b))*;
-b8e:  (a=b7e->$a) (o=b8o b=b7e 	-> ^($o $b8e $b))*;
-b7e:  (a=b6e->$a) (o=b7o b=b6e 	-> ^($o $b7e $b))*;
-b6e:  (a=b5e->$a) (o=b6o b=b5e 	-> ^($o $b6e $b))*;
-b5e:  (a=b4e->$a) (o=b5o b=b4e 	-> ^($o $b5e $b))*;
-b4e:  (a=b3e->$a) (o=b4o b=b3e 	-> ^($o $b4e $b))*;
-b3e:  (a=b2e->$a) (o=b3o b=b2e  -> ^($o $b3e $b))*;
-b2e:  (a=b1e->$a) (o=b2o b=b1e 	-> ^($o $b2e $b))*;
-b1e:  (a=uPrefixExpr->$a)   (o=b1o b=uPrefixExpr -> ^($o $b1e $b))*;
-uPrefixExpr: (o=uPrefixOp->^($o $uPrefixExpr))* (a=uPostfixExpr -> $a); 
-uPostfixExpr: (a=atomExpr->$a) (o=uPostfixOp -> ^($o $uPostfixExpr))*;
-atomExpr: INT -> ^(N_INT INT)
-    | FLOAT -> ^(N_FLOAT FLOAT)
-    | STRING -> ^(N_STRING STRING)  
-    | (LPAREN expr RPAREN) -> expr
-    | columnPath;
-
-//Ops
-b11o: LOGICAL_OR ->	N_LOGICAL_OR;	
-b10o: LOGICAL_AND->	N_LOGICAL_AND;
-b9o:  BITWISE_OR ->	N_BITWISE_OR;
-b8o:  BITWISE_XOR->	N_BITWISE_XOR;
-b7o:  BITWISE_AND->	N_BITWISE_AND;
-b6o:  EQUAL -> N_EQUAL | NOT_EQUAL -> N_NOT_EQUAL;
-b5o:  LESS_THAN -> N_LESS_THAN | LESS_THAN_OR_EQUAL -> N_LESS_THAN_OR_EQUAL | 
-    GREATER_THAN -> N_GREATER_THAN | 
-    GREATER_THAN_OR_EQUAL -> N_GREATER_THAN_OR_EQUAL;
-b4o: BITWISE_LEFT_SHIFT -> N_BITWISE_LEFT_SHIFT | 
-    BITWISE_RIGHT_SHIFT -> N_BITWISE_RIGHT_SHIFT;
-b3o: ADD -> N_ADD | SUBSTRUCT -> N_SUBSTRUCT;
-b2o: multiplyOp -> N_MULTIPLY | 
-    divideOp ->	N_DIVIDE | REMAINDER -> N_REMAINDER;
-b1o: CONTAINS -> N_CONTAINS; 
-uPrefixOp: BITWISE_NOT -> N_BITWISE_NOT | LOGICAL_NOT -> N_LOGICAL_NOT;
-uPostfixOp:	uPostfixOpIn | uPostfixOpCall;
-uPostfixOpIn: IN LPAREN (expr (COMMA expr)*)? RPAREN ->	^(N_IN_PARAMS expr*);
-uPostfixOpCall:	LPAREN (expr (COMMA expr)*)? RPAREN -> ^(N_CALL_PARAMS expr*);
-
-//Name clash grapheme ops
-divideOp: SLASH | DIV;
-multiplyOp: STAR;
-
-
-//Keywords
-SELECT		:	S E L E C T ;
-WITHIN		:	W I T H I N ;
-RECORD		:	R E C O R D ;
-AS			:A S ;
-FROM		:	F R O M ;
-INNER		:	I N N E R;
-LEFT		:	L E F T;
-OUTER		:	O U T E R;
-JOIN		:	J O I N;
-ON			:	O N;
-WHERE		:	W H E R E ;
-GROUPBY		:	G R O U P WS B Y;	
-HAVING		:	H A V I N G;
-ORDERBY		:	O R D E R WS B Y;
-DESC		:	D E S C;
-ASC			:	A S C;
-LIMIT		:	L I M I T;
-LOGICAL_OR 	:	O R;
-LOGICAL_AND	:	A N D;
-LOGICAL_NOT	:	N O T;
-CONTAINS 	:	C O N T A I N S ;
-IN		:	I N;
-
-//Graphemes
-BITWISE_AND : 	'&';
-BITWISE_NOT	: 	'~';
-BITWISE_OR	: 	'|';
-BITWISE_XOR : 	'^';
-EQUAL 		: 	'=' | '==';
-NOT_EQUAL 	: 	'<>' | '!=';
-LESS_THAN_OR_EQUAL:	'<=';
-LESS_THAN 	: 	'<';
-GREATER_THAN_OR_EQUAL: 	'>=';
-GREATER_THAN: 	'>';
-SLASH 		: 	'/';
-DIV			:	' D I V';
-STAR		: 	'*';
-ADD 		: 	'+';
-SUBSTRUCT 	:	'-';
-REMAINDER	: 	'%';
-BITWISE_LEFT_SHIFT: 	'<<';
-BITWISE_RIGHT_SHIFT: 	'>>';
-DOT		: 	'.'; 
-COLON		: 	':';
-COMMA		: 	',';
-SEMICOLON	: 	';';
-LPAREN 		: 	'(';
-RPAREN 		: 	')';
-LSQUARE 	: 	'[' ;
-RSQUARE 	: 	']' ;
-LCURLY 		: 	'{';
-RCURLY 		: 	'}';
-
-//Lexemes
-ID: F_ID1 | F_ID2;
-fragment F_ID1: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
-fragment F_ID2: '[' ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|' '|'\\'|'/'|'-'|'+'|'*'|'.'|':'|'$')* ']';
-
-INT :	'0'..'9'+
-    ;
-
-FLOAT
-    :   ('0'..'9')+ '.' ('0'..'9')* EXPONENT?
-    |   '.' ('0'..'9')+ EXPONENT?
-    |   ('0'..'9')+ EXPONENT
-    ;
-
-COMMENT
-    :   '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;};
-
-WS  :   ( ' '
-        | '\t'
-        | '\r'
-        | '\n'
-        ) {$channel=HIDDEN;}
-    ;
-
-STRING
-    :  '\'' ( ESC_SEQ | ~('\\'|'\'') )* '\''
-    ;
-
-fragment
-EXPONENT : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
-
-fragment
-HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;
-
-fragment
-ESC_SEQ
-    :   '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
-    |   UNICODE_ESC
-    |   OCTAL_ESC
-    ;
-
-fragment
-OCTAL_ESC
-    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
-    |   '\\' ('0'..'7') ('0'..'7')
-    |   '\\' ('0'..'7')
-    ;
-
-fragment
-UNICODE_ESC
-    :   '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
-    ;
-
-//Case insensetive letters, pretty ugly (or beautiful) but I haven't found a better way, sorry
-fragment A:('a'|'A');
-fragment B:('b'|'B');
-fragment C:('c'|'C');
-fragment D:('d'|'D');
-fragment E:('e'|'E');
-fragment F:('f'|'F');
-fragment G:('g'|'G');
-fragment H:('h'|'H');
-fragment I:('i'|'I');
-fragment J:('j'|'J');
-fragment K:('k'|'K');
-fragment L:('l'|'L');
-fragment M:('m'|'M');
-fragment N:('n'|'N');
-fragment O:('o'|'O');
-fragment P:('p'|'P');
-fragment Q:('q'|'Q');
-fragment R:('r'|'R');
-fragment S:('s'|'S');
-fragment T:('t'|'T');
-fragment U:('u'|'U');
-fragment V:('v'|'V');
-fragment W:('w'|'W');
-fragment X:('x'|'X');
-fragment Y:('y'|'Y');
-fragment Z:('z'|'Z');    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/src/main/java/org/apache/drill/parsers/DrqlParser.java
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/src/main/java/org/apache/drill/parsers/DrqlParser.java b/sandbox/query-parser/src/main/java/org/apache/drill/parsers/DrqlParser.java
deleted file mode 100644
index 19ca4b5..0000000
--- a/sandbox/query-parser/src/main/java/org/apache/drill/parsers/DrqlParser.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Copyright 2010, BigDataCraft.com
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.parsers;
-
-import java.util.List;
-
-//TODO add java docs
-public interface DrqlParser {
-	interface SemanticModelReader {
-		interface Symbol {
-			enum Type {
-			    TABLE, COLUMN, COLUMN_ALIAS, FUNCTION, AGG_FUNCTION
-			}
-			Type getType();
-			String getName();
-			List<String> getNameComponents();
-			boolean isAlias();
-			Symbol getAlisasedSymbol();
-			Symbol getAliasSymbol();
-		}
-		interface ResultColumn {
-			enum Scope {FULL, RECORD, COLUMN}
-			Scope getScope();
-			Symbol getColumnScope();
-			Symbol getAlias();
-			Expression getExpression();
-		}
-		interface Expression {
-				interface BinaryOp extends Expression {
-					enum Operators {CONTAINS, GREATER_THAN, GREATER_THAN_OR_EQUAL, 
-						LESS_THAN, LESS_THAN_OR_EQUAL, EQUAL, AND, OR, ADD, SUBTRACT,
-						MULTIPLY, DIVIDE}
-					Expression getLeftExpression();
-					Expression getRightExpression();
-					Operators getOperator();
-				}
-	
-				interface UnaryOp extends Expression {
-					Expression getExpression();
-					String getOperator();
-				}
-	
-				interface Constant extends Expression {
-					Object getValue();
-				}
-	
-				interface Column extends Expression {
-					Symbol getSymbol();
-				}
-	
-				interface Function extends Expression {
-					Symbol getSymbol();
-					List<Expression> getArgs();
-				}
-				
-		}
-		interface JoinOnClause {
-			interface JoinCondition {
-				Symbol getLeftSymbol();
-				Symbol getRightSymbol();
-			}
-			Symbol getTable();
-			List<JoinCondition> getJoinConditionClause();
-		}
-		
-		//Any 'from' clause item is modeled as DrqlQuery
-		boolean isJustATable(); 
-		Symbol getjustATable(); 
-		 
-		List<SemanticModelReader> getFromClause(); 
-		List<ResultColumn> getResultColumnList();
-		List<Symbol> getGroupByClause();
-		List<Symbol> getOrderByClause();
-		JoinOnClause getJoinOnClause(); 
-		Expression getWhereClause(); 
-		Integer getLimitClause(); 
-	}
-	SemanticModelReader parse(String drqlQueryText);
-}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/AntlrParser.java
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/AntlrParser.java b/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/AntlrParser.java
deleted file mode 100644
index 4e93bb6..0000000
--- a/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/AntlrParser.java
+++ /dev/null
@@ -1,747 +0,0 @@
-/**
- * Copyright 2010, BigDataCraft.com
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.parsers.impl.drqlantlr;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.antlr.runtime.ANTLRStringStream;
-import org.antlr.runtime.CharStream;
-import org.antlr.runtime.Token;
-import org.antlr.runtime.TokenRewriteStream;
-import org.antlr.runtime.tree.CommonTree;
-import org.antlr.runtime.tree.CommonTreeAdaptor;
-import org.antlr.runtime.tree.Tree;
-import org.antlr.runtime.tree.TreeAdaptor;
-
-import org.apache.drill.parsers.DrqlParser;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.Expression;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.Expression.BinaryOp.Operators;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.Symbol.Type;
-import org.apache.drill.parsers.impl.drqlantlr.SemanticModel.Symbol;
-import org.junit.Assert;
-
-import static org.junit.Assert.assertEquals;
-
-public class AntlrParser implements DrqlParser{
-	/**
-	 * ANTLRNoCaseStringStream. //This class provides and implementation for a
-	 * case insensitive token checker //for the lexical analysis part of antlr.
-	 * By converting the token stream into //upper case at the time when lexical
-	 * rules are checked, this class ensures that the //lexical rules need to
-	 * just match the token with upper case letters as opposed to //combination
-	 * of upper case and lower case characters. This is purely used for matching
-	 * lexical //rules. The actual token text is stored in the same way as the
-	 * user input without //actually converting it into an upper case. The token
-	 * values are generated by the consume() //function of the super class
-	 * ANTLRStringStream. The LA() function is the lookahead function //and is
-	 * purely used for matching lexical rules. This also means that the grammar
-	 * will only //accept capitalized tokens in case it is run from other tools
-	 * like antlrworks which //do not have the ANTLRNoCaseStringStream
-	 * implementation.
-	 */
-	static class ANTLRNoCaseStringStream extends ANTLRStringStream {
-
-		public ANTLRNoCaseStringStream(String input) {
-			super(input);
-		}
-
-		@Override
-		public int LA(int i) {
-
-			int returnChar = super.LA(i);
-			if (returnChar == CharStream.EOF) {
-				return returnChar;
-			} else if (returnChar == 0) {
-				return returnChar;
-			}
-
-			return Character.toUpperCase((char) returnChar);
-		}
-	}
-	static final TreeAdaptor adaptor = new CommonTreeAdaptor() {
-		@Override
-		public Object create(Token payload) {
-			return new AstNode(payload);
-		}
-	};
-	@Override
-	public SemanticModel parse(String drqlQueryText) {
-    	AstNode node = parseToAst(drqlQueryText);
-    	SemanticModel query = 
-    			new SemanticModel();
-    	parseSelectStatement(node, query);
-    	return query;
-    }
-	public static AstNode parseToAst(String drQl) {
-    	try {
-    		DrqlAntlrLexer lexer = new DrqlAntlrLexer(new ANTLRNoCaseStringStream(drQl));
-			TokenRewriteStream tokens = new TokenRewriteStream(lexer);
-			DrqlAntlrParser parser = new DrqlAntlrParser(tokens);
-			parser.setTreeAdaptor(adaptor);
-			return (AstNode) parser.selectStatement().getTree();
-    	} catch(Exception ex) {
-    		throw new RuntimeException("Parsing of the query "+drQl + " has failed", ex);
-    	}
-	}
-	static void parseSelectStatement(AstNode node, SemanticModel query) {
-		assert (node.getType() == DrqlAntlrParser.N_SELECT_STATEMENT);
-		int count = node.getChildCount();
-		assert (count >= 2);
-		parseFromClause((AstNode) node.getChild(0), query);
-		parseSelectClause((AstNode) node.getChild(1), query);
-		int curNode = 2;
-		if (node.getChild(curNode) != null && node.getChild(curNode).getType() == DrqlAntlrParser.N_JOIN) {
-			parseJoinClause((AstNode) node.getChild(curNode), query);
-			curNode++;
-		}
-		if (node.getChild(curNode) != null && node.getChild(curNode).getType() == DrqlAntlrParser.N_WHERE) {
-			parseWhereClause((AstNode) node.getChild(curNode), query);
-			curNode++;
-		}
-		if (node.getChild(curNode) != null && node.getChild(curNode).getType() == DrqlAntlrParser.N_GROUPBY) {
-			parseGroupByClause((AstNode) node.getChild(curNode), query);
-			curNode++;		
-		}
-		if (node.getChild(curNode) != null && node.getChild(curNode).getType() == DrqlAntlrParser.N_HAVING) {
-			parseHavingClause((AstNode) node.getChild(curNode), query);
-			curNode++;		
-		}
-		if (node.getChild(curNode) != null && node.getChild(curNode).getType() == DrqlAntlrParser.N_ORDERBY) {
-			parseOrderByClause((AstNode) node.getChild(curNode), query);
-			curNode++;		
-		}
-		if (node.getChild(curNode) != null && node.getChild(curNode).getType() == DrqlAntlrParser.N_LIMIT) {
-			parseLimitClause((AstNode) node.getChild(curNode), query);
-			curNode++;		
-		}
-	}
-	static boolean parseWithinRecordClause(AstNode node, SemanticModel.ResultColumn column) {
-		assert (node.getType() == DrqlAntlrParser.N_WITHIN_RECORD);
-		column.scope = DrqlParser.SemanticModelReader.ResultColumn.Scope.RECORD;
-		return true;
-	}
-	static boolean parseWithinClause(AstNode node, SemanticModel.ResultColumn column) {
-		assert (node.getType() == DrqlAntlrParser.N_WITHIN);
-		column.scope = DrqlParser.SemanticModelReader.ResultColumn.Scope.COLUMN;
-		column.columnScope = new Symbol();
-		//column.columnScope.name = TODO add column id from AST 
-		return true;
-	}
-	static void parseColumnAlias(AstNode node, SemanticModel.ResultColumn column) {
-		assert (node.getType() == DrqlAntlrParser.N_ALIAS);
-		int count = node.getChildCount();
-		assert ((count == 1));
-		column.alias = new Symbol();
-		column.alias.name = node.getChild(0).toString();
-		column.alias.type = DrqlParser.SemanticModelReader.Symbol.Type.COLUMN_ALIAS;
-	}
-	static String idNode2String(Tree idNode) {
-		StringBuilder ret = new StringBuilder();
-		assert (idNode.getType() == DrqlAntlrParser.N_ID);
-		assert (idNode.getChildCount() >= 1);
-		AstNode nameNode = (AstNode) idNode.getChild(0);
-		assert (nameNode.getType() == DrqlAntlrParser.N_NAME);
-		assert (nameNode.getChildCount() == 1);
-		ret.append(nameNode.getChild(0).toString());
-
-		for (int i = 1; i < idNode.getChildCount(); i++) {
-			nameNode = (AstNode) idNode.getChild(i);
-			assert (nameNode.getType() == DrqlAntlrParser.N_NAME);
-			assert (nameNode.getChildCount() == 1);
-			ret.append(".");
-			ret.append(nameNode.getChild(0).toString());
-		}
-		return ret.toString();
-	}
-	static String idNode2String(AstNode idNode) {
-		StringBuilder ret = new StringBuilder();
-		assert (idNode.getType() == DrqlAntlrParser.N_ID);
-		assert (idNode.getChildCount() >= 1);
-		AstNode nameNode = (AstNode) idNode.getChild(0);
-		assert (nameNode.getType() == DrqlAntlrParser.N_NAME);
-		assert (nameNode.getChildCount() == 1);
-		ret.append(nameNode.getChild(0).toString());
-
-		for (int i = 1; i < idNode.getChildCount(); i++) {
-			nameNode = (AstNode) idNode.getChild(i);
-			assert (nameNode.getType() == DrqlAntlrParser.N_NAME);
-			assert (nameNode.getChildCount() == 1);
-			ret.append(".");
-			ret.append(nameNode.getChild(0).toString());
-		}
-		return ret.toString();
-	}
-	static void parseSelectClauseColumn(AstNode node, SemanticModel query) {
-		SemanticModel.ResultColumn column = new SemanticModel.ResultColumn();
-		column.scope = DrqlParser.SemanticModelReader.ResultColumn.Scope.FULL;
-		assert (node.getType() == DrqlAntlrParser.N_COLUMN);
-		assert (node.getChild(0).getType() == DrqlAntlrParser.N_EXPRESSION);
-		int count = node.getChildCount();
-		assert ((count >= 1) && (count <= 3));
-		if (count == 3) {
-			parseColumnAlias((AstNode) node.getChild(1), column);
-			if (node.getChild(2).getType() == DrqlAntlrParser.N_WITHIN)
-				parseWithinClause((AstNode) node.getChild(2), column);
-			else if (node.getChild(2).getType() == DrqlAntlrParser.N_WITHIN_RECORD)
-				parseWithinRecordClause((AstNode) node.getChild(2), column);
-		} else if (count == 2) {
-			if (node.getChild(1).getType() == DrqlAntlrParser.N_ALIAS) {
-				parseColumnAlias((AstNode) node.getChild(1), column);
-			} else if (node.getChild(1).getType() == DrqlAntlrParser.N_WITHIN)
-				parseWithinClause((AstNode) node.getChild(1), column);
-			else if (node.getChild(1).getType() == DrqlAntlrParser.N_WITHIN_RECORD)
-				parseWithinRecordClause(
-						(AstNode) node.getChild(1), column);
-			else {
-				assert (false);
-			}
-		}
-
-		DrqlParser.SemanticModelReader.Expression expression = 
-				createExpression((AstNode) node.getChild(0));
-		column.expression = expression;
-		query.resultColumnList.add(column);
-	};
-	private static void parseSelectClause(AstNode node, SemanticModel query) {
-		assert (node.getType() == DrqlAntlrParser.N_SELECT);
-		int columnCount = node.getChildCount();
-		assert (columnCount > 0);
-		for (int i = 0; i < columnCount; i++) {
-			parseSelectClauseColumn((AstNode) node.getChild(i), query);
-		}
-	}
-	/*
-			AstNode culmnNode = (AstNode) ;
-			assert (culmnNode.getType() == DrqlAntlrParser.N_COLUMN);
-			AstNode expressionNode = (AstNode) node.getChild(0);
-			assert (expressionNode.getType() == DrqlAntlrParser.N_EXPRESSION);
-			AstNode idNode = (AstNode) node.getChild(0);
-			assert (idNode.getType() == DrqlAntlrParser.N_ID);
-			int namesCount = idNode.getChildCount();
-			assert (namesCount >= 1);
-			for (int j = 0; j < namesCount; j++) {
-				AstNode nameNode = (AstNode) node.getChild(j);
-				assert (nameNode.getType() == DrqlAntlrParser.N_NAME);
-				SemanticModel.Symbol column = new SemanticModel.Symbol();
-				column.name = curNode.getText();
-				column.type = DrqlParser.SemanticModelReader.Symbol.Type.COLUMN;
-			}
-				query.resultColumnList.add(expression);
-				AstNode node3 = (AstNode) node2.getChild(j);
-				if (node3.getType() == DrqlAntlrParser.N_COLUMN) {
-					parseWithinClause(node3, query);
-				}
-			}
-		}
-	}*/
-	
-	
-	private static void parseFromClause(AstNode node, SemanticModel query) {
-		assert (node.getType() == DrqlAntlrParser.N_FROM);
-		int count = node.getChildCount();
-		assert (count > 0);
-		for (int i = 0; i < count; i++) {
-			AstNode node2 = (AstNode) node.getChild(i);
-			if (node2.getType() == DrqlAntlrParser.N_TABLE_NAME) {
-				assert (node2.getChildCount() == 1);
-				SemanticModel subQuery = new SemanticModel();
-				SemanticModel.Symbol table = new SemanticModel.Symbol();
-				table.name = node2.getChild(0).getText();
-				table.type = DrqlParser.SemanticModelReader.Symbol.Type.TABLE;
-				subQuery.justATable = table;
-				query.fromClause.add(subQuery);
-			} else if (node2.getType() == DrqlAntlrParser.N_SELECT_STATEMENT) {
-				assert (node2.getChildCount() == 1);
-				SemanticModel subQuery = new SemanticModel();
-				parseSelectStatement(node2, subQuery);
-				query.fromClause.add(subQuery);
-			} else
-				assert (false);
-		}		
-	}
-	private static void parseGroupByClause(AstNode node, SemanticModel query) {
-		assert (node.getType() == DrqlAntlrParser.N_GROUPBY);	
-		int count = node.getChildCount();
-		assert (count > 0);
-		for (int i = 0; i < count; i++) {
-			AstNode node2 = (AstNode) node.getChild(i);		
-			assert (node2.getChildCount() == 1);
-			SemanticModel.Symbol column = new SemanticModel.Symbol();
-			column.name = node2.getChild(0).getText();
-			column.type = DrqlParser.SemanticModelReader.Symbol.Type.COLUMN;
-			query.groupByClause.add(column);
-		}	
-	}
-
-    private static void parseWhereClause(AstNode node, SemanticModel query) {
-		if (node == null) {
-			return;
-		}
-		assert (node.getType() == DrqlAntlrParser.N_WHERE);
-		int count = node.getChildCount();
-		assert (count == 1);
-		AstNode node2 = (AstNode) node.getChild(0);
-		assert (node2.getType() == DrqlAntlrParser.N_EXPRESSION);
-		Tree node3 = node2.getChild(0);
-		query.whereClause = createExpression(node3);
-	}
-
-	static Expression.Function parseFunction(AstNode node) {
-		SemanticModel.Expression.Function func = new SemanticModel.Expression.Function();
-		func.function = new SemanticModel.Symbol();
-		
-		String funcName = null;
-		List<Expression> args = new ArrayList<Expression>();
-		AstNode n2, n3;
-		
-		for (int i = 0; i < node.getChildCount(); i++) {
-			n2 = (AstNode) node.getChild(i);
-			if (n2.getType() == DrqlAntlrParser.N_EXPRESSION) {
-				n3 = (AstNode) n2.getChild(0);
-				assert(n3.getType() == DrqlAntlrParser.N_ID);
-				args.add(createExpression(n3));
-			} else { 
-				assert(n2.getType() == DrqlAntlrParser.N_ID); 
-				n3 = (AstNode) n2.getChild(0);
-				assert(n3.getType() == DrqlAntlrParser.N_NAME);
-				funcName = n3.getChild(0).getText();
-			}
-		}
-		func.function.type = Type.FUNCTION;
-		func.function.name = funcName;
-		func.args = args;
-		return func;
-	}
-	static Expression.Function parseFunction(Tree node) {
-		SemanticModel.Expression.Function func = new SemanticModel.Expression.Function();
-		func.function = new SemanticModel.Symbol();
-
-		String funcName = null;
-		List<Expression> args = new ArrayList<Expression>();
-		AstNode n2, n3;
-
-		for (int i = 0; i < node.getChildCount(); i++) {
-			n2 = (AstNode) node.getChild(i);
-			if (n2.getType() == DrqlAntlrParser.N_EXPRESSION) {
-				n3 = (AstNode) n2.getChild(0);
-				assert(n3.getType() == DrqlAntlrParser.N_ID);
-				args.add(createExpression(n3));
-			} else {
-				assert(n2.getType() == DrqlAntlrParser.N_ID);
-				n3 = (AstNode) n2.getChild(0);
-				assert(n3.getType() == DrqlAntlrParser.N_NAME);
-				funcName = n3.getChild(0).getText();
-			}
-		}
-		func.function.type = Type.FUNCTION;
-		func.function.name = funcName;
-		func.args = args;
-		return func;
-	}
-
-	static SemanticModelReader.Expression createExpression(Tree node) {
-		SemanticModelReader.Expression result = null;
-		SemanticModel.Expression.BinaryOp binaryOp;
-		AstNode n2, n3;
-		SemanticModel.Expression.Column column;
-		SemanticModel.Expression.Constant constant;
-		
-		switch (node.getType()) {
-		
-		case DrqlAntlrParser.N_LOGICAL_AND:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.AND;
-			result = binaryOp;
-			break;
-		
-		case DrqlAntlrParser.N_LOGICAL_OR:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.OR;
-			result = binaryOp;
-			break;
-			
-		case DrqlAntlrParser.N_CONTAINS:	
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.CONTAINS;
-			result = binaryOp;
-			break;
-			
-		case DrqlAntlrParser.N_GREATER_THAN:	
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.GREATER_THAN;
-			result = binaryOp;
-			break;
-			
-		case DrqlAntlrParser.N_GREATER_THAN_OR_EQUAL:	
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.GREATER_THAN_OR_EQUAL;
-			result = binaryOp;
-			break;
-			
-		case DrqlAntlrParser.EQUAL:	
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.EQUAL;
-			result = binaryOp;
-			break;
-			
-		case DrqlAntlrParser.LESS_THAN:	
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.LESS_THAN;
-			result = binaryOp;
-			break;
-			
-		case DrqlAntlrParser.LESS_THAN_OR_EQUAL:	
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.LESS_THAN_OR_EQUAL;
-			result = binaryOp;
-			break;
-		
-		case DrqlAntlrParser.N_SUBSTRUCT:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.SUBTRACT;
-			result = binaryOp;
-			break;
-			
-		case DrqlAntlrParser.N_ADD:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.ADD;
-			result = binaryOp;
-			break;
-			
-		case DrqlAntlrParser.N_MULTIPLY:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.MULTIPLY;
-			result = binaryOp;
-			break;
-			
-		case DrqlAntlrParser.N_DIVIDE:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.DIVIDE;
-			result = binaryOp;
-			break;
-			
-		case DrqlAntlrParser.N_EXPRESSION:
-			assert(node.getChildCount() == 1);
-			n2 = (AstNode) node.getChild(0);
-			if (n2.getType() == DrqlAntlrParser.N_CALL_PARAMS) {
-				result = parseFunction(n2);
-			} else if (n2.getType() == DrqlAntlrParser.N_ID) {
-				SemanticModel.Expression.Column colExpr = new SemanticModel.Expression.Column();
-				colExpr.column = new SemanticModel.Symbol();
-				colExpr.column.name = idNode2String(n2);
-				result = colExpr;
-			} else {
-				result = createExpression(n2);
-			}
-			break;
-			
-		case DrqlAntlrParser.N_ID:
-			n2 = (AstNode) node.getChild(0);
-			assert (n2.getType() == DrqlAntlrParser.N_NAME);
-			n3 = (AstNode) n2.getChild(0);
-			assert (n3.getType() == DrqlAntlrParser.ID);
-			column = new SemanticModel.Expression.Column();
-			Symbol colSymbol = new Symbol();
-			colSymbol.name = n3.getText();
-			colSymbol.type = Type.COLUMN;
-			column.column = colSymbol;
-			result = column;
-			break;
-		
-		case DrqlAntlrParser.N_INT:
-			n2 = (AstNode) node.getChild(0);
-			assert (n2.getType() == DrqlAntlrParser.INT);
-			Integer integer = (Integer) Integer.parseInt(n2.getText());
-			constant = new SemanticModel.Expression.Constant();
-			constant.value = integer;
-			result = constant;
-			break;
-		}
-		
-		return result;
-	}
-	static SemanticModelReader.Expression createExpression(AstNode node) {
-		SemanticModelReader.Expression result = null;
-		SemanticModel.Expression.BinaryOp binaryOp;
-		AstNode n2, n3;
-		SemanticModel.Expression.Column column;
-		SemanticModel.Expression.Constant constant;
-
-		switch (node.getType()) {
-
-		case DrqlAntlrParser.N_LOGICAL_AND:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.AND;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.N_LOGICAL_OR:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.OR;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.N_CONTAINS:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.CONTAINS;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.N_GREATER_THAN:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.GREATER_THAN;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.N_GREATER_THAN_OR_EQUAL:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.GREATER_THAN_OR_EQUAL;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.EQUAL:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.EQUAL;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.LESS_THAN:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.LESS_THAN;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.LESS_THAN_OR_EQUAL:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.LESS_THAN_OR_EQUAL;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.N_SUBSTRUCT:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.SUBTRACT;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.N_ADD:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.ADD;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.N_MULTIPLY:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.MULTIPLY;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.N_DIVIDE:
-			assert (node.getChildCount() == 2);
-			binaryOp = new SemanticModel.Expression.BinaryOp();
-			binaryOp.left = createExpression((AstNode) node.getChild(0));
-			binaryOp.right = createExpression((AstNode) node.getChild(1));
-			binaryOp.operator = Operators.DIVIDE;
-			result = binaryOp;
-			break;
-
-		case DrqlAntlrParser.N_EXPRESSION:
-			assert(node.getChildCount() == 1);
-            Tree n2a = node.getChild(0);
-			if (n2a.getType() == DrqlAntlrParser.N_CALL_PARAMS) {
-				result = parseFunction(n2a);
-			} else if (n2a.getType() == DrqlAntlrParser.N_ID) {
-				SemanticModel.Expression.Column colExpr = new SemanticModel.Expression.Column();
-				colExpr.column = new SemanticModel.Symbol();
-				colExpr.column.name = idNode2String(n2a);
-				result = colExpr;
-			} else {
-				result = createExpression(n2a);
-			}
-			break;
-
-		case DrqlAntlrParser.N_ID:
-			n2 = (AstNode) node.getChild(0);
-			assert (n2.getType() == DrqlAntlrParser.N_NAME);
-			n3 = (AstNode) n2.getChild(0);
-			assert (n3.getType() == DrqlAntlrParser.ID);
-			column = new SemanticModel.Expression.Column();
-			Symbol colSymbol = new Symbol();
-			colSymbol.name = n3.getText();
-			colSymbol.type = Type.COLUMN;
-			column.column = colSymbol;
-			result = column;
-			break;
-
-		case DrqlAntlrParser.N_INT:
-			n2 = (AstNode) node.getChild(0);
-			assert (n2.getType() == DrqlAntlrParser.INT);
-			Integer integer = (Integer) Integer.parseInt(n2.getText());
-			constant = new SemanticModel.Expression.Constant();
-			constant.value = integer;
-			result = constant;
-			break;
-		}
-
-		return result;
-	}
-	private static void parseLimitClause(AstNode node, SemanticModel query) {
-		assert (node.getType() == DrqlAntlrParser.N_LIMIT);
-		int count = node.getChildCount();
-		assert (count == 1);
-		AstNode node2 = (AstNode) node.getChild(0);
-		query.limitClause = Integer.parseInt(node2.getText());
-	}
-	private static void parseOrderByClause(AstNode node, SemanticModel query) {
-		assert (node.getType() == DrqlAntlrParser.N_ORDERBY);
-		int count = node.getChildCount();
-		for (int i = 0; i < count; i ++) {
-			AstNode node2 = (AstNode) node.getChild(i);
-			assert (node2.getType() == DrqlAntlrParser.N_ASC || 
-					node2.getType() == DrqlAntlrParser.N_DESC);
-			AstNode node3 = (AstNode) node2.getChild(0);
-			assert (node3.getType() == DrqlAntlrParser.N_NAME);
-			AstNode node4 = (AstNode) node3.getChild(0);
-			String columnName = node4.getText();
-			SemanticModel.Symbol column = new SemanticModel.Symbol();
-			column.name = columnName;
-			column.type = DrqlParser.SemanticModelReader.Symbol.Type.COLUMN;
-			query.orderByClause.add(column);	
-		}
-	}
-	private static void parseHavingClause(AstNode node, SemanticModel query) {
-		assert (node.getType() == DrqlAntlrParser.N_HAVING);
-		int count = node.getChildCount();
-		assert (count == 1);
-		AstNode node2 = (AstNode) node.getChild(0);
-		assert (node2.getType() == DrqlAntlrParser.N_EXPRESSION);
-		AstNode node3 = (AstNode) node2.getChild(0);
-		query.havingClause = createExpression(node3);
-	}
-	private static void parseJoinClause(AstNode node, SemanticModel query) {
-		assert (node.getType() == DrqlAntlrParser.N_JOIN);
-		int count = node.getChildCount();
-		assert (count == 3);
-
-        SemanticModel.Symbol table = new SemanticModel.Symbol();
-
-        Tree joinFrom = node.getChild(1);
-        if(joinFrom.getType() == DrqlAntlrParser.N_TABLE) {
-            table.name = joinFrom.getChild(0).getChild(0).getChild(0).getText();
-            table.type = DrqlParser.SemanticModelReader.Symbol.Type.TABLE;
-        }
-
-
-        Tree joinOnList = node.getChild(2);
-        ArrayList<SemanticModelReader.JoinOnClause.JoinCondition> joinConditions = new ArrayList<SemanticModelReader.JoinOnClause.JoinCondition>(joinOnList.getChildCount());
-
-        if(joinOnList.getType() == DrqlAntlrParser.N_JOIN_ON_LIST) {
-            for(int i=0; i<joinOnList.getChildCount(); i++) {
-
-                SemanticModel.JoinOnClause.JoinCondition joinCondition = new SemanticModel.JoinOnClause.JoinCondition();
-                assert(joinOnList.getChild(i).getChildCount() == 2);
-                Tree leftNode = joinOnList.getChild(i).getChild(0);
-                Tree rightNode = joinOnList.getChild(i).getChild(1);
-                SemanticModel.Symbol leftSymbol =  new SemanticModel.Symbol();
-                leftSymbol.name = idNode2String((AstNode) leftNode);
-                leftSymbol.type = Type.COLUMN;
-                SemanticModel.Symbol rightSymbol =  new Symbol();
-                rightSymbol.name = idNode2String((AstNode) rightNode);
-                rightSymbol.type = Type.COLUMN;
-
-                joinCondition.leftSymbol = leftSymbol;
-                joinCondition.rightSymbol = rightSymbol;
-
-                joinConditions.add(joinCondition);
-            }
-        }
-
-        SemanticModel.JoinOnClause joinOnClause = new SemanticModel.JoinOnClause();
-        joinOnClause.table = table;
-        joinOnClause.conditions = joinConditions;
-
-        query.joinOnClause = joinOnClause;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/AstNode.java
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/AstNode.java b/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/AstNode.java
deleted file mode 100644
index 59134ea..0000000
--- a/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/AstNode.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Copyright 2010, BigDataCraft.com
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.parsers.impl.drqlantlr;
-
-/**
-*
-* This is parser-related class. 
-* This class represent a node in abstract syntax tree in dremel project
-* 
-* See ANTLR reference/books for more information.
-*
-* @author camuelg
-*/
-
-import org.antlr.runtime.Token;
-import org.antlr.runtime.tree.CommonTree;
-
-/**
- * 
- * AstNode class, it is so compact that can be keep here instead of interface to reduce clutter.
- * <P>
- * AstNode is a node in abstract syntax tree. Each node has a type and a single string value and 
- * children nodes.
- * <P>
- * @see Antrl manual
- * 
- * 
- * @author camuelg
- */
-public final class AstNode extends CommonTree {
-	public AstNode(Token payload) {
-		super(payload);
-	}
-
-	@Override
-	public String toString() {
-		return super.toString();
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/SemanticModel.java
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/SemanticModel.java b/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/SemanticModel.java
deleted file mode 100644
index 98aaf02..0000000
--- a/sandbox/query-parser/src/main/java/org/apache/drill/parsers/impl/drqlantlr/SemanticModel.java
+++ /dev/null
@@ -1,250 +0,0 @@
-package org.apache.drill.parsers.impl.drqlantlr;
-
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.drill.parsers.DrqlParser;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader;
-
-public class SemanticModel implements SemanticModelReader {
-	static class Symbol implements SemanticModelReader.Symbol {
-		Type type;
-		String name;
-		List<String> components;
-		Symbol aliasSymbol;
-		Symbol aliasedSymbol;
-				
-		@Override
-		public Type getType() {
-			return type;
-		}
-
-		@Override
-		public String getName() {
-			return name;
-		}
-
-		@Override
-		public List<String> getNameComponents() {
-			return Collections.unmodifiableList(components);
-		}
-
-		@Override
-		public boolean isAlias() {
-			return aliasSymbol == null;
-		}
-
-		@Override
-		public SemanticModelReader.Symbol getAlisasedSymbol() {
-			return aliasedSymbol;
-		}
-
-		@Override
-		public SemanticModelReader.Symbol getAliasSymbol() {
-			return aliasSymbol;
-		}
-	}
-	static class ResultColumn 
-		implements SemanticModelReader.ResultColumn {
-		SemanticModelReader.ResultColumn.Scope scope;
-		Symbol columnScope;
-		Symbol alias;
-		SemanticModelReader.Expression expression;
-
-		@Override
-		public SemanticModelReader.Symbol getAlias() {
-			return alias;
-		}
-
-		@Override
-		public SemanticModelReader.Expression getExpression() {
-			return expression;
-		}
-
-		@Override
-		public Scope getScope() {
-			return scope;
-		}
-
-		@Override
-		public SemanticModelReader.Symbol getColumnScope() {
-			return columnScope;
-		}
-			
-	}
-	static class Expression implements SemanticModelReader.Expression{
-		static class BinaryOp 
-			implements SemanticModelReader.Expression.BinaryOp {
-	
-			SemanticModelReader.Expression left;
-			SemanticModelReader.Expression right;
-			Operators operator;
-					
-			@Override
-			public SemanticModelReader.Expression getLeftExpression() {
-				return left;
-			}
-	
-			@Override
-			public SemanticModelReader.Expression getRightExpression() {
-				return right;
-			}
-	
-			@Override
-			public Operators getOperator() {
-				return operator;
-			}
-		
-		}
-		static class UnaryOp 
-			implements SemanticModelReader.Expression.UnaryOp {
-	
-			SemanticModelReader.Expression expression;
-			String operator;
-			@Override
-			public SemanticModelReader.Expression getExpression() {
-				return expression;
-			}
-	
-			@Override
-			public String getOperator() {
-				return operator;
-			}
-		
-		}
-		static class Constant 
-			implements SemanticModelReader.Expression.Constant {
-			Object value;
-			
-			@Override
-			public Object getValue() {
-				return value;
-			}
-		}
-		
-		static class Column 
-			implements SemanticModelReader.Expression.Column {
-			Symbol column;
-	
-			@Override
-			public SemanticModelReader.Symbol getSymbol() {
-				return column;
-			}
-		
-		}
-		static class Function 
-			implements SemanticModelReader.Expression.Function {
-			Symbol function;
-			List<SemanticModelReader.Expression> args;
-			
-			Function() {
-				args = new LinkedList<SemanticModelReader.Expression>();
-			}
-			
-			@Override
-			public SemanticModelReader.Symbol getSymbol() {
-				return function;
-			}
-			@Override
-			public List<SemanticModelReader.Expression> getArgs() {
-				return args;
-			}
-		
-		}
-	}
-	public static class JoinOnClause implements SemanticModelReader.JoinOnClause {
-
-        public static class JoinCondition implements SemanticModelReader.JoinOnClause.JoinCondition {
-            SemanticModelReader.Symbol leftSymbol, rightSymbol;
-
-            public SemanticModelReader.Symbol getLeftSymbol() {
-                return leftSymbol;
-            }
-
-            public SemanticModelReader.Symbol getRightSymbol() {
-                return rightSymbol;
-            }
-        }
-
-		SemanticModelReader.Symbol table;
-		List<SemanticModelReader.JoinOnClause.JoinCondition> conditions;
-
-		JoinOnClause() {
-			conditions = new LinkedList<SemanticModelReader.JoinOnClause.JoinCondition>();
-		}
-		
-		@Override
-		public SemanticModelReader.Symbol getTable() {
-			return table;
-		}
-
-		@Override
-		public List<SemanticModelReader.JoinOnClause.JoinCondition> getJoinConditionClause() {
-			return Collections.unmodifiableList(conditions);
-		}
-		
-	}
-
-	List<SemanticModelReader.Symbol> orderByClause;
-	List<SemanticModelReader> fromClause;
-	List<SemanticModelReader.ResultColumn> resultColumnList;
-	List<SemanticModelReader.Symbol> groupByClause;
-	SemanticModelReader.JoinOnClause joinOnClause;
-	SemanticModelReader.Expression whereClause;
-	SemanticModelReader.Expression havingClause;
-	Integer limitClause;
-	SemanticModelReader.Symbol justATable;
-
-	public SemanticModel() {
-		orderByClause = new LinkedList<SemanticModelReader.Symbol>();
-		fromClause = new LinkedList<SemanticModelReader>();
-		resultColumnList = new LinkedList<SemanticModelReader.ResultColumn>();
-		groupByClause = new LinkedList<SemanticModelReader.Symbol>();
-	}
-	
-	@Override
-	public List<SemanticModelReader> getFromClause() {
-		return Collections.unmodifiableList(fromClause);
-	}
-
-	@Override
-	public List<SemanticModelReader.ResultColumn> getResultColumnList() {
-		return Collections.unmodifiableList(resultColumnList);
-	}
-
-	@Override
-	public List<SemanticModelReader.Symbol> getGroupByClause() {
-		return Collections.unmodifiableList(groupByClause);
-	}
-
-	@Override
-	public List<SemanticModelReader.Symbol> getOrderByClause() {
-		return Collections.unmodifiableList(orderByClause);
-	}
-
-	@Override
-	public SemanticModelReader.JoinOnClause getJoinOnClause() {
-		return joinOnClause;
-	}
-
-	@Override
-	public SemanticModelReader.Expression getWhereClause() {
-		return whereClause;
-	}
-
-	@Override
-	public Integer getLimitClause() {
-		return limitClause;
-	}
-
-	@Override
-	public boolean isJustATable() {
-		return justATable != null;
-	}
-
-	@Override
-	public SemanticModelReader.Symbol getjustATable() {
-		return justATable;
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/src/test/java/org/apache/drill/parsers/DrqlParserAstTest.java
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/src/test/java/org/apache/drill/parsers/DrqlParserAstTest.java b/sandbox/query-parser/src/test/java/org/apache/drill/parsers/DrqlParserAstTest.java
deleted file mode 100644
index cbb7a1a..0000000
--- a/sandbox/query-parser/src/test/java/org/apache/drill/parsers/DrqlParserAstTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Copyright 2010, BigDataCraft.com
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.parsers;
-
-import static org.junit.Assert.*;
-
-import java.io.*;
-import java.util.Formatter;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Joiner;
-import com.google.common.io.Files;
-import com.google.common.io.Resources;
-import org.antlr.runtime.tree.Tree;
-import org.apache.commons.io.FileUtils;
-import org.apache.drill.parsers.impl.drqlantlr.AntlrParser;
-import org.apache.drill.parsers.impl.drqlantlr.AstNode;
-import org.junit.Test;
-
-
-public class DrqlParserAstTest {
-
-	File getFile(String filename) {
-		return new File("testdata" + File.separatorChar + filename);
-	}
-	@Test
-	public void testQueryList() throws IOException {
-        Joiner withNewline = Joiner.on("\n");
-        //tests parsing all SQL that are encountered in the documentation
-        for(int i = 1; i <= 15; i++) {
-
-            File tempFile = getFile("q" + i + "_temp.drql.sm");
-            File expectedFile = getFile("q" + i + ".drql.ast");
-            File queryFile = getFile("q" + i + ".drql");
-
-            String query = FileUtils.readFileToString(queryFile);
-            String ast = AntlrParser.parseToAst(query).toStringTree();
-            Formatter f = new Formatter();
-            formatAst(AntlrParser.parseToAst(query), f, 0);
-
-            query = withNewline.join(Resources.readLines(Resources.getResource("q" + i + ".drql"), Charsets.UTF_8));
-            assertEquals(query, f.toString());
-
-            FileUtils.writeStringToFile(tempFile, ast);
-
-               assertEquals(withNewline.join(Files.readLines(expectedFile, Charsets.UTF_8)), withNewline.join(Files.readLines(expectedFile, Charsets.UTF_8)));
-               assertEquals(String.format("sm files differs %s versus %s",expectedFile, tempFile),
-                       withNewline.join(Files.readLines(expectedFile, Charsets.UTF_8)),
-                       withNewline.join(Files.readLines(tempFile, Charsets.UTF_8)));
-               assertTrue(String.format("sm files differs %s versus %s",expectedFile, tempFile),
-                       FileUtils.contentEquals(expectedFile, tempFile));
-
-               FileUtils.forceDelete(tempFile);
-           }
-	}
-
-
-    public void formatAst(AstNode astNode, Formatter formatter, int indent) {
-        String spaces = "                                                    ";
-        formatter.format("%s%s\n", spaces.substring(0, indent), astNode.getText());
-        int n = astNode.getChildCount();
-        for (int i = 0; i < n; i++) {
-            formatAst(astNode.getChild(i), formatter, indent + 2);
-        }
-    }
-
-    public void formatAst(Tree astNode, Formatter formatter, int indent) {
-        String spaces = "                                                    ";
-        formatter.format("%s%s\n", spaces.substring(0, indent), astNode.getText());
-        int n = astNode.getChildCount();
-        for (int i = 0; i < n; i++) {
-            formatAst(astNode.getChild(i), formatter, indent + 2);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/src/test/java/org/apache/drill/parsers/DrqlParserTest.java
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/src/test/java/org/apache/drill/parsers/DrqlParserTest.java b/sandbox/query-parser/src/test/java/org/apache/drill/parsers/DrqlParserTest.java
deleted file mode 100644
index 65b0a1f..0000000
--- a/sandbox/query-parser/src/test/java/org/apache/drill/parsers/DrqlParserTest.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/**
- * Copyright 2010, BigDataCraft.com
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.parsers;
-
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.drill.parsers.impl.drqlantlr.AntlrParser;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.Expression;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.Expression.BinaryOp;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.Expression.BinaryOp.Operators;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.Expression.Column;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.Expression.Function;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.ResultColumn;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.ResultColumn.Scope;
-import org.apache.drill.parsers.DrqlParser.SemanticModelReader.Symbol;
-import org.junit.Test;
-
-public class DrqlParserTest {
-
-	File getFile(String filename) {
-		return new File("testdata" + File.separatorChar + filename);
-	}
-	void testBasicSymbol(Symbol sym, String name) {
-		assertTrue(sym.getAliasSymbol() == null);
-		String name2 = sym.getName();
-		assertTrue(name2.equals(name));	
-	}
-	void testBasicResultColumn(ResultColumn col, String name) {
-		assertTrue(col.getScope() == Scope.FULL);
-		assertTrue(col.getAlias() == null);
-		assertTrue(col.getColumnScope() == null);
-		Expression expr = col.getExpression();
-		assertTrue(expr instanceof Expression.Column);
-		Expression.Column colExpr = (Expression.Column) expr;
-		Symbol sym = colExpr.getSymbol();
-		testBasicSymbol(sym, name);
-	}
-	void testBasicTable(SemanticModelReader subQuery, String name) {
-		assertTrue(subQuery.isJustATable());
-		Symbol sym = subQuery.getjustATable();
-		testBasicSymbol(sym, name);
-	}
-	
-	@Test
-	public void testBasicQuery() throws IOException {
-		
-		String drqlQueryText = "SELECT column1 FROM table1";
-		DrqlParser parser = new AntlrParser();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-
-		//result column list
-		List<ResultColumn> resColList = query.getResultColumnList();
-        assertEquals(1, resColList.size());
-		ResultColumn col = resColList.get(0);
-		testBasicResultColumn(col, "column1");
-		
-		//from clause
-		List<SemanticModelReader> subQueryList = query.getFromClause();
-        assertEquals(1, subQueryList.size());
-		SemanticModelReader subQuery = subQueryList.get(0);
-		testBasicTable(subQuery, "table1");
-		
-		//check the rest of the model
-        assertEquals(0, query.getGroupByClause().size());
-        assertEquals(null, query.getJoinOnClause());
-        assertEquals(0, query.getOrderByClause().size());
-        assertEquals(null, query.getLimitClause());
-	}
-	
-	void testAlias(ResultColumn col, String name) {
-		Symbol alias = col.getAlias();
-        assertEquals(name, alias.getName());
-        assertEquals("COLUMN_ALIAS", alias.getType().name());
-	}
-	
-	@Test
-	public void testQuery1() throws IOException {
-		
-		String drqlQueryText = "SELECT column1 as col1, column2 FROM table1 WHERE col1 > 55 ORDER BY column2 ASC";
-		DrqlParser parser = new AntlrParser();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-
-		//result column list
-		List<ResultColumn> resColList = query.getResultColumnList();
-        assertEquals(2, resColList.size());
-		ResultColumn col1 = resColList.get(0);
-        assertEquals(Scope.FULL, col1.getScope());
-		testAlias(col1, "col1");
-        assertEquals(null, col1.getColumnScope());
-		Expression expr = col1.getExpression();
-		assertTrue(expr instanceof Expression.Column);
-		ResultColumn col2 = resColList.get(1);
-		testBasicResultColumn(col2, "column2");
-		
-		//from clause
-		List<SemanticModelReader> subQueryList = query.getFromClause();
-        assertEquals(1, subQueryList.size());
-		SemanticModelReader subQuery = subQueryList.get(0);
-		testBasicTable(subQuery, "table1");
-		
-		//where clause
-		Expression whereExpr = query.getWhereClause();
-		assertTrue(whereExpr instanceof Expression.BinaryOp);
-		Expression.BinaryOp whereExpr2 = (BinaryOp) query.getWhereClause();
-        assertEquals(Operators.GREATER_THAN, whereExpr2.getOperator());
-		
-		//order by clause
-		List<Symbol> orderByClause = query.getOrderByClause();
-        assertEquals(1, orderByClause.size());
-		Symbol orderBy1 = orderByClause.get(0);
-        assertEquals("column2", orderBy1.getName());
-        assertEquals("COLUMN", orderBy1.getType().name());
-		
-		//check the rest of the model
-        assertEquals(0, query.getGroupByClause().size());
-        assertEquals(null, query.getJoinOnClause());
-        assertEquals(null, query.getLimitClause());
-	}
-	
-	@Test
-	public void testQuery2() throws IOException {
-		
-		String drqlQueryText = 
-				"SELECT customersTable.id, customersTable.name, ordersTable.id " + 
-				"FROM customersTable " +
-				"INNER JOIN ordersTable ON customersTable.id = ordersTable.customerId";
-
-		DrqlParser parser = new AntlrParser();
-        String ast = AntlrParser.parseToAst(drqlQueryText).toStringTree();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-
-        SemanticModelReader.JoinOnClause join = query.getJoinOnClause();
-        assertNotNull(join);
-        assertEquals("ordersTable", join.getTable().getName());
-        assertEquals(1, join.getJoinConditionClause().size());
-        assertEquals(Symbol.Type.COLUMN, join.getJoinConditionClause().get(0).getLeftSymbol().getType());
-        assertEquals("customersTable.id", join.getJoinConditionClause().get(0).getLeftSymbol().getName());
-        assertEquals(Symbol.Type.COLUMN, join.getJoinConditionClause().get(0).getRightSymbol().getType());
-        assertEquals("ordersTable.customerId", join.getJoinConditionClause().get(0).getRightSymbol().getName());
-    }
-	
-	@Test
-	public void testQuery3() throws IOException {
-		
-		String drqlQueryText = "SELECT COUNT(f1) FROM table1";
-		DrqlParser parser = new AntlrParser();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-
-		//result column list
-		List<ResultColumn> resColList = query.getResultColumnList();
-        assertEquals(1, resColList.size());
-		ResultColumn col1 = resColList.get(0);
-        assertEquals(Scope.FULL, col1.getScope());
-        assertEquals(null, col1.getAlias());
-		Expression expr = col1.getExpression();
-		assertTrue(expr instanceof Expression.Function);
-		Expression.Function func = (Function) col1.getExpression();
-        assertEquals("COUNT", func.getSymbol().getName());
-        assertEquals(1, func.getArgs().size());
-		Expression arg1 = (Expression) func.getArgs().get(0);
-		assertTrue(arg1 instanceof Expression.Column);
-		Expression.Column arg1Column = (Column) arg1;
-        assertEquals("f1", arg1Column.getSymbol().getName());
-        assertEquals(null, col1.getColumnScope());
-		
-		//from clause
-		List<SemanticModelReader> subQueryList = query.getFromClause();
-        assertEquals(1, subQueryList.size());
-		SemanticModelReader subQuery = subQueryList.get(0);
-		testBasicTable(subQuery, "table1");
-		
-		//check the rest of the model
-        assertEquals(0, query.getGroupByClause().size());
-        assertEquals(null, query.getJoinOnClause());
-        assertEquals(null, query.getLimitClause());
-	}
-	
-	@Test
-	public void testQuery4() throws IOException {
-		String drqlQueryText = "SELECT COUNT(r1.m2.f3) WITHIN r1.m2 AS cnt FROM [Table1];";
-		DrqlParser parser = new AntlrParser();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-
-		//result column list
-		List<ResultColumn> resColList = query.getResultColumnList();
-        assertEquals(1, resColList.size());
-		ResultColumn col1 = resColList.get(0);
-        assertEquals(Scope.COLUMN, col1.getScope());
-		testAlias(col1, "cnt");
-		Expression expr = col1.getExpression();
-		assertTrue(expr instanceof Expression.Function);
-		Expression.Function func = (Function) col1.getExpression();
-        assertEquals("COUNT", func.getSymbol().getName());
-        assertEquals(1, func.getArgs().size());
-		Expression arg1 = (Expression) func.getArgs().get(0);
-		assertTrue(arg1 instanceof Expression.Column);
-		Expression.Column arg1Column = (Column) arg1;
-        assertEquals("r1", arg1Column.getSymbol().getName());
-		
-		//from clause
-		List<SemanticModelReader> subQueryList = query.getFromClause();
-        assertEquals(1, subQueryList.size());
-		SemanticModelReader subQuery = subQueryList.get(0);
-		testBasicTable(subQuery, "[Table1]");
-		
-		//check the rest of the model
-        assertEquals(0, query.getGroupByClause().size());
-        assertEquals(null, query.getJoinOnClause());
-        assertEquals(null, query.getLimitClause());
-	}
-	
-	@Test
-	public void testQuery5() throws IOException {
-		
-		String drqlQueryText = "SELECT f1, SUM(f2) FROM [Table1] GROUP BY f1 HAVING SUM(f2) > 1000;";
-		DrqlParser parser = new AntlrParser();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-
-		//result column list
-		List<ResultColumn> resColList = query.getResultColumnList();
-        assertEquals(2, resColList.size());
-		
-		ResultColumn col1 = resColList.get(0);
-        assertEquals(Scope.FULL, col1.getScope());
-		testBasicResultColumn(col1, "f1");
-		
-		ResultColumn col2 = resColList.get(1);
-		Expression expr = col2.getExpression();
-		assertTrue(expr instanceof Expression.Function);
-		Expression.Function func = (Function) col2.getExpression();
-        assertEquals("SUM", func.getSymbol().getName());
-        assertEquals(1, func.getArgs().size());
-		Expression arg1 = (Expression) func.getArgs().get(0);
-		assertTrue(arg1 instanceof Expression.Column);
-		Expression.Column arg1Column = (Column) arg1;
-        assertEquals("f2", arg1Column.getSymbol().getName());
-		
-		//from clause
-		List<SemanticModelReader> subQueryList = query.getFromClause();
-        assertEquals(1, subQueryList.size());
-		SemanticModelReader subQuery = subQueryList.get(0);
-		testBasicTable(subQuery, "[Table1]");
-		
-		//group-by clause
-		List<Symbol> groupByList = query.getGroupByClause();
-        assertEquals(1, groupByList.size());
-		Symbol groupBy1 = groupByList.get(0);
-        assertEquals("f1", groupBy1.getName());
-        assertEquals("COLUMN", groupBy1.getType().name());
-		
-		//check the rest of the model
-        assertEquals(null, query.getJoinOnClause());
-        assertEquals(null, query.getLimitClause());
-	}
-	
-	@Test
-	public void testQuery6() throws IOException {
-		
-		String drqlQueryText = "SELECT COUNT(m1.f2) WITHIN RECORD FROM table1;";
-		DrqlParser parser = new AntlrParser();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-
-		//result column list
-		List<ResultColumn> resColList = query.getResultColumnList();
-        assertEquals(1, resColList.size());
-		
-		ResultColumn col1 = resColList.get(0);
-        assertEquals(Scope.RECORD, col1.getScope());
-		Expression expr = col1.getExpression();
-		assertTrue(expr instanceof Expression.Function);
-		Expression.Function func = (Function) col1.getExpression();
-        assertEquals("COUNT", func.getSymbol().getName());
-        assertEquals(1, func.getArgs().size());
-		Expression arg1 = (Expression) func.getArgs().get(0);
-		assertTrue(arg1 instanceof Expression.Column);
-		Expression.Column arg1Column = (Column) arg1;
-        assertEquals("m1", arg1Column.getSymbol().getName());
-		
-		//from clause
-		List<SemanticModelReader> subQueryList = query.getFromClause();
-        assertEquals(1, subQueryList.size());
-		SemanticModelReader subQuery = subQueryList.get(0);
-		testBasicTable(subQuery, "table1");
-		
-		//check the rest of the model
-        assertEquals(0, query.getGroupByClause().size());
-        assertEquals(null, query.getJoinOnClause());
-        assertEquals(null, query.getLimitClause());
-	}
-	
-	@Test
-	public void testQuery7() throws IOException {
-		
-		String drqlQueryText = "SELECT column1 FROM table1 LIMIT 5;";
-		DrqlParser parser = new AntlrParser();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-
-		//result column list
-		List<ResultColumn> resColList = query.getResultColumnList();
-        assertEquals(1, resColList.size());
-		ResultColumn col = resColList.get(0);
-		testBasicResultColumn(col, "column1");
-		
-		//from clause
-		List<SemanticModelReader> subQueryList = query.getFromClause();
-        assertEquals(1, subQueryList.size());
-		SemanticModelReader subQuery = subQueryList.get(0);
-		testBasicTable(subQuery, "table1");
-		
-		//limit clause
-		int limitClause = query.getLimitClause();
-        assertEquals(5, limitClause);
-		
-		//check the rest of the model
-        assertEquals(0, query.getGroupByClause().size());
-        assertEquals(null, query.getJoinOnClause());
-        assertEquals(0, query.getOrderByClause().size());
-	}
-	
-	void testColumnBinaryOpC1(ResultColumn col, Operators op) {
-        assertEquals(Scope.FULL, col.getScope());
-        assertNull(col.getAlias());
-        assertNull(col.getColumnScope());
-		Expression expr = col.getExpression();
-		assertTrue(expr instanceof Expression.BinaryOp);
-		Expression.BinaryOp colExpr = (Expression.BinaryOp) expr;
-        assertEquals(op, colExpr.getOperator());
-		Expression left = colExpr.getLeftExpression();
-		Expression right = colExpr.getRightExpression();
-		assertTrue(left instanceof Expression.Column);
-		assertTrue(right instanceof Expression.Constant);
-		Expression.Column leftExpr = (Expression.Column) left;
-		Expression.Constant rightExpr = (Expression.Constant) right;
-		Symbol sym = leftExpr.getSymbol();
-		testBasicSymbol(sym, "c");
-		assertEquals(Integer.valueOf(1), rightExpr.getValue());
-	}
-	
-	@Test
-	public void testQuery8() throws IOException {
-		
-		String drqlQueryText = "SELECT c - 1, c + 1, c / 1, c * 1 FROM table1;";
-		DrqlParser parser = new AntlrParser();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-
-		//result column list
-		List<ResultColumn> resColList = query.getResultColumnList();
-		assertTrue(resColList.size() == 4);
-		ResultColumn col1 = resColList.get(0);
-		testColumnBinaryOpC1(col1, Operators.SUBTRACT);
-		ResultColumn col2 = resColList.get(1);
-		testColumnBinaryOpC1(col2, Operators.ADD);
-		ResultColumn col3 = resColList.get(2);
-		testColumnBinaryOpC1(col3, Operators.DIVIDE);
-		ResultColumn col4 = resColList.get(3);
-		testColumnBinaryOpC1(col4, Operators.MULTIPLY);
-		
-		//from clause
-		List<SemanticModelReader> subQueryList = query.getFromClause();
-		assertTrue(subQueryList.size() == 1);
-		SemanticModelReader subQuery = subQueryList.get(0);
-		testBasicTable(subQuery, "table1");
-		
-		//check the rest of the model
-        assertNull(query.getLimitClause());
-        assertEquals(0, query.getGroupByClause().size());
-        assertNull(query.getJoinOnClause());
-        assertEquals(0, query.getOrderByClause().size());
-	}
-	
-	@Test
-	public void testQuery9() throws IOException {
-		
-		String drqlQueryText = "SELECT c - 1 + 2 FROM table1;";
-		DrqlParser parser = new AntlrParser();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-
-		//result column list
-		List<ResultColumn> resColList = query.getResultColumnList();
-        assertEquals(1, resColList.size());
-		ResultColumn col1 = resColList.get(0);
-        assertEquals(Scope.FULL, col1.getScope());
-        assertNull(col1.getAlias());
-        assertNull(col1.getColumnScope());
-		Expression expr = col1.getExpression();
-		assertTrue(expr instanceof Expression.BinaryOp);
-		Expression.BinaryOp colExpr = (Expression.BinaryOp) expr;
-        assertEquals(Operators.ADD, colExpr.getOperator());
-		Expression left1 = colExpr.getLeftExpression();
-		Expression right1 = colExpr.getRightExpression();
-		assertTrue(left1 instanceof Expression.BinaryOp);
-		assertTrue(right1 instanceof Expression.Constant);
-		Expression.BinaryOp leftExpr1 = (Expression.BinaryOp) left1;
-		Expression.Constant rightExpr1 = (Expression.Constant) right1;
-        assertEquals(2, rightExpr1.getValue());
-        assertEquals(Operators.SUBTRACT, leftExpr1.getOperator());
-		Expression left1_2 = leftExpr1.getLeftExpression();
-		Expression right1_2 = leftExpr1.getRightExpression();
-		Expression.Column leftExpr1_2 = (Expression.Column) left1_2;
-		Expression.Constant rightExpr1_2 = (Expression.Constant) right1_2;
-		Symbol sym = leftExpr1_2.getSymbol();
-		testBasicSymbol(sym, "c");
-        assertEquals(1, rightExpr1_2.getValue());
-		
-		//from clause
-		List<SemanticModelReader> subQueryList = query.getFromClause();
-        assertEquals(1, subQueryList.size());
-		SemanticModelReader subQuery = subQueryList.get(0);
-		testBasicTable(subQuery, "table1");
-		
-		//check the rest of the model
-        assertNull(query.getLimitClause());
-        assertEquals(0, query.getGroupByClause().size());
-        assertNull(query.getJoinOnClause());
-        assertEquals(0, query.getOrderByClause().size());
-	}
-	
-	@Test
-	public void testSyntaxErrorQuery1() throws IOException {
-		
-		String drqlQueryText = "blah blah blah";
-		
-		// TODO: provide syntax error messages in g file. write this test.
-		
-		/*
-		DrqlParser parser = new AntlrParser();
-		SemanticModelReader query = parser.parse(drqlQueryText);
-		
-		
-		//check the rest of the model
-		assertTrue(query.getResultColumnList().size() == 0);
-		assertTrue(query.getFromClause().size() == 0);
-		assertTrue(query.getGroupByClause().size() == 0);
-		assertTrue(query.getJoinOnClause() == null);
-		assertTrue(query.getLimitClause() == null);
-		assertTrue(query.getOrderByClause().size() == 0);
-		*/
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q1.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q1.drql b/sandbox/query-parser/testdata/q1.drql
deleted file mode 100644
index 69b1f83..0000000
--- a/sandbox/query-parser/testdata/q1.drql
+++ /dev/null
@@ -1,3 +0,0 @@
-SELECT word AS w, LENGTH(word), 3*2-1
-  FROM [bigquery/samples/shakespeare]
-  WHERE word CONTAINS 'th';
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q1.drql.ast
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q1.drql.ast b/sandbox/query-parser/testdata/q1.drql.ast
deleted file mode 100644
index 511747b..0000000
--- a/sandbox/query-parser/testdata/q1.drql.ast
+++ /dev/null
@@ -1,6 +0,0 @@
-(N_SELECT_STATEMENT
-(N_FROM (N_TABLE_NAME [bigquery/samples/shakespeare]))
-(N_SELECT (N_COLUMN (N_EXPRESSION (N_ID (N_NAME word))) (N_ALIAS w))
-          (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME word))) (N_ID (N_NAME LENGTH)))))
-           (N_COLUMN (N_EXPRESSION (N_SUBSTRUCT (N_MULTIPLY (N_INT 3) (N_INT 2)) (N_INT 1)))))
-(N_WHERE (N_EXPRESSION (N_CONTAINS (N_ID (N_NAME word)) (N_STRING 'th')))))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q10.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q10.drql b/sandbox/query-parser/testdata/q10.drql
deleted file mode 100644
index 6db67cc..0000000
--- a/sandbox/query-parser/testdata/q10.drql
+++ /dev/null
@@ -1 +0,0 @@
-SELECT f1, COUNT(f2), f3 FROM [Table] GROUP BY f1;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q10.drql.ast
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q10.drql.ast b/sandbox/query-parser/testdata/q10.drql.ast
deleted file mode 100644
index 7049777..0000000
--- a/sandbox/query-parser/testdata/q10.drql.ast
+++ /dev/null
@@ -1 +0,0 @@
-(N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME [Table])) (N_SELECT (N_COLUMN (N_EXPRESSION (N_ID (N_NAME f1)))) (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME f2))) (N_ID (N_NAME COUNT))))) (N_COLUMN (N_EXPRESSION (N_ID (N_NAME f3))))) (N_GROUPBY (N_NAME f1)))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q11.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q11.drql b/sandbox/query-parser/testdata/q11.drql
deleted file mode 100644
index 028c02b..0000000
--- a/sandbox/query-parser/testdata/q11.drql
+++ /dev/null
@@ -1 +0,0 @@
-SELECT COUNT(*), word FROM [Table] WHERE word CONTAINS 'th' GROUP BY word LIMIT 5;

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q11.drql.ast
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q11.drql.ast b/sandbox/query-parser/testdata/q11.drql.ast
deleted file mode 100644
index 98db6ae..0000000
--- a/sandbox/query-parser/testdata/q11.drql.ast
+++ /dev/null
@@ -1 +0,0 @@
-(N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME [Table])) (N_SELECT (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME *))) (N_ID (N_NAME COUNT))))) (N_COLUMN (N_EXPRESSION (N_ID (N_NAME word))))) (N_WHERE (N_EXPRESSION (N_CONTAINS (N_ID (N_NAME word)) (N_STRING 'th')))) (N_GROUPBY (N_NAME word)) (N_LIMIT 5))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q12.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q12.drql b/sandbox/query-parser/testdata/q12.drql
deleted file mode 100644
index 858c85c..0000000
--- a/sandbox/query-parser/testdata/q12.drql
+++ /dev/null
@@ -1 +0,0 @@
-SELECT COUNT(f1) FROM Table;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q12.drql.ast
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q12.drql.ast b/sandbox/query-parser/testdata/q12.drql.ast
deleted file mode 100644
index a2a5f47..0000000
--- a/sandbox/query-parser/testdata/q12.drql.ast
+++ /dev/null
@@ -1 +0,0 @@
-(N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME Table)) (N_SELECT (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME f1))) (N_ID (N_NAME COUNT)))))))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q13.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q13.drql b/sandbox/query-parser/testdata/q13.drql
deleted file mode 100644
index 0d6c21a..0000000
--- a/sandbox/query-parser/testdata/q13.drql
+++ /dev/null
@@ -1 +0,0 @@
-SELECT COUNT(f1) FROM Table GROUP BY b1;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q13.drql.ast
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q13.drql.ast b/sandbox/query-parser/testdata/q13.drql.ast
deleted file mode 100644
index 60d3008..0000000
--- a/sandbox/query-parser/testdata/q13.drql.ast
+++ /dev/null
@@ -1 +0,0 @@
-(N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME Table)) (N_SELECT (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME f1))) (N_ID (N_NAME COUNT)))))) (N_GROUPBY (N_NAME b1)))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q14.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q14.drql b/sandbox/query-parser/testdata/q14.drql
deleted file mode 100644
index 5abd083..0000000
--- a/sandbox/query-parser/testdata/q14.drql
+++ /dev/null
@@ -1 +0,0 @@
-SELECT COUNT(m1.f2) WITHIN RECORD FROM Table;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q14.drql.ast
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q14.drql.ast b/sandbox/query-parser/testdata/q14.drql.ast
deleted file mode 100644
index fcc194e..0000000
--- a/sandbox/query-parser/testdata/q14.drql.ast
+++ /dev/null
@@ -1 +0,0 @@
-(N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME Table)) (N_SELECT (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME m1) (N_NAME f2))) (N_ID (N_NAME COUNT)))) N_WITHIN_RECORD)))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q15.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q15.drql b/sandbox/query-parser/testdata/q15.drql
deleted file mode 100644
index b2eab2d..0000000
--- a/sandbox/query-parser/testdata/q15.drql
+++ /dev/null
@@ -1,8 +0,0 @@
-SELECT 
-	DocId AS Id, 
-	COUNT(Name.Language.Code) WITHIN Name AS Cnt, 
-	Name.Url + ',' + Name.Language.Code AS Str
-FROM 
-	t , (select a,b from c)
-WHERE 
-	REGEXP(Name.Url, '^http') AND DocId < 20
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q15.drql.ast
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q15.drql.ast b/sandbox/query-parser/testdata/q15.drql.ast
deleted file mode 100644
index a3edb3b..0000000
--- a/sandbox/query-parser/testdata/q15.drql.ast
+++ /dev/null
@@ -1 +0,0 @@
-(N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME t) (N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME c)) (N_SELECT (N_COLUMN (N_EXPRESSION (N_ID (N_NAME a)))) (N_COLUMN (N_EXPRESSION (N_ID (N_NAME b))))))) (N_SELECT (N_COLUMN (N_EXPRESSION (N_ID (N_NAME DocId))) (N_ALIAS Id)) (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME Name) (N_NAME Language) (N_NAME Code))) (N_ID (N_NAME COUNT)))) (N_ALIAS Cnt) (N_WITHIN (N_ID (N_NAME Name)))) (N_COLUMN (N_EXPRESSION (N_ADD (N_ADD (N_ID (N_NAME Name) (N_NAME Url)) (N_STRING ',')) (N_ID (N_NAME Name) (N_NAME Language) (N_NAME Code)))) (N_ALIAS Str))) (N_WHERE (N_EXPRESSION (N_LOGICAL_AND (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME Name) (N_NAME Url))) (N_EXPRESSION (N_STRING '^http')) (N_ID (N_NAME REGEXP))) (N_LESS_THAN (N_ID (N_NAME cId)) (N_INT 20))))))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q16.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q16.drql b/sandbox/query-parser/testdata/q16.drql
deleted file mode 100644
index e7e83c1..0000000
--- a/sandbox/query-parser/testdata/q16.drql
+++ /dev/null
@@ -1 +0,0 @@
-select Links.Backward, Links.Forward, Name.Url from table
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q17.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q17.drql b/sandbox/query-parser/testdata/q17.drql
deleted file mode 100644
index f3a06b1..0000000
--- a/sandbox/query-parser/testdata/q17.drql
+++ /dev/null
@@ -1 +0,0 @@
-select Name.Url from table
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q18.bql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q18.bql b/sandbox/query-parser/testdata/q18.bql
deleted file mode 100644
index d5bbd72..0000000
--- a/sandbox/query-parser/testdata/q18.bql
+++ /dev/null
@@ -1,3 +0,0 @@
-SELECT x, y, z
-  FROM [bigquery/samples/shakespeare]
-  ORDER BY x, y desc;

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q1_temp.drql.sm
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q1_temp.drql.sm b/sandbox/query-parser/testdata/q1_temp.drql.sm
deleted file mode 100644
index 623e953..0000000
--- a/sandbox/query-parser/testdata/q1_temp.drql.sm
+++ /dev/null
@@ -1 +0,0 @@
-(N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME [bigquery/samples/shakespeare])) (N_SELECT (N_COLUMN (N_EXPRESSION (N_ID (N_NAME word))) (N_ALIAS w)) (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_ID (N_NAME LENGTH))))) (N_COLUMN (N_EXPRESSION (N_SUBSTRUCT (N_MULTIPLY (N_INT 3) (N_INT 2)) (N_INT 1))))) (N_WHERE (N_EXPRESSION (N_CONTAINS (N_ID (N_NAME word)) (N_STRING 'th')))))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q2.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q2.drql b/sandbox/query-parser/testdata/q2.drql
deleted file mode 100644
index 50444b8..0000000
--- a/sandbox/query-parser/testdata/q2.drql
+++ /dev/null
@@ -1,3 +0,0 @@
-SELECT COUNT(*)
-  FROM [bigquery/samples/shakespeare]
-  WHERE word CONTAINS 'th';
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q2.drql.ast
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q2.drql.ast b/sandbox/query-parser/testdata/q2.drql.ast
deleted file mode 100644
index 1215bba..0000000
--- a/sandbox/query-parser/testdata/q2.drql.ast
+++ /dev/null
@@ -1 +0,0 @@
-(N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME [bigquery/samples/shakespeare])) (N_SELECT (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME *))) (N_ID (N_NAME COUNT)))))) (N_WHERE (N_EXPRESSION (N_CONTAINS (N_ID (N_NAME word)) (N_STRING 'th')))))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q3.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q3.drql b/sandbox/query-parser/testdata/q3.drql
deleted file mode 100644
index 0eb146c..0000000
--- a/sandbox/query-parser/testdata/q3.drql
+++ /dev/null
@@ -1,4 +0,0 @@
-SELECT f1, SUM(f2)
-  FROM [Table]
-  GROUP BY f1
-  HAVING SUM(f2) > 1000;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q3.drql.ast
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q3.drql.ast b/sandbox/query-parser/testdata/q3.drql.ast
deleted file mode 100644
index b053242..0000000
--- a/sandbox/query-parser/testdata/q3.drql.ast
+++ /dev/null
@@ -1 +0,0 @@
-(N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME [Table])) (N_SELECT (N_COLUMN (N_EXPRESSION (N_ID (N_NAME f1)))) (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME f2))) (N_ID (N_NAME SUM)))))) (N_GROUPBY (N_NAME f1)))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q4.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q4.drql b/sandbox/query-parser/testdata/q4.drql
deleted file mode 100644
index 9e6f420..0000000
--- a/sandbox/query-parser/testdata/q4.drql
+++ /dev/null
@@ -1,3 +0,0 @@
-SELECT f1, total
-  FROM (SELECT f1, SUM(f2) AS total from [Table] GROUP BY f1)
-  WHERE total > 1000;

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q4.drql.ast
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q4.drql.ast b/sandbox/query-parser/testdata/q4.drql.ast
deleted file mode 100644
index b525ebd..0000000
--- a/sandbox/query-parser/testdata/q4.drql.ast
+++ /dev/null
@@ -1 +0,0 @@
-(N_SELECT_STATEMENT (N_FROM (N_SELECT_STATEMENT (N_FROM (N_TABLE_NAME [Table])) (N_SELECT (N_COLUMN (N_EXPRESSION (N_ID (N_NAME f1)))) (N_COLUMN (N_EXPRESSION (N_CALL_PARAMS (N_EXPRESSION (N_ID (N_NAME f2))) (N_ID (N_NAME SUM)))) (N_ALIAS total))) (N_GROUPBY (N_NAME f1)))) (N_SELECT (N_COLUMN (N_EXPRESSION (N_ID (N_NAME f1)))) (N_COLUMN (N_EXPRESSION (N_ID (N_NAME total))))) (N_WHERE (N_EXPRESSION (N_GREATER_THAN (N_ID (N_NAME total)) (N_INT 1000)))))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/479ddad7/sandbox/query-parser/testdata/q5.drql
----------------------------------------------------------------------
diff --git a/sandbox/query-parser/testdata/q5.drql b/sandbox/query-parser/testdata/q5.drql
deleted file mode 100644
index 2bbaf0c..0000000
--- a/sandbox/query-parser/testdata/q5.drql
+++ /dev/null
@@ -1 +0,0 @@
-SELECT f1, COUNT(m1.f2) WITHIN RECORD AS cnt FROM [Table];
\ No newline at end of file