Hibernate SVN: r16412 - in core/branches/antlr3/src: main/java/org/hibernate/sql/ast/phase/hql/resolve and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: porcelli
Date: 2009-04-22 17:20:04 -0400 (Wed, 22 Apr 2009)
New Revision: 16412
Modified:
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java
Log:
now 2nd pase is using the SelectPathResolutionStrategy
Modified: core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g
===================================================================
--- core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g 2009-04-22 20:18:51 UTC (rev 16411)
+++ core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g 2009-04-22 21:20:04 UTC (rev 16412)
@@ -48,59 +48,64 @@
@members{
protected void registerPersisterSpace(CommonTree entityName,
CommonTree alias) {
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected boolean isUnqualifiedPropertyReference() {
- return false;
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected Tree normalizeUnqualifiedPropertyReference(CommonTree property) {
- return null;
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected boolean isPersisterReferenceAlias() {
- return false;
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected PathedPropertyReferenceSource normalizeUnqualifiedRoot( CommonTree identifier382 ) {
- // TODO Auto-generated method stub
- return null;
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected PathedPropertyReferenceSource normalizeQualifiedRoot( CommonTree identifier381 ) {
- // TODO Auto-generated method stub
- return null;
+ throw new UnsupportedOperationException( "must be overridden!" );
}
- protected void normalizePropertyPathIntermediary( CommonTree commonTree,
- CommonTree identifier387 ) {
- // TODO Auto-generated method stub
+ protected PathedPropertyReferenceSource normalizePropertyPathIntermediary( PathedPropertyReferenceSource source, CommonTree propertyName ) {
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected void normalizeIntermediateIndexOperation( CommonTree commonTree,
CommonTree commonTree2 ) {
- // TODO Auto-generated method stub
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected void normalizeUnqualifiedPropertyReferenceSource(
CommonTree identifier394 ) {
- // TODO Auto-generated method stub
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected void normalizeTerminalIndexOperation(CommonTree collectionPath, CommonTree selector) {
- // TODO Auto-generated method stub
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected void normalizePropertyPathTerminus(PathedPropertyReferenceSource source, CommonTree propertyNameNode) {
- // TODO Auto-generated method stub
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected void pushFromStrategy( JoinType joinType,
CommonTree assosiationFetchTree, CommonTree propertyFetchTree,
CommonTree alias ) {
+ throw new UnsupportedOperationException( "must be overridden!" );
}
+
+ protected void pushSelectStrategy() {
+ throw new UnsupportedOperationException( "must be overridden!" );
+ }
+
protected void popStrategy(){
+ throw new UnsupportedOperationException( "must be overridden!" );
}
}
@@ -227,6 +232,8 @@
;
selectClause
+@init { if (state.backtracking == 0) pushSelectStrategy(); }
+@after { popStrategy(); }
: ^(SELECT DISTINCT? rootSelectExpression)
;
@@ -336,7 +343,7 @@
| ^(DOT_CLASS path) // crazy
| ^(GENERAL_FUNCTION_CALL path)
| ^(JAVA_CONSTANT path) //It will generate at SQL a parameter element (?) -> 'cos we do not need to care about char escaping
- | ^(PATH path)
+ | ^(PATH propertyReferencePath)
;
caseExpression
@@ -577,13 +584,13 @@
pathedPropertyReferenceSource returns [PathedPropertyReferenceSource propertyReferenceSource]
: {(isPersisterReferenceAlias())}?=> IDENTIFIER { $propertyReferenceSource = normalizeQualifiedRoot( $IDENTIFIER ); }
| {(isUnqualifiedPropertyReference())}?=> IDENTIFIER { $propertyReferenceSource = normalizeUnqualifiedRoot( $IDENTIFIER ); }
- | intermediatePathedPropertyReference
- | intermediateIndexOperation
+ | intermediatePathedPropertyReference { $propertyReferenceSource = $intermediatePathedPropertyReference.propertyReferenceSource; }
+ | intermediateIndexOperation { $propertyReferenceSource = null; }
;
-intermediatePathedPropertyReference
- : ^(DOT pathedPropertyReferenceSource IDENTIFIER )
- { normalizePropertyPathIntermediary( $pathedPropertyReferenceSource.tree, $IDENTIFIER ); }
+intermediatePathedPropertyReference returns [PathedPropertyReferenceSource propertyReferenceSource]
+ : ^(DOT source=pathedPropertyReferenceSource IDENTIFIER )
+ { $propertyReferenceSource = normalizePropertyPathIntermediary( $pathedPropertyReferenceSource.propertyReferenceSource, $IDENTIFIER ); }
;
intermediateIndexOperation
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java 2009-04-22 20:18:51 UTC (rev 16411)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java 2009-04-22 21:20:04 UTC (rev 16412)
@@ -36,6 +36,7 @@
import org.hibernate.sql.ast.phase.hql.resolve.path.PathedPropertyReferenceSource;
import org.hibernate.sql.ast.phase.hql.resolve.path.impl.BasicPathResolutionStrategySupport;
import org.hibernate.sql.ast.phase.hql.resolve.path.impl.FromClausePathResolutionStrategy;
+import org.hibernate.sql.ast.phase.hql.resolve.path.impl.SelectClausePathResolutionStrategy;
import org.hibernate.sql.ast.tree.Table;
import org.hibernate.sql.ast.tree.Table.EntityTableSpace;
import org.hibernate.sql.ast.util.TreePrinter;
@@ -134,6 +135,11 @@
.getText() ) );
}
+ protected void pushSelectStrategy() {
+ pathResolutionStrategyStack
+ .push( new SelectClausePathResolutionStrategy( this ) );
+ }
+
protected void popStrategy() {
pathResolutionStrategyStack.pop();
}
@@ -206,11 +212,13 @@
propertyNameNode.getText() );
}
- protected void normalizePropertyPathIntermediary( CommonTree identifier1,
- CommonTree identifier2 ) {
- System.out.println( "normalizePropertyPathIntermediary: "
- + identifier1.getText() + ":" + identifier2.getText() );
- // TODO Auto-generated method stub
+ protected PathedPropertyReferenceSource normalizePropertyPathIntermediary(
+ PathedPropertyReferenceSource source, CommonTree propertyName ) {
+ log.trace( "normalizing intermediate path expression ["
+ + textOrNull( propertyName ) + "]" );
+ return getCurrentPathResolutionStrategy().handleIntermediatePathPart(
+ ( PathedPropertyReferenceSource ) source,
+ propertyName.getText() );
}
protected void normalizeIntermediateIndexOperation( CommonTree identifier1,
Modified: core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java
===================================================================
--- core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java 2009-04-22 20:18:51 UTC (rev 16411)
+++ core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java 2009-04-22 21:20:04 UTC (rev 16412)
@@ -44,7 +44,7 @@
}
public void testBasicSelectStructure() throws Throwable {
- Tree queryTree = normalize( "from Animal as a inner join a.mother" );
+ Tree queryTree = normalize( "select a.id from Animal a" );
}
public Tree normalize( String hql ) throws RecognitionException {
15 years, 7 months
Hibernate SVN: r16411 - core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree.
by hibernate-commits@lists.jboss.org
Author: steve.ebersole(a)jboss.com
Date: 2009-04-22 16:18:51 -0400 (Wed, 22 Apr 2009)
New Revision: 16411
Modified:
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java
Log:
fixed bug in EntityTableSpace
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java 2009-04-22 20:01:25 UTC (rev 16410)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java 2009-04-22 20:18:51 UTC (rev 16411)
@@ -139,7 +139,7 @@
public static abstract class AbstractTableSpace implements Table.TableSpace {
private final TableAliasGenerator.TableAliasRoot aliasRoot;
- protected final LinkedHashSet<Table> tables = new LinkedHashSet<Table>();
+ protected final ArrayList<Table> tables = new ArrayList<Table>();
protected final HashMap<String,Table> aliasToTableMap = new HashMap<String,Table>();
protected final HashMap<String,Table> nameToTableMap = new HashMap<String,Table>();
@@ -181,14 +181,13 @@
public static class EntityTableSpace extends AbstractTableSpace {
private final EntityPersisterSpace persisterSpace;
- private final ArrayList tables;
public EntityTableSpace(Queryable entityPersister, TableAliasGenerator.TableAliasRoot aliasRoot) {
super( aliasRoot );
this.persisterSpace = new EntityPersisterSpace( this, entityPersister );
- int numberOfTables = entityPersister.getMappedTableMetadata().getJoinedTables().length + 1;
- int listSize = numberOfTables + (int) ( numberOfTables * .75 ) + 1;
- this.tables = new ArrayList( listSize );
+// int numberOfTables = entityPersister.getMappedTableMetadata().getJoinedTables().length + 1;
+// int listSize = numberOfTables + (int) ( numberOfTables * .75 ) + 1;
+// this.tables = new ArrayList( listSize );
PersisterTableExpressionGenerator.generateTableExpression(
entityPersister,
@@ -206,7 +205,7 @@
}
public Table getDrivingTable() {
- return ( Table ) tables.get( 0 );
+ return tables.get( 0 );
}
public Table getJoinIntoTable() {
@@ -219,7 +218,7 @@
public Table getContainingTable(String propertyName) {
// todo : probably a better solution here is to iterate the internal collection of tables...
- return ( Table ) tables.get( getEntityPersister().getSubclassPropertyTableNumber( propertyName ) );
+ return tables.get( getEntityPersister().getSubclassPropertyTableNumber( propertyName ) );
}
public Type getPropertyType(String propertyName) {
15 years, 7 months
Hibernate SVN: r16410 - in core/branches/antlr3/src/main: java/org/hibernate/sql/ast/phase/hql/resolve and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: porcelli
Date: 2009-04-22 16:01:25 -0400 (Wed, 22 Apr 2009)
New Revision: 16410
Modified:
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
Log:
now 2nd pase is using the FromPathResolutionStrategy
Modified: core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g
===================================================================
--- core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g 2009-04-22 20:00:03 UTC (rev 16409)
+++ core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g 2009-04-22 20:01:25 UTC (rev 16410)
@@ -41,6 +41,7 @@
package org.hibernate.sql.ast.phase.hql.resolve;
import org.antlr.runtime.tree.CommonTree;
+import org.hibernate.sql.ast.common.JoinType;
import org.hibernate.sql.ast.phase.hql.resolve.path.PathedPropertyReferenceSource;
}
@@ -94,6 +95,13 @@
// TODO Auto-generated method stub
}
+ protected void pushFromStrategy( JoinType joinType,
+ CommonTree assosiationFetchTree, CommonTree propertyFetchTree,
+ CommonTree alias ) {
+ }
+
+ protected void popStrategy(){
+ }
}
filterStatement[String collectionRole]
@@ -197,7 +205,10 @@
;
joins
- : ^(PROPERTY_JOIN joinType FETCH? ALIAS_NAME PROP_FETCH? (collectionExpression|propertyReference) withClause?)
+ : ^(PROPERTY_JOIN jt=joinType ft=FETCH? an=ALIAS_NAME pf=PROP_FETCH?
+ { pushFromStrategy($jt.joinType, $ft, $pf, $an ); }
+ (collectionExpression|propertyReference) withClause?)
+ { popStrategy(); }
| ^(PERSISTER_JOIN joinType persisterSpaceRoot onClause?)
;
@@ -209,10 +220,10 @@
: ^(ON searchCondition)
;
-joinType
- : CROSS
- | INNER
- | (LEFT | RIGHT | FULL) OUTER?
+joinType returns [JoinType joinType]
+ : CROSS { $joinType = JoinType.CROSS; }
+ | INNER { $joinType = JoinType.INNER; }
+ | (LEFT { $joinType = JoinType.LEFT; } | RIGHT { $joinType = JoinType.RIGHT; } | FULL { $joinType = JoinType.FULL; }) OUTER?
;
selectClause
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java 2009-04-22 20:00:03 UTC (rev 16409)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java 2009-04-22 20:01:25 UTC (rev 16410)
@@ -26,15 +26,16 @@
import org.antlr.runtime.tree.Tree;
import org.antlr.runtime.tree.TreeNodeStream;
import org.hibernate.engine.SessionFactoryImplementor;
-import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.persister.entity.Queryable;
import org.hibernate.sql.ast.alias.DefaultTableAliasGenerator;
import org.hibernate.sql.ast.alias.TableAliasGenerator;
+import org.hibernate.sql.ast.common.JoinType;
import org.hibernate.sql.ast.phase.hql.parse.HQLParser;
import org.hibernate.sql.ast.phase.hql.resolve.path.PathResolutionStrategy;
import org.hibernate.sql.ast.phase.hql.resolve.path.PathResolutionStrategyStack;
import org.hibernate.sql.ast.phase.hql.resolve.path.PathedPropertyReferenceSource;
import org.hibernate.sql.ast.phase.hql.resolve.path.impl.BasicPathResolutionStrategySupport;
+import org.hibernate.sql.ast.phase.hql.resolve.path.impl.FromClausePathResolutionStrategy;
import org.hibernate.sql.ast.tree.Table;
import org.hibernate.sql.ast.tree.Table.EntityTableSpace;
import org.hibernate.sql.ast.util.TreePrinter;
@@ -72,12 +73,17 @@
.push( new BasicPathResolutionStrategySupport( this ) );
}
- protected void registerPersisterSpace( CommonTree entityName, CommonTree alias ) {
- String entityPersisterName = sessionFactory.getImportedClassName( entityName.getText() );
- Queryable entityPersister = ( Queryable ) sessionFactory.getEntityPersister( entityPersisterName );
+ protected void registerPersisterSpace( CommonTree entityName,
+ CommonTree alias ) {
+ String entityPersisterName = sessionFactory
+ .getImportedClassName( entityName.getText() );
+ Queryable entityPersister = ( Queryable ) sessionFactory
+ .getEntityPersister( entityPersisterName );
- TableAliasGenerator.TableAliasRoot tableAliasRoot = getTableAliasGenerator().generateSqlAliasRoot( entityPersister, alias.getText() );
- EntityTableSpace tableSpace = new Table.EntityTableSpace( entityPersister, tableAliasRoot );
+ TableAliasGenerator.TableAliasRoot tableAliasRoot = getTableAliasGenerator()
+ .generateSqlAliasRoot( entityPersister, alias.getText() );
+ EntityTableSpace tableSpace = new Table.EntityTableSpace(
+ entityPersister, tableAliasRoot );
registerPersisterSpace( tableSpace.getPersisterSpace() );
}
@@ -118,20 +124,34 @@
// TODO Auto-generated method stub
}
- protected void registerEntityPersisterSpace( CommonTree entityName,
+ protected void pushFromStrategy( JoinType joinType,
+ CommonTree assosiationFetchTree, CommonTree propertyFetchTree,
CommonTree alias ) {
- String entityPersisterName = sessionFactory
- .getImportedClassName( entityName.getText() );
- EntityPersister entityPersister = sessionFactory
- .getEntityPersister( entityPersisterName );
+ boolean assosiationFetch = assosiationFetchTree != null ? true : false;
+ boolean propertyFetch = propertyFetchTree != null ? true : false;
+ pathResolutionStrategyStack.push( new FromClausePathResolutionStrategy(
+ this, joinType, assosiationFetch, propertyFetch, alias
+ .getText() ) );
+ }
- EntityTableSpace tableSpace = new Table.EntityTableSpace(
- ( Queryable ) entityPersister, getTableAliasGenerator()
- .generateSqlAliasRoot( ( Queryable ) entityPersister,
- alias.getText() ) );
- registerPersisterSpace( tableSpace.getPersisterSpace() );
+ protected void popStrategy() {
+ pathResolutionStrategyStack.pop();
}
+ protected void registerEntityPersisterSpace( CommonTree entityName,
+ CommonTree alias ) {
+ // String entityPersisterName = sessionFactory
+ // .getImportedClassName( entityName.getText() );
+ // EntityPersister entityPersister = sessionFactory
+ // .getEntityPersister( entityPersisterName );
+ //
+ // EntityTableSpace tableSpace = new Table.EntityTableSpace(
+ // ( Queryable ) entityPersister, getTableAliasGenerator()
+ // .generateSqlAliasRoot( ( Queryable ) entityPersister,
+ // alias.getText() ) );
+ // registerPersisterSpace( tableSpace.getPersisterSpace() );
+ }
+
private void registerPersisterSpace( PersisterSpace persisterSpace ) {
persisterSpaceContext.registerPersisterSpace( persisterSpace );
}
15 years, 7 months
Hibernate SVN: r16409 - in core/branches/antlr3/src/main/java/org/hibernate/sql/ast: phase/hql/resolve/path/impl and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: steve.ebersole(a)jboss.com
Date: 2009-04-22 16:00:03 -0400 (Wed, 22 Apr 2009)
New Revision: 16409
Modified:
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterSpaceContext.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/FromClausePathResolutionStrategy.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java
Log:
use HQLLexer (instead of HQLParser) to reference token types
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterSpaceContext.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterSpaceContext.java 2009-04-22 19:39:06 UTC (rev 16408)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterSpaceContext.java 2009-04-22 20:00:03 UTC (rev 16409)
@@ -26,11 +26,10 @@
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
-
package org.hibernate.sql.ast.phase.hql.resolve;
/**
- * todo : javadocs
+ * The contract for defining a scoping for references to persisters.
*
* @author Steve Ebersole
*/
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java 2009-04-22 19:39:06 UTC (rev 16408)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java 2009-04-22 20:00:03 UTC (rev 16409)
@@ -29,15 +29,12 @@
package org.hibernate.sql.ast.phase.hql.resolve;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.hibernate.persister.MappedTableMetadata;
import org.hibernate.persister.collection.QueryableCollection;
import org.hibernate.persister.entity.Queryable;
import org.hibernate.sql.ast.alias.TableAliasGenerator;
import org.hibernate.sql.ast.common.HibernateTree;
-import org.hibernate.sql.ast.phase.hql.parse.HQLParser;
+import org.hibernate.sql.ast.phase.hql.parse.HQLLexer;
import org.hibernate.sql.ast.tree.Table;
import org.hibernate.sql.ast.util.TreePrinter;
@@ -49,8 +46,15 @@
* @author Steve Ebersole
*/
public abstract class PersisterTableExpressionGenerator {
- private static final Logger log = LoggerFactory.getLogger( PersisterTableExpressionGenerator.class );
-
+ /**
+ * Generate the table expression for the given entity persister.
+ *
+ * @param persister The entity persister.
+ * @param aliasRoot The alias root for SQL alias generation.
+ * @param tableSpace The table space to which any generated table references need to belong.
+ *
+ * @return The generated table expression (could be simply the root table in a joined table structure).
+ */
public static Table generateTableExpression(
Queryable persister,
TableAliasGenerator.TableAliasRoot aliasRoot,
@@ -68,17 +72,17 @@
final String joinTableAlias = aliasRoot.generate( ++suffix );
final Table table = generateTableReference( joinedTable.getName(), joinTableAlias, tableSpace );
- final HibernateTree join = new HibernateTree( HQLParser.JOIN, "join" );
+ final HibernateTree join = new HibernateTree( HQLLexer.JOIN, "join" );
drivingTable.addChild( join );
if ( joinedTable.useInnerJoin() ) {
- join.addChild( new HibernateTree( HQLParser.INNER, "inner" ) );
+ join.addChild( new HibernateTree( HQLLexer.INNER, "inner" ) );
}
else {
- join.addChild( new HibernateTree( HQLParser.LEFT, "left outer" ) );
+ join.addChild( new HibernateTree( HQLLexer.LEFT, "left outer" ) );
}
join.addChild( table );
- final HibernateTree on = new HibernateTree( HQLParser.ON, "on" );
+ final HibernateTree on = new HibernateTree( HQLLexer.ON, "on" );
join.addChild( on );
final HibernateTree joinCondition = generateJoinCorrelation(
drivingTableAlias,
@@ -91,12 +95,21 @@
// todo : temporary...
System.out.println(
- new TreePrinter( HQLParser.class ).renderAsString( drivingTable, "Generated table space" )
+ new TreePrinter( HQLLexer.class ).renderAsString( drivingTable, "Generated table space" )
);
return drivingTable;
}
+ /**
+ * Generate the table expression for the given collection persister.
+ *
+ * @param collectionPersister The collection persister
+ * @param aliasRoot The alias root for SQL alias generation.
+ * @param tableSpace The table space to which any generated table references need to belong.
+ *
+ * @return The generated table expression (could be simply the root table in a joined table structure).
+ */
public static Table generateTableExpression(
QueryableCollection collectionPersister,
TableAliasGenerator.TableAliasRoot aliasRoot,
@@ -126,15 +139,15 @@
tableSpace.getEntityElementTableSpace()
);
- final HibernateTree join = new HibernateTree( HQLParser.JOIN );
+ final HibernateTree join = new HibernateTree( HQLLexer.JOIN );
associationTable.addChild( join );
- join.addChild( new HibernateTree( HQLParser.LEFT, "left outer" ) );
+ join.addChild( new HibernateTree( HQLLexer.LEFT, "left outer" ) );
join.addChild( drivingTable );
String[] entityFkColumnNames = collectionPersister.getElementColumnNames();
String[] entityPkColumnNames = elementPersister.getKeyColumnNames();
- final HibernateTree on = new HibernateTree( HQLParser.ON );
+ final HibernateTree on = new HibernateTree( HQLLexer.ON );
join.addChild( on );
final HibernateTree joinCondition = generateJoinCorrelation(
associationTable.getAliasText(),
@@ -149,10 +162,19 @@
}
private static Table generateTableReference(String tableName, String tableAlias, Table.TableSpace tableSpace) {
- Table table = new Table( tableName, tableAlias, tableSpace );
- return table;
+ return new Table( tableName, tableAlias, tableSpace );
}
+ /**
+ * Creates a join correlation subtree (AST representing all the conditions on which the join occurs).
+ *
+ * @param lhsAlias The alias for the left-hand side (LHS) of the join
+ * @param lhsColumns The LHS columns
+ * @param rhsAlias The alias for the right-hand side (RHS) of the join
+ * @param rhsColumns The RHS columns
+ *
+ * @return The join correlation AST.
+ */
public static HibernateTree generateJoinCorrelation(
String lhsAlias,
String[] lhsColumns,
@@ -162,7 +184,7 @@
if ( lhsColumns.length > 1 ) {
for ( int i = 1; i < lhsColumns.length; i++ ) {
HibernateTree previous = correlation;
- correlation = new HibernateTree( HQLParser.AND, "and" );
+ correlation = new HibernateTree( HQLLexer.AND, "and" );
correlation.addChild( previous );
correlation.addChild( generateJoinCorrelation( lhsAlias, lhsColumns[i], rhsAlias, rhsColumns[i] ) );
}
@@ -170,16 +192,26 @@
return correlation;
}
+ /**
+ * Creates a join correlation subtree. The difference here is that we have just a single column on each side.
+ *
+ * @param lhsAlias The alias for the left-hand side (LHS) of the join
+ * @param lhsColumn The LHS column
+ * @param rhsAlias The alias for the right-hand side (RHS) of the join
+ * @param rhsColumn The RHS column
+ *
+ * @return The join correlation AST.
+ */
public static HibernateTree generateJoinCorrelation(String lhsAlias, String lhsColumn, String rhsAlias, String rhsColumn) {
- HibernateTree lhs = new HibernateTree( HQLParser.COLUMN );
- lhs.addChild( new HibernateTree( HQLParser.ALIAS_REF, lhsAlias ) );
- lhs.addChild( new HibernateTree( HQLParser.IDENTIFIER, lhsColumn ) );
+ HibernateTree lhs = new HibernateTree( HQLLexer.COLUMN );
+ lhs.addChild( new HibernateTree( HQLLexer.ALIAS_REF, lhsAlias ) );
+ lhs.addChild( new HibernateTree( HQLLexer.IDENTIFIER, lhsColumn ) );
- HibernateTree rhs = new HibernateTree( HQLParser.COLUMN );
- rhs.addChild( new HibernateTree( HQLParser.ALIAS_REF, rhsAlias ) );
- rhs.addChild( new HibernateTree( HQLParser.IDENTIFIER, rhsColumn ) );
+ HibernateTree rhs = new HibernateTree( HQLLexer.COLUMN );
+ rhs.addChild( new HibernateTree( HQLLexer.ALIAS_REF, rhsAlias ) );
+ rhs.addChild( new HibernateTree( HQLLexer.IDENTIFIER, rhsColumn ) );
- HibernateTree correlation = new HibernateTree( HQLParser.EQUALS, "=" );
+ HibernateTree correlation = new HibernateTree( HQLLexer.EQUALS, "=" );
correlation.addChild( lhs );
correlation.addChild( rhs );
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java 2009-04-22 19:39:06 UTC (rev 16408)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java 2009-04-22 20:00:03 UTC (rev 16409)
@@ -38,6 +38,7 @@
import org.hibernate.sql.ast.common.HibernateToken;
import org.hibernate.sql.ast.common.HibernateTree;
import org.hibernate.sql.ast.phase.hql.parse.HQLParser;
+import org.hibernate.sql.ast.phase.hql.parse.HQLLexer;
import org.hibernate.sql.ast.phase.hql.resolve.PersisterSpace;
import org.hibernate.sql.ast.phase.hql.resolve.PersisterTableExpressionGenerator;
import org.hibernate.sql.ast.phase.hql.resolve.ResolutionContext;
@@ -270,7 +271,7 @@
* @return The join type node.
*/
protected HibernateTree buildJoinTypeNode() {
- return createNode( HQLParser.INNER, "inner" );
+ return createNode( HQLLexer.INNER, "inner" );
}
/**
@@ -369,13 +370,13 @@
* @return The column list.
*/
protected final HibernateTree generatePropertyColumnList(PersisterSpace origin, String propertyName) {
- HibernateTree columnList = new HibernateTree( HQLParser.COLUMN_LIST );
+ HibernateTree columnList = new HibernateTree( HQLLexer.COLUMN_LIST );
Table containingTable = origin.getTableSpace().getContainingTable( propertyName );
for ( String columnName : origin.getTableSpace().getPropertyColumnNames( propertyName ) ) {
- final HibernateTree column = new HibernateTree( HQLParser.COLUMN );
+ final HibernateTree column = new HibernateTree( HQLLexer.COLUMN );
columnList.addChild( column );
- column.addChild( new HibernateTree( HQLParser.ALIAS_REF, containingTable.getAliasText() ) );
- column.addChild( new HibernateTree( HQLParser.IDENTIFIER, columnName ) );
+ column.addChild( new HibernateTree( HQLLexer.ALIAS_REF, containingTable.getAliasText() ) );
+ column.addChild( new HibernateTree( HQLLexer.IDENTIFIER, columnName ) );
}
return columnList;
}
@@ -400,7 +401,7 @@
}
protected AbstractPathedPropertyReferenceSource(String originationPath) {
- super( new HibernateToken( HQLParser.IDENTIFIER, originationPath ) );
+ super( new HibernateToken( HQLLexer.IDENTIFIER, originationPath ) );
this.originationPath = originationPath;
}
@@ -414,11 +415,11 @@
// in general we need the collection element column list
QueryableCollection collectionPersister = resolveCollectionPersister( lhs, collectionPropertyName );
- HibernateTree columnList = new HibernateTree( HQLParser.COLUMN_LIST );
+ HibernateTree columnList = new HibernateTree( HQLLexer.COLUMN_LIST );
for ( String columnName : collectionPersister.getElementColumnNames() ) {
- final HibernateTree column = new HibernateTree( HQLParser.COLUMN );
- column.addChild( new HibernateTree( HQLParser.ALIAS_REF, joinedCollectionTable.getAliasText() ) );
- column.addChild( new HibernateTree( HQLParser.IDENTIFIER, columnName ) );
+ final HibernateTree column = new HibernateTree( HQLLexer.COLUMN );
+ column.addChild( new HibernateTree( HQLLexer.ALIAS_REF, joinedCollectionTable.getAliasText() ) );
+ column.addChild( new HibernateTree( HQLLexer.IDENTIFIER, columnName ) );
}
return columnList;
}
@@ -476,7 +477,7 @@
Table.EntityTableSpace tableSpace = new Table.EntityTableSpace( entityPersister, tableAliasRoot );
Table joinedTableExpression = tableSpace.getDrivingTable();
- HibernateTree join = new HibernateTree( HQLParser.JOIN );
+ HibernateTree join = new HibernateTree( HQLLexer.JOIN );
join.addChild( buildJoinTypeNode() );
join.addChild( joinedTableExpression );
@@ -501,7 +502,7 @@
);
}
- HibernateTree on = new HibernateTree( HQLParser.ON );
+ HibernateTree on = new HibernateTree( HQLLexer.ON );
join.addChild( on );
on.addChild( joinCondition );
@@ -521,7 +522,7 @@
tableSpace
);
- HibernateTree joinNode = new HibernateTree( HQLParser.JOIN );
+ HibernateTree joinNode = new HibernateTree( HQLLexer.JOIN );
joinNode.addChild( buildJoinTypeNode() );
joinNode.addChild( collectionTableExpression );
@@ -548,12 +549,12 @@
if ( extraJoinConditions != null ) {
HibernateTree mappedJoinCondition = joinCondition;
- joinCondition = new HibernateTree( HQLParser.AND );
+ joinCondition = new HibernateTree( HQLLexer.AND );
joinCondition.addChild( mappedJoinCondition );
joinCondition.addChild( extraJoinConditions );
}
- HibernateTree on = new HibernateTree( HQLParser.ON );
+ HibernateTree on = new HibernateTree( HQLLexer.ON );
joinNode.addChild( on );
on.addChild( joinCondition );
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/FromClausePathResolutionStrategy.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/FromClausePathResolutionStrategy.java 2009-04-22 19:39:06 UTC (rev 16408)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/FromClausePathResolutionStrategy.java 2009-04-22 20:00:03 UTC (rev 16409)
@@ -31,7 +31,7 @@
import org.hibernate.QueryException;
import org.hibernate.sql.ast.common.HibernateTree;
import org.hibernate.sql.ast.common.JoinType;
-import org.hibernate.sql.ast.phase.hql.parse.HQLParser;
+import org.hibernate.sql.ast.phase.hql.parse.HQLLexer;
import org.hibernate.sql.ast.phase.hql.resolve.PersisterSpace;
import org.hibernate.sql.ast.phase.hql.resolve.ResolutionContext;
import org.hibernate.sql.ast.phase.hql.resolve.path.PathedPropertyReferenceSource;
@@ -107,13 +107,13 @@
protected HibernateTree buildJoinTypeNode() {
if ( joinType == JoinType.INNER ) {
- return new HibernateTree( HQLParser.INNER );
+ return new HibernateTree( HQLLexer.INNER );
}
else if ( joinType == JoinType.LEFT ) {
- return new HibernateTree( HQLParser.LEFT );
+ return new HibernateTree( HQLLexer.LEFT );
}
else if ( joinType == JoinType.RIGHT ) {
- return new HibernateTree( HQLParser.RIGHT );
+ return new HibernateTree( HQLLexer.RIGHT );
}
// if no match found, throw exception
throw new QueryException( "Unrecognized join type [" + joinType.toString() + "]" );
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java 2009-04-22 19:39:06 UTC (rev 16408)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java 2009-04-22 20:00:03 UTC (rev 16409)
@@ -37,7 +37,7 @@
import org.hibernate.sql.ast.common.HibernateTree;
import org.hibernate.sql.ast.common.HibernateToken;
import org.hibernate.sql.ast.util.DisplayableNode;
-import org.hibernate.sql.ast.phase.hql.parse.HQLParser;
+import org.hibernate.sql.ast.phase.hql.parse.HQLLexer;
import org.hibernate.sql.ast.phase.hql.resolve.PersisterSpace;
import org.hibernate.sql.ast.phase.hql.resolve.PersisterTableExpressionGenerator;
import org.hibernate.persister.entity.Queryable;
@@ -54,9 +54,9 @@
private final TableSpace tableSpace;
public Table(String tableName, String tableAlias, TableSpace tableSpace) {
- super( new HibernateToken( HQLParser.TABLE ) );
- addChild( new HibernateTree( HQLParser.IDENTIFIER, tableName ) );
- addChild( new HibernateTree( HQLParser.ALIAS_NAME, tableAlias ) );
+ super( new HibernateToken( HQLLexer.TABLE ) );
+ addChild( new HibernateTree( HQLLexer.IDENTIFIER, tableName ) );
+ addChild( new HibernateTree( HQLLexer.ALIAS_NAME, tableAlias ) );
this.tableSpace = tableSpace;
tableSpace.addTable( this );
}
@@ -232,11 +232,11 @@
}
public HibernateTree buildIdentifierColumnReferences() {
- HibernateTree columnList = new HibernateTree( HQLParser.COLUMN_LIST );
+ HibernateTree columnList = new HibernateTree( HQLLexer.COLUMN_LIST );
for ( String columnName : getEntityPersister().getIdentifierColumnNames() ) {
- HibernateTree columnNode = new HibernateTree( HQLParser.COLUMN );
- columnNode.addChild( new HibernateTree( HQLParser.ALIAS_REF, getDrivingTable().getAliasText() ) );
- columnNode.addChild( new HibernateTree( HQLParser.IDENTIFIER, columnName ) );
+ HibernateTree columnNode = new HibernateTree( HQLLexer.COLUMN );
+ columnNode.addChild( new HibernateTree( HQLLexer.ALIAS_REF, getDrivingTable().getAliasText() ) );
+ columnNode.addChild( new HibernateTree( HQLLexer.IDENTIFIER, columnName ) );
columnList.addChild( columnNode );
}
return columnList;
15 years, 7 months
Hibernate SVN: r16408 - core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias.
by hibernate-commits@lists.jboss.org
Author: steve.ebersole(a)jboss.com
Date: 2009-04-22 15:39:06 -0400 (Wed, 22 Apr 2009)
New Revision: 16408
Modified:
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java
Log:
javadocs and log stmnt
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java 2009-04-22 19:32:59 UTC (rev 16407)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java 2009-04-22 19:39:06 UTC (rev 16408)
@@ -23,6 +23,9 @@
*/
package org.hibernate.sql.ast.alias;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.hibernate.persister.collection.QueryableCollection;
import org.hibernate.persister.entity.Queryable;
@@ -34,21 +37,41 @@
*/
public interface TableAliasGenerator {
/**
- * Encapsulation of the alias root.
+ * Encapsulation of the alias root, which is a template for creating a series of "related" SQL aliases (for
+ * a given persister e.g.).
*/
public static class TableAliasRoot {
+ private static final Logger log = LoggerFactory.getLogger( TableAliasRoot.class );
+
private final String source;
private final String base;
+ /**
+ * Create the alias root.
+ *
+ * @param source The original alias from the source query.
+ * @param base The base used to generate SQL aliases.
+ */
public TableAliasRoot(String source, String base) {
+ log.trace( "Creating alias root [" + source + " -> " + base + "]" );
this.source = source;
this.base = base;
}
+ /**
+ * Retrieve the original alias from the source query.
+ *
+ * @return The source alias.
+ */
public String getSource() {
return source;
}
+ /**
+ * Retrieve the base used to generate SQL aliases.
+ *
+ * @return The SQL alias base.
+ */
public String getBase() {
return base;
}
15 years, 7 months
Hibernate SVN: r16407 - core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve.
by hibernate-commits@lists.jboss.org
Author: steve.ebersole(a)jboss.com
Date: 2009-04-22 15:32:59 -0400 (Wed, 22 Apr 2009)
New Revision: 16407
Modified:
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/RootPersisterSpaceContext.java
Log:
oops, missed commit
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/RootPersisterSpaceContext.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/RootPersisterSpaceContext.java 2009-04-22 19:32:12 UTC (rev 16406)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/RootPersisterSpaceContext.java 2009-04-22 19:32:59 UTC (rev 16407)
@@ -93,7 +93,7 @@
log.trace( "attempting to resolve [" + propertyName + "] as unqualified property" );
PersisterSpace match = null;
for ( PersisterSpace persisterSpace : persisterSpaces ) {
- if ( persisterSpace.contansProperty( propertyName ) ) {
+ if ( persisterSpace.containsProperty( propertyName ) ) {
if ( match != null ) {
// todo : better exception type
throw new QueryException( "multiple persisters contained property [" + propertyName + "]" );
15 years, 7 months
Hibernate SVN: r16406 - in core/branches/antlr3/src/main/java/org/hibernate/sql/ast: tree and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: steve.ebersole(a)jboss.com
Date: 2009-04-22 15:32:12 -0400 (Wed, 22 Apr 2009)
New Revision: 16406
Modified:
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/AbstractTableAliasGeneratorTemplate.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java
Log:
minor changes to path resolution
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/AbstractTableAliasGeneratorTemplate.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/AbstractTableAliasGeneratorTemplate.java 2009-04-22 19:06:00 UTC (rev 16405)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/AbstractTableAliasGeneratorTemplate.java 2009-04-22 19:32:12 UTC (rev 16406)
@@ -99,9 +99,10 @@
}
protected final TableAliasRoot generateSqlAliasRoot(String base, int tableCount) {
+ String source = base;
base = cleanBase( base );
base = ensureAliasCapacity( base, tableCount );
- return new TableAliasRoot( base );
+ return new TableAliasRoot( source, base );
}
private String cleanBase(String base) {
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java 2009-04-22 19:06:00 UTC (rev 16405)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java 2009-04-22 19:32:12 UTC (rev 16406)
@@ -37,12 +37,18 @@
* Encapsulation of the alias root.
*/
public static class TableAliasRoot {
+ private final String source;
private final String base;
- public TableAliasRoot(String base) {
+ public TableAliasRoot(String source, String base) {
+ this.source = source;
this.base = base;
}
+ public String getSource() {
+ return source;
+ }
+
public String getBase() {
return base;
}
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java 2009-04-22 19:06:00 UTC (rev 16405)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java 2009-04-22 19:32:12 UTC (rev 16406)
@@ -148,7 +148,7 @@
}
public String getSourceAlias() {
- return aliasRoot.getBase();
+ return aliasRoot.getSource();
}
public void addTable(Table table) {
15 years, 7 months
Hibernate SVN: r16405 - in core/branches/antlr3/src: main/java/org/hibernate/sql/ast/phase/hql/resolve and 3 other directories.
by hibernate-commits@lists.jboss.org
Author: steve.ebersole(a)jboss.com
Date: 2009-04-22 15:06:00 -0400 (Wed, 22 Apr 2009)
New Revision: 16405
Modified:
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterSpace.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java
core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/domain/Mappings.hbm.xml
Log:
minor changes to path resolution
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java 2009-04-22 18:40:40 UTC (rev 16404)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/alias/TableAliasGenerator.java 2009-04-22 19:06:00 UTC (rev 16405)
@@ -43,6 +43,10 @@
this.base = base;
}
+ public String getBase() {
+ return base;
+ }
+
/**
* Generate the sql alias based on the given suffix which is the <i>subclass table number</i>.
*
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java 2009-04-22 18:40:40 UTC (rev 16404)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java 2009-04-22 19:06:00 UTC (rev 16405)
@@ -1,3 +1,24 @@
+/*
+ * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
package org.hibernate.sql.ast.phase.hql.resolve;
import org.antlr.runtime.RecognizerSharedState;
@@ -51,15 +72,12 @@
.push( new BasicPathResolutionStrategySupport( this ) );
}
- protected void registerPersisterSpace( CommonTree entityName,
- CommonTree alias ) {
- String entityPersisterName = sessionFactory
- .getImportedClassName( entityName.getText() );
- EntityPersister entityPersister = sessionFactory
- .getEntityPersister( entityPersisterName );
+ protected void registerPersisterSpace( CommonTree entityName, CommonTree alias ) {
+ String entityPersisterName = sessionFactory.getImportedClassName( entityName.getText() );
+ Queryable entityPersister = ( Queryable ) sessionFactory.getEntityPersister( entityPersisterName );
- EntityTableSpace tableSpace = new Table.EntityTableSpace(
- ( Queryable ) entityPersister, alias.getText() );
+ TableAliasGenerator.TableAliasRoot tableAliasRoot = getTableAliasGenerator().generateSqlAliasRoot( entityPersister, alias.getText() );
+ EntityTableSpace tableSpace = new Table.EntityTableSpace( entityPersister, tableAliasRoot );
registerPersisterSpace( tableSpace.getPersisterSpace() );
}
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterSpace.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterSpace.java 2009-04-22 18:40:40 UTC (rev 16404)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterSpace.java 2009-04-22 19:06:00 UTC (rev 16405)
@@ -61,7 +61,7 @@
public Table.TableSpace getTableSpace();
- public boolean contansProperty(String propertyName);
+ public boolean containsProperty(String propertyName);
public Type getPropertyType(String propertyName);
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java 2009-04-22 18:40:40 UTC (rev 16404)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java 2009-04-22 19:06:00 UTC (rev 16405)
@@ -29,6 +29,9 @@
package org.hibernate.sql.ast.phase.hql.resolve;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.hibernate.persister.MappedTableMetadata;
import org.hibernate.persister.collection.QueryableCollection;
import org.hibernate.persister.entity.Queryable;
@@ -36,6 +39,7 @@
import org.hibernate.sql.ast.common.HibernateTree;
import org.hibernate.sql.ast.phase.hql.parse.HQLParser;
import org.hibernate.sql.ast.tree.Table;
+import org.hibernate.sql.ast.util.TreePrinter;
/**
* Generate table expressions for persisters.
@@ -45,6 +49,7 @@
* @author Steve Ebersole
*/
public abstract class PersisterTableExpressionGenerator {
+ private static final Logger log = LoggerFactory.getLogger( PersisterTableExpressionGenerator.class );
public static Table generateTableExpression(
Queryable persister,
@@ -84,6 +89,11 @@
on.addChild( joinCondition );
}
+ // todo : temporary...
+ System.out.println(
+ new TreePrinter( HQLParser.class ).renderAsString( drivingTable, "Generated table space" )
+ );
+
return drivingTable;
}
@@ -139,9 +149,7 @@
}
private static Table generateTableReference(String tableName, String tableAlias, Table.TableSpace tableSpace) {
- Table table = new Table( HQLParser.TABLE, tableSpace );
- table.addChild( new HibernateTree( HQLParser.IDENTIFIER, tableName ) );
- table.addChild( new HibernateTree( HQLParser.ALIAS_NAME, tableAlias ) );
+ Table table = new Table( tableName, tableAlias, tableSpace );
return table;
}
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java 2009-04-22 18:40:40 UTC (rev 16404)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java 2009-04-22 19:06:00 UTC (rev 16405)
@@ -471,16 +471,11 @@
protected Table createJoin(PersisterSpace lhs, Queryable entityPersister, String alias) {
EntityType entityType = entityPersister.getEntityMetamodel().getEntityType();
- Table.EntityTableSpace tableSpace = new Table.EntityTableSpace( entityPersister, alias );
TableAliasGenerator.TableAliasRoot tableAliasRoot = resolutionContext().getTableAliasGenerator()
.generateSqlAliasRoot( entityPersister, alias );
+ Table.EntityTableSpace tableSpace = new Table.EntityTableSpace( entityPersister, tableAliasRoot );
+ Table joinedTableExpression = tableSpace.getDrivingTable();
- Table joinedTableExpression = PersisterTableExpressionGenerator.generateTableExpression(
- entityPersister,
- tableAliasRoot,
- tableSpace
- );
-
HibernateTree join = new HibernateTree( HQLParser.JOIN );
join.addChild( buildJoinTypeNode() );
join.addChild( joinedTableExpression );
@@ -516,9 +511,9 @@
protected Table createJoin(PersisterSpace lhs, QueryableCollection collectionPersister, String sourceAlias, HibernateTree extraJoinConditions) {
CollectionType collectionType = collectionPersister.getCollectionType();
- Table.CollectionTableSpace tableSpace = new Table.CollectionTableSpace( collectionPersister, sourceAlias );
TableAliasGenerator.TableAliasRoot tableAliasRoot = resolutionContext().getTableAliasGenerator()
.generateSqlAliasRoot( collectionPersister, sourceAlias );
+ Table.CollectionTableSpace tableSpace = new Table.CollectionTableSpace( collectionPersister, tableAliasRoot );
Table collectionTableExpression = PersisterTableExpressionGenerator.generateTableExpression(
collectionPersister,
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java 2009-04-22 18:40:40 UTC (rev 16404)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/tree/Table.java 2009-04-22 19:06:00 UTC (rev 16405)
@@ -32,18 +32,18 @@
import java.util.LinkedHashSet;
import java.util.HashMap;
-import org.antlr.runtime.Token;
-
import org.hibernate.type.Type;
-import org.hibernate.sql.ast.alias.ImplicitAliasGenerator;
+import org.hibernate.sql.ast.alias.TableAliasGenerator;
import org.hibernate.sql.ast.common.HibernateTree;
import org.hibernate.sql.ast.common.HibernateToken;
import org.hibernate.sql.ast.util.DisplayableNode;
import org.hibernate.sql.ast.phase.hql.parse.HQLParser;
import org.hibernate.sql.ast.phase.hql.resolve.PersisterSpace;
+import org.hibernate.sql.ast.phase.hql.resolve.PersisterTableExpressionGenerator;
import org.hibernate.persister.entity.Queryable;
import org.hibernate.persister.collection.QueryableCollection;
import org.hibernate.util.StringHelper;
+import org.hibernate.QueryException;
/**
* todo : javadocs
@@ -53,20 +53,14 @@
public class Table extends HibernateTree implements DisplayableNode {
private final TableSpace tableSpace;
- public Table(Token token, TableSpace tableSpace) {
- super( token );
+ public Table(String tableName, String tableAlias, TableSpace tableSpace) {
+ super( new HibernateToken( HQLParser.TABLE ) );
+ addChild( new HibernateTree( HQLParser.IDENTIFIER, tableName ) );
+ addChild( new HibernateTree( HQLParser.ALIAS_NAME, tableAlias ) );
this.tableSpace = tableSpace;
tableSpace.addTable( this );
}
- public Table(HibernateTree node, TableSpace tableSpace) {
- this( node.getToken(), tableSpace );
- }
-
- public Table(int tokenType, TableSpace tableSpace) {
- this( new HibernateToken( tokenType ), tableSpace );
- }
-
public TableSpace getTableSpace() {
return tableSpace;
}
@@ -144,25 +138,19 @@
}
public static abstract class AbstractTableSpace implements Table.TableSpace {
- private final String sourceAlias;
- private final boolean implicitSourceAlias;
+ private final TableAliasGenerator.TableAliasRoot aliasRoot;
protected final LinkedHashSet<Table> tables = new LinkedHashSet<Table>();
protected final HashMap<String,Table> aliasToTableMap = new HashMap<String,Table>();
protected final HashMap<String,Table> nameToTableMap = new HashMap<String,Table>();
- private AbstractTableSpace(String sourceAlias) {
- this.sourceAlias = sourceAlias;
- this.implicitSourceAlias = ImplicitAliasGenerator.isImplicitAlias( sourceAlias );
+ private AbstractTableSpace(TableAliasGenerator.TableAliasRoot aliasRoot) {
+ this.aliasRoot = aliasRoot;
}
public String getSourceAlias() {
- return sourceAlias;
+ return aliasRoot.getBase();
}
- public String getSqlAliasBaseRoot() {
- return implicitSourceAlias ? getPersisterSpace().getShortName() : sourceAlias;
- }
-
public void addTable(Table table) {
tables.add( table );
aliasToTableMap.put( table.getAliasText(), table );
@@ -181,8 +169,13 @@
propertyToJoinedTableMap.put( propertyName, table );
}
- public boolean contansProperty(String propertyName) {
- return getPropertyType( propertyName ) != null;
+ public boolean containsProperty(String propertyName) {
+ try {
+ return getPropertyType( propertyName ) != null;
+ }
+ catch ( QueryException qe ) {
+ return false;
+ }
}
}
@@ -190,12 +183,18 @@
private final EntityPersisterSpace persisterSpace;
private final ArrayList tables;
- public EntityTableSpace(Queryable entityPersister, String sourecAlias) {
- super( sourecAlias );
+ public EntityTableSpace(Queryable entityPersister, TableAliasGenerator.TableAliasRoot aliasRoot) {
+ super( aliasRoot );
this.persisterSpace = new EntityPersisterSpace( this, entityPersister );
int numberOfTables = entityPersister.getMappedTableMetadata().getJoinedTables().length + 1;
int listSize = numberOfTables + (int) ( numberOfTables * .75 ) + 1;
this.tables = new ArrayList( listSize );
+
+ PersisterTableExpressionGenerator.generateTableExpression(
+ entityPersister,
+ aliasRoot,
+ this
+ );
}
public PersisterSpace getPersisterSpace() {
@@ -291,11 +290,11 @@
private Table collectionTable;
private EntityTableSpace entityElementTableSpace;
- public CollectionTableSpace(QueryableCollection persister, String sourceAlias) {
- super( sourceAlias );
+ public CollectionTableSpace(QueryableCollection persister, TableAliasGenerator.TableAliasRoot aliasRoot) {
+ super( aliasRoot );
this.persisterSpace = new CollectionPersisterSpace( this, persister );
if ( persisterSpace.areElementsEntities ) {
- entityElementTableSpace = new EntityTableSpace( ( Queryable ) persister.getElementPersister(), sourceAlias );
+ entityElementTableSpace = new EntityTableSpace( ( Queryable ) persister.getElementPersister(), aliasRoot );
}
}
Modified: core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/domain/Mappings.hbm.xml
===================================================================
--- core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/domain/Mappings.hbm.xml 2009-04-22 18:40:40 UTC (rev 16404)
+++ core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/domain/Mappings.hbm.xml 2009-04-22 19:06:00 UTC (rev 16405)
@@ -36,7 +36,10 @@
<many-to-one name="father" column="father_id"/>
<many-to-one name="zoo" column="zoo_id"/>
<property name="serialNumber"/>
+ <set name="offspring">
+<!--
<set name="offspring" order-by="father_id">
+-->
<key column="mother_id"/>
<one-to-many class="Animal"/>
</set>
15 years, 7 months
Hibernate SVN: r16404 - core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse.
by hibernate-commits@lists.jboss.org
Author: porcelli
Date: 2009-04-22 14:40:40 -0400 (Wed, 22 Apr 2009)
New Revision: 16404
Modified:
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQL.g
Log:
improvements on parsing using semantic predicates (avoid Java heap space message)
Modified: core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQL.g
===================================================================
--- core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQL.g 2009-04-22 17:46:26 UTC (rev 16403)
+++ core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQL.g 2009-04-22 18:40:40 UTC (rev 16404)
@@ -814,8 +814,8 @@
inList
: collectionExpression
-> ^(IN_LIST collectionExpression)
- | LEFT_PAREN ( expression (COMMA expression)* | subQuery ) RIGHT_PAREN
- -> ^(IN_LIST expression* subQuery?)
+ | LEFT_PAREN ( {((validateIdentifierKey("select")|validateIdentifierKey("from")))}?=> subQuery | concatenation (COMMA concatenation)* ) RIGHT_PAREN
+ -> ^(IN_LIST concatenation* subQuery?)
;
betweenList
@@ -1090,7 +1090,7 @@
| constant
| parameterSpecification { if (enableParameterUsage.peek().equals(Boolean.FALSE)) throw new RecognitionException( ); }
//validate using Scopes if it is enabled or not to use parameterSpecification.. if not generate an exception
- | LEFT_PAREN! (expressionOrVector | subQuery) RIGHT_PAREN!
+ | LEFT_PAREN! ({((validateIdentifierKey("select")|validateIdentifierKey("from")))}?=> subQuery|expressionOrVector) RIGHT_PAREN!
;
parameterSpecification
15 years, 7 months
Hibernate SVN: r16403 - in core/branches/antlr3/src: main/antlr3/org/hibernate/sql/ast/phase/hql/parse and 9 other directories.
by hibernate-commits@lists.jboss.org
Author: porcelli
Date: 2009-04-22 13:46:26 -0400 (Wed, 22 Apr 2009)
New Revision: 16403
Added:
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/TestHQLTreeWalker.g
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
core/branches/antlr3/src/test/gunit/org/hibernate/sql/ast/phase/hql/resolve/
core/branches/antlr3/src/test/gunit/org/hibernate/sql/ast/phase/hql/resolve/gUnitHQLTreeWalker.testsuite
core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/
core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java
Removed:
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQLTreeWalker.g
core/branches/antlr3/src/test/gunit/org/hibernate/sql/ast/phase/hql/parse/gUnitHQLTreeWalker.testsuite
Modified:
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQL.g
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/parse/ParserContextDefaultImpl.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/ResolutionContext.java
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java
Log:
Staring 2nd parsing Phase (Name Resolution)
Modified: core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQL.g
===================================================================
--- core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQL.g 2009-04-22 14:13:26 UTC (rev 16402)
+++ core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQL.g 2009-04-22 17:46:26 UTC (rev 16403)
@@ -469,8 +469,7 @@
updateStatement
scope{
boolean generateVersionedField;
-}
- : udpate_key
+} : udpate_key
(versioned_key {$updateStatement::generateVersionedField = true;})?
from_key? entityName aliasClause[true] setClause whereClause?
-> { generateUpdateStatementTree($udpate_key.tree, $entityName.tree, $aliasClause.tree, $setClause.tree, $whereClause.tree ) }
Deleted: core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQLTreeWalker.g
===================================================================
--- core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQLTreeWalker.g 2009-04-22 14:13:26 UTC (rev 16402)
+++ core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/HQLTreeWalker.g 2009-04-22 17:46:26 UTC (rev 16403)
@@ -1,499 +0,0 @@
-tree grammar HQLTreeWalker;
-
-options{
- output=AST;
- rewrite=true;
- tokenVocab=HQL;
- ASTLabelType=CommonTree;
- TokenLabelType=CommonToken;
-}
-
-@header {
-/*
- * Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat Middleware LLC.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- *
- * Portions of SQL grammar parsing copyright (C) 2003 by Lubos Vnuk. All rights
- * reserved. These portions are distributed under license by Red Hat Middleware
- * LLC and are covered by the above LGPL notice. If you redistribute this material,
- * with or without modification, you must preserve this copyright notice in its
- * entirety.
- */
-package org.hibernate.sql.ast.phase.hql.parse;
-}
-
-filterStatement[String collectionRole]
- : ^(QUERY ^(QUERY_SPEC FILTER
- selectClause? whereClause? ( groupByClause havingClause?)? orderByClause?))
- ;
-
-statement
- : updateStatementSet
- | deleteStatementSet
- | insertStatementSet
- | queryStatementSet
- ;
-
-updateStatementSet
- : updateStatement+
- ;
-
-updateStatement
- : ^(UPDATE entityName ^(SET assignment+) whereClause?)
- ;
-
-assignment
- : ^(EQUALS propertyReference valueExpression)
- | ^(EQUALS VERSIONED_VALUE STRING_LITERAL)
- ;
-
-deleteStatementSet
- : deleteStatement+
- ;
-
-deleteStatement
- : ^(DELETE entityName whereClause?)
- ;
-
-insertStatementSet
- : insertStatement+
- ;
-
-insertStatement
- : ^(INSERT intoClause queryStatementSet)
- ;
-
-intoClause
- : ^(INTO entityName ^(INSERTABILITY_SPEC propertyReference+ ) )
- ;
-
-queryStatementSet
- : queryStatement+
- ;
-
-queryStatement
- : ^(QUERY queryExpression orderByClause?)
- ;
-
-queryExpression
- : ^(UNION ALL? queryExpression queryExpression)
- | ^(INTERSECT ALL? queryExpression queryExpression)
- | ^(EXCEPT ALL? queryExpression queryExpression)
- | querySpec
- ;
-
-querySpec
- : ^(QUERY_SPEC selectFrom whereClause? groupByClause? havingClause?)
- ;
-
-whereClause
- : ^(WHERE searchCondition)
- ;
-
-groupByClause
- : ^(GROUP_BY groupingValue+)
- ;
-
-groupingValue
- : ^(GROUPING_VALUE valueExpression COLLATE?)
- ;
-
-havingClause
- : ^(HAVING searchCondition)
- ;
-
-selectFrom
- : ^(SELECT_FROM fromClause selectClause)
- ;
-
-fromClause
- : ^(FROM persisterSpaces+)
- ;
-
-persisterSpaces
- : ^(PERSISTER_SPACE persisterSpace)
- ;
-
-persisterSpace
- : persisterSpaceRoot joins*
- ;
-
-persisterSpaceRoot
- : ^(ENTITY_PERSISTER_REF entityName PROP_FETCH?)
- ;
-
-joins
- : ^(PROPERTY_JOIN joinType FETCH? ALIAS_NAME PROP_FETCH? (collectionExpression|propertyReference) withClause?)
- | ^(PERSISTER_JOIN joinType persisterSpaceRoot onClause?)
- ;
-
-withClause
- : ^(WITH searchCondition)
- ;
-
-onClause
- : ^(ON searchCondition)
- ;
-
-joinType
- : CROSS
- | INNER
- | (LEFT | RIGHT | FULL) OUTER?
- ;
-
-selectClause
- : ^(SELECT DISTINCT? rootSelectExpression)
- ;
-
-rootSelectExpression
- : ^(SELECT_LIST rootSelectExpression+)
- | ^(SELECT_ITEM rootSelectExpression)
- | ^(DYNAMIC_INSTANTIATION rootSelectExpression+)
- | ^(DYNAMIC_INSTANTIATION_ARG rootSelectExpression)
- | valueExpression ALIAS_NAME?
- ;
-
-orderByClause
- : ^(ORDER_BY sortSpecification+)
- ;
-
-sortSpecification
- : ^(SORT_SPEC valueExpression COLLATE? (ASC|DESC))
- ;
-
-searchCondition
- : ^( OR searchCondition searchCondition )
- | ^( AND searchCondition searchCondition )
- | ^( NOT searchCondition )
- | predicate
- ;
-
-predicate
- : ^( EQUALS rowValueConstructor comparativePredicateValue )
- | ^( NOT_EQUAL rowValueConstructor comparativePredicateValue )
- | ^( LESS rowValueConstructor comparativePredicateValue )
- | ^( LESS_EQUAL rowValueConstructor comparativePredicateValue )
- | ^( GREATER rowValueConstructor comparativePredicateValue )
- | ^( GREATER_EQUAL rowValueConstructor comparativePredicateValue )
- | ^( IS_NULL rowValueConstructor )
- | ^( IS_NOT_NULL rowValueConstructor )
- | ^( LIKE valueExpression valueExpression escapeSpecification? )
- | ^( NOT_LIKE valueExpression valueExpression escapeSpecification? )
- | ^( BETWEEN rowValueConstructor betweenList )
- | ^( NOT_BETWEEN rowValueConstructor betweenList )
- | ^( IN rowValueConstructor inPredicateValue )
- | ^( NOT_IN rowValueConstructor inPredicateValue )
- | ^( MEMBER_OF rowValueConstructor rowValueConstructor )
- | ^( NOT_MEMBER_OF rowValueConstructor rowValueConstructor )
- | ^( IS_EMPTY rowValueConstructor )
- | ^( IS_NOT_EMPTY rowValueConstructor )
- | rowValueConstructor
- ;
-
-betweenList
- : ^( BETWEEN_LIST rowValueConstructor rowValueConstructor )
- ;
-
-comparativePredicateValue
- : rowValueConstructor
- ;
-
-rowValueConstructor
- : valueExpression
- ;
-
-escapeSpecification
- : ^(ESCAPE characterValueExpression)
- ;
-
-inPredicateValue
- : ^(IN_LIST valueExpression+)
- ;
-
-numericValueExpression
- : valueExpression
- ;
-
-characterValueExpression
- : valueExpression
- ;
-
-datetimeValueExpression
- : valueExpression
- ;
-
-valueExpression
- : ^( DOUBLE_PIPE characterValueExpression+ )
- | ^( UNARY_MINUS numericValueExpression )
- | ^( UNARY_PLUS numericValueExpression )
- | ^( PLUS valueExpression valueExpression )
- | ^( MINUS valueExpression valueExpression )
- | ^( ASTERISK numericValueExpression numericValueExpression )
- | ^( SOLIDUS numericValueExpression numericValueExpression )
- | ^( EXISTS rowValueConstructor)
- | ^( SOME valueExpression )
- | ^( ALL valueExpression )
- | ^( ANY valueExpression )
- | ^( VECTOR_EXPR valueExpression+) // or a tuples or ^(AND or IN statement
- | valueExpressionPrimary
- ;
-
-valueExpressionPrimary
- : caseExpression
- | function
- | collectionFunction
- | collectionExpression
- | constant
- | parameter
- | propertyReference
- | ^(SUB_QUERY queryStatementSet)
- | ALIAS_REF //ID COLUMN, full property column list
- | ^(DOT_CLASS identPrimary) // crazy
- | ^(GENERAL_FUNCTION_CALL identPrimary)
- | ^(JAVA_CONSTANT identPrimary) //It will generate at SQL a parameter element (?) -> 'cos we do not need to care about char escaping
- | ^(PATH identPrimary)
- ;
-
-caseExpression
- : ^(NULLIF valueExpression valueExpression)
- | ^(COALESCE valueExpression valueExpression*)
- | ^(SIMPLE_CASE valueExpression simpleCaseWhenClause+ elseClause?)
- | ^(SEARCHED_CASE searchedWhenClause+ elseClause?)
- ;
-
-simpleCaseWhenClause
- : ^(WHEN valueExpression valueExpression)
- ;
-
-searchedWhenClause
- : ^(WHEN searchCondition valueExpression)
- ;
-
-elseClause
- : ^(ELSE valueExpression)
- ;
-
-function
- : standardFunction
- | setFunction
- ;
-
-standardFunction
- : castFunction
- | concatFunction
- | substringFunction
- | trimFunction
- | upperFunction
- | lowerFunction
- | lengthFunction
- | locateFunction
- | absFunction
- | sqrtFunction
- | modFunction
- | sizeFunction
- | indexFunction
- | currentDateFunction
- | currentTimeFunction
- | currentTimestampFunction
- | extractFunction
- | positionFunction
- | charLengthFunction
- | octetLengthFunction
- | bitLengthFunction
- ;
-
-castFunction
- : ^(CAST valueExpression IDENTIFIER)
- ;
-
-concatFunction
- : ^(CONCAT valueExpression+)
- ;
-
-substringFunction
- : ^(SUBSTRING characterValueExpression numericValueExpression numericValueExpression?)
- ;
-
-trimFunction
- : ^(TRIM trimOperands)
- ;
-
-trimOperands
- : ^((LEADING|TRAILING|BOTH) characterValueExpression characterValueExpression)
- ;
-
-upperFunction
- : ^(UPPER characterValueExpression)
- ;
-
-lowerFunction
- : ^(LOWER characterValueExpression)
- ;
-
-lengthFunction
- : ^(LENGTH characterValueExpression)
- ;
-
-locateFunction
- : ^(LOCATE characterValueExpression characterValueExpression numericValueExpression?)
- ;
-
-absFunction
- : ^(ABS numericValueExpression)
- ;
-
-sqrtFunction
- : ^(SQRT numericValueExpression)
- ;
-
-modFunction
- : ^(MOD numericValueExpression numericValueExpression)
- ;
-
-sizeFunction
- : ^(SIZE propertyReference)
- ;
-
-indexFunction
- : ^(INDEX ALIAS_REF)
- ;
-
-currentDateFunction
- : CURRENT_DATE
- ;
-
-currentTimeFunction
- : CURRENT_TIME
- ;
-
-currentTimestampFunction
- : CURRENT_TIMESTAMP
- ;
-
-extractFunction
- : ^(EXTRACT extractField datetimeValueExpression)
- ;
-
-extractField
- : datetimeField
- | timeZoneField
- ;
-
-datetimeField
- : YEAR
- | MONTH
- | DAY
- | HOUR
- | MINUTE
- | SECOND
- ;
-
-timeZoneField
- : TIMEZONE_HOUR
- | TIMEZONE_MINUTE
- ;
-
-positionFunction
- : ^(POSITION characterValueExpression characterValueExpression)
- ;
-
-charLengthFunction
- : ^(CHARACTER_LENGTH characterValueExpression)
- ;
-
-octetLengthFunction
- : ^(OCTET_LENGTH characterValueExpression)
- ;
-
-bitLengthFunction
- : ^(BIT_LENGTH characterValueExpression)
- ;
-
-setFunction
- : ^(SUM numericValueExpression)
- | ^(AVG numericValueExpression)
- | ^(MAX numericValueExpression)
- | ^(MIN numericValueExpression)
- | ^(COUNT (ASTERISK | (DISTINCT|ALL) countFunctionArguments))
- ;
-
-countFunctionArguments
- : collectionExpression
- | propertyReference
- | numeric_literal
- ;
-
-collectionFunction
- : ^((MAXELEMENT|MAXINDEX|MINELEMENT|MININDEX) collectionPropertyReference)
- //it will generate a SELECT MAX (m.column) form Table xxx -> it is realted to Hibernate mappings to Table->Map
- ;
-
-collectionPropertyReference
- : propertyReference
- ;
-
-collectionExpression
- : ^(ELEMENTS propertyReference) //it will generate a SELECT m.column form Table xxx -> it is realted to Hibernate mappings to Table->Map
- | ^(INDICES propertyReference)
- ;
-
-parameter
- : NAMED_PARAM
- | JPA_PARAM
- | PARAM
- ;
-
-constant
- : literal
- | NULL
- | TRUE
- | FALSE
- ;
-
-literal
- : numeric_literal
- | HEX_LITERAL
- | OCTAL_LITERAL
- | CHARACTER_LITERAL
- | STRING_LITERAL
- ;
-
-numeric_literal
- : INTEGER_LITERAL
- | DECIMAL_LITERAL
- | FLOATING_POINT_LITERAL
- ;
-
-entityName
- : ENTITY_NAME ALIAS_NAME
- ;
-
-propertyReference
- : ^(PROPERTY_REFERENCE identPrimary)
- ;
-
-identPrimary
- : IDENTIFIER
- | ^(DOT identPrimary identPrimary )
- | ^(LEFT_SQUARE identPrimary valueExpression* )
- | ^(LEFT_PAREN identPrimary valueExpression* )
- ;
Added: core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/TestHQLTreeWalker.g
===================================================================
--- core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/TestHQLTreeWalker.g (rev 0)
+++ core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/TestHQLTreeWalker.g 2009-04-22 17:46:26 UTC (rev 16403)
@@ -0,0 +1,499 @@
+tree grammar TestHQLTreeWalker;
+
+options{
+ output=AST;
+ rewrite=true;
+ tokenVocab=HQL;
+ ASTLabelType=CommonTree;
+ TokenLabelType=CommonToken;
+}
+
+@header {
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ *
+ * Portions of SQL grammar parsing copyright (C) 2003 by Lubos Vnuk. All rights
+ * reserved. These portions are distributed under license by Red Hat Middleware
+ * LLC and are covered by the above LGPL notice. If you redistribute this material,
+ * with or without modification, you must preserve this copyright notice in its
+ * entirety.
+ */
+package org.hibernate.sql.ast.phase.hql.parse;
+}
+
+filterStatement[String collectionRole]
+ : ^(QUERY ^(QUERY_SPEC FILTER
+ selectClause? whereClause? ( groupByClause havingClause?)? orderByClause?))
+ ;
+
+statement
+ : updateStatementSet
+ | deleteStatementSet
+ | insertStatementSet
+ | queryStatementSet
+ ;
+
+updateStatementSet
+ : updateStatement+
+ ;
+
+updateStatement
+ : ^(UPDATE entityName ^(SET assignment+) whereClause?)
+ ;
+
+assignment
+ : ^(EQUALS propertyReference valueExpression)
+ | ^(EQUALS VERSIONED_VALUE STRING_LITERAL)
+ ;
+
+deleteStatementSet
+ : deleteStatement+
+ ;
+
+deleteStatement
+ : ^(DELETE entityName whereClause?)
+ ;
+
+insertStatementSet
+ : insertStatement+
+ ;
+
+insertStatement
+ : ^(INSERT intoClause queryStatementSet)
+ ;
+
+intoClause
+ : ^(INTO entityName ^(INSERTABILITY_SPEC propertyReference+ ) )
+ ;
+
+queryStatementSet
+ : queryStatement+
+ ;
+
+queryStatement
+ : ^(QUERY queryExpression orderByClause?)
+ ;
+
+queryExpression
+ : ^(UNION ALL? queryExpression queryExpression)
+ | ^(INTERSECT ALL? queryExpression queryExpression)
+ | ^(EXCEPT ALL? queryExpression queryExpression)
+ | querySpec
+ ;
+
+querySpec
+ : ^(QUERY_SPEC selectFrom whereClause? groupByClause? havingClause?)
+ ;
+
+whereClause
+ : ^(WHERE searchCondition)
+ ;
+
+groupByClause
+ : ^(GROUP_BY groupingValue+)
+ ;
+
+groupingValue
+ : ^(GROUPING_VALUE valueExpression COLLATE?)
+ ;
+
+havingClause
+ : ^(HAVING searchCondition)
+ ;
+
+selectFrom
+ : ^(SELECT_FROM fromClause selectClause)
+ ;
+
+fromClause
+ : ^(FROM persisterSpaces+)
+ ;
+
+persisterSpaces
+ : ^(PERSISTER_SPACE persisterSpace)
+ ;
+
+persisterSpace
+ : persisterSpaceRoot joins*
+ ;
+
+persisterSpaceRoot
+ : ^(ENTITY_PERSISTER_REF entityName PROP_FETCH?)
+ ;
+
+joins
+ : ^(PROPERTY_JOIN joinType FETCH? ALIAS_NAME PROP_FETCH? (collectionExpression|propertyReference) withClause?)
+ | ^(PERSISTER_JOIN joinType persisterSpaceRoot onClause?)
+ ;
+
+withClause
+ : ^(WITH searchCondition)
+ ;
+
+onClause
+ : ^(ON searchCondition)
+ ;
+
+joinType
+ : CROSS
+ | INNER
+ | (LEFT | RIGHT | FULL) OUTER?
+ ;
+
+selectClause
+ : ^(SELECT DISTINCT? rootSelectExpression)
+ ;
+
+rootSelectExpression
+ : ^(SELECT_LIST rootSelectExpression+)
+ | ^(SELECT_ITEM rootSelectExpression)
+ | ^(DYNAMIC_INSTANTIATION rootSelectExpression+)
+ | ^(DYNAMIC_INSTANTIATION_ARG rootSelectExpression)
+ | valueExpression ALIAS_NAME?
+ ;
+
+orderByClause
+ : ^(ORDER_BY sortSpecification+)
+ ;
+
+sortSpecification
+ : ^(SORT_SPEC valueExpression COLLATE? (ASC|DESC))
+ ;
+
+searchCondition
+ : ^( OR searchCondition searchCondition )
+ | ^( AND searchCondition searchCondition )
+ | ^( NOT searchCondition )
+ | predicate
+ ;
+
+predicate
+ : ^( EQUALS rowValueConstructor comparativePredicateValue )
+ | ^( NOT_EQUAL rowValueConstructor comparativePredicateValue )
+ | ^( LESS rowValueConstructor comparativePredicateValue )
+ | ^( LESS_EQUAL rowValueConstructor comparativePredicateValue )
+ | ^( GREATER rowValueConstructor comparativePredicateValue )
+ | ^( GREATER_EQUAL rowValueConstructor comparativePredicateValue )
+ | ^( IS_NULL rowValueConstructor )
+ | ^( IS_NOT_NULL rowValueConstructor )
+ | ^( LIKE valueExpression valueExpression escapeSpecification? )
+ | ^( NOT_LIKE valueExpression valueExpression escapeSpecification? )
+ | ^( BETWEEN rowValueConstructor betweenList )
+ | ^( NOT_BETWEEN rowValueConstructor betweenList )
+ | ^( IN rowValueConstructor inPredicateValue )
+ | ^( NOT_IN rowValueConstructor inPredicateValue )
+ | ^( MEMBER_OF rowValueConstructor rowValueConstructor )
+ | ^( NOT_MEMBER_OF rowValueConstructor rowValueConstructor )
+ | ^( IS_EMPTY rowValueConstructor )
+ | ^( IS_NOT_EMPTY rowValueConstructor )
+ | rowValueConstructor
+ ;
+
+betweenList
+ : ^( BETWEEN_LIST rowValueConstructor rowValueConstructor )
+ ;
+
+comparativePredicateValue
+ : rowValueConstructor
+ ;
+
+rowValueConstructor
+ : valueExpression
+ ;
+
+escapeSpecification
+ : ^(ESCAPE characterValueExpression)
+ ;
+
+inPredicateValue
+ : ^(IN_LIST valueExpression+)
+ ;
+
+numericValueExpression
+ : valueExpression
+ ;
+
+characterValueExpression
+ : valueExpression
+ ;
+
+datetimeValueExpression
+ : valueExpression
+ ;
+
+valueExpression
+ : ^( DOUBLE_PIPE characterValueExpression+ )
+ | ^( UNARY_MINUS numericValueExpression )
+ | ^( UNARY_PLUS numericValueExpression )
+ | ^( PLUS valueExpression valueExpression )
+ | ^( MINUS valueExpression valueExpression )
+ | ^( ASTERISK numericValueExpression numericValueExpression )
+ | ^( SOLIDUS numericValueExpression numericValueExpression )
+ | ^( EXISTS rowValueConstructor)
+ | ^( SOME valueExpression )
+ | ^( ALL valueExpression )
+ | ^( ANY valueExpression )
+ | ^( VECTOR_EXPR valueExpression+) // or a tuples or ^(AND or IN statement
+ | valueExpressionPrimary
+ ;
+
+valueExpressionPrimary
+ : caseExpression
+ | function
+ | collectionFunction
+ | collectionExpression
+ | constant
+ | parameter
+ | propertyReference
+ | ^(SUB_QUERY queryStatementSet)
+ | ALIAS_REF //ID COLUMN, full property column list
+ | ^(DOT_CLASS identPrimary) // crazy
+ | ^(GENERAL_FUNCTION_CALL identPrimary)
+ | ^(JAVA_CONSTANT identPrimary) //It will generate at SQL a parameter element (?) -> 'cos we do not need to care about char escaping
+ | ^(PATH identPrimary)
+ ;
+
+caseExpression
+ : ^(NULLIF valueExpression valueExpression)
+ | ^(COALESCE valueExpression valueExpression*)
+ | ^(SIMPLE_CASE valueExpression simpleCaseWhenClause+ elseClause?)
+ | ^(SEARCHED_CASE searchedWhenClause+ elseClause?)
+ ;
+
+simpleCaseWhenClause
+ : ^(WHEN valueExpression valueExpression)
+ ;
+
+searchedWhenClause
+ : ^(WHEN searchCondition valueExpression)
+ ;
+
+elseClause
+ : ^(ELSE valueExpression)
+ ;
+
+function
+ : standardFunction
+ | setFunction
+ ;
+
+standardFunction
+ : castFunction
+ | concatFunction
+ | substringFunction
+ | trimFunction
+ | upperFunction
+ | lowerFunction
+ | lengthFunction
+ | locateFunction
+ | absFunction
+ | sqrtFunction
+ | modFunction
+ | sizeFunction
+ | indexFunction
+ | currentDateFunction
+ | currentTimeFunction
+ | currentTimestampFunction
+ | extractFunction
+ | positionFunction
+ | charLengthFunction
+ | octetLengthFunction
+ | bitLengthFunction
+ ;
+
+castFunction
+ : ^(CAST valueExpression IDENTIFIER)
+ ;
+
+concatFunction
+ : ^(CONCAT valueExpression+)
+ ;
+
+substringFunction
+ : ^(SUBSTRING characterValueExpression numericValueExpression numericValueExpression?)
+ ;
+
+trimFunction
+ : ^(TRIM trimOperands)
+ ;
+
+trimOperands
+ : ^((LEADING|TRAILING|BOTH) characterValueExpression characterValueExpression)
+ ;
+
+upperFunction
+ : ^(UPPER characterValueExpression)
+ ;
+
+lowerFunction
+ : ^(LOWER characterValueExpression)
+ ;
+
+lengthFunction
+ : ^(LENGTH characterValueExpression)
+ ;
+
+locateFunction
+ : ^(LOCATE characterValueExpression characterValueExpression numericValueExpression?)
+ ;
+
+absFunction
+ : ^(ABS numericValueExpression)
+ ;
+
+sqrtFunction
+ : ^(SQRT numericValueExpression)
+ ;
+
+modFunction
+ : ^(MOD numericValueExpression numericValueExpression)
+ ;
+
+sizeFunction
+ : ^(SIZE propertyReference)
+ ;
+
+indexFunction
+ : ^(INDEX ALIAS_REF)
+ ;
+
+currentDateFunction
+ : CURRENT_DATE
+ ;
+
+currentTimeFunction
+ : CURRENT_TIME
+ ;
+
+currentTimestampFunction
+ : CURRENT_TIMESTAMP
+ ;
+
+extractFunction
+ : ^(EXTRACT extractField datetimeValueExpression)
+ ;
+
+extractField
+ : datetimeField
+ | timeZoneField
+ ;
+
+datetimeField
+ : YEAR
+ | MONTH
+ | DAY
+ | HOUR
+ | MINUTE
+ | SECOND
+ ;
+
+timeZoneField
+ : TIMEZONE_HOUR
+ | TIMEZONE_MINUTE
+ ;
+
+positionFunction
+ : ^(POSITION characterValueExpression characterValueExpression)
+ ;
+
+charLengthFunction
+ : ^(CHARACTER_LENGTH characterValueExpression)
+ ;
+
+octetLengthFunction
+ : ^(OCTET_LENGTH characterValueExpression)
+ ;
+
+bitLengthFunction
+ : ^(BIT_LENGTH characterValueExpression)
+ ;
+
+setFunction
+ : ^(SUM numericValueExpression)
+ | ^(AVG numericValueExpression)
+ | ^(MAX numericValueExpression)
+ | ^(MIN numericValueExpression)
+ | ^(COUNT (ASTERISK | (DISTINCT|ALL) countFunctionArguments))
+ ;
+
+countFunctionArguments
+ : collectionExpression
+ | propertyReference
+ | numeric_literal
+ ;
+
+collectionFunction
+ : ^((MAXELEMENT|MAXINDEX|MINELEMENT|MININDEX) collectionPropertyReference)
+ //it will generate a SELECT MAX (m.column) form Table xxx -> it is realted to Hibernate mappings to Table->Map
+ ;
+
+collectionPropertyReference
+ : propertyReference
+ ;
+
+collectionExpression
+ : ^(ELEMENTS propertyReference) //it will generate a SELECT m.column form Table xxx -> it is realted to Hibernate mappings to Table->Map
+ | ^(INDICES propertyReference)
+ ;
+
+parameter
+ : NAMED_PARAM
+ | JPA_PARAM
+ | PARAM
+ ;
+
+constant
+ : literal
+ | NULL
+ | TRUE
+ | FALSE
+ ;
+
+literal
+ : numeric_literal
+ | HEX_LITERAL
+ | OCTAL_LITERAL
+ | CHARACTER_LITERAL
+ | STRING_LITERAL
+ ;
+
+numeric_literal
+ : INTEGER_LITERAL
+ | DECIMAL_LITERAL
+ | FLOATING_POINT_LITERAL
+ ;
+
+entityName
+ : ENTITY_NAME ALIAS_NAME
+ ;
+
+propertyReference
+ : ^(PROPERTY_REFERENCE identPrimary)
+ ;
+
+identPrimary
+ : IDENTIFIER
+ | ^(DOT identPrimary identPrimary )
+ | ^(LEFT_SQUARE identPrimary valueExpression* )
+ | ^(LEFT_PAREN identPrimary valueExpression* )
+ ;
\ No newline at end of file
Property changes on: core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/parse/TestHQLTreeWalker.g
___________________________________________________________________
Name: svn:eol-style
+ native
Added: core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g
===================================================================
--- core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g (rev 0)
+++ core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g 2009-04-22 17:46:26 UTC (rev 16403)
@@ -0,0 +1,603 @@
+tree grammar GeneratedHQLResolution;
+
+options{
+ output=AST;
+ rewrite=true;
+ tokenVocab=HQL;
+ ASTLabelType=CommonTree;
+ TokenLabelType=CommonToken;
+}
+
+@header {
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ *
+ * Portions of SQL grammar parsing copyright (C) 2003 by Lubos Vnuk. All rights
+ * reserved. These portions are distributed under license by Red Hat Middleware
+ * LLC and are covered by the above LGPL notice. If you redistribute this material,
+ * with or without modification, you must preserve this copyright notice in its
+ * entirety.
+ */
+package org.hibernate.sql.ast.phase.hql.resolve;
+
+import org.antlr.runtime.tree.CommonTree;
+import org.hibernate.sql.ast.phase.hql.resolve.path.PathedPropertyReferenceSource;
+}
+
+@members{
+ protected void registerPersisterSpace(CommonTree entityName,
+ CommonTree alias) {
+ }
+
+ protected boolean isUnqualifiedPropertyReference() {
+ return false;
+ }
+
+ protected Tree normalizeUnqualifiedPropertyReference(CommonTree property) {
+ return null;
+ }
+
+ protected boolean isPersisterReferenceAlias() {
+ return false;
+ }
+
+ protected PathedPropertyReferenceSource normalizeUnqualifiedRoot( CommonTree identifier382 ) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ protected PathedPropertyReferenceSource normalizeQualifiedRoot( CommonTree identifier381 ) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ protected void normalizePropertyPathIntermediary( CommonTree commonTree,
+ CommonTree identifier387 ) {
+ // TODO Auto-generated method stub
+ }
+
+ protected void normalizeIntermediateIndexOperation( CommonTree commonTree,
+ CommonTree commonTree2 ) {
+ // TODO Auto-generated method stub
+ }
+
+ protected void normalizeUnqualifiedPropertyReferenceSource(
+ CommonTree identifier394 ) {
+ // TODO Auto-generated method stub
+ }
+
+ protected void normalizeTerminalIndexOperation(CommonTree collectionPath, CommonTree selector) {
+ // TODO Auto-generated method stub
+ }
+
+ protected void normalizePropertyPathTerminus(PathedPropertyReferenceSource source, CommonTree propertyNameNode) {
+ // TODO Auto-generated method stub
+ }
+
+}
+
+filterStatement[String collectionRole]
+ : ^(QUERY ^(QUERY_SPEC FILTER
+ selectClause? whereClause? ( groupByClause havingClause?)? orderByClause?))
+ ;
+
+statement
+ : updateStatementSet
+ | deleteStatementSet
+ | insertStatementSet
+ | queryStatementSet
+ ;
+
+updateStatementSet
+ : updateStatement+
+ ;
+
+updateStatement
+ : ^(UPDATE entityName ^(SET assignment+) whereClause?)
+ ;
+
+assignment
+ : ^(EQUALS propertyReference valueExpression)
+ | ^(EQUALS VERSIONED_VALUE STRING_LITERAL)
+ ;
+
+deleteStatementSet
+ : deleteStatement+
+ ;
+
+deleteStatement
+ : ^(DELETE entityName whereClause?)
+ ;
+
+insertStatementSet
+ : insertStatement+
+ ;
+
+insertStatement
+ : ^(INSERT intoClause queryStatementSet)
+ ;
+
+intoClause
+ : ^(INTO entityName ^(INSERTABILITY_SPEC propertyReference+ ) )
+ ;
+
+queryStatementSet
+ : queryStatement+
+ ;
+
+queryStatement
+ : ^(QUERY queryExpression orderByClause?)
+ ;
+
+queryExpression
+ : ^(UNION ALL? queryExpression queryExpression)
+ | ^(INTERSECT ALL? queryExpression queryExpression)
+ | ^(EXCEPT ALL? queryExpression queryExpression)
+ | querySpec
+ ;
+
+querySpec
+ : ^(QUERY_SPEC selectFrom whereClause? groupByClause? havingClause?)
+ ;
+
+whereClause
+ : ^(WHERE searchCondition)
+ ;
+
+groupByClause
+ : ^(GROUP_BY groupingValue+)
+ ;
+
+groupingValue
+ : ^(GROUPING_VALUE valueExpression COLLATE?)
+ ;
+
+havingClause
+ : ^(HAVING searchCondition)
+ ;
+
+selectFrom
+ : ^(SELECT_FROM fromClause selectClause)
+ ;
+
+fromClause
+ : ^(FROM persisterSpaces+)
+ ;
+
+persisterSpaces
+ : ^(PERSISTER_SPACE persisterSpace)
+ ;
+
+persisterSpace
+ : persisterSpaceRoot joins*
+ ;
+
+persisterSpaceRoot
+ : ^(ENTITY_PERSISTER_REF entityName PROP_FETCH?)
+ ;
+
+joins
+ : ^(PROPERTY_JOIN joinType FETCH? ALIAS_NAME PROP_FETCH? (collectionExpression|propertyReference) withClause?)
+ | ^(PERSISTER_JOIN joinType persisterSpaceRoot onClause?)
+ ;
+
+withClause
+ : ^(WITH searchCondition)
+ ;
+
+onClause
+ : ^(ON searchCondition)
+ ;
+
+joinType
+ : CROSS
+ | INNER
+ | (LEFT | RIGHT | FULL) OUTER?
+ ;
+
+selectClause
+ : ^(SELECT DISTINCT? rootSelectExpression)
+ ;
+
+rootSelectExpression
+ : ^(SELECT_LIST rootSelectExpression+)
+ | ^(SELECT_ITEM rootSelectExpression)
+ | ^(DYNAMIC_INSTANTIATION rootSelectExpression+)
+ | ^(DYNAMIC_INSTANTIATION_ARG rootSelectExpression)
+ | valueExpression ALIAS_NAME?
+ ;
+
+orderByClause
+ : ^(ORDER_BY sortSpecification+)
+ ;
+
+sortSpecification
+ : ^(SORT_SPEC valueExpression COLLATE? (ASC|DESC))
+ ;
+
+searchCondition
+ : ^( OR searchCondition searchCondition )
+ | ^( AND searchCondition searchCondition )
+ | ^( NOT searchCondition )
+ | predicate
+ ;
+
+predicate
+ : ^( EQUALS rowValueConstructor comparativePredicateValue )
+ | ^( NOT_EQUAL rowValueConstructor comparativePredicateValue )
+ | ^( LESS rowValueConstructor comparativePredicateValue )
+ | ^( LESS_EQUAL rowValueConstructor comparativePredicateValue )
+ | ^( GREATER rowValueConstructor comparativePredicateValue )
+ | ^( GREATER_EQUAL rowValueConstructor comparativePredicateValue )
+ | ^( IS_NULL rowValueConstructor )
+ | ^( IS_NOT_NULL rowValueConstructor )
+ | ^( LIKE valueExpression valueExpression escapeSpecification? )
+ | ^( NOT_LIKE valueExpression valueExpression escapeSpecification? )
+ | ^( BETWEEN rowValueConstructor betweenList )
+ | ^( NOT_BETWEEN rowValueConstructor betweenList )
+ | ^( IN rowValueConstructor inPredicateValue )
+ | ^( NOT_IN rowValueConstructor inPredicateValue )
+ | ^( MEMBER_OF rowValueConstructor rowValueConstructor )
+ | ^( NOT_MEMBER_OF rowValueConstructor rowValueConstructor )
+ | ^( IS_EMPTY rowValueConstructor )
+ | ^( IS_NOT_EMPTY rowValueConstructor )
+ | rowValueConstructor
+ ;
+
+betweenList
+ : ^( BETWEEN_LIST rowValueConstructor rowValueConstructor )
+ ;
+
+comparativePredicateValue
+ : rowValueConstructor
+ ;
+
+rowValueConstructor
+ : valueExpression
+ ;
+
+escapeSpecification
+ : ^(ESCAPE characterValueExpression)
+ ;
+
+inPredicateValue
+ : ^(IN_LIST valueExpression+)
+ ;
+
+numericValueExpression
+ : valueExpression
+ ;
+
+characterValueExpression
+ : valueExpression
+ ;
+
+datetimeValueExpression
+ : valueExpression
+ ;
+
+valueExpression
+ : ^( DOUBLE_PIPE characterValueExpression+ )
+ | ^( UNARY_MINUS numericValueExpression )
+ | ^( UNARY_PLUS numericValueExpression )
+ | ^( PLUS valueExpression valueExpression )
+ | ^( MINUS valueExpression valueExpression )
+ | ^( ASTERISK numericValueExpression numericValueExpression )
+ | ^( SOLIDUS numericValueExpression numericValueExpression )
+ | ^( EXISTS rowValueConstructor)
+ | ^( SOME valueExpression )
+ | ^( ALL valueExpression )
+ | ^( ANY valueExpression )
+ | ^( VECTOR_EXPR valueExpression+) // or a tuples or ^(AND or IN statement
+ | valueExpressionPrimary
+ ;
+
+valueExpressionPrimary
+ : caseExpression
+ | function
+ | collectionFunction
+ | collectionExpression
+ | constant
+ | parameter
+ | propertyReference
+ | ^(SUB_QUERY queryStatementSet)
+ | ALIAS_REF //ID COLUMN, full property column list
+ | ^(DOT_CLASS path) // crazy
+ | ^(GENERAL_FUNCTION_CALL path)
+ | ^(JAVA_CONSTANT path) //It will generate at SQL a parameter element (?) -> 'cos we do not need to care about char escaping
+ | ^(PATH path)
+ ;
+
+caseExpression
+ : ^(NULLIF valueExpression valueExpression)
+ | ^(COALESCE valueExpression valueExpression*)
+ | ^(SIMPLE_CASE valueExpression simpleCaseWhenClause+ elseClause?)
+ | ^(SEARCHED_CASE searchedWhenClause+ elseClause?)
+ ;
+
+simpleCaseWhenClause
+ : ^(WHEN valueExpression valueExpression)
+ ;
+
+searchedWhenClause
+ : ^(WHEN searchCondition valueExpression)
+ ;
+
+elseClause
+ : ^(ELSE valueExpression)
+ ;
+
+function
+ : standardFunction
+ | setFunction
+ ;
+
+standardFunction
+ : castFunction
+ | concatFunction
+ | substringFunction
+ | trimFunction
+ | upperFunction
+ | lowerFunction
+ | lengthFunction
+ | locateFunction
+ | absFunction
+ | sqrtFunction
+ | modFunction
+ | sizeFunction
+ | indexFunction
+ | currentDateFunction
+ | currentTimeFunction
+ | currentTimestampFunction
+ | extractFunction
+ | positionFunction
+ | charLengthFunction
+ | octetLengthFunction
+ | bitLengthFunction
+ ;
+
+castFunction
+ : ^(CAST valueExpression IDENTIFIER)
+ ;
+
+concatFunction
+ : ^(CONCAT valueExpression+)
+ ;
+
+substringFunction
+ : ^(SUBSTRING characterValueExpression numericValueExpression numericValueExpression?)
+ ;
+
+trimFunction
+ : ^(TRIM trimOperands)
+ ;
+
+trimOperands
+ : ^((LEADING|TRAILING|BOTH) characterValueExpression characterValueExpression)
+ ;
+
+upperFunction
+ : ^(UPPER characterValueExpression)
+ ;
+
+lowerFunction
+ : ^(LOWER characterValueExpression)
+ ;
+
+lengthFunction
+ : ^(LENGTH characterValueExpression)
+ ;
+
+locateFunction
+ : ^(LOCATE characterValueExpression characterValueExpression numericValueExpression?)
+ ;
+
+absFunction
+ : ^(ABS numericValueExpression)
+ ;
+
+sqrtFunction
+ : ^(SQRT numericValueExpression)
+ ;
+
+modFunction
+ : ^(MOD numericValueExpression numericValueExpression)
+ ;
+
+sizeFunction
+ : ^(SIZE propertyReference)
+ ;
+
+indexFunction
+ : ^(INDEX ALIAS_REF)
+ ;
+
+currentDateFunction
+ : CURRENT_DATE
+ ;
+
+currentTimeFunction
+ : CURRENT_TIME
+ ;
+
+currentTimestampFunction
+ : CURRENT_TIMESTAMP
+ ;
+
+extractFunction
+ : ^(EXTRACT extractField datetimeValueExpression)
+ ;
+
+extractField
+ : datetimeField
+ | timeZoneField
+ ;
+
+datetimeField
+ : YEAR
+ | MONTH
+ | DAY
+ | HOUR
+ | MINUTE
+ | SECOND
+ ;
+
+timeZoneField
+ : TIMEZONE_HOUR
+ | TIMEZONE_MINUTE
+ ;
+
+positionFunction
+ : ^(POSITION characterValueExpression characterValueExpression)
+ ;
+
+charLengthFunction
+ : ^(CHARACTER_LENGTH characterValueExpression)
+ ;
+
+octetLengthFunction
+ : ^(OCTET_LENGTH characterValueExpression)
+ ;
+
+bitLengthFunction
+ : ^(BIT_LENGTH characterValueExpression)
+ ;
+
+setFunction
+ : ^(SUM numericValueExpression)
+ | ^(AVG numericValueExpression)
+ | ^(MAX numericValueExpression)
+ | ^(MIN numericValueExpression)
+ | ^(COUNT (ASTERISK | (DISTINCT|ALL) countFunctionArguments))
+ ;
+
+countFunctionArguments
+ : collectionExpression
+ | propertyReference
+ | numeric_literal
+ ;
+
+collectionFunction
+ : ^((MAXELEMENT|MAXINDEX|MINELEMENT|MININDEX) collectionPropertyReference)
+ //it will generate a SELECT MAX (m.column) form Table xxx -> it is realted to Hibernate mappings to Table->Map
+ ;
+
+collectionPropertyReference
+ : propertyReference
+ ;
+
+collectionExpression
+ : ^(ELEMENTS propertyReference) //it will generate a SELECT m.column form Table xxx -> it is realted to Hibernate mappings to Table->Map
+ | ^(INDICES propertyReference)
+ ;
+
+parameter
+ : NAMED_PARAM
+ | JPA_PARAM
+ | PARAM
+ ;
+
+constant
+ : literal
+ | NULL
+ | TRUE
+ | FALSE
+ ;
+
+literal
+ : numeric_literal
+ | HEX_LITERAL
+ | OCTAL_LITERAL
+ | CHARACTER_LITERAL
+ | STRING_LITERAL
+ ;
+
+numeric_literal
+ : INTEGER_LITERAL
+ | DECIMAL_LITERAL
+ | FLOATING_POINT_LITERAL
+ ;
+
+entityName
+ : ENTITY_NAME ALIAS_NAME
+ { registerPersisterSpace($ENTITY_NAME, $ALIAS_NAME); }
+ ;
+
+propertyReference
+ : ^(PROPERTY_REFERENCE propertyReferencePath)
+ ;
+
+propertyReferencePath
+ : {isUnqualifiedPropertyReference()}? unqualifiedPropertyReference
+ | pathedPropertyReference
+ | terminalIndexOperation
+ ;
+
+unqualifiedPropertyReference
+ : IDENTIFIER
+ { normalizeUnqualifiedPropertyReference( $IDENTIFIER ); }
+ ;
+
+pathedPropertyReference
+ : ^(DOT pathedPropertyReferenceSource IDENTIFIER)
+ { normalizePropertyPathTerminus( $pathedPropertyReferenceSource.propertyReferenceSource, $IDENTIFIER ); }
+ ;
+
+pathedPropertyReferenceSource returns [PathedPropertyReferenceSource propertyReferenceSource]
+ : {(isPersisterReferenceAlias())}?=> IDENTIFIER { $propertyReferenceSource = normalizeQualifiedRoot( $IDENTIFIER ); }
+ | {(isUnqualifiedPropertyReference())}?=> IDENTIFIER { $propertyReferenceSource = normalizeUnqualifiedRoot( $IDENTIFIER ); }
+ | intermediatePathedPropertyReference
+ | intermediateIndexOperation
+ ;
+
+intermediatePathedPropertyReference
+ : ^(DOT pathedPropertyReferenceSource IDENTIFIER )
+ { normalizePropertyPathIntermediary( $pathedPropertyReferenceSource.tree, $IDENTIFIER ); }
+ ;
+
+intermediateIndexOperation
+ : ^( LEFT_SQUARE indexOperationSource indexSelector )
+ { normalizeIntermediateIndexOperation( $indexOperationSource.tree, $indexSelector.tree ); }
+ ;
+
+indexOperationSource
+ : ^(DOT pathedPropertyReferenceSource IDENTIFIER )
+ | {(isUnqualifiedPropertyReference())}?=> IDENTIFIER
+ { normalizeUnqualifiedPropertyReferenceSource( $IDENTIFIER ); }
+ ;
+
+indexSelector
+ : valueExpression
+ ;
+
+terminalIndexOperation
+ : ^( INDEX_OP indexOperationSource indexSelector )
+ { normalizeTerminalIndexOperation( $indexOperationSource.tree, $indexSelector.tree ); }
+ ;
+
+path
+ : IDENTIFIER
+ | ^(DOT path path )
+ | ^(LEFT_SQUARE path valueExpression* )
+ | ^(LEFT_PAREN path valueExpression* )
+ ;
Property changes on: core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/parse/ParserContextDefaultImpl.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/parse/ParserContextDefaultImpl.java 2009-04-22 14:13:26 UTC (rev 16402)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/parse/ParserContextDefaultImpl.java 2009-04-22 17:46:26 UTC (rev 16403)
@@ -7,7 +7,7 @@
public class ParserContextDefaultImpl implements ParserContext {
- private ImplicitAliasGenerator implicitAliasGenerator = new ImplicitAliasGenerator();
+ private final ImplicitAliasGenerator implicitAliasGenerator = new ImplicitAliasGenerator();
public List getEntityImplementors(String text) {
List implementors = new ArrayList();
Added: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java (rev 0)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java 2009-04-22 17:46:26 UTC (rev 16403)
@@ -0,0 +1,201 @@
+package org.hibernate.sql.ast.phase.hql.resolve;
+
+import org.antlr.runtime.RecognizerSharedState;
+import org.antlr.runtime.tree.CommonTree;
+import org.antlr.runtime.tree.Tree;
+import org.antlr.runtime.tree.TreeNodeStream;
+import org.hibernate.engine.SessionFactoryImplementor;
+import org.hibernate.persister.entity.EntityPersister;
+import org.hibernate.persister.entity.Queryable;
+import org.hibernate.sql.ast.alias.DefaultTableAliasGenerator;
+import org.hibernate.sql.ast.alias.TableAliasGenerator;
+import org.hibernate.sql.ast.phase.hql.parse.HQLParser;
+import org.hibernate.sql.ast.phase.hql.resolve.path.PathResolutionStrategy;
+import org.hibernate.sql.ast.phase.hql.resolve.path.PathResolutionStrategyStack;
+import org.hibernate.sql.ast.phase.hql.resolve.path.PathedPropertyReferenceSource;
+import org.hibernate.sql.ast.phase.hql.resolve.path.impl.BasicPathResolutionStrategySupport;
+import org.hibernate.sql.ast.tree.Table;
+import org.hibernate.sql.ast.tree.Table.EntityTableSpace;
+import org.hibernate.sql.ast.util.TreePrinter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class HQLResolution extends GeneratedHQLResolution implements
+ ResolutionContext {
+ private static final Logger log = LoggerFactory
+ .getLogger( HQLResolution.class );
+
+ private final SessionFactoryImplementor sessionFactory;
+ private final PersisterSpaceContext persisterSpaceContext;
+ private final DefaultTableAliasGenerator defaultTableAliasGenerator;
+ private final PathResolutionStrategyStack pathResolutionStrategyStack;
+ private final TreePrinter printer;
+
+ private boolean isProcessingFunction = false;
+
+ public HQLResolution( TreeNodeStream input,
+ SessionFactoryImplementor sessionFactory ) {
+ this( input, new RecognizerSharedState(), sessionFactory );
+ }
+
+ public HQLResolution( TreeNodeStream input, RecognizerSharedState state,
+ SessionFactoryImplementor sessionFactory ) {
+ super( input, state );
+ this.sessionFactory = sessionFactory;
+ this.persisterSpaceContext = new RootPersisterSpaceContext();
+ this.defaultTableAliasGenerator = new DefaultTableAliasGenerator(
+ sessionFactory.getDialect() );
+ this.printer = new TreePrinter( HQLParser.class );
+ this.pathResolutionStrategyStack = new PathResolutionStrategyStack();
+ this.pathResolutionStrategyStack
+ .push( new BasicPathResolutionStrategySupport( this ) );
+ }
+
+ protected void registerPersisterSpace( CommonTree entityName,
+ CommonTree alias ) {
+ String entityPersisterName = sessionFactory
+ .getImportedClassName( entityName.getText() );
+ EntityPersister entityPersister = sessionFactory
+ .getEntityPersister( entityPersisterName );
+
+ EntityTableSpace tableSpace = new Table.EntityTableSpace(
+ ( Queryable ) entityPersister, alias.getText() );
+ registerPersisterSpace( tableSpace.getPersisterSpace() );
+ }
+
+ public PersisterSpaceContext getCurrentPersisterSpaceContext() {
+ return persisterSpaceContext;
+ }
+
+ public SessionFactoryImplementor getSessionFactoryImplementor() {
+ return sessionFactory;
+ }
+
+ public TableAliasGenerator getTableAliasGenerator() {
+ return defaultTableAliasGenerator;
+ }
+
+ public TreePrinter getTreePrinter() {
+ return printer;
+ }
+
+ public boolean isCurrentlyProcessingFunction() {
+ return isProcessingFunction;
+ }
+
+ public PathResolutionStrategyStack getPathResolutionStrategyStack() {
+ return pathResolutionStrategyStack;
+ }
+
+ public PathResolutionStrategy getCurrentPathResolutionStrategy() {
+ return pathResolutionStrategyStack.getCurrent();
+ }
+
+ public void registerAssociationFetch( PersisterSpace persisterSpace ) {
+ // TODO Auto-generated method stub
+ persisterSpaceContext.registerPersisterSpace( persisterSpace );
+ }
+
+ public void registerPropertyFetch( PersisterSpace persisterSpace ) {
+ // TODO Auto-generated method stub
+ }
+
+ protected void registerEntityPersisterSpace( CommonTree entityName,
+ CommonTree alias ) {
+ String entityPersisterName = sessionFactory
+ .getImportedClassName( entityName.getText() );
+ EntityPersister entityPersister = sessionFactory
+ .getEntityPersister( entityPersisterName );
+
+ EntityTableSpace tableSpace = new Table.EntityTableSpace(
+ ( Queryable ) entityPersister, getTableAliasGenerator()
+ .generateSqlAliasRoot( ( Queryable ) entityPersister,
+ alias.getText() ) );
+ registerPersisterSpace( tableSpace.getPersisterSpace() );
+ }
+
+ private void registerPersisterSpace( PersisterSpace persisterSpace ) {
+ persisterSpaceContext.registerPersisterSpace( persisterSpace );
+ }
+
+ protected boolean isUnqualifiedPropertyReference() {
+ return locateOwningPersisterAlias( ( Tree ) input.LT( 1 ) ) != null;
+ }
+
+ protected String locateOwningPersisterAlias( Tree property ) {
+ PersisterSpace persisterReference = getCurrentPersisterSpaceContext()
+ .locatePersisterSpaceExposingProperty( property.getText() );
+ return persisterReference == null ? null : persisterReference
+ .getSourceAlias();
+ }
+
+ protected boolean isPersisterReferenceAlias() {
+ Tree alias = ( Tree ) input.LT( 1 );
+ log.trace( "Checking [" + textOrNull( alias )
+ + "] as persister-ref alias" );
+ return getCurrentPersisterSpaceContext().isContainedAlias(
+ alias.getText() );
+ }
+
+ protected Tree normalizeUnqualifiedPropertyReference( CommonTree property ) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ protected PathedPropertyReferenceSource normalizeUnqualifiedRoot(
+ CommonTree identifier ) {
+ System.out
+ .println( "normalizeUnqualifiedRoot: " + identifier.getText() );
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ protected PathedPropertyReferenceSource normalizeQualifiedRoot(
+ CommonTree alias ) {
+ log.debug( "normalizing path expression root as alias ["
+ + alias.getText() + "]" );
+
+ return getCurrentPathResolutionStrategy().handleRoot(
+ getCurrentPersisterSpaceContext().locatePersisterSpaceByAlias(
+ alias.getText() ) );
+ }
+
+ protected void normalizePropertyPathTerminus(
+ PathedPropertyReferenceSource source, CommonTree propertyNameNode ) {
+ log.trace( "normalizing terminal path expression ["
+ + textOrNull( propertyNameNode ) + "]" );
+ getCurrentPathResolutionStrategy().handleTerminalPathPart( source,
+ propertyNameNode.getText() );
+ }
+
+ protected void normalizePropertyPathIntermediary( CommonTree identifier1,
+ CommonTree identifier2 ) {
+ System.out.println( "normalizePropertyPathIntermediary: "
+ + identifier1.getText() + ":" + identifier2.getText() );
+ // TODO Auto-generated method stub
+ }
+
+ protected void normalizeIntermediateIndexOperation( CommonTree identifier1,
+ CommonTree identifier2 ) {
+ System.out.println( "normalizeIntermediateIndexOperation: "
+ + identifier1.getText() + ":" + identifier2.getText() );
+ // TODO Auto-generated method stub
+ }
+
+ protected void normalizeUnqualifiedPropertyReferenceSource(
+ CommonTree identifier ) {
+ System.out.println( "normalizeUnqualifiedPropertyReferenceSource: "
+ + identifier.getText() );
+ // TODO Auto-generated method stub
+ }
+
+ protected void normalizeTerminalIndexOperation( CommonTree collectionPath,
+ CommonTree selector ) {
+ // TODO Auto-generated method stub
+ }
+
+ private String textOrNull( Tree tree ) {
+ return tree == null ? null : tree.getText();
+ }
+
+}
\ No newline at end of file
Property changes on: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java 2009-04-22 14:13:26 UTC (rev 16402)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/PersisterTableExpressionGenerator.java 2009-04-22 17:46:26 UTC (rev 16403)
@@ -44,7 +44,7 @@
*
* @author Steve Ebersole
*/
-public class PersisterTableExpressionGenerator {
+public abstract class PersisterTableExpressionGenerator {
public static Table generateTableExpression(
Queryable persister,
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/ResolutionContext.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/ResolutionContext.java 2009-04-22 14:13:26 UTC (rev 16402)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/ResolutionContext.java 2009-04-22 17:46:26 UTC (rev 16403)
@@ -29,12 +29,10 @@
package org.hibernate.sql.ast.phase.hql.resolve;
-import org.antlr.runtime.tree.TreeAdaptor;
-
import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.sql.ast.alias.TableAliasGenerator;
-import org.hibernate.sql.ast.util.TreePrinter;
import org.hibernate.sql.ast.phase.hql.resolve.path.PathResolutionStrategy;
+import org.hibernate.sql.ast.util.TreePrinter;
/**
* todo : javadocs
@@ -50,8 +48,6 @@
*/
public SessionFactoryImplementor getSessionFactoryImplementor();
- public TreeAdaptor getTreeAdaptor();
-
/**
* The current {@link PersisterSpaceContext} for this context. The {@link PersisterSpaceContext}
* can change in relation to subqueries and such. See {@link PersisterSpaceContext} docs for more info.
Modified: core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java
===================================================================
--- core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java 2009-04-22 14:13:26 UTC (rev 16402)
+++ core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/path/impl/AbstractPathResolutionStrategy.java 2009-04-22 17:46:26 UTC (rev 16403)
@@ -30,9 +30,6 @@
package org.hibernate.sql.ast.phase.hql.resolve.path.impl;
import org.antlr.runtime.Token;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.hibernate.QueryException;
import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.persister.collection.QueryableCollection;
@@ -53,6 +50,8 @@
import org.hibernate.type.ComponentType;
import org.hibernate.type.EntityType;
import org.hibernate.type.Type;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Abstract implementation of {@link PathResolutionStrategy} providing convenience methods to actual
@@ -82,7 +81,7 @@
}
protected final HibernateTree createNode(int type, String text) {
- return ( HibernateTree ) resolutionContext().getTreeAdaptor().create( type, text );
+ return new HibernateTree(type, text);
}
/**
Deleted: core/branches/antlr3/src/test/gunit/org/hibernate/sql/ast/phase/hql/parse/gUnitHQLTreeWalker.testsuite
===================================================================
--- core/branches/antlr3/src/test/gunit/org/hibernate/sql/ast/phase/hql/parse/gUnitHQLTreeWalker.testsuite 2009-04-22 14:13:26 UTC (rev 16402)
+++ core/branches/antlr3/src/test/gunit/org/hibernate/sql/ast/phase/hql/parse/gUnitHQLTreeWalker.testsuite 2009-04-22 17:46:26 UTC (rev 16403)
@@ -1,1660 +0,0 @@
-gunit HQLTreeWalker walks HQL;
-
-@header{
-package org.hibernate.sql.ast.phase.hql.parse;
-}
-
-
-statement walks statement:
-
-/*
-SELECT/FROM STATEMENT
-*/
-//testSimpleFrom
-"from com.acme.EntityName e" OK
-//testConstantUsage
-"from com.acme.EntityName where prop = org.hibernate.sql.ast.phase.hql.parse.ParserTest.CONSTANT" OK
-"from com.acme.EntityName where prop = compProp.subProp" OK
-//testVariousPropertyReferences
-"from A a where b = 1" OK
-"from A a where a.b.c = 1" OK
-"from X x where y[1].z = 2" OK
-"from X x where x.y[1].z = 2" OK
-//testEntityNamePathWithKeyword
-"from org.hibernate.test.Inner" OK
-//testWhereClauseIdentPrimaryWithEmbeddedKeyword
-"from org.hibernate.test.Inner i where i.outer.inner.middle = 'xyz'" OK
-//testDynamicInstantiation
-"select new list(a, mate) from Animal a join a.mate as mate" OK
-//testListOrMapKeywordReference
-"select p from eg.NameList nl, eg.Person p where p.name = some elements(nl.names)" OK
-"select p from eg.NameList list, eg.Person p where p.name = some elements(list.names)" OK
-"select p from eg.NameList map, eg.Person p where p.name = some elements(map.names)" OK
-//testExplicitPropertyJoin
-"from eg.Cat as cat inner join fetch cat.mate as m fetch all properties left join fetch cat.kittens as k" OK
-// tests copied over from org.hibernate.test.hql.HqlParserTest ~~~~~~~~~~~~
-"from Animal a where a in (from Cat union from Dog)" OK
-/**
- * Section 9.2 - from *
- */
-"from eg.Cat" OK
-"from eg.Cat as cat" OK
-"from eg.Cat cat" OK
-"from Formula, Parameter" OK
-"from Formula as form, Parameter as param" OK
-/**
- * Section 9.3 - Associations and joins *
- */
-"from eg.Cat as cat inner join cat.mate as mate left outer join cat.kittens as kitten" OK
-"from eg.Cat as cat left join cat.mate.kittens as kittens" OK
-"from Formula form full join form.parameter param" OK
-"from eg.Cat as cat join cat.mate as mate left join cat.kittens as kitten" OK
-"from eg.Cat as cat inner join fetch cat.mate left join fetch cat.kittens" OK
-/**
- * Section 9.4 - Select *
- */
-"select mate from eg.Cat as cat inner join cat.mate as mate" OK
-"select cat.mate from eg.Cat cat" OK
-"select elements(cat.kittens) from eg.Cat cat" OK
-"select cat.name from eg.DomesticCat cat where cat.name like 'fri%'" OK
-"select cust.name.firstName from Customer as cust" OK
-"select mother, offspr, mate.name from eg.DomesticCat as mother inner join mother.mate as mate left outer join mother.kittens as offspr" OK
-"select new Family(mother, mate, offspr) from eg.DomesticCat as mother join mother.mate as mate left join mother.kittens as offspr" OK
-/**
- * Section 9.5 - Aggregate functions *
- */
-"select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat) from eg.Cat cat" OK
-"select cat, count( elements(cat.kittens) ) from eg.Cat cat group by cat" OK
-"select distinct cat.name from eg.Cat cat" OK
-"select count(distinct cat.name), count(cat) from eg.Cat cat" OK
-/**
- * Section 9.6 - Polymorphism *
- */
-"from java.lang.Object o" OK
-"from eg.Named n, eg.Named m where n.name = m.name" OK
-/**
- * Section 9.7 - Where *
- */
-"from eg.Cat as cat where cat.name='Fritz'" OK
-"select foo from eg.Foo foo, eg.Bar bar where foo.startDate = bar.date" OK
-"from eg.Cat cat where cat.mate.name is not null" OK
-"from eg.Cat cat, eg.Cat rival where cat.mate = rival.mate" OK
-"select cat, mate from eg.Cat cat, eg.Cat mate where cat.mate = mate" OK
-"from eg.Cat as cat where cat.id = 123" OK
-"from eg.Cat as cat where cat.mate.id = 69" OK
-"from bank.Person person where person.id.country = 'AU' and person.id.medicareNumber = 123456" OK
-"from bank.Account account where account.owner.id.country = 'AU' and account.owner.id.medicareNumber = 123456" OK
-"from eg.Cat cat where cat.class = eg.DomesticCat" OK
-"from eg.AuditLog log, eg.Payment payment where log.item.class = 'eg.Payment' and log.item.id = payment.id" OK
-/**
- * Section 9.8 - Expressions *
- */
-"from eg.DomesticCat cat where cat.name between 'A' and 'B'" OK
-"from eg.DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )" OK
-"from eg.DomesticCat cat where cat.name not between 'A' and 'B'" OK
-"from eg.DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )" OK
-"from eg.Cat cat where cat.kittens.size > 0" OK
-"from eg.Cat cat where size(cat.kittens) > 0" OK
-//"from Calendar cal where cal.holidays.maxElement > current date" OK
-"from Order order where maxindex(order.items) > 100" OK
-"from Order order where minelement(order.items) > 10000" OK
-"from Order ord where maxindex(ord.items) > 100" OK
-"from Order ord where minelement(ord.items) > 10000" OK
-"select mother from eg.Cat as mother, eg.Cat as kit where kit in elements(foo.kittens)" OK
-"select p from eg.NameList list, eg.Person p where p.name = some elements(list.names)" OK
-"from eg.Cat cat where exists elements(cat.kittens)" OK
-"from eg.Player p where 3 > all elements(p.scores)" OK
-"from eg.Show show where 'fizard' in indices(show.acts)" OK
-"from Order order where order.items[0].id = 1234" OK
-"select person from Person person, Calendar calendar where calendar.holidays['national day'] = person.birthDay and person.nationality.calendar = calendar" OK
-"select item from Item item, Order order where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11" OK
-"select item from Item item, Order order where order.items[ maxindex(order.items) ] = item and order.id = 11" OK
-"from Order ord where ord.items[0].id = 1234" OK
-"select item from Item item, Order ord where ord.items[ ord.deliveredItemIndices[0] ] = item and ord.id = 11" OK
-"select item from Item item, Order ord where ord.items[ maxindex(ord.items) ] = item and ord.id = 11" OK
-"select item from Item item, Order ord where ord.items[ size(ord.items) - 1 ] = item" OK
-"from eg.DomesticCat cat where upper(cat.name) like 'FRI%'" OK
-"select cust from Product prod, Store store inner join store.customers cust where prod.name = 'widget' and store.location.name in ( 'Melbourne', 'Sydney' ) and prod = all elements(cust.currentOrder.lineItems)" OK
-//testDocoExamples99
-"from eg.DomesticCat cat order by cat.name asc, cat.weight desc, cat.birthdate" OK
-//testDocoExamples910
-"select cat.color, sum(cat.weight), count(cat) from eg.Cat cat group by cat.color" OK
-"select foo.id, avg( elements(foo.names) ), max( indices(foo.names) ) from eg.Foo foo group by foo.id" OK
-"select cat.color, sum(cat.weight), count(cat) from eg.Cat cat group by cat.color having cat.color in (eg.Color.TABBY, eg.Color.BLACK)" OK
-"select cat from eg.Cat cat join cat.kittens kitten group by cat having avg(kitten.weight) > 100 order by count(kitten) asc, sum(kitten.weight) desc" OK
-//testDocoExamples911
-"from eg.Cat as fatcat where fatcat.weight > (select avg(cat.weight) from eg.DomesticCat cat)" OK
-"from eg.DomesticCat as cat where cat.name = some (select name.nickName from eg.Name as name)" OK
-"from eg.Cat as cat where not exists (from eg.Cat as mate where mate.mate = cat)" OK
-"from eg.DomesticCat as cat where cat.name not in (select name.nickName from eg.Name as name)" OK
-//testDocoExamples912
-<<select ord.id, sum(price.amount), count(item)
- from Order as ord join ord.lineItems as item
- join item.product as product, Catalog as catalog
- join catalog.prices as price
- where ord.paid = false
- and ord.customer = :customer
- and price.product = product
- and catalog.effectiveDate < sysdate
- and catalog.effectiveDate >= all (
- select cat.effectiveDate from Catalog as cat where cat.effectiveDate < sysdate)
- group by ord
- having sum(price.amount) > :minAmount
- order by sum(price.amount) desc>> OK
-<<select ord.id, sum(price.amount), count(item)
- from Order as ord join ord.lineItems as item join item.product as product,
- Catalog as catalog join catalog.prices as price
- where ord.paid = false and ord.customer = :customer
- and price.product = product and catalog = :currentCatalog
- group by ord having sum(price.amount) > :minAmount
- order by sum(price.amount) desc>> OK
-<<select count(payment), status.name
- from Payment as payment
- join payment.currentStatus as status
- join payment.statusChanges as statusChange
- where payment.status.name <> PaymentStatus.AWAITING_APPROVAL
- or (
- statusChange.timeStamp = (
- select max(change.timeStamp)
- from PaymentStatusChange change
- where change.payment = payment
- )
- and statusChange.user <> :currentUser
- )
- group by status.name, status.sortOrder
- order by status.sortOrder>> OK
-<<select count(payment), status.name
- from Payment as payment
- join payment.currentStatus as status
- where payment.status.name <> PaymentStatus.AWAITING_APPROVAL
- or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :currentUser
- group by status.name, status.sortOrder
- order by status.sortOrder>> OK
-<<select account, payment
- from Account as account
- left outer join account.payments as payment
- where :currentUser in elements(account.holder.users)
- and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)
- order by account.type.sortOrder, account.accountNumber, payment.dueDate>> OK
-<<select account, payment
- from Account as account
- join account.holder.users as user
- left outer join account.payments as payment
- where :currentUser = user
- and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)
- order by account.type.sortOrder, account.accountNumber, payment.dueDate>> OK
-//testExamples1
-"select new org.hibernate.test.S(s.count, s.address) from s in class Simple" OK
-"select s.name, sysdate, trunc(s.pay), round(s.pay) from s in class Simple" OK
-"select abs(round(s.pay)) from s in class Simple" OK
-"select trunc(round(sysdate)) from s in class Simple" OK
-//testMultipleActualParameters
-"select round(s.pay, 2) from s" OK
-//testMultipleFromClasses
-"from eg.mypackage.Cat qat, com.toadstool.Foo f" OK
-"from eg.mypackage.Cat qat, org.jabberwocky.Dipstick" OK
-//testFromWithJoin
-"from eg.mypackage.Cat qat, com.toadstool.Foo f join net.sf.blurb.Blurb" OK
-"from eg.mypackage.Cat qat left join com.multijoin.JoinORama , com.toadstool.Foo f join net.sf.blurb.Blurb" OK
-//testSelect
-"select f from eg.mypackage.Cat qat, com.toadstool.Foo f join net.sf.blurb.Blurb" OK
-"select distinct bar from eg.mypackage.Cat qat left join com.multijoin.JoinORama as bar, com.toadstool.Foo f join net.sf.blurb.Blurb" OK
-"select count(*) from eg.mypackage.Cat qat" OK
-"select avg(qat.weight) from eg.mypackage.Cat qat" OK
-//testWhere
-"from eg.mypackage.Cat qat where qat.name like '%fluffy%' or qat.toes > 5" OK
-"from eg.mypackage.Cat qat where not qat.name like '%fluffy%' or qat.toes > 5" OK
-"from eg.mypackage.Cat qat where not qat.name not like '%fluffy%'" OK
-"from eg.mypackage.Cat qat where qat.name in ('crater','bean','fluffy')" OK
-"from eg.mypackage.Cat qat where qat.name not in ('crater','bean','fluffy')" OK
-//testGroupBy
-"from eg.mypackage.Cat qat group by qat.breed" OK
-"from eg.mypackage.Cat qat group by qat.breed, qat.eyecolor" OK
-//testOrderBy
-"from eg.mypackage.Cat qat order by avg(qat.toes)" OK
-"from Animal an order by sqrt(an.bodyWeight)/2" OK
-//testDoubleLiteral
-"from eg.Cat as tinycat where fatcat.weight < 3.1415" OK
-"from eg.Cat as enormouscat where fatcat.weight > 3.1415e3" OK
-//testComplexConstructor
-"select new Foo(count(bar)) from bar" OK
-"select new Foo(count(bar),(select count(*) from doofus d where d.gob = 'fat' )) from bar" OK
-//testInNotIn
-"from foo where foo.bar in ('a' , 'b', 'c')" OK
-"from foo where foo.bar not in ('a' , 'b', 'c')" OK
-//testOperatorPrecedence
-"from foo where foo.bar = 123 + foo.baz * foo.not" OK
-"from foo where foo.bar like 'testzzz' || foo.baz or foo.bar in ('duh', 'gob')" OK
-//testUnitTestHql
-"select foo from foo in class org.hibernate.test.Foo, fee in class org.hibernate.test.Fee where foo.dependent = fee order by foo.string desc, foo.component.count asc, fee.id" OK
-"select foo.foo, foo.dependent from foo in class org.hibernate.test.Foo order by foo.foo.string desc, foo.component.count asc, foo.dependent.id" OK
-"select foo from foo in class org.hibernate.test.Foo order by foo.dependent.id, foo.dependent.fi" OK
-"select one from one in class org.hibernate.test.One order by one.value asc" OK
-"select many.one from many in class org.hibernate.test.Many order by many.one.value asc, many.one.id" OK
-"select foo.id from org.hibernate.test.Foo foo where foo.joinedProp = 'foo'" OK
-"from org.hibernate.test.Foo foo inner join fetch foo.foo" OK
-"from org.hibernate.test.Baz baz left outer join fetch baz.fooToGlarch" OK
-"select foo.foo.foo.string from foo in class org.hibernate.test.Foo where foo.foo = 'bar'" OK
-"select foo.foo.foo.foo.string from foo in class org.hibernate.test.Foo where foo.foo.foo = 'bar'" OK
-"select foo.foo.foo.string from foo in class org.hibernate.test.Foo where foo.foo.foo.foo.string = 'bar'" OK
-"select foo.string from foo in class org.hibernate.test.Foo where foo.foo.foo = 'bar' and foo.foo.foo.foo = 'baz'" OK
-"select foo.string from foo in class org.hibernate.test.Foo where foo.foo.foo.foo.string = 'a' and foo.foo.string = 'b'" OK
-"from org.hibernate.test.Foo as foo where foo.component.glarch.name is not null" OK
-"from org.hibernate.test.Foo as foo left outer join foo.component.glarch as glarch where glarch.name = 'foo'" OK
-"from org.hibernate.test.Foo" OK
-"from org.hibernate.test.Foo foo left outer join foo.foo" OK
-"from org.hibernate.test.Foo, org.hibernate.test.Bar" OK
-"from org.hibernate.test.Baz baz left join baz.fooToGlarch, org.hibernate.test.Bar bar join bar.foo" OK
-"from org.hibernate.test.Baz baz left join baz.fooToGlarch join baz.fooSet" OK
-"from org.hibernate.test.Baz baz left join baz.fooToGlarch join fetch baz.fooSet foo left join fetch foo.foo" OK
-"from foo in class org.hibernate.test.Foo where foo.string='osama bin laden' and foo.boolean = true order by foo.string asc, foo.component.count desc" OK
-"from foo in class org.hibernate.test.Foo where foo.string='osama bin laden' order by foo.string asc, foo.component.count desc" OK
-"select foo.foo from foo in class org.hibernate.test.Foo" OK
-"from foo in class org.hibernate.test.Foo where foo.component.count is null order by foo.component.count" OK
-"from foo in class org.hibernate.test.Foo where foo.component.name='foo'" OK
-"select distinct foo.component.name, foo.component.name from foo in class org.hibernate.test.Foo where foo.component.name='foo'" OK
-"select distinct foo.component.name, foo.id from foo in class org.hibernate.test.Foo where foo.component.name='foo'" OK
-"from foo in class org.hibernate.test.Foo where foo.id=?" OK
-"from foo in class org.hibernate.test.Foo where foo.key=?" OK
-"select foo.foo from foo in class org.hibernate.test.Foo where foo.string='fizard'" OK
-"from foo in class org.hibernate.test.Foo where foo.component.subcomponent.name='bar'" OK
-"select foo.foo from foo in class org.hibernate.test.Foo where foo.foo.id=?" OK
-"from foo in class org.hibernate.test.Foo where foo.foo = ?" OK
-"from bar in class org.hibernate.test.Bar where bar.string='a string' or bar.string='a string'" OK
-"select foo.component.name, elements(foo.component.importantDates) from foo in class org.hibernate.test.Foo where foo.foo.id=?" OK
-"select max(elements(foo.component.importantDates)) from foo in class org.hibernate.test.Foo group by foo.id" OK
-"select foo.foo.foo.foo from foo in class org.hibernate.test.Foo, foo2 in class org.hibernate.test.Foo where foo = foo2.foo and not not ( not foo.string='fizard' ) and foo2.string between 'a' and (foo.foo.string) and ( foo2.string in ( 'fiz', 'blah') or 1=1 )" OK
-"from foo in class org.hibernate.test.Foo where foo.string='from BoogieDown -tinsel town =!@#$^&*())'" OK
-"from foo in class org.hibernate.test.Foo where not foo.string='foo''bar'" OK
-"from foo in class org.hibernate.test.Foo where foo.component.glarch.next is null" OK
-"from bar in class org.hibernate.test.Bar where bar.baz.count=667 and bar.baz.count!=123 and not bar.baz.name='1-E-1'" OK
-"from i in class org.hibernate.test.Bar where i.baz.name='Bazza'" OK
-"select count(distinct foo.foo) from foo in class org.hibernate.test.Foo" OK
-"select count(foo.foo.boolean) from foo in class org.hibernate.test.Foo" OK
-"select count(*), foo.int from foo in class org.hibernate.test.Foo group by foo.int" OK
-"select sum(foo.foo.int) from foo in class org.hibernate.test.Foo" OK
-"select count(foo) from foo in class org.hibernate.test.Foo where foo.id=?" OK
-"from foo in class org.hibernate.test.Foo where foo.boolean = ?" OK
-"select new Foo(fo.x) from org.hibernate.test.Fo fo" OK
-"select new Foo(fo.integer) from org.hibernate.test.Foo fo" OK
-"select new Foo(fo.x) from org.hibernate.test.Foo fo" OK
-"select foo.long, foo.component.name, foo, foo.foo from foo in class org.hibernate.test.Foo" OK
-"select avg(foo.float), max(foo.component.name), count(distinct foo.id) from foo in class org.hibernate.test.Foo" OK
-"select foo.long, foo.component, foo, foo.foo from foo in class org.hibernate.test.Foo" OK
-"from o in class org.hibernate.test.MoreStuff" OK
-"from o in class org.hibernate.test.Many" OK
-"from o in class org.hibernate.test.Fee" OK
-"from o in class org.hibernate.test.Qux" OK
-"from o in class org.hibernate.test.Y" OK
-"from o in class org.hibernate.test.Fumm" OK
-"from o in class org.hibernate.test.X" OK
-"from o in class org.hibernate.test.Simple" OK
-"from o in class org.hibernate.test.Location" OK
-"from o in class org.hibernate.test.Holder" OK
-"from o in class org.hibernate.test.Part" OK
-"from o in class org.hibernate.test.Baz" OK
-"from o in class org.hibernate.test.Vetoer" OK
-"from o in class org.hibernate.test.Sortable" OK
-"from o in class org.hibernate.test.Contained" OK
-"from o in class org.hibernate.test.Stuff" OK
-"from o in class org.hibernate.test.Immutable" OK
-"from o in class org.hibernate.test.Container" OK
-"from o in class org.hibernate.test.X$XX" OK
-"from o in class org.hibernate.test.One" OK
-"from o in class org.hibernate.test.Foo" OK
-"from o in class org.hibernate.test.Fo" OK
-"from o in class org.hibernate.test.Glarch" OK
-"from o in class org.hibernate.test.Fum" OK
-"from n in class org.hibernate.test.Holder" OK
-"from n in class org.hibernate.test.Baz" OK
-"from n in class org.hibernate.test.Bar" OK
-"from n in class org.hibernate.test.Glarch" OK
-"from n in class org.hibernate.test.Holder where n.name is not null" OK
-"from n in class org.hibernate.test.Baz where n.name is not null" OK
-"from n in class org.hibernate.test.Bar where n.name is not null" OK
-"from n in class org.hibernate.test.Glarch where n.name is not null" OK
-"from n0 in class org.hibernate.test.Holder, n1 in class org.hibernate.test.Holder where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Baz, n1 in class org.hibernate.test.Holder where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Bar, n1 in class org.hibernate.test.Holder where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Glarch, n1 in class org.hibernate.test.Holder where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Holder, n1 in class org.hibernate.test.Baz where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Baz, n1 in class org.hibernate.test.Baz where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Bar, n1 in class org.hibernate.test.Baz where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Glarch, n1 in class org.hibernate.test.Baz where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Holder, n1 in class org.hibernate.test.Bar where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Baz, n1 in class org.hibernate.test.Bar where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Bar, n1 in class org.hibernate.test.Bar where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Glarch, n1 in class org.hibernate.test.Bar where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Holder, n1 in class org.hibernate.test.Glarch where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Baz, n1 in class org.hibernate.test.Glarch where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Bar, n1 in class org.hibernate.test.Glarch where n0.name = n1.name" OK
-"from n0 in class org.hibernate.test.Glarch, n1 in class org.hibernate.test.Glarch where n0.name = n1.name" OK
-"from n in class org.hibernate.test.Holder where n.name = :name" OK
-"select baz.code, min(baz.count) from baz in class org.hibernate.test.Baz group by baz.code" OK
-"selecT baz from baz in class org.hibernate.test.Baz where baz.stringDateMap['foo'] is not null or baz.stringDateMap['bar'] = ?" OK
-"select baz from baz in class org.hibernate.test.Baz where baz.stringDateMap['now'] is not null" OK
-"select baz from baz in class org.hibernate.test.Baz where baz.stringDateMap['now'] is not null and baz.stringDateMap['big bang'] < baz.stringDateMap['now']" OK
-"select index(date) from org.hibernate.test.Baz baz join baz.stringDateMap as date" OK
-"select index(date) from org.hibernate.test.Baz baz join baz.stringDateMap date" OK
-"from foo in class org.hibernate.test.Foo where foo.integer not between 1 and 5 and foo.string not in ('cde', 'abc') and foo.string is not null and foo.integer<=3" OK
-"from org.hibernate.test.Baz baz inner join baz.collectionComponent.nested.foos foo where foo.string is null" OK
-"from org.hibernate.test.Baz baz inner join baz.fooSet where '1' in (from baz.fooSet foo where foo.string is not null)" OK
-"from org.hibernate.test.Baz baz where 'a' in elements(baz.collectionComponent.nested.foos) and 1.0 in elements(baz.collectionComponent.nested.floats)" OK
-"from org.hibernate.test.Foo foo join foo.foo where foo.foo in ('1','2','3')" OK
-"select foo.foo from org.hibernate.test.Foo foo where foo.foo in ('1','2','3')" OK
-"select foo.foo.string from org.hibernate.test.Foo foo where foo.foo in ('1','2','3')" OK
-"select foo.foo.string from org.hibernate.test.Foo foo where foo.foo.string in ('1','2','3')" OK
-"select foo.foo.long from org.hibernate.test.Foo foo where foo.foo.string in ('1','2','3')" OK
-"select count(*) from org.hibernate.test.Foo foo where foo.foo.string in ('1','2','3') or foo.foo.long in (1,2,3)" OK
-"select count(*) from org.hibernate.test.Foo foo where foo.foo.string in ('1','2','3') group by foo.foo.long" OK
-"from org.hibernate.test.Foo foo1 left join foo1.foo foo2 left join foo2.foo where foo1.string is not null" OK
-"from org.hibernate.test.Foo foo1 left join foo1.foo.foo where foo1.string is not null" OK
-"from org.hibernate.test.Foo foo1 left join foo1.foo foo2 left join foo1.foo.foo foo3 where foo1.string is not null" OK
-"select foo.formula from org.hibernate.test.Foo foo where foo.formula > 0" OK
-"from org.hibernate.test.Foo as foo join foo.foo as foo2 where foo2.id >'a' or foo2.id <'a'" OK
-"from org.hibernate.test.Holder" OK
-"from org.hibernate.test.Baz baz left outer join fetch baz.manyToAny" OK
-"from org.hibernate.test.Baz baz join baz.manyToAny" OK
-"select baz from org.hibernate.test.Baz baz join baz.manyToAny a where index(a) = 0" OK
-"select bar from org.hibernate.test.Bar bar where bar.baz.stringDateMap['now'] is not null" OK
-"select bar from org.hibernate.test.Bar bar join bar.baaz b where b.stringDateMap['big bang'] < b.stringDateMap['now'] and b.stringDateMap['now'] is not null" OK
-"select bar from org.hibernate.test.Bar bar where bar.baz.stringDateMap['big bang'] < bar.baz.stringDateMap['now'] and bar.baz.stringDateMap['now'] is not null" OK
-"select foo.string, foo.component, foo.id from org.hibernate.test.Bar foo" OK
-"select elements(baz.components) from org.hibernate.test.Baz baz" OK
-"select bc.name from org.hibernate.test.Baz baz join baz.components bc" OK
-"from org.hibernate.test.Foo foo where foo.integer < 10 order by foo.string" OK
-"from org.hibernate.test.Fee" OK
-"from org.hibernate.test.Holder h join h.otherHolder oh where h.otherHolder.name = 'bar'" OK
-"from org.hibernate.test.Baz baz join baz.fooSet foo join foo.foo.foo foo2 where foo2.string = 'foo'" OK
-"from org.hibernate.test.Baz baz join baz.fooArray foo join foo.foo.foo foo2 where foo2.string = 'foo'" OK
-"from org.hibernate.test.Baz baz join baz.stringDateMap date where index(date) = 'foo'" OK
-"from org.hibernate.test.Baz baz join baz.topGlarchez g where index(g) = 'A'" OK
-"select index(g) from org.hibernate.test.Baz baz join baz.topGlarchez g" OK
-"from org.hibernate.test.Baz baz left join baz.stringSet" OK
-"from org.hibernate.test.Baz baz join baz.stringSet str where str='foo'" OK
-"from org.hibernate.test.Baz baz left join fetch baz.stringSet" OK
-"from org.hibernate.test.Baz baz join baz.stringSet string where string='foo'" OK
-"from org.hibernate.test.Baz baz inner join baz.components comp where comp.name='foo'" OK
-"from org.hibernate.test.Glarch g inner join g.fooComponents comp where comp.fee is not null" OK
-"from org.hibernate.test.Glarch g inner join g.fooComponents comp join comp.fee fee where fee.count > 0" OK
-"from org.hibernate.test.Glarch g inner join g.fooComponents comp where comp.fee.count is not null" OK
-"from org.hibernate.test.Baz baz left join fetch baz.fooBag" OK
-"from org.hibernate.test.Glarch" OK
-"from org.hibernate.test.Baz baz left join fetch baz.sortablez order by baz.name asc" OK
-"from org.hibernate.test.Baz baz order by baz.name asc" OK
-"from org.hibernate.test.Foo foo, org.hibernate.test.Baz baz left join fetch baz.fees" OK
-"from org.hibernate.test.Foo foo, org.hibernate.test.Bar bar" OK
-"from org.hibernate.test.Foo foo" OK
-"from org.hibernate.test.Foo foo, org.hibernate.test.Bar bar, org.hibernate.test.Bar bar2" OK
-"from org.hibernate.test.X x" OK
-"select distinct foo from org.hibernate.test.Foo foo" OK
-"from org.hibernate.test.Glarch g where g.multiple.glarch=g and g.multiple.count=12" OK
-"from org.hibernate.test.Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like 'Bar %'" OK
-"select bar, b from org.hibernate.test.Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like 'Bar%'" OK
-"select bar, b from org.hibernate.test.Bar bar left join bar.baz baz left join baz.cascadingBars b where ( bar.name in (:nameList0_, :nameList1_, :nameList2_) or bar.name in (:nameList0_, :nameList1_, :nameList2_) ) and bar.string = :stringVal" OK
-"select bar, b from org.hibernate.test.Bar bar inner join bar.baz baz inner join baz.cascadingBars b where bar.name like 'Bar%'" OK
-"select bar, b from org.hibernate.test.Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like :name and b.name like :name" OK
-"select bar from org.hibernate.test.Bar as bar where bar.x > ? or bar.short = 1 or bar.string = 'ff ? bb'" OK
-"select bar from org.hibernate.test.Bar as bar where bar.string = ' ? ' or bar.string = '?'" OK
-"from org.hibernate.test.Baz baz, baz.fooArray foo" OK
-"from s in class org.hibernate.test.Stuff where s.foo.id = ? and s.id.id = ? and s.moreStuff.id.intId = ? and s.moreStuff.id.stringId = ?" OK
-"from s in class org.hibernate.test.Stuff where s.foo.id = ? and s.id.id = ? and s.moreStuff.name = ?" OK
-"from s in class org.hibernate.test.Stuff where s.foo.string is not null" OK
-"from s in class org.hibernate.test.Stuff where s.foo > '0' order by s.foo" OK
-"from ms in class org.hibernate.test.MoreStuff" OK
-"from fee in class org.hibernate.test.Fee" OK
-"select new Result(foo.string, foo.long, foo.integer) from foo in class org.hibernate.test.Foo" OK
-"select new Result( baz.name, foo.long, count(elements(baz.fooArray)) ) from org.hibernate.test.Baz baz join baz.fooArray foo group by baz.name, foo.long" OK
-"select new Result( baz.name, max(foo.long), count(foo) ) from org.hibernate.test.Baz baz join baz.fooArray foo group by baz.name" OK
-"select max( elements(bar.baz.fooArray) ) from org.hibernate.test.Bar as bar" OK
-"from org.hibernate.test.Baz baz left join baz.fooToGlarch join fetch baz.fooArray foo left join fetch foo.foo" OK
-"select baz.name from org.hibernate.test.Bar bar inner join bar.baz baz inner join baz.fooSet foo where baz.name = bar.string" OK
-"SELECT baz.name FROM org.hibernate.test.Bar AS bar INNER JOIN bar.baz AS baz INNER JOIN baz.fooSet AS foo WHERE baz.name = bar.string" OK
-"select baz.name from org.hibernate.test.Bar bar join bar.baz baz left outer join baz.fooSet foo where baz.name = bar.string" OK
-"select baz.name from org.hibernate.test.Bar bar, bar.baz baz, baz.fooSet foo where baz.name = bar.string" OK
-"SELECT baz.name FROM org.hibernate.test.Bar AS bar, bar.baz AS baz, baz.fooSet AS foo WHERE baz.name = bar.string" OK
-"select baz.name from org.hibernate.test.Bar bar left join bar.baz baz left join baz.fooSet foo where baz.name = bar.string" OK
-"select foo.string from org.hibernate.test.Bar bar left join bar.baz.fooSet foo where bar.string = foo.string" OK
-"select baz.name from org.hibernate.test.Bar bar left join bar.baz baz left join baz.fooArray foo where baz.name = bar.string" OK
-"select foo.string from org.hibernate.test.Bar bar left join bar.baz.fooArray foo where bar.string = foo.string" OK
-"select foo from bar in class org.hibernate.test.Bar inner join bar.baz as baz inner join baz.fooSet as foo" OK
-"select foo from bar in class org.hibernate.test.Bar inner join bar.baz.fooSet as foo" OK
-"select foo from bar in class org.hibernate.test.Bar, bar.baz as baz, baz.fooSet as foo" OK
-"select foo from bar in class org.hibernate.test.Bar, bar.baz.fooSet as foo" OK
-"from org.hibernate.test.Bar bar join bar.baz.fooArray foo" OK
-"from bar in class org.hibernate.test.Bar, foo in elements( bar.baz.fooArray )" OK
-"select one.id, elements(one.manies) from one in class org.hibernate.test.One" OK
-"select max( elements(one.manies) ) from one in class org.hibernate.test.One" OK
-"select one, elements(one.manies) from one in class org.hibernate.test.One" OK
-"select one, max(elements(one.manies)) from one in class org.hibernate.test.One group by one" OK
-"select elements(baz.fooArray) from baz in class org.hibernate.test.Baz where baz.id=?" OK
-"select indices(baz.fooArray) from baz in class org.hibernate.test.Baz where baz.id=?" OK
-"select baz, max(elements(baz.timeArray)) from baz in class org.hibernate.test.Baz group by baz" OK
-"select baz, baz.stringSet.size, count(distinct elements(baz.stringSet)), max(elements(baz.stringSet)) from baz in class org.hibernate.test.Baz group by baz" OK
-"select max( elements(baz.timeArray) ) from baz in class org.hibernate.test.Baz where baz.id=?" OK
-"select max(elements(baz.stringSet)) from baz in class org.hibernate.test.Baz where baz.id=?" OK
-"select size(baz.stringSet) from baz in class org.hibernate.test.Baz where baz.id=?" OK
-"from org.hibernate.test.Foo foo where foo.component.glarch.id is not null" OK
-"from baz in class org.hibernate.test.Baz" OK
-"select elements(baz.stringArray) from baz in class org.hibernate.test.Baz" OK
-"select elements(baz.stringList) from baz in class org.hibernate.test.Baz" OK
-"select count(*) from org.hibernate.test.Bar" OK
-"select count(*) from b in class org.hibernate.test.Bar" OK
-"from g in class org.hibernate.test.Glarch" OK
-"select baz, baz from baz in class org.hibernate.test.Baz" OK
-"select baz from baz in class org.hibernate.test.Baz order by baz" OK
-"from bar in class org.hibernate.test.Bar" OK
-"from f in class org.hibernate.test.Foo" OK
-"from q in class org.hibernate.test.Qux" OK
-"select foo from foo in class org.hibernate.test.Foo where foo.string='foo bar'" OK
-"from foo in class org.hibernate.test.Foo order by foo.string, foo.date" OK
-"from foo in class org.hibernate.test.Foo where foo.class='B'" OK
-"from foo in class org.hibernate.test.Foo where foo.class=Bar" OK
-"select bar from bar in class org.hibernate.test.Bar, foo in class org.hibernate.test.Foo where bar.string = foo.string and not bar=foo" OK
-"from foo in class org.hibernate.test.Foo where foo.string='foo bar'" OK
-"select foo from foo in class org.hibernate.test.Foo" OK
-"from bar in class org.hibernate.test.Bar where bar.barString='bar bar'" OK
-"from t in class org.hibernate.test.Trivial" OK
-"from foo in class org.hibernate.test.Foo where foo.date = ?" OK
-"from q in class org.hibernate.test.Qux where q.stuff is null" OK
-"from q in class org.hibernate.test.Qux where q.stuff=?" OK
-"from g in class org.hibernate.test.Glarch where g.version=2" OK
-"from g in class org.hibernate.test.Glarch where g.next is not null" OK
-"from g in class org.hibernate.test.Glarch order by g.order asc" OK
-"from foo in class org.hibernate.test.Foo order by foo.string asc" OK
-"select parent, child from parent in class org.hibernate.test.Foo, child in class org.hibernate.test.Foo where parent.foo = child" OK
-"select count(distinct child.id), count(distinct parent.id) from parent in class org.hibernate.test.Foo, child in class org.hibernate.test.Foo where parent.foo = child" OK
-"select child.id, parent.id, child.long from parent in class org.hibernate.test.Foo, child in class org.hibernate.test.Foo where parent.foo = child" OK
-"select child.id, parent.id, child.long, child, parent.foo from parent in class org.hibernate.test.Foo, child in class org.hibernate.test.Foo where parent.foo = child" OK
-"select parent, child from parent in class org.hibernate.test.Foo, child in class org.hibernate.test.Foo where parent.foo = child and parent.string='a string'" OK
-"from org.hibernate.test.Foo foo where foo.custom.s1 = 'one'" OK
-"from im in class org.hibernate.test.Immutable where im = ?" OK
-"from foo in class org.hibernate.test.Foo where foo.char='X'" OK
-"select distinct elements(baz.stringArray) from baz in class org.hibernate.test.Baz" OK
-"select elements(baz.fooArray) from baz in class org.hibernate.test.Baz" OK
-"from foo in class org.hibernate.test.Fo" OK
-"from foo in class org.hibernate.test.Foo where foo.dependent.qux.foo.string = 'foo2'" OK
-"from org.hibernate.test.Bar bar where bar.object.id = ? and bar.object.class = ?" OK
-"select one from org.hibernate.test.One one, org.hibernate.test.Bar bar where bar.object.id = one.id and bar.object.class = 'O'" OK
-"from l in class org.hibernate.test.Location where l.countryCode = 'AU' and l.description='foo bar'" OK
-"from org.hibernate.test.Bar bar" OK
-"From org.hibernate.test.Bar bar" OK
-"From org.hibernate.test.Foo foo" OK
-"select fum.id from fum in class org.hibernate.test.Fum where not fum.fum='FRIEND'" OK
-"from fum in class org.hibernate.test.Fum where not fum.fum='FRIEND'" OK
-"from fo in class org.hibernate.test.Fo where fo.id.string like 'an instance of fo'" OK
-"from org.hibernate.test.Outer o where o.id.detailId = ?" OK
-"from org.hibernate.test.Outer o where o.id.master.id.sup.dudu is not null" OK
-"from org.hibernate.test.Outer o where o.id.master.id.sup.id.akey is not null" OK
-"select o.id.master.id.sup.dudu from org.hibernate.test.Outer o where o.id.master.id.sup.dudu is not null" OK
-"select o.id.master.id.sup.id.akey from org.hibernate.test.Outer o where o.id.master.id.sup.id.akey is not null" OK
-"from org.hibernate.test.Outer o where o.id.master.bla = ''" OK
-"from org.hibernate.test.Outer o where o.id.master.id.one = ''" OK
-"from org.hibernate.test.Inner inn where inn.id.bkey is not null and inn.backOut.id.master.id.sup.id.akey > 'a'" OK
-"from org.hibernate.test.Outer as o left join o.id.master m left join m.id.sup where o.bubu is not null" OK
-"from org.hibernate.test.Outer as o left join o.id.master.id.sup s where o.bubu is not null" OK
-"from org.hibernate.test.Outer as o left join o.id.master m left join o.id.master.id.sup s where o.bubu is not null" OK
-"select fum1.fo from fum1 in class org.hibernate.test.Fum where fum1.fo.fum is not null" OK
-"from fum1 in class org.hibernate.test.Fum where fum1.fo.fum is not null order by fum1.fo.fum" OK
-"select elements(fum1.friends) from fum1 in class org.hibernate.test.Fum" OK
-"from fum1 in class org.hibernate.test.Fum, fr in elements( fum1.friends )" OK
-"select new Jay(eye) from org.hibernate.test.Eye eye" OK
-"from org.hibernate.test.Category cat where cat.name='new foo'" OK
-"from org.hibernate.test.Category cat where cat.name='new sub'" OK
-"from org.hibernate.test.Up up order by up.id2 asc" OK
-"from org.hibernate.test.Down down" OK
-"from org.hibernate.test.Up up" OK
-"from m in class org.hibernate.test.Master" OK
-"from s in class org.hibernate.test.Several" OK
-"from s in class org.hibernate.test.Single" OK
-"from d in class org.hibernate.test.Detail" OK
-"from c in class org.hibernate.test.Category where c.name = org.hibernate.test.Category.ROOT_CATEGORY" OK
-"select c from c in class org.hibernate.test.Container, s in class org.hibernate.test.Simple where c.oneToMany[2] = s" OK
-"select c from c in class org.hibernate.test.Container, s in class org.hibernate.test.Simple where c.manyToMany[2] = s" OK
-"select c from c in class org.hibernate.test.Container, s in class org.hibernate.test.Simple where s = c.oneToMany[2]" OK
-"select c from c in class org.hibernate.test.Container, s in class org.hibernate.test.Simple where s = c.manyToMany[2]" OK
-"select c from c in class org.hibernate.test.Container where c.oneToMany[0].name = 's'" OK
-"select c from c in class org.hibernate.test.Container where c.manyToMany[0].name = 's'" OK
-"select c from c in class org.hibernate.test.Container where 's' = c.oneToMany[2 - 2].name" OK
-"select c from c in class org.hibernate.test.Container where 's' = c.manyToMany[(3+1)/4-1].name" OK
-"select c from c in class org.hibernate.test.Container where c.manyToMany[ maxindex(c.manyToMany) ].count = 2" OK
-"select c from c in class org.hibernate.test.Container where c.oneToMany[ c.manyToMany[0].count ].name = 's'" OK
-"select c from org.hibernate.test.Container c where c.manyToMany[ c.oneToMany[0].count ].name = 's'" OK
-"select count(comp.name) from org.hibernate.test.Container c join c.components comp" OK
-"from org.hibernate.test.Parent p left join fetch p.child" OK
-"from org.hibernate.test.Parent p join p.child c where c.x > 0" OK
-"from org.hibernate.test.Child c join c.parent p where p.x > 0" OK
-"from org.hibernate.test.Child" OK
-"from org.hibernate.test.MoreStuff" OK
-"from org.hibernate.test.Many" OK
-"from org.hibernate.test.Qux" OK
-"from org.hibernate.test.Fumm" OK
-"from org.hibernate.test.Parent" OK
-"from org.hibernate.test.Simple" OK
-"from org.hibernate.test.Part" OK
-"from org.hibernate.test.Baz" OK
-"from org.hibernate.test.Vetoer" OK
-"from org.hibernate.test.Sortable" OK
-"from org.hibernate.test.Contained" OK
-"from org.hibernate.test.Circular" OK
-"from org.hibernate.test.Stuff" OK
-"from org.hibernate.test.Immutable" OK
-"from org.hibernate.test.Container" OK
-"from org.hibernate.test.One" OK
-"from org.hibernate.test.Fo" OK
-"from org.hibernate.test.Glarch" OK
-"from org.hibernate.test.Fum" OK
-"from org.hibernate.test.Glarch g" OK
-"from org.hibernate.test.Baz baz join baz.parts" OK
-"from c in class org.hibernate.test.Child where c.parent.count=66" OK
-"from org.hibernate.test.Parent p join p.child c where p.count=66" OK
-"select c, c.parent from c in class org.hibernate.test.Child order by c.parent.count" OK
-"select c, c.parent from c in class org.hibernate.test.Child where c.parent.count=66 order by c.parent.count" OK
-"select c, c.parent, c.parent.count from c in class org.hibernate.test.Child order by c.parent.count" OK
-"FROM p IN class org.hibernate.test.Parent WHERE p.count = ?" OK
-"select count(*) from org.hibernate.test.Container as c join c.components as ce join ce.simple as s where ce.name='foo'" OK
-"select c, s from org.hibernate.test.Container as c join c.components as ce join ce.simple as s where ce.name='foo'" OK
-"from s in class org.hibernate.test.Simple" OK
-"from m in class org.hibernate.test.Many" OK
-"from c in class org.hibernate.test.Container" OK
-"from o in class org.hibernate.test.Child" OK
-"from o in class org.hibernate.test.Parent" OK
-"from o in class org.hibernate.test.Circular" OK
-"from c in class org.hibernate.test.C2 where 1=1 or 1=1" OK
-"from b in class org.hibernate.test.B" OK
-"from a in class org.hibernate.test.A" OK
-"from org.hibernate.test.E e join e.reverse as b where b.count=1" OK
-"from org.hibernate.test.E e join e.as as b where b.count=1" OK
-"from org.hibernate.test.B" OK
-"from org.hibernate.test.C1" OK
-"from org.hibernate.test.C2" OK
-"from org.hibernate.test.E e, org.hibernate.test.A a where e.reverse = a.forward and a = ?" OK
-"from org.hibernate.test.E e join fetch e.reverse" OK
-"from org.hibernate.test.E e" OK
-"select max(s.count) from s in class org.hibernate.test.Simple" OK
-"select new org.hibernate.test.S(s.count, s.address) from s in class org.hibernate.test.Simple" OK
-"select count(*) from s in class org.hibernate.test.Simple" OK
-"from s in class org.hibernate.test.Simple where s.name=:name and s.count=:count" OK
-"from s in class org.hibernate.test.Simple where s.name in (:several0_, :several1_)" OK
-"from s in class org.hibernate.test.Simple where s.name in (:stuff0_, :stuff1_)" OK
-"from org.hibernate.test.Simple s where s.name=?" OK
-"from org.hibernate.test.Simple s where s.name=:name" OK
-"from s in class org.hibernate.test.Simple where upper( s.name ) ='SIMPLE 1'" OK
-"from s in class org.hibernate.test.Simple where not( upper( s.name ) ='yada' or 1=2 or 'foo'='bar' or not('foo'='foo') or 'foo' like 'bar' )" OK
-"from s in class org.hibernate.test.Simple where lower( s.name || ' foo' ) ='simple 1 foo'" OK
-"from s in class org.hibernate.test.Simple where upper( s.other.name ) ='SIMPLE 2'" OK
-"from s in class org.hibernate.test.Simple where not ( upper( s.other.name ) ='SIMPLE 2' )" OK
-"select distinct s from s in class org.hibernate.test.Simple where ( ( s.other.count + 3 ) = (15*2)/2 and s.count = 69) or ( ( s.other.count + 2 ) / 7 ) = 2" OK
-"select s from s in class org.hibernate.test.Simple where ( ( s.other.count + 3 ) = (15*2)/2 and s.count = 69) or ( ( s.other.count + 2 ) / 7 ) = 2 order by s.other.count" OK
-"select sum(s.count) from s in class org.hibernate.test.Simple group by s.count having sum(s.count) > 10" OK
-"select s.count from s in class org.hibernate.test.Simple group by s.count having s.count = 12" OK
-"select s.id, s.count, count(t), max(t.date) from s in class org.hibernate.test.Simple, t in class org.hibernate.test.Simple where s.count = t.count group by s.id, s.count order by s.count" OK
-"from s in class org.hibernate.test.Simple where s.name = ?" OK
-"from s in class org.hibernate.test.Simple where s.name = ? and upper(s.name) = ?" OK
-"from s in class org.hibernate.test.Simple where s.name = :foo and upper(s.name) = :bar or s.count=:count or s.count=:count + 1" OK
-"select s.id from s in class org.hibernate.test.Simple" OK
-"select all s, s.other from s in class org.hibernate.test.Simple where s = :s" OK
-"from s in class org.hibernate.test.Simple where s.name in (:name_list0_, :name_list1_) and s.count > :count" OK
-"from org.hibernate.test.Simple s" OK
-"from org.hibernate.test.Assignable" OK
-"from org.hibernate.test.Category" OK
-"from org.hibernate.test.A" OK
-"from foo in class org.hibernate.test.Foo where foo.string=?" OK
-"from foo in class org.hibernate.test.Foo" OK
-"from org.hibernate.test.Po po, org.hibernate.test.Lower low where low.mypo = po" OK
-"from org.hibernate.test.Po po join po.set as sm where sm.amount > 0" OK
-"from org.hibernate.test.Po po join po.top as low where low.foo = 'po'" OK
-"from org.hibernate.test.SubMulti sm join sm.children smc where smc.name > 'a'" OK
-"select s, ya from org.hibernate.test.Lower s join s.yetanother ya" OK
-"from org.hibernate.test.Lower s1 join s1.bag s2" OK
-"from org.hibernate.test.Lower s1 left join s1.bag s2" OK
-"select s, a from org.hibernate.test.Lower s join s.another a" OK
-"select s, a from org.hibernate.test.Lower s left join s.another a" OK
-"from org.hibernate.test.Top s, org.hibernate.test.Lower ls" OK
-"from org.hibernate.test.Lower ls join ls.set s where s.name > 'a'" OK
-"from org.hibernate.test.Po po join po.list sm where sm.name > 'a'" OK
-"from org.hibernate.test.Lower ls inner join ls.another s where s.name is not null" OK
-"from org.hibernate.test.Lower ls where ls.other.another.name is not null" OK
-"from org.hibernate.test.Multi m where m.derived like 'F%'" OK
-"from org.hibernate.test.SubMulti m where m.derived like 'F%'" OK
-"select s from org.hibernate.test.SubMulti as sm join sm.children as s where s.amount>-1 and s.name is null" OK
-"select elements(sm.children) from org.hibernate.test.SubMulti as sm" OK
-"select distinct sm from org.hibernate.test.SubMulti as sm join sm.children as s where s.amount>-1 and s.name is null" OK
-"select distinct s from s in class org.hibernate.test.SubMulti where s.moreChildren[1].amount < 1.0" OK
-"from s in class org.hibernate.test.TrivialClass where s.id = 2" OK
-"select s.count from s in class org.hibernate.test.Top" OK
-"from s in class org.hibernate.test.Lower where s.another.name='name'" OK
-"from s in class org.hibernate.test.Lower where s.yetanother.name='name'" OK
-"from s in class org.hibernate.test.Lower where s.yetanother.name='name' and s.yetanother.foo is null" OK
-"from s in class org.hibernate.test.Top where s.count=1" OK
-"select s.count from s in class org.hibernate.test.Top, ls in class org.hibernate.test.Lower where ls.another=s" OK
-"select elements(ls.bag), elements(ls.set) from ls in class org.hibernate.test.Lower" OK
-"from s in class org.hibernate.test.Lower" OK
-"from s in class org.hibernate.test.Top" OK
-"from sm in class org.hibernate.test.SubMulti" OK
-"select s from s in class org.hibernate.test.Top where s.count>0" OK
-"from m in class org.hibernate.test.Multi where m.count>0 and m.extraProp is not null" OK
-"from m in class org.hibernate.test.Top where m.count>0 and m.name is not null" OK
-"from m in class org.hibernate.test.Lower where m.other is not null" OK
-"from m in class org.hibernate.test.Multi where m.other.id = 1" OK
-"from m in class org.hibernate.test.SubMulti where m.amount > 0.0" OK
-"from m in class org.hibernate.test.Multi" OK
-"from m in class org.hibernate.test.Multi where m.class = SubMulti" OK
-"from m in class org.hibernate.test.Top where m.class = Multi" OK
-"from ls in class org.hibernate.test.Lower" OK
-"from ls in class org.hibernate.test.Lower, s in elements(ls.bag) where s.id is not null" OK
-"from ls in class org.hibernate.test.Lower, s in elements(ls.set) where s.id is not null" OK
-"from o in class org.hibernate.test.Top" OK
-"from o in class org.hibernate.test.Po" OK
-"from ChildMap cm where cm.parent is not null" OK
-"from ParentMap cm where cm.child is not null" OK
-"from org.hibernate.test.Componentizable" OK
-//testUnnamedParameter
-"select foo, bar from org.hibernate.test.Foo foo left outer join foo.foo bar where foo = ?" OK
-//testInElements
-"from bar in class org.hibernate.test.Bar, foo in elements(bar.baz.fooArray)" OK
-"from org.hibernate.test.Bar bar, foo in elements(bar.baz.fooArray)" OK
-//testDotElements
-"select distinct foo from baz in class org.hibernate.test.Baz, foo in elements(baz.fooArray)" OK
-"select foo from baz in class org.hibernate.test.Baz, foo in elements(baz.fooSet)" OK
-"select foo from baz in class org.hibernate.test.Baz, foo in elements(baz.fooArray)" OK
-"from org.hibernate.test.Baz baz where 'b' in elements(baz.collectionComponent.nested.foos) and 1.0 in elements(baz.collectionComponent.nested.floats)" OK
-//testNot
-"from eg.Cat cat where not ( cat.kittens.size < 1 )" OK
-"from eg.Cat cat where not ( cat.kittens.size > 1 )" OK
-"from eg.Cat cat where not ( cat.kittens.size >= 1 )" OK
-"from eg.Cat cat where not ( cat.kittens.size <= 1 )" OK
-"from eg.DomesticCat cat where not ( cat.name between 'A' and 'B' )" OK
-"from eg.DomesticCat cat where not ( cat.name not between 'A' and 'B' )" OK
-"from eg.Cat cat where not ( not cat.kittens.size <= 1 )" OK
-"from eg.Cat cat where not not ( not cat.kittens.size <= 1 )" OK
-//testOtherSyntax
-"select bar from org.hibernate.test.Bar bar order by ((bar.x - :valueX)*(bar.x - :valueX))" OK
-"from bar in class org.hibernate.test.Bar, foo in elements(bar.baz.fooSet)" OK
-"from one in class org.hibernate.test.One, many in elements(one.manies) where one.id = 1 and many.id = 1" OK
-"from org.hibernate.test.Inner _inner join _inner.middles middle" OK
-"FROM m IN class org.hibernate.test.Master WHERE NOT EXISTS ( FROM d IN elements(m.details) WHERE NOT d.i=5 )" OK
-"FROM m IN class org.hibernate.test.Master WHERE NOT 5 IN ( SELECT d.i FROM d IN elements(m.details) )" OK
-"SELECT m FROM m IN class org.hibernate.test.Master, d IN elements(m.details) WHERE d.i=5" OK
-"SELECT m.id FROM m IN class org.hibernate.test.Master, d IN elements(m.details) WHERE d.i=5" OK
-//I'm not sure about these... [jsd]
-//"select bar.string, foo.string from bar in class org.hibernate.test.Bar inner join bar.baz as baz inner join elements(baz.fooSet) as foo where baz.name = 'name'" OK
-//"select bar.string, foo.string from bar in class org.hibernate.test.Bar, bar.baz as baz, elements(baz.fooSet) as foo where baz.name = 'name'" OK
-//"select count(*) where this.amount>-1 and this.name is null" OK
-//"from sm in class org.hibernate.test.SubMulti where exists sm.children.elements" OK
-//testEjbqlExtensions
-"select object(a) from Animal a where a.mother member of a.offspring" OK
-"select object(a) from Animal a where a.offspring is empty" OK
-//testHB1042
-"select x from fmc_web.pool.Pool x left join x.containers c0 where (upper(x.name) = upper(':') and c0.id = 1)" OK
-//testKeywordInPath
-"from Customer c where c.order.status = 'argh'" OK
-"from Customer c where c.order.count > 3" OK
-"select c.where from Customer c where c.order.count > 3" OK
-"from Interval i where i.end <:end" OK
-"from Letter l where l.case = :case" OK
-//testPathologicalKeywordAsIdentifier
-"from Order order" OK
-"from Order order join order.group" OK
-"from X x order by x.group.by.from" OK
-"from Order x order by x.order.group.by.from" OK
-"select order.id from Order order" OK
-"select order from Order order" OK
-"from Order order where order.group.by.from is not null" OK
-"from Order order order by order.group.by.from" OK
-"from Group as group group by group.by.from" OK
-//testHHH354
-"from Foo f where f.full = 'yep'" OK
-//testWhereAsIdentifier
-"from where.Order" OK
-//testConstructorIn
-"from org.hibernate.test.Bar bar where (b.x, b.y, b.z) in (select foo, bar, baz from org.hibernate.test.Foo)" OK
-//testMultiByteCharacters
-"from User user where user.name like '%nn\u4e2dnn%'" OK
-//FIXME "from User user where user.\u432d like '%\u4e2d%'" OK
-//FIXME "from \u432d \u432d where \u432d.name like '%fred%'" OK
-//testHHH719
-"from Foo f order by com.fooco.SpecialFunction(f.id)" OK
-//testHHH1107
-"from Animal where zoo.address.street = '123 Bogus St.'" OK
-//testHHH1247
-"select distinct user.party from com.itf.iceclaims.domain.party.user.UserImpl user inner join user.party.$RelatedWorkgroups relatedWorkgroups where relatedWorkgroups.workgroup.id = :workgroup and relatedWorkgroups.effectiveTime.start <= :datesnow and relatedWorkgroups.effectiveTime.end > :dateenow " OK
-//testLineAndColumnNumber
-"from Foo f where f.name = 'fred'" OK
-//
-"from Animal a where a.bodyWeight = ?1" OK
-"select object(m) from Model m" OK
-"select o from Animal a inner join a.offspring o" OK
-"select object(o) from Animal a, in(a.offspring) o" OK
-"from Animal a where not exists elements(a.offspring)" OK
-"from Animal a where exists (from a.mother.father.offspring)" OK
-"select object(a) from Animal a where a.mother.father.offspring is not empty" OK
-"from Animal a where a.mother in (from a.offspring)" OK
-"from Animal a where a.mother not in (from a.offspring)" OK
-"select object(a) from Animal a where a.mother not member of a.offspring" OK
-"select object(a) from Animal a where a.description = concat('1', concat('2','3'), '4'||'5')||0" OK
-"from Animal a where substring(a.description, 1, 3) = :p1" OK
-"select substring(a.description, 1, 3) from Animal a" OK
-"from Animal a where lower(a.description) = :p1" OK
-"from Animal a where upper(a.description) = :p1" OK
-"from Animal a where length(a.description) = :p1" OK
-"select length(a.description) from Animal a" OK
-"from Animal a where locate(a.description, 'abc', 2) = :p1" OK
-"select locate(a.description, :p1, 2) from Animal a" OK
-"select object(a) from Animal a where trim(trailing '_' from a.description) = :p1" OK
-"select trim(trailing '_' from a.description) from Animal a" OK
-"select object(a) from Animal a where trim(leading '_' from a.description) = :p1" OK
-"select object(a) from Animal a where trim(a.description) = :p1" OK
-"select object(a) from Animal a where abs(a.bodyWeight) = sqrt(a.bodyWeight)" OK
-"select object(a) from Animal a where mod(a.bodyWeight, a.mother.bodyWeight) = :p1" OK
-"select object(a) from Animal a where BIT_LENGTH(a.bodyWeight) = :p1" OK
-"select BIT_LENGTH(a.bodyWeight) from Animal a" OK
-"select object(a) from Animal a where CURRENT_DATE = :p1 or CURRENT_TIME = :p2 or CURRENT_TIMESTAMP = :p3" OK
-"select object(a) from Animal a where a.bodyWeight like '%a%'" OK
-"select object(a) from Animal a where a.bodyWeight not like '%a%'" OK
-"select object(a) from Animal a where a.bodyWeight like '%a%' escape '%'" OK
-"from Human h where h.pregnant = true" OK
-"from Human h where h.pregnant = false" OK
-"from Human h where not( h.pregnant=true )" OK
-"select CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP from Animal a" OK
-"select p.name, a.zipCode, count(*) from Person p left outer join Employee e on e.id = p.id and p.type = 'E' and (e.effective>? or e.effective<?) join Address a on a.pid = p.id where upper(p.name) like 'G%' and p.age > 100 and (p.sex = 'M' or p.sex = 'F') and coalesce( trim(a.street), a.city, (a.zip) ) is not null order by p.name asc, a.zipCode asc" OK
-"select ( (m.age - p.age) * 12 ), trim(upper(p.name)) from Person p, Person m where p.mother = m.id and ( p.age = (select max(p0.age) from Person p0 where (p0.mother=m.id)) and p.name like ? )" OK
-"select case when p.age > 50 then 'old' when p.age > 18 then 'adult' else 'child' end from Person p where ( case when p.age > 50 then 'old' when p.age > 18 then 'adult' else 'child' end ) like ?" OK
-//HQLTest.testInvalidCollectionDereferencesFail
-"from Animal a where a.offspring.description = 'xyz'" OK
-"from Animal a where a.offspring.father.description = 'xyz'" OK
-//HQLTest.testSubComponentReferences
-"select c.address.zip.code from ComponentContainer c" OK
-"select c.address.zip from ComponentContainer c" OK
-"select c.address from ComponentContainer c" OK
-//HQLTest.testManyToAnyReferences
-"from PropertySet p where p.someSpecificProperty.id is not null" OK
-"from PropertySet p join p.generalProperties gp where gp.id is not null" OK
-//HQLTest.testCollectionJoinsInSubselect
-"select a.id, a.description from Animal a left join a.offspring where a in ( select a1 from Animal a1 left join a1.offspring o where a1.id=1)" OK
-"select h.id, h.description from Human h left join h.friends where h in ( select h1 from Human h1 left join h1.friends f where h1.id=1 )" OK
-//HQLTest.testEmptyInListFailureExpected
-"select o.orderDate - o.orderDate from Order o" OK
-//HQLTest.testDateTimeArithmeticReturnTypesAndParameterGuessing
-"select o.orderDate + 2 from Order o" OK
-"select o.orderDate -2 from Order o" OK
-"from Order o where o.orderDate > ?" OK
-"select o.orderDate + ? from Order o" OK
-//HQLTest.testReturnMetadata
-"select a as animal from Animal a" OK
-"select o as entity from java.lang.Object o" OK
-//HQLTest.testImplicitJoinsAlongWithCartesianProduct
-"select foo.foo from Foo foo, Foo foo2" OK
-"select foo.foo.foo from Foo foo, Foo foo2" OK
-//HQLTest.testSubselectBetween
-"from Animal x where (select max(a.bodyWeight) from Animal a) between :min and :max" OK
-"from Animal x where (select max(a.description) from Animal a) like 'big%'" OK
-"from Animal x where (select max(a.bodyWeight) from Animal a) is not null" OK
-"from Animal x where exists (select max(a.bodyWeight) from Animal a)" OK
-"from Animal x where (select max(a.bodyWeight) from Animal a) in (1,2,3)" OK
-//HQLTest.testFetchOrderBy
-"from Animal a left outer join fetch a.offspring where a.mother.id = :mid order by a.description" OK
-//HQLTest.testCollectionOrderBy
-"from Animal a join a.offspring o order by a.description" OK
-"from Animal a join fetch a.offspring order by a.description" OK
-"from Animal a join fetch a.offspring o order by o.description" OK
-"from Animal a join a.offspring o order by a.description, o.description" OK
-//HQLTest.testExpressionWithParamInFunction
-"from Animal a where abs(a.bodyWeight-:param) < 2.0" OK
-"from Animal a where abs(:param - a.bodyWeight) < 2.0" OK
-//HQLTest.testCompositeKeysWithPropertyNamedId
-"select e.id.id from EntityWithCrazyCompositeKey e" OK
-"select max(e.id.id) from EntityWithCrazyCompositeKey e" OK
-//HQLTest.testMaxindexHqlFunctionInElementAccessorFailureExpected
-"select c from ContainerX c where c.manyToMany[ maxindex(c.manyToMany) ].count = 2" OK
-"select c from Container c where c.manyToMany[ maxIndex(c.manyToMany) ].count = 2" OK
-//HQLTest.testMultipleElementAccessorOperatorsFailureExpected
-"select c from ContainerX c where c.oneToMany[ c.manyToMany[0].count ].name = 's'" OK
-//HQLTest.testKeyManyToOneJoinFailureExpected
-"from Order o left join fetch o.lineItems li left join fetch li.product p" OK
-"from Outer o where o.id.master.id.sup.dudu is not null" OK
-//HQLTest.testDuplicateExplicitJoinFailureExpected
-"from Animal a join a.mother m1 join a.mother m2" OK
-"from Zoo zoo join zoo.animals an join zoo.mammals m" OK
-"from Zoo zoo join zoo.mammals an join zoo.mammals m" OK
-//HQLTest.testIndexWithExplicitJoin
-"from Zoo zoo join zoo.animals an where zoo.mammals[ index(an) ] = an" OK
-"from Zoo zoo join zoo.mammals dog where zoo.mammals[ index(dog) ] = dog" OK
-"from Zoo zoo join zoo.mammals dog where dog = zoo.mammals[ index(dog) ]" OK
-//HQLTest.testOneToManyMapIndex
-"from Zoo zoo where zoo.mammals['dog'].description like '%black%'" OK
-"from Zoo zoo where zoo.mammals['dog'].father.description like '%black%'" OK
-"from Zoo zoo where zoo.mammals['dog'].father.id = 1234" OK
-"from Zoo zoo where zoo.animals['1234'].description like '%black%'" OK
-//HQLTest.testExplicitJoinMapIndex
-"from Zoo zoo, Dog dog where zoo.mammals['dog'] = dog" OK
-"from Zoo zoo join zoo.mammals dog where zoo.mammals['dog'] = dog" OK
-//HQLTest.testIndexFunction
-"from Zoo zoo join zoo.mammals dog where index(dog) = 'dog'" OK
-"from Zoo zoo join zoo.animals an where index(an) = '1234'" OK
-//HQLTest.testSelectCollectionOfValues
-"select baz, date from Baz baz join baz.stringDateMap date where index(date) = 'foo'" OK
-//HQLTest.testCollectionOfValues
-"from Baz baz join baz.stringDateMap date where index(date) = 'foo'" OK
-//HQLTest.testHHH719
-"from Baz b order by org.bazco.SpecialFunction(b.id)" OK
-"from Baz b order by anypackage.anyFunction(b.id)" OK
-//HQLTest.testParameterListExpansion
-"from Animal as animal where animal.id in (:idList_1, :idList_2)" OK
-//HQLTest.testComponentManyToOneDereferenceShortcut
-"from Zoo z where z.address.stateProvince.id is null" OK
-//HQLTest.testNestedCollectionImplicitJoins
-"select h.friends.offspring from Human h" OK
-//HQLTest.testExplicitJoinsInSubquery
-"from org.hibernate.test.hql.Animal as animal where animal.id in ( select a.id from org.hibernate.test.hql.Animal as a left join a.mother as mo )" OK
-//HQLTest.testImplicitJoinsInGroupBy
-"select o.mother.bodyWeight, count(distinct o) from Animal an join an.offspring as o group by o.mother.bodyWeight" OK
-//HQLTest.testCrazyIdFieldNames
-"select e.heresAnotherCrazyIdFieldName from MoreCrazyIdFieldNameStuffEntity e where e.heresAnotherCrazyIdFieldName is not null" OK
-"select e.heresAnotherCrazyIdFieldName.heresAnotherCrazyIdFieldName from MoreCrazyIdFieldNameStuffEntity e where e.heresAnotherCrazyIdFieldName is not null" OK
-//HQLTest.testSizeFunctionAndProperty
-"from Animal a where a.offspring.size > 0" OK
-"from Animal a join a.offspring where a.offspring.size > 1" OK
-"from Animal a where size(a.offspring) > 0" OK
-"from Animal a join a.offspring o where size(a.offspring) > 1" OK
-"from Animal a where size(a.offspring) > 1 and size(a.offspring) < 100" OK
-"from Human a where a.family.size > 0" OK
-"from Human a join a.family where a.family.size > 1" OK
-"from Human a where size(a.family) > 0" OK
-"from Human a join a.family o where size(a.family) > 1" OK
-"from Human a where a.family.size > 0 and a.family.size < 100" OK
-//HQLTest.testFromOnly
-"from Animal" OK
-"from Model" OK
-//HQLTest.testJoinPathEndingInValueCollection
-"select h from Human as h join h.nickNames as nn where h.nickName=:nn1 and (nn=:nn2 or nn=:nn3)" OK
-//HQLTest.testSerialJoinPathEndingInValueCollection
-"select h from Human as h join h.friends as f join f.nickNames as nn where h.nickName=:nn1 and (nn=:nn2 or nn=:nn3)" OK
-//HQLTest.testImplicitJoinContainedByCollectionFunction
-"from Human as h where 'shipping' in indices(h.father.addresses)" OK
-"from Human as h where 'shipping' in indices(h.father.father.addresses)" OK
-"from Human as h where 'sparky' in elements(h.father.nickNames)" OK
-"from Human as h where 'sparky' in elements(h.father.father.nickNames)" OK
-//HQLTest.testImpliedJoinInSubselectFrom
-"from Animal a where exists( from a.mother.offspring )" OK
-//HQLTest.testSubselectImplicitJoins
-"from Simple s where s = some( select sim from Simple sim where sim.other.count=s.other.count )" OK
-//HQLTest.testCollectionOfValuesSize
-"select size(baz.stringDateMap) from org.hibernate.test.legacy.Baz baz" OK
-//HQLTest.testCollectionFunctions
-"from Zoo zoo where size(zoo.animals) > 100" OK
-"from Zoo zoo where maxindex(zoo.mammals) = 'dog'" OK
-//HQLTest.testImplicitJoinInExplicitJoin
-"from Animal an inner join an.mother.mother gm" OK
-"from Animal an inner join an.mother.mother.mother ggm" OK
-"from Animal an inner join an.mother.mother.mother.mother gggm" OK
-//HQLTest.testImpliedManyToManyProperty
-"select c from ContainerX c where c.manyToMany[0].name = 's'" OK
-"select size(zoo.animals) from Zoo zoo" OK
-//HQLTest.testCollectionIndexFunctionsInSelect" OK
-"select maxindex(zoo.animals) from Zoo zoo" OK
-"select minindex(zoo.animals) from Zoo zoo" OK
-"select indices(zoo.animals) from Zoo zoo" OK
-//HQLTest.testCollectionElementFunctionsInSelect
-"select maxelement(zoo.animals) from Zoo zoo" OK
-"select minelement(zoo.animals) from Zoo zoo" OK
-"select elements(zoo.animals) from Zoo zoo" OK
-//HQLTest.testFetchCollectionOfValues
-"from Baz baz left join fetch baz.stringSet" OK
-//HQLTest.testFetchList
-"from User u join fetch u.permissions" OK
-//HQLTest.testCollectionFetchWithExplicitThetaJoin
-"select m from Master m1, Master m left join fetch m.details where m.name=m1.name" OK
-//HQLTest.testListElementFunctionInSelect
-"select maxelement(u.permissions) from User u" OK
-"select elements(u.permissions) from User u" OK
-//HQLTest.testListElementFunctionInWhere
-"from User u where 'read' in elements(u.permissions)" OK
-"from User u where 'write' <> all elements(u.permissions)" OK
-//HQLTest.testManyToManyElementFunctionInSelect
-"select maxelement(human.friends) from Human human" OK
-"select elements(human.friends) from Human human" OK
-//HQLTest.testManyToManyMaxElementFunctionInWhere
-"from Human human where 5 = maxelement(human.friends)" OK
-//HQLTest.testCollectionIndexFunctionsInWhere
-"from Zoo zoo where 4 = maxindex(zoo.animals)" OK
-"from Zoo zoo where 2 = minindex(zoo.animals)" OK
-//HQLTest.testCollectionIndicesInWhere
-"from Zoo zoo where 4 > some indices(zoo.animals)" OK
-"from Zoo zoo where 4 > all indices(zoo.animals)" OK
-//HQLTest.testIndicesInWhere
-"from Zoo zoo where 4 in indices(zoo.animals)" OK
-"from Zoo zoo where exists indices(zoo.animals)" OK
-//HQLTest.testCollectionElementInWhere
-"from Zoo zoo where 4 > some elements(zoo.animals)" OK
-"from Zoo zoo where 4 > all elements(zoo.animals)" OK
-//HQLTest.testElementsInWhere
-"from Zoo zoo where 4 in elements(zoo.animals)" OK
-"from Zoo zoo where exists elements(zoo.animals)" OK
-//HQLTest.testNull
-"from Human h where h.nickName is null" OK
-"from Human h where h.nickName is not null" OK
-//HQLTest.testSubstitutions
-"from Human h where h.pregnant = yes" OK
-"from Human h where h.pregnant = foo" OK
-//HQLTest.testEscapedQuote
-"from Human h where h.nickName='1 ov''tha''few'" OK
-//HQLTest.testCaseWhenElse
-"from Human h where case when h.nickName='1ovthafew' then 'Gavin' when h.nickName='turin' then 'Christian' else h.nickName end = h.name.first" OK
-//HQLTest.testCaseExprWhenElse
-"from Human h where case h.nickName when '1ovthafew' then 'Gavin' when 'turin' then 'Christian' else h.nickName end = h.name.first" OK
-//HQLTest.testInvalidHql
-"from Animal foo where an.bodyWeight > 10" OK
-"select an.name from Animal foo" OK
-"from Animal foo where an.verybogus > 10" OK
-"select an.boguspropertyname from Animal foo" OK
-"from NonexistentClass where name='foo'" OK
-"select new FOO_BOGUS_Animal(an.description, an.bodyWeight) from Animal an" OK
-"select new Animal(an.description, an.bodyWeight, 666) from Animal an" OK
-//HQLTest.testWhereBetween
-"from Animal an where an.bodyWeight between 1 and 10" OK
-//HQLTest.testConcatenation
-"from Human h where h.nickName = '1' || 'ov' || 'tha' || 'few'" OK
-//HQLTest.testWhereLike
-"from Animal a where a.description like '%black%'" OK
-"from Animal an where an.description like '%fat%'" OK
-"from Animal an where lower(an.description) like '%fat%'" OK
-//HQLTest.testWhereIn
-"from Animal an where an.description in ('fat', 'skinny')" OK
-//HQLTest.testLiteralInFunction
-"from Animal an where an.bodyWeight > abs(5)" OK
-"from Animal an where an.bodyWeight > abs(-5)" OK
-//HQLTest.testExpressionInFunction
-"from Animal an where an.bodyWeight > abs(3-5)" OK
-"from Animal an where an.bodyWeight > abs(3/5)" OK
-"from Animal an where an.bodyWeight > abs(3+5)" OK
-"from Animal an where an.bodyWeight > abs(3*5)" OK
-//HQLTest.testNotOrWhereClause
-"from Simple s where 'foo'='bar' or not 'foo'='foo'" OK
-"from Simple s where 'foo'='bar' or not ('foo'='foo')" OK
-"from Simple s where not ( 'foo'='bar' or 'foo'='foo' )" OK
-"from Simple s where not ( 'foo'='bar' and 'foo'='foo' )" OK
-"from Simple s where not ( 'foo'='bar' and 'foo'='foo' ) or not ('x'='y')" OK
-"from Simple s where not ( 'foo'='bar' or 'foo'='foo' ) and not ('x'='y')" OK
-"from Simple s where not ( 'foo'='bar' or 'foo'='foo' ) and 'x'='y'" OK
-"from Simple s where not ( 'foo'='bar' and 'foo'='foo' ) or 'x'='y'" OK
-"from Simple s where 'foo'='bar' and 'foo'='foo' or not 'x'='y'" OK
-"from Simple s where 'foo'='bar' or 'foo'='foo' and not 'x'='y'" OK
-"from Simple s where ('foo'='bar' and 'foo'='foo') or 'x'='y'" OK
-"from Simple s where ('foo'='bar' or 'foo'='foo') and 'x'='y'" OK
-"from Simple s where not( upper( s.name ) ='yada' or 1=2 or 'foo'='bar' or not('foo'='foo') or 'foo' like 'bar' )" OK
-//HQLTest.testComplexExpressionInFunction
-"from Animal an where an.bodyWeight > abs((3-5)/4)" OK
-//HQLTest.testStandardFunctions
-"from Animal where current_date = current_time" OK
-"from Animal a where upper(a.description) = 'FAT'" OK
-"select lower(a.description) from Animal a" OK
-//HQLTest.testOrderBy
-"from Animal an order by an.bodyWeight" OK
-"from Animal an order by an.bodyWeight asc" OK
-"from Animal an order by an.bodyWeight desc" OK
-"from Animal an order by sqrt(an.bodyWeight*4)/2" OK
-"from Animal an order by an.mother.bodyWeight" OK
-"from Animal an order by an.bodyWeight, an.description" OK
-"from Animal an order by an.bodyWeight asc, an.description desc" OK
-"from Human h order by sqrt(h.bodyWeight), year(h.birthdate)" OK
-//HQLTest.testGroupByFunction
-"select count(*) from Human h group by year(h.birthdate)" OK
-"select count(*) from Human h group by trunc( sqrt(h.bodyWeight*4)/2 )" OK
-"select count(*) from Human h group by year(sysdate)" OK
-//HQLTest.testPolymorphism
-"from Mammal" OK
-"from Dog" OK
-"from Mammal m where m.pregnant = false and m.bodyWeight > 10" OK
-"from Dog d where d.pregnant = false and d.bodyWeight > 10" OK
-//HQLTest.testProduct
-"from Animal, Animal" OK
-"from Animal x, Animal y where x.bodyWeight = y.bodyWeight" OK
-"from Animal x, Mammal y where x.bodyWeight = y.bodyWeight and not y.pregnant = true" OK
-"from Mammal, Mammal" OK
-//HQLTest.testJoinedSubclassProduct
-"from PettingZoo, PettingZoo" OK
-//HQLTest.testProjectProduct
-"select x from Human x, Human y where x.nickName = y.nickName" OK
-"select x, y from Human x, Human y where x.nickName = y.nickName" OK
-//HQLTest.testExplicitEntityJoins
-"from Animal an inner join an.mother mo" OK
-"from Animal an left outer join an.mother mo" OK
-"from Animal an left outer join fetch an.mother" OK
-//HQLTest.testMultipleExplicitEntityJoins
-"from Animal an inner join an.mother mo inner join mo.mother gm" OK
-"from Animal an left outer join an.mother mo left outer join mo.mother gm" OK
-"from Animal an inner join an.mother m inner join an.father f" OK
-"from Animal an left join fetch an.mother m left join fetch an.father f" OK
-//HQLTest.testMultipleExplicitJoins
-"from Animal an inner join an.mother mo inner join an.offspring os" OK
-"from Animal an left outer join an.mother mo left outer join an.offspring os" OK
-//HQLTest.testExplicitEntityJoinsWithRestriction
-"from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
-//HQLTest.testIdProperty
-"from Animal a where a.mother.id = 12" OK
-//HQLTest.testSubclassAssociation
-"from DomesticAnimal da join da.owner o where o.nickName = 'Gavin'" OK
-"from DomesticAnimal da left join fetch da.owner" OK
-"from Human h join h.pets p where p.pregnant = 1" OK
-"from Human h join h.pets p where p.bodyWeight > 100" OK
-"from Human h left join fetch h.pets" OK
-//HQLTest.testExplicitCollectionJoins
-"from Animal an inner join an.offspring os" OK
-"from Animal an left outer join an.offspring os" OK
-//HQLTest.testExplicitOuterJoinFetch
-"from Animal an left outer join fetch an.offspring" OK
-//HQLTest.testExplicitOuterJoinFetchWithSelect
-"select an from Animal an left outer join fetch an.offspring" OK
-//HQLTest.testExplicitJoins
-"from Zoo zoo join zoo.mammals mam where mam.pregnant = true and mam.description like '%white%'" OK
-"from Zoo zoo join zoo.animals an where an.description like '%white%'" OK
-//HQLTest.testMultibyteCharacterConstant
-"from Zoo zoo join zoo.animals an where an.description like '%\u4e2d%'" OK
-//HQLTest.testImplicitJoins
-"from Animal an where an.mother.bodyWeight > ?" OK
-"from Animal an where an.mother.bodyWeight > 10" OK
-"from Dog dog where dog.mother.bodyWeight > 10" OK
-"from Animal an where an.mother.mother.bodyWeight > 10" OK
-"from Animal an where an.mother is not null" OK
-"from Animal an where an.mother.id = 123" OK
-//HQLTest.testImplicitJoinInSelect
-"select foo, foo.long from Foo foo" OK
-"select foo.foo from Foo foo" OK
-"select foo, foo.foo from Foo foo" OK
-"select foo.foo from Foo foo where foo.foo is not null" OK
-//HQLTest.testSelectExpressions
-"select an.mother.mother from Animal an" OK
-"select an.mother.mother.mother from Animal an" OK
-"select an.mother.mother.bodyWeight from Animal an" OK
-"select an.mother.zoo.id from Animal an" OK
-"select user.human.zoo.id from User user" OK
-"select u.userName, u.human.name.first from User u" OK
-"select u.human.name.last, u.human.name.first from User u" OK
-"select bar.baz.name from Bar bar" OK
-"select bar.baz.name, bar.baz.count from Bar bar" OK
-//HQLTest.testSelectStandardFunctionsNoParens
-"select current_date, current_time, current_timestamp from Animal" OK
-//HQLTest.testMapIndex
-"from User u where u.permissions['hibernate']='read'" OK
-//HQLTest.testCollectionFunctionsInSelect
-"select baz, size(baz.stringSet), count( distinct elements(baz.stringSet) ), max( elements(baz.stringSet) ) from Baz baz group by baz" OK
-"select elements(fum1.friends) from org.hibernate.test.legacy.Fum fum1" OK
-"select elements(one.manies) from org.hibernate.test.legacy.One one" OK
-//HQLTest.testNamedParameters
-"from Animal an where an.mother.bodyWeight > :weight" OK
-//HQLTest.testClassProperty
-"from Animal a where a.mother.class = Reptile" OK
-//HQLTest.testComponent
-"from Human h where h.name.first = 'Gavin'" OK
-//HQLTest.testSelectEntity
-"select an from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
-"select mo, an from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
-//HQLTest.testValueAggregate
-"select max(p), min(p) from User u join u.permissions p" OK
-//HQLTest.testAggregation
-"select count(an) from Animal an" OK
-"select count(distinct an) from Animal an" OK
-"select count(distinct an.id) from Animal an" OK
-"select count(all an.id) from Animal an" OK
-//HQLTest.testSelectProperty
-"select an.bodyWeight, mo.bodyWeight from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
-//HQLTest.testSelectEntityProperty
-"select an.mother from Animal an" OK
-"select an, an.mother from Animal an" OK
-//HQLTest.testSelectDistinctAll
-"select distinct an.description, an.bodyWeight from Animal an" OK
-"select all an from Animal an" OK
-//HQLTest.testSelectAssociatedEntityId
-"select an.mother.id from Animal an" OK
-//HQLTest.testGroupBy
-"select an.mother.id, max(an.bodyWeight) from Animal an group by an.mother.id having max(an.bodyWeight)>1.0" OK
-//HQLTest.testGroupByMultiple
-"select s.id, s.count, count(t), max(t.date) from org.hibernate.test.legacy.Simple s, org.hibernate.test.legacy.Simple t where s.count = t.count group by s.id, s.count order by s.count" OK
-//HQLTest.testManyToMany
-"from Human h join h.friends f where f.nickName = 'Gavin'" OK
-"from Human h join h.friends f where f.bodyWeight > 100" OK
-//HQLTest.testManyToManyElementFunctionInWhere
-"from Human human where human in elements(human.friends)" OK
-"from Human human where human = some elements(human.friends)" OK
-//HQLTest.testManyToManyElementFunctionInWhere2
-"from Human h1, Human h2 where h2 in elements(h1.family)" OK
-"from Human h1, Human h2 where 'father' in indices(h1.family)" OK
-//HQLTest.testManyToManyFetch
-"from Human h left join fetch h.friends" OK
-//HQLTest.testManyToManyIndexAccessor
-"select c from ContainerX c, Simple s where c.manyToMany[2] = s" OK
-"select s from ContainerX c, Simple s where c.manyToMany[2] = s" OK
-"from ContainerX c, Simple s where c.manyToMany[2] = s" OK
-//HQLTest.testSelectNew
-"select new Animal(an.description, an.bodyWeight) from Animal an" OK
-"select new org.hibernate.test.hql.Animal(an.description, an.bodyWeight) from Animal an" OK
-//HQLTest.testSimpleCorrelatedSubselect
-"from Animal a where a.bodyWeight = (select o.bodyWeight from a.offspring o)" OK
-"from Animal a where a = (from a.offspring o)" OK
-//HQLTest.testSimpleUncorrelatedSubselect
-"from Animal a where a.bodyWeight = (select an.bodyWeight from Animal an)" OK
-"from Animal a where a = (from Animal an)" OK
-//HQLTest.testSimpleCorrelatedSubselect2
-"from Animal a where a = (select o from a.offspring o)" OK
-"from Animal a where a in (select o from a.offspring o)" OK
-//HQLTest.testSimpleUncorrelatedSubselect2
-"from Animal a where a = (select an from Animal an)" OK
-"from Animal a where a in (select an from Animal an)" OK
-//HQLTest.testUncorrelatedSubselect2
-"from Animal a where a.bodyWeight = (select max(an.bodyWeight) from Animal an)" OK
-//HQLTest.testCorrelatedSubselect2
-"from Animal a where a.bodyWeight > (select max(o.bodyWeight) from a.offspring o)" OK
-//HQLTest.testManyToManyJoinInSubselect
-"select foo from Foo foo where foo in (select elt from Baz baz join baz.fooArray elt)" OK
-//HQLTest.testImplicitJoinInSubselect
-"from Animal a where a = (select an.mother from Animal an)" OK
-"from Animal a where a.id = (select an.mother.id from Animal an)" OK
-//HQLTest.testManyToOneSubselect
-"from Animal a where 'foo' in (select m.description from a.mother m)" OK
-//HQLTest.testPositionalParameters
-"from Animal an where an.bodyWeight > ?" OK
-//HQLTest.testKeywordPropertyName
-"from Glarch g order by g.order asc" OK
-"select g.order from Glarch g where g.order = 3" OK
-//HQLTest.testJavaConstant
-"from org.hibernate.test.legacy.Category c where c.name = org.hibernate.test.legacy.Category.ROOT_CATEGORY" OK
-"from org.hibernate.test.legacy.Category c where c.id = org.hibernate.test.legacy.Category.ROOT_ID" OK
-"from Category c where c.name = Category.ROOT_CATEGORY" OK
-"select c.name, Category.ROOT_ID from Category as c" OK
-//HQLTest.testClassName
-"from Zoo zoo where zoo.class = PettingZoo" OK
-"from DomesticAnimal an where an.class = Dog" OK
-//HQLTest.testSelectDialectFunction
-"select mod(s.count, 2) from org.hibernate.test.legacy.Simple as s where s.id = 10" OK
-"select upper(human.name.first) from Human human" OK
-"from Human human where lower(human.name.first) like 'gav%'" OK
-"select max(a.bodyWeight) from Animal a" OK
-//HQLTest.testTwoJoins
-"from Human human join human.friends, Human h join h.mother" OK
-"from Human human join human.friends f, Animal an join an.mother m where f=m" OK
-"from Baz baz left join baz.fooToGlarch, Bar bar join bar.foo" OK
-//HQLTest.testToOneToManyManyJoinSequence
-"from Dog d join d.owner h join h.friends f where f.name.first like 'joe%'" OK
-//HQLTest.testToOneToManyJoinSequence
-"from Animal a join a.mother m join m.offspring" OK
-"from Dog d join d.owner m join m.offspring" OK
-"from Animal a join a.mother m join m.offspring o where o.bodyWeight > a.bodyWeight" OK
-//HQLTest.testSubclassExplicitJoin
-"from DomesticAnimal da join da.owner o where o.nickName = 'gavin'" OK
-"from DomesticAnimal da join da.owner o where o.bodyWeight > 0" OK
-//HQLTest.testMultipleExplicitCollectionJoins
-"from Animal an inner join an.offspring os join os.offspring gc" OK
-"from Animal an left outer join an.offspring os left outer join os.offspring gc" OK
-//HQLTest.testSelectDistinctComposite
-"select distinct p from org.hibernate.test.compositeelement.Parent p join p.children c where c.name like 'Child%'" OK
-//HQLTest.testDotComponent
-"select fum.id from org.hibernate.test.legacy.Fum as fum where not fum.fum='FRIEND'" OK
-//HQLTest.testOrderByCount
-"from Animal an group by an.zoo.id order by an.zoo.id, count(*)" OK
-//HQLTest.testHavingCount
-"from Animal an group by an.zoo.id having count(an.zoo.id) > 1" OK
-//HQLTest.selectWhereElements
-"select foo from Foo foo, Baz baz where foo in elements(baz.fooArray)" OK
-//HQLTest.testCollectionOfComponents
-"from Baz baz inner join baz.components comp where comp.name='foo'" OK
-//HQLTest.testOneToOneJoinedFetch
-"from org.hibernate.test.onetoone.joined.Person p join fetch p.address left join fetch p.mailingAddress" OK
-//HQLTest.testSubclassImplicitJoin
-"from DomesticAnimal da where da.owner.nickName like 'Gavin%'" OK
-"from DomesticAnimal da where da.owner.nickName = 'gavin'" OK
-"from DomesticAnimal da where da.owner.bodyWeight > 0" OK
-//HQLTest.testComponent2
-"from Dog dog where dog.owner.name.first = 'Gavin'" OK
-//HQLTest.testOneToOne
-"from User u where u.human.nickName='Steve'" OK
-"from User u where u.human.name.first='Steve'" OK
-//HQLTest.testSelectClauseImplicitJoin
-"select d.owner.mother from Dog d" OK
-"select d.owner.mother.description from Dog d" OK
-"select d.owner.mother from Dog d, Dog h" OK
-//HQLTest.testFromClauseImplicitJoin
-"from DomesticAnimal da join da.owner.mother m where m.bodyWeight > 10" OK
-//HQLTest.testImplicitJoinInFrom
-"from Human h join h.mother.mother.offspring o" OK
-//HQLTest.testDuplicateImplicitJoinInSelect
-"select an.mother.bodyWeight from Animal an join an.mother m where an.mother.bodyWeight > 10" OK
-"select an.mother.bodyWeight from Animal an where an.mother.bodyWeight > 10" OK
-"select an.mother from Animal an where an.mother.bodyWeight is not null" OK
-"select an.mother.bodyWeight from Animal an order by an.mother.bodyWeight" OK
-//HQLTest.testSelectProperty2
-"select an, mo.bodyWeight from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
-"select an, mo, an.bodyWeight, mo.bodyWeight from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
-//HQLTest.testSubclassWhere
-"from PettingZoo pz1, PettingZoo pz2 where pz1.id = pz2.id" OK
-"from PettingZoo pz1, PettingZoo pz2 where pz1.id = pz2" OK
-"from PettingZoo pz where pz.id > 0 " OK
-//HQLTest.testNestedImplicitJoinsInSelect
-"select foo.foo.foo.foo.string from org.hibernate.test.legacy.Foo foo where foo.foo.foo = 'bar'" OK
-"select foo.foo.foo.foo.string from org.hibernate.test.legacy.Foo foo" OK
-//HQLTest.testNestedComponent
-"from org.hibernate.test.legacy.Foo foo where foo.component.subcomponent.name='bar'" OK
-//HQLTest.testNull2
-"from Human h where not( h.nickName is null )" OK
-"from Human h where not( h.nickName is not null )" OK
-//HQLTest.testUnknownFailureFromMultiTableTest
-"from Lower s where s.yetanother.name='name'" OK
-//HQLTest.testJoinInSubselect
-"from Animal a where a in (select m from Animal an join an.mother m)" OK
-"from Animal a where a in (select o from Animal an join an.offspring o)" OK
-//HQLTest.testJoinedSubclassImplicitJoin
-"from org.hibernate.test.legacy.Lower s where s.yetanother.name='name'" OK
-//HQLTest.testProjectProductJoinedSubclass
-"select zoo from Zoo zoo, PettingZoo pz where zoo=pz" OK
-"select zoo, pz from Zoo zoo, PettingZoo pz where zoo=pz" OK
-//HQLTest.testCorrelatedSubselect1
-"from Animal a where exists (from a.offspring o where o.bodyWeight>10)" OK
-//HQLTest.testOuterAliasInSubselect
-"from Human h where h = (from Animal an where an = h)" OK
-//HQLTest.testFetch
-"from Zoo zoo left join zoo.mammals" OK
-"from Zoo zoo left join fetch zoo.mammals" OK
-//HQLTest.testOneToManyElementFunctionInWhere
-"from Zoo zoo where 'dog' in indices(zoo.mammals)" OK
-"from Zoo zoo, Dog dog where dog in elements(zoo.mammals)" OK
-//HQLTest.testManyToManyElementFunctionInSelect
-"select elements(zoo.mammals) from Zoo zoo" OK
-"select indices(zoo.mammals) from Zoo zoo" OK
-//HQLTest.testManyToManyInJoin
- "select x.id from Human h1 join h1.family x" OK
-"select index(h2) from Human h1 join h1.family h2" OK
-//HQLTest.testManyToManyInSubselect
- "from Human h1, Human h2 where h2 in (select x.id from h1.family x)" OK
-//HQLTest.testOneToManyIndexAccess
- "from Zoo zoo where zoo.mammals['dog'] is not null" OK
-//HQLTest.testImpliedSelect
- "select zoo from Zoo zoo" OK
- "from Zoo zoo" OK
- "from Zoo zoo join zoo.mammals m" OK
- "from Zoo" OK
- "from Zoo zoo join zoo.mammals" OK
-//HQLTest.testVectorSubselect
- "from Animal a where ('foo', 'bar') in (select m.description, m.bodyWeight from a.mother m)" OK
-//HQLTest.testWierdSubselectImplicitJoinStuff
-"from Simple s where s = some( select sim from Simple sim where sim.other.count=s.other.count ) and s.other.count > 0" OK
-//HQLTest.testCollectionsInSelect2
- "select foo.string from Bar bar left join bar.baz.fooArray foo where bar.string = foo.string" OK
-//HQLTest.testAssociationPropertyWithoutAlias
-"from Animal where zoo is null" OK
-//HQLTest.testComponentNoAlias
-"from Human where name.first = 'Gavin'" OK
-//ASTParserLoadingTest.testComponentNullnessChecks
-"from Human where name is null" OK
-"from Human where name is not null" OK
-"from Human where cast(? as string) is null" OK
-"from Human where ? is null" OK
-//ASTParserLoadingTest.testInvalidCollectionDereferencesFail
-"from Animal a join a.offspring o where o.description = 'xyz'" OK
-"from Animal a join a.offspring o where o.father.description = 'xyz'" OK
-"from Animal a join a.offspring o order by o.description" OK
-"from Animal a join a.offspring o order by o.father.description" OK
-"from Animal a order by a.offspring.description" OK
-"from Animal a order by a.offspring.father.description" OK
-//ASTParserLoadingTest.testExpressionWithParamInFunction
-"from Animal where abs(cast(:x as long) - :y) < 2.0" OK
-"from Animal where abs(:x - cast(:y as long)) < 2.0" OK
-"from Animal where abs(cast(:x as long) - cast(:y as long)) < 2.0" OK
-"from Animal where abs(:x - :y) < 2.0" OK
-"from Animal where lower(upper(cast(:foo as string))) like 'f%'" OK
-"from Animal where lower(upper(:foo)) like 'f%'" OK
-"from Animal a where abs(abs(a.bodyWeight - 1.0 + :param) * abs(length('ffobar')-3)) = 3.0" OK
-"from Animal where lower(upper('foo') || upper(cast(:bar as string))) like 'f%'" OK
-"from Animal where lower(upper('foo') || upper(:bar)) like 'f%'" OK
-"from Animal where abs(cast(1 as float) - cast(:param as float)) = 1.0" OK
-//ASTParserLoadingTest.testCrazyIdFieldNames
-"select e.heresAnotherCrazyIdFieldName from MoreCrazyIdFieldNameStuffEntity e" OK
-//ASTParserLoadingTest.testImplicitJoinsInDifferentClauses
-"select e.owner from SimpleAssociatedEntity e" OK
-"select e.id, e.owner from SimpleAssociatedEntity e" OK
-"from SimpleAssociatedEntity e order by e.owner" OK
-"select e.owner.id, count(*) from SimpleAssociatedEntity e group by e.owner" OK
-//ASTParserLoadingTest.testNestedComponentIsNull
-"from Commento c where c.marelo.commento.mcompr is null" OK
-//ASTParserLoadingTest.testSpecialClassPropertyReference
-"select a.description from Animal a where a.class = Mammal" OK
-"select a.class from Animal a" OK
-"from Animal an where an.class = Dog" OK
-//ASTParserLoadingTest.testSpecialClassPropertyReferenceFQN
-"from Zoo zoo where zoo.class = org.hibernate.test.hql.PettingZoo" OK
-"select a.description from Animal a where a.class = org.hibernate.test.hql.Mammal" OK
-"from DomesticAnimal an where an.class = org.hibernate.test.hql.Dog" OK
-"from Animal an where an.class = org.hibernate.test.hql.Dog" OK
-//ASTParserLoadingTest.testSubclassOrSuperclassPropertyReferenceInJoinedSubclass
-"from Zoo z join z.mammals as m where m.name.first = 'John'" OK
-"from Zoo z join z.mammals as m where m.pregnant = false" OK
-"select m.pregnant from Zoo z join z.mammals as m where m.pregnant = false" OK
-"from Zoo z join z.mammals as m where m.description = 'tabby'" OK
-"select m.description from Zoo z join z.mammals as m where m.description = 'tabby'" OK
-"select m.name from Zoo z join z.mammals as m where m.name.first = 'John'" OK
-"select m.pregnant from Zoo z join z.mammals as m" OK
-"select m.description from Zoo z join z.mammals as m" OK
-"select m.name from Zoo z join z.mammals as m" OK
-"from DomesticAnimal da join da.owner as o where o.nickName = 'Gavin'" OK
-"select da.father from DomesticAnimal da join da.owner as o where o.nickName = 'Gavin'" OK
-//ASTParserLoadingTest.testJPAPositionalParameterList
-"from Human where name.last in (?1)" OK
-//ASTParserLoadingTest.testComponentQueries
-"select h.name from Human h" OK
-"from Human h where h.name = h.name" OK
-"from Human h where h.name = :name" OK
-"from Human where name = :name" OK
-"from Human h where :name = h.name" OK
-"from Human h where :name <> h.name" OK
-"from Human h where h.name = ('John', 'X', 'Doe')" OK
-"from Human h where ('John', 'X', 'Doe') = h.name" OK
-"from Human h where ('John', 'X', 'Doe') <> h.name" OK
-"from Human h where ('John', 'X', 'Doe') >= h.name" OK
-"from Human h order by h.name" OK
-//ASTParserLoadingTest.testComponentParameterBinding
-"from Order o where o.customer.name =:name and o.id = :id" OK
-"from Order o where o.id = :id and o.customer.name =:name " OK
-//ASTParserLoadingTest.testAnyMappingReference
-"from PropertySet p where p.someSpecificProperty = :ssp" OK
-//ASTParserLoadingTest.testJdkEnumStyleEnumConstant
-"from Zoo z where z.classification = org.hibernate.test.hql.Classification.LAME" OK
-//ASTParserLoadingTest.testParameterTypeMismatchFailureExpected
-"from Animal a where a.description = :nonstring" OK
-//ASTParserLoadingTest.testMultipleBagFetchesFail
-"from Human h join fetch h.friends f join fetch f.friends fof" OK
-//ASTParserLoadingTest.testCollectionJoinsInSubselect
-"select h.id, h.description from Human h left join h.friends where h in ( select h1 from Human h1 left join h1.friends f where h1.id=1)" OK
-"select h.id, h.description from Human h left join h.friends f where f in ( select h1 from Human h1 left join h1.friends f1 where h = f1 )" OK
-//ASTParserLoadingTest.testCollectionFetchWithDistinctionAndLimit
-"select distinct p from Animal p inner join fetch p.offspring" OK
-"select p from Animal p inner join fetch p.offspring order by p.id" OK
-//ASTParserLoadingTest.testFetchInSubqueryFails
-"from Animal a where a.mother in (select m from Animal a1 inner join a1.mother as m join fetch m.mother)" OK
-//ASTParserLoadingTest.testQueryMetadataRetrievalWithFetching
-"from Animal a inner join fetch a.mother" OK
-//ASTParserLoadingTest.testSuperclassPropertyReferenceAfterCollectionIndexedAccess
-"from Zoo zoo where zoo.mammals['tiger'].mother.bodyWeight > 3.0f" OK
-//ASTParserLoadingTest.testJoinFetchCollectionOfValues
-"select h from Human as h join fetch h.nickNames" OK
-//ASTParserLoadingTest.testIntegerLiterals
-"from Foo where long = 1" OK
-"from Foo where long = 1L" OK
-//ASTParserLoadingTest.testDecimalLiterals
-"from Animal where bodyWeight > 100.0e-10" OK
-"from Animal where bodyWeight > 100.0E-10" OK
-"from Animal where bodyWeight > 100.001f" OK
-"from Animal where bodyWeight > 100.001F" OK
-"from Animal where bodyWeight > 100.001d" OK
-"from Animal where bodyWeight > 100.001D" OK
-"from Animal where bodyWeight > .001f" OK
-"from Animal where bodyWeight > 100e-10" OK
-"from Animal where bodyWeight > .01E-10" OK
-"from Animal where bodyWeight > 1e-38" OK
-//ASTParserLoadingTest.testNakedPropertyRef
-"from Animal where bodyWeight = bodyWeight" OK
-"select bodyWeight from Animal" OK
-"select max(bodyWeight) from Animal" OK
-//ASTParserLoadingTest.testNakedComponentPropertyRef
-"select name from Human" OK
-"select upper(h.name.first) from Human as h" OK
-"select upper(name.first) from Human" OK
-//ASTParserLoadingTest.testNakedImplicitJoins
-"from Animal where mother.father.id = 1" OK
-//ASTParserLoadingTest.testNakedEntityAssociationReference
-"from Animal where mother = :mother" OK
-//ASTParserLoadingTest.testNakedMapIndex
-"from Zoo where mammals['dog'].description like '%black%'" OK
-//ASTParserLoadingTest.testInvalidFetchSemantics
-"select mother from Human a left join fetch a.mother mother" OK
-//ASTParserLoadingTest.testArithmetic
-"select 2*2*2*2*(2*2) from Zoo" OK
-"select 2 / (1+1) from Zoo" OK
-"select 2 - (1+1) from Zoo" OK
-"select 2 - 1 + 1 from Zoo" OK
-"select 2 * (1-1) from Zoo" OK
-"select 4 / (2 * 2) from Zoo" OK
-"select 4 / 2 * 2 from Zoo" OK
-"select 2 * (2/2) from Zoo" OK
-"select 2 * (2/2+1) from Zoo" OK
-//ASTParserLoadingTest.testNestedCollectionFetch
-"from Animal a left join fetch a.offspring o left join fetch o.offspring where a.mother.id = 1 order by a.description" OK
-"from Zoo z left join fetch z.animals a left join fetch a.offspring where z.name ='MZ' order by a.description" OK
-"from Human h left join fetch h.pets a left join fetch a.offspring where h.name.first ='Gavin' order by a.description" OK
-//ASTParserLoadingTest.testSelectClauseSubselect
-"select (select max(z.id) from a.zoo z) from Animal a" OK
-"select (select max(z.id) from a.zoo z where z.name=:name) from Animal a" OK
-//ASTParserLoadingTest.testInitProxy
-"from Animal a" OK
-//ASTParserLoadingTest.testSelectClauseImplicitJoin
-"select distinct a.zoo from Animal a where a.zoo is not null" OK
-//ASTParserLoadingTest.testComponentOrderBy
-"from Human as h order by h.name" OK
-//ASTParserLoadingTest.testCastInSelect
-"select cast(bodyWeight as integer) from Animal" OK
-"select cast(a.bodyWeight as integer) from Animal a" OK
-//ASTParserLoadingTest.testAliases
-"select a.bodyWeight as abw, a.description from Animal a" OK
-"select count(*), avg(a.bodyWeight) as avg from Animal a" OK
-//ASTParserLoadingTest.testParameterMixing
-"from Animal a where a.description = ? and a.bodyWeight = ? or a.bodyWeight = :bw" OK
-//ASTParserLoadingTest.testOrdinalParameters
-"from Animal a where a.description = ? and a.bodyWeight = ?" OK
-"from Animal a where a.bodyWeight in (?, ?)" OK
-//ASTParserLoadingTest.testIndexParams
-"from Zoo zoo where zoo.mammals[:name] = :id" OK
-"from Zoo zoo where zoo.mammals[:name].bodyWeight > :w" OK
-"from Zoo zoo where zoo.animals[:sn].mother.bodyWeight < :mw" OK
-"from Zoo zoo where zoo.animals[:sn].description like :desc and zoo.animals[:sn].bodyWeight > :wmin and zoo.animals[:sn].bodyWeight < :wmax" OK
-"from Human where addresses[:type].city = :city and addresses[:type].country = :country" OK
-//ASTParserLoadingTest.testAggregation
-"select sum(h.bodyWeight) from Human h" OK
-"select avg(h.height) from Human h" OK
-"select max(a.id) from Animal a" OK
-//ASTParserLoadingTest.testSelectClauseCase
-"select case nickName when 'Oney' then 'gavin' when 'Turin' then 'christian' else nickName end from Human" OK
-"select case when bodyWeight > 100 then 'fat' else 'skinny' end from Human" OK
-//ASTParserLoadingTest.testImplicitPolymorphism
-"from java.lang.Comparable" OK
-"from java.lang.Object" OK
-//ASTParserLoadingTest.testCoalesce
-"from Human h where coalesce(h.nickName, h.name.first, h.name.last) = 'max'" OK
-"select nullif(nickName, '1e1') from Human" OK
-//ASTParserLoadingTest.testStr
-"select str(an.bodyWeight) from Animal an where str(an.bodyWeight) like '%1%'" OK
-"select str(an.bodyWeight, 8, 3) from Animal an where str(an.bodyWeight, 8, 3) like '%1%'" OK
-"select str(current_date) from Animal" OK
-"select str(year(current_date))||'-'||str(month(current_date))||'-'||str(day(current_date)) from Animal" OK
-//ASTParserLoadingTest.testCast
-"from Human h where h.nickName like 'G%'" OK
-"from Animal a where cast(a.bodyWeight as string) like '1.%'" OK
-"from Animal a where cast(a.bodyWeight as integer) = 1" OK
-//ASTParserLoadingTest.testExtract
-"select second(current_timestamp()), minute(current_timestamp()), hour(current_timestamp()) from Mammal m" OK
-"select day(m.birthdate), month(m.birthdate), year(m.birthdate) from Mammal m" OK
-"select extract(second from current_timestamp()), extract(minute from current_timestamp()), extract(hour from current_timestamp()) from Mammal m" OK
-"select extract(day from m.birthdate), extract(month from m.birthdate), extract(year from m.birthdate) from Mammal m" OK
-//ASTParserLoadingTest.testSelectExpressions
-"select 'found', lower(h.name.first) from Human h where lower(h.name.first) = 'gavin'" OK
-"select 'found', lower(h.name.first) from Human h where concat(h.name.first, ' ', h.name.initial, ' ', h.name.last) = 'Gavin A King'" OK
-"select 'found', lower(h.name.first) from Human h where h.name.first||' '||h.name.initial||' '||h.name.last = 'Gavin A King'" OK
-"select a.bodyWeight + m.bodyWeight from Animal a join a.mother m" OK
-"select 2.0 * (a.bodyWeight + m.bodyWeight) from Animal a join a.mother m" OK
-"select sum(a.bodyWeight + m.bodyWeight) from Animal a join a.mother m" OK
-"select sum(a.mother.bodyWeight * 2.0) from Animal a" OK
-"select concat(h.name.first, ' ', h.name.initial, ' ', h.name.last) from Human h" OK
-"select h.name.first||' '||h.name.initial||' '||h.name.last from Human h" OK
-"select nickName from Human" OK
-"select lower(nickName) from Human" OK
-"select abs(bodyWeight*-1) from Human" OK
-"select upper(h.name.first||' ('||h.nickName||')') from Human h" OK
-"select abs(a.bodyWeight-:param) from Animal a" OK
-"select abs(:param - a.bodyWeight) from Animal a" OK
-"select lower(upper('foo')) from Animal" OK
-"select lower(upper('foo') || upper('bar')) from Animal" OK
-"select sum(abs(bodyWeight - 1.0) * abs(length('ffobar')-3)) from Animal" OK
-//ASTParserLoadingTest.testImplicitJoin
-"from Animal a where a.mother.bodyWeight < 2.0 or a.mother.bodyWeight > 9.0" OK
-"from Animal a where a.mother.bodyWeight > 2.0 and a.mother.bodyWeight > 9.0" OK
-//ASTParserLoadingTest.testSimpleSelect
-"select a.mother from Animal as a" OK
-//ASTParserLoadingTest.testWhere
-"from Animal an where an.bodyWeight > 10" OK
-"from Animal an where not an.bodyWeight > 10" OK
-"from Animal an where an.bodyWeight between 0 and 10" OK
-"from Animal an where an.bodyWeight not between 0 and 10" OK
-"from Animal an where sqrt(an.bodyWeight)/2 > 10" OK
-"from Animal an where (an.bodyWeight > 10 and an.bodyWeight < 100) or an.bodyWeight is null" OK
-//ASTParserLoadingTest.testEntityFetching
-"from Animal an join fetch an.mother" OK
-"select an from Animal an join fetch an.mother" OK
-//ASTParserLoadingTest.testCollectionFetching
-"from Animal an join fetch an.offspring" OK
-"select an from Animal an join fetch an.offspring" OK
-//ASTParserLoadingTest.testProjectionQueries
-"select an.mother.id, max(an.bodyWeight) from Animal an group by an.mother.id" OK
-//ASTParserLoadingTest.testStandardFunctions
-"select current_time(), current_date(), current_timestamp() from Product" OK
-//ASTParserLoadingTest.testDynamicInstantiationQueries
-"select new list(an.description, an.bodyWeight) from Animal an" OK
-"select new map(an.description, an.bodyWeight) from Animal an" OK
-"select new map(an.description as descr, an.bodyWeight as bw) from Animal an" OK
-//ASTParserLoadingTest.testResultTransformerScalarQueries
-"select an.description as description, an.bodyWeight as bodyWeight from Animal an order by bodyWeight desc" OK
-"select a from Animal a, Animal b order by a.id" OK
-//ASTParserLoadingTest.testResultTransformerEntityQueries
-"select an as an from Animal an order by bodyWeight desc" OK
-//ASTParserLoadingTest.testEJBQLFunctions
-"from Animal a where a.description = concat('1', concat('2','3'), '4'||'5')||'0'" OK
-"from Animal a where substring(a.description, 1, 3) = 'cat'" OK
-"from Animal a where lower(a.description) = 'cat'" OK
-"from Animal a where upper(a.description) = 'CAT'" OK
-"select upper(a.description) from Animal a" OK
-"from Animal a where length(a.description) = 5" OK
-"from Animal a where locate('abc', a.description, 2) = 2" OK
-"from Animal a where locate('abc', a.description) = 2" OK
-"select locate('cat', a.description, 2) from Animal a" OK
-"from Animal a where trim(trailing '_' from a.description) = 'cat'" OK
-"from Animal a where trim(leading '_' from a.description) = 'cat'" OK
-"from Animal a where trim(both from a.description) = 'cat'" OK
-"from Animal a where trim(a.description) = 'cat'" OK
-"from Animal a where abs(a.bodyWeight) = sqrt(a.bodyWeight)" OK
-"from Animal a where mod(16, 4) = 4" OK
-"from Animal a where bit_length(a.bodyWeight) = 24" OK
-"select bit_length(a.bodyWeight) from Animal a" OK
-"from Animal a where a.description like '%a%'" OK
-"from Animal a where a.description not like '%a%'" OK
-"from Animal a where a.description like 'x%ax%' escape 'x'" OK
-//ASTParserLoadingTest.testSubselectBetween
-"from Animal x where (select max(a.bodyWeight) from Animal a) between 0 and 100" OK
-//
-//"from Animal x where (x.name, x.bodyWeight) = ('cat', 20)" OK
-
-/*
-DELETE STATEMENT
-*/
-"delete Animal where mother is not null" OK
-"delete Animal where not mother is not null" OK
-"delete Animal" OK
-"delete from Thing" OK
-"delete from Person" OK
-"delete from Location" OK
-"delete from Child" OK
-"delete from Parent" OK
-"delete from Item" OK
-"delete Customer where contactOwner is not null" OK
-"delete Employee where manager is not null" OK
-"delete Person" OK
-"delete Locality" OK
-"delete Country" OK
-"delete Continent" OK
-"delete from DataPoint" OK
-"delete from User where userid = :userid" OK
-"delete from Mail where alias = :alias" OK
-"delete from NumberedNode where name like 'child%'" OK
-"delete from fooArray where id_='???' and i>=8" OK
-"delete from t_user" OK
-"delete Animal where not description like 'root%'" OK
-"delete Animal where description like 'grand%'" OK
-"delete from Animal where mother is not null or father is not null" OK
-"delete Animal where mother = :mother" OK
-"delete EntityWithCrazyCompositeKey where id.id = 1 and id.otherId = 2" OK
-"delete from EntityWithCrazyCompositeKey where id.id = 1 and id.otherId = 2" OK
-"delete from EntityWithCrazyCompositeKey e where e.id.id = 1 and e.id.otherId = 2" OK
-"delete from Bar where barString = 's'" OK
-"delete Vehicle where owner = :owner" OK
-"delete Mammal where bodyWeight > 150" OK
-"delete from User u where u not in (select u from User u)" OK
-"delete SimpleEntityWithAssociation e where size( e.associatedEntities ) = 0 and e.name like '%'" OK
-"delete Animal where bodyWeight = null" OK
-"delete from PICKUP" OK
-"delete from Address where id = ? and version = ?" OK
-/*
-UDPATE STATEMENT
-*/
-"update Paper set color = :newColor" OK
-"update Document set name = :newName where name = :oldName" OK
-"update Mammal set bodyWeight = null" OK
-"update Zoo set address.city = null" OK
-"update PettingZoo set address.city = null" OK
-"update Vehicle set owner = null where owner = 'Steve'" OK
-"update Vehicle set owner = 'Steve'" OK
-"update Mammal set bodyWeight = ( select max(bodyWeight) from Animal )" OK
-"update Mammal set bodyWeight = 25" OK
-"update Mammal set description = description" OK
-"update Animal set bodyWeight = bodyWeight + :w1 + :w2" OK
-"update Animal set description = :newDesc where description = :desc" OK
-"update Animal set description = description where description = :desc" OK
-"update Zoo as z set name = name where id = :id" OK
-"update Zoo as z set z.name = z.name" OK
-"update PettingZoo pz set pz.name = pz.name where pz.id = :id" OK
-"update PettingZoo set name = name" OK
-"update Human set mother.name.initial = :initial" OK
-"update Animal a set a.mother = (from Animal where id = 1) where a.id = 2" OK
-"update Animal a set a.mother = null where a.id = 2" OK
-"update Human set name.first = :correction where id = :id" OK
-"update versioned TimestampVersioned set name = name" OK
-"update versioned IntegerVersioned set name = name" OK
-<<update SimpleEntityWithAssociation e
- set e.name = 'updated'
- where exists (
- select a.id
- from e.associatedEntities a
- where a.name = 'one-to-many-association'
- )>> OK
-<<update SimpleEntityWithAssociation e
- set e.name = 'updated'
- where exists (
- select a.id
- from e.manyToManyAssociatedEntities a
- where a.name = 'many-to-many-association'
- )>> OK
-<<update Human h
- set h.description = 'updated'
- where exists (
- select f.id
- from h.friends f
- where f.name.last = 'Public'
- )>> OK
-"update Human set Human.description = 'xyz' where Human.id = 1 and Human.description is null" OK
-"update BooleanLiteralEntity set yesNoBoolean = true, trueFalseBoolean = true, zeroOneBoolean = true" OK
-"update BooleanLiteralEntity set yesNoBoolean = :b1, trueFalseBoolean = :b2, zeroOneBoolean = :b3" OK
-"update NonExistentEntity e set e.someProp = ?" OK
-"update Customer c set c.company = 'XYZ'" OK
-"update User u set u.username = :un where u.name = :n" OK
-"update Person p set p.name = '<male>'" OK
-"update Person p set p.name = 'Shawn'" OK
-"update Address set city = ?, state=?, zip=?, version = ? where id in (select aid from Person)" OK
-"update Address set city = ?, state=?, zip=?, version = ? where id = ? and version = ? " OK
-/*
-INSERT STATEMENT
-*/
-"insert into Animal (description, bodyWeight) select h.description, h.bodyWeight from Human h join h.mother m where m.mother is not null" OK
-"insert into Animal (description, bodyWeight) select h.description, h.bodyWeight from Human h where h.mother.mother is not null" OK
-"insert into TimestampVersioned ( name ) select name from TimestampVersioned" OK
-"insert into IntegerVersioned ( name ) select name from IntegerVersioned" OK
-"insert into PettingZoo (name) select name from Zoo" OK
-"insert into Joiner (name, joinedName) select vin, owner from Car" OK
-"insert into Human (id, bodyWeight) select id, bodyWeight from Lizard" OK
-"insert into Pickup (owner, vin, id) select id, vin, owner from Car" OK
-"insert into Animal (description, bodyWeight, mother) select description, bodyWeight, mother from Human" OK
-"insert into PICKUP (id, vin, owner) select id, vin, owner from Car" OK
-"insert into Pickup (id, vin, owner) select id, vin, owner from Car" OK
Added: core/branches/antlr3/src/test/gunit/org/hibernate/sql/ast/phase/hql/resolve/gUnitHQLTreeWalker.testsuite
===================================================================
--- core/branches/antlr3/src/test/gunit/org/hibernate/sql/ast/phase/hql/resolve/gUnitHQLTreeWalker.testsuite (rev 0)
+++ core/branches/antlr3/src/test/gunit/org/hibernate/sql/ast/phase/hql/resolve/gUnitHQLTreeWalker.testsuite 2009-04-22 17:46:26 UTC (rev 16403)
@@ -0,0 +1,1660 @@
+gunit TestHQLTreeWalker walks HQL;
+
+@header{
+package org.hibernate.sql.ast.phase.hql.parse;
+}
+
+
+statement walks statement:
+
+/*
+SELECT/FROM STATEMENT
+*/
+//testSimpleFrom
+"from com.acme.EntityName e" OK
+//testConstantUsage
+"from com.acme.EntityName where prop = org.hibernate.sql.ast.phase.hql.parse.ParserTest.CONSTANT" OK
+"from com.acme.EntityName where prop = compProp.subProp" OK
+//testVariousPropertyReferences
+"from A a where b = 1" OK
+"from A a where a.b.c = 1" OK
+"from X x where y[1].z = 2" OK
+"from X x where x.y[1].z = 2" OK
+//testEntityNamePathWithKeyword
+"from org.hibernate.test.Inner" OK
+//testWhereClauseIdentPrimaryWithEmbeddedKeyword
+"from org.hibernate.test.Inner i where i.outer.inner.middle = 'xyz'" OK
+//testDynamicInstantiation
+"select new list(a, mate) from Animal a join a.mate as mate" OK
+//testListOrMapKeywordReference
+"select p from eg.NameList nl, eg.Person p where p.name = some elements(nl.names)" OK
+"select p from eg.NameList list, eg.Person p where p.name = some elements(list.names)" OK
+"select p from eg.NameList map, eg.Person p where p.name = some elements(map.names)" OK
+//testExplicitPropertyJoin
+"from eg.Cat as cat inner join fetch cat.mate as m fetch all properties left join fetch cat.kittens as k" OK
+// tests copied over from org.hibernate.test.hql.HqlParserTest ~~~~~~~~~~~~
+"from Animal a where a in (from Cat union from Dog)" OK
+/**
+ * Section 9.2 - from *
+ */
+"from eg.Cat" OK
+"from eg.Cat as cat" OK
+"from eg.Cat cat" OK
+"from Formula, Parameter" OK
+"from Formula as form, Parameter as param" OK
+/**
+ * Section 9.3 - Associations and joins *
+ */
+"from eg.Cat as cat inner join cat.mate as mate left outer join cat.kittens as kitten" OK
+"from eg.Cat as cat left join cat.mate.kittens as kittens" OK
+"from Formula form full join form.parameter param" OK
+"from eg.Cat as cat join cat.mate as mate left join cat.kittens as kitten" OK
+"from eg.Cat as cat inner join fetch cat.mate left join fetch cat.kittens" OK
+/**
+ * Section 9.4 - Select *
+ */
+"select mate from eg.Cat as cat inner join cat.mate as mate" OK
+"select cat.mate from eg.Cat cat" OK
+"select elements(cat.kittens) from eg.Cat cat" OK
+"select cat.name from eg.DomesticCat cat where cat.name like 'fri%'" OK
+"select cust.name.firstName from Customer as cust" OK
+"select mother, offspr, mate.name from eg.DomesticCat as mother inner join mother.mate as mate left outer join mother.kittens as offspr" OK
+"select new Family(mother, mate, offspr) from eg.DomesticCat as mother join mother.mate as mate left join mother.kittens as offspr" OK
+/**
+ * Section 9.5 - Aggregate functions *
+ */
+"select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat) from eg.Cat cat" OK
+"select cat, count( elements(cat.kittens) ) from eg.Cat cat group by cat" OK
+"select distinct cat.name from eg.Cat cat" OK
+"select count(distinct cat.name), count(cat) from eg.Cat cat" OK
+/**
+ * Section 9.6 - Polymorphism *
+ */
+"from java.lang.Object o" OK
+"from eg.Named n, eg.Named m where n.name = m.name" OK
+/**
+ * Section 9.7 - Where *
+ */
+"from eg.Cat as cat where cat.name='Fritz'" OK
+"select foo from eg.Foo foo, eg.Bar bar where foo.startDate = bar.date" OK
+"from eg.Cat cat where cat.mate.name is not null" OK
+"from eg.Cat cat, eg.Cat rival where cat.mate = rival.mate" OK
+"select cat, mate from eg.Cat cat, eg.Cat mate where cat.mate = mate" OK
+"from eg.Cat as cat where cat.id = 123" OK
+"from eg.Cat as cat where cat.mate.id = 69" OK
+"from bank.Person person where person.id.country = 'AU' and person.id.medicareNumber = 123456" OK
+"from bank.Account account where account.owner.id.country = 'AU' and account.owner.id.medicareNumber = 123456" OK
+"from eg.Cat cat where cat.class = eg.DomesticCat" OK
+"from eg.AuditLog log, eg.Payment payment where log.item.class = 'eg.Payment' and log.item.id = payment.id" OK
+/**
+ * Section 9.8 - Expressions *
+ */
+"from eg.DomesticCat cat where cat.name between 'A' and 'B'" OK
+"from eg.DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )" OK
+"from eg.DomesticCat cat where cat.name not between 'A' and 'B'" OK
+"from eg.DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )" OK
+"from eg.Cat cat where cat.kittens.size > 0" OK
+"from eg.Cat cat where size(cat.kittens) > 0" OK
+//"from Calendar cal where cal.holidays.maxElement > current date" OK
+"from Order order where maxindex(order.items) > 100" OK
+"from Order order where minelement(order.items) > 10000" OK
+"from Order ord where maxindex(ord.items) > 100" OK
+"from Order ord where minelement(ord.items) > 10000" OK
+"select mother from eg.Cat as mother, eg.Cat as kit where kit in elements(foo.kittens)" OK
+"select p from eg.NameList list, eg.Person p where p.name = some elements(list.names)" OK
+"from eg.Cat cat where exists elements(cat.kittens)" OK
+"from eg.Player p where 3 > all elements(p.scores)" OK
+"from eg.Show show where 'fizard' in indices(show.acts)" OK
+"from Order order where order.items[0].id = 1234" OK
+"select person from Person person, Calendar calendar where calendar.holidays['national day'] = person.birthDay and person.nationality.calendar = calendar" OK
+"select item from Item item, Order order where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11" OK
+"select item from Item item, Order order where order.items[ maxindex(order.items) ] = item and order.id = 11" OK
+"from Order ord where ord.items[0].id = 1234" OK
+"select item from Item item, Order ord where ord.items[ ord.deliveredItemIndices[0] ] = item and ord.id = 11" OK
+"select item from Item item, Order ord where ord.items[ maxindex(ord.items) ] = item and ord.id = 11" OK
+"select item from Item item, Order ord where ord.items[ size(ord.items) - 1 ] = item" OK
+"from eg.DomesticCat cat where upper(cat.name) like 'FRI%'" OK
+"select cust from Product prod, Store store inner join store.customers cust where prod.name = 'widget' and store.location.name in ( 'Melbourne', 'Sydney' ) and prod = all elements(cust.currentOrder.lineItems)" OK
+//testDocoExamples99
+"from eg.DomesticCat cat order by cat.name asc, cat.weight desc, cat.birthdate" OK
+//testDocoExamples910
+"select cat.color, sum(cat.weight), count(cat) from eg.Cat cat group by cat.color" OK
+"select foo.id, avg( elements(foo.names) ), max( indices(foo.names) ) from eg.Foo foo group by foo.id" OK
+"select cat.color, sum(cat.weight), count(cat) from eg.Cat cat group by cat.color having cat.color in (eg.Color.TABBY, eg.Color.BLACK)" OK
+"select cat from eg.Cat cat join cat.kittens kitten group by cat having avg(kitten.weight) > 100 order by count(kitten) asc, sum(kitten.weight) desc" OK
+//testDocoExamples911
+"from eg.Cat as fatcat where fatcat.weight > (select avg(cat.weight) from eg.DomesticCat cat)" OK
+"from eg.DomesticCat as cat where cat.name = some (select name.nickName from eg.Name as name)" OK
+"from eg.Cat as cat where not exists (from eg.Cat as mate where mate.mate = cat)" OK
+"from eg.DomesticCat as cat where cat.name not in (select name.nickName from eg.Name as name)" OK
+//testDocoExamples912
+<<select ord.id, sum(price.amount), count(item)
+ from Order as ord join ord.lineItems as item
+ join item.product as product, Catalog as catalog
+ join catalog.prices as price
+ where ord.paid = false
+ and ord.customer = :customer
+ and price.product = product
+ and catalog.effectiveDate < sysdate
+ and catalog.effectiveDate >= all (
+ select cat.effectiveDate from Catalog as cat where cat.effectiveDate < sysdate)
+ group by ord
+ having sum(price.amount) > :minAmount
+ order by sum(price.amount) desc>> OK
+<<select ord.id, sum(price.amount), count(item)
+ from Order as ord join ord.lineItems as item join item.product as product,
+ Catalog as catalog join catalog.prices as price
+ where ord.paid = false and ord.customer = :customer
+ and price.product = product and catalog = :currentCatalog
+ group by ord having sum(price.amount) > :minAmount
+ order by sum(price.amount) desc>> OK
+<<select count(payment), status.name
+ from Payment as payment
+ join payment.currentStatus as status
+ join payment.statusChanges as statusChange
+ where payment.status.name <> PaymentStatus.AWAITING_APPROVAL
+ or (
+ statusChange.timeStamp = (
+ select max(change.timeStamp)
+ from PaymentStatusChange change
+ where change.payment = payment
+ )
+ and statusChange.user <> :currentUser
+ )
+ group by status.name, status.sortOrder
+ order by status.sortOrder>> OK
+<<select count(payment), status.name
+ from Payment as payment
+ join payment.currentStatus as status
+ where payment.status.name <> PaymentStatus.AWAITING_APPROVAL
+ or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :currentUser
+ group by status.name, status.sortOrder
+ order by status.sortOrder>> OK
+<<select account, payment
+ from Account as account
+ left outer join account.payments as payment
+ where :currentUser in elements(account.holder.users)
+ and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)
+ order by account.type.sortOrder, account.accountNumber, payment.dueDate>> OK
+<<select account, payment
+ from Account as account
+ join account.holder.users as user
+ left outer join account.payments as payment
+ where :currentUser = user
+ and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)
+ order by account.type.sortOrder, account.accountNumber, payment.dueDate>> OK
+//testExamples1
+"select new org.hibernate.test.S(s.count, s.address) from s in class Simple" OK
+"select s.name, sysdate, trunc(s.pay), round(s.pay) from s in class Simple" OK
+"select abs(round(s.pay)) from s in class Simple" OK
+"select trunc(round(sysdate)) from s in class Simple" OK
+//testMultipleActualParameters
+"select round(s.pay, 2) from s" OK
+//testMultipleFromClasses
+"from eg.mypackage.Cat qat, com.toadstool.Foo f" OK
+"from eg.mypackage.Cat qat, org.jabberwocky.Dipstick" OK
+//testFromWithJoin
+"from eg.mypackage.Cat qat, com.toadstool.Foo f join net.sf.blurb.Blurb" OK
+"from eg.mypackage.Cat qat left join com.multijoin.JoinORama , com.toadstool.Foo f join net.sf.blurb.Blurb" OK
+//testSelect
+"select f from eg.mypackage.Cat qat, com.toadstool.Foo f join net.sf.blurb.Blurb" OK
+"select distinct bar from eg.mypackage.Cat qat left join com.multijoin.JoinORama as bar, com.toadstool.Foo f join net.sf.blurb.Blurb" OK
+"select count(*) from eg.mypackage.Cat qat" OK
+"select avg(qat.weight) from eg.mypackage.Cat qat" OK
+//testWhere
+"from eg.mypackage.Cat qat where qat.name like '%fluffy%' or qat.toes > 5" OK
+"from eg.mypackage.Cat qat where not qat.name like '%fluffy%' or qat.toes > 5" OK
+"from eg.mypackage.Cat qat where not qat.name not like '%fluffy%'" OK
+"from eg.mypackage.Cat qat where qat.name in ('crater','bean','fluffy')" OK
+"from eg.mypackage.Cat qat where qat.name not in ('crater','bean','fluffy')" OK
+//testGroupBy
+"from eg.mypackage.Cat qat group by qat.breed" OK
+"from eg.mypackage.Cat qat group by qat.breed, qat.eyecolor" OK
+//testOrderBy
+"from eg.mypackage.Cat qat order by avg(qat.toes)" OK
+"from Animal an order by sqrt(an.bodyWeight)/2" OK
+//testDoubleLiteral
+"from eg.Cat as tinycat where fatcat.weight < 3.1415" OK
+"from eg.Cat as enormouscat where fatcat.weight > 3.1415e3" OK
+//testComplexConstructor
+"select new Foo(count(bar)) from bar" OK
+"select new Foo(count(bar),(select count(*) from doofus d where d.gob = 'fat' )) from bar" OK
+//testInNotIn
+"from foo where foo.bar in ('a' , 'b', 'c')" OK
+"from foo where foo.bar not in ('a' , 'b', 'c')" OK
+//testOperatorPrecedence
+"from foo where foo.bar = 123 + foo.baz * foo.not" OK
+"from foo where foo.bar like 'testzzz' || foo.baz or foo.bar in ('duh', 'gob')" OK
+//testUnitTestHql
+"select foo from foo in class org.hibernate.test.Foo, fee in class org.hibernate.test.Fee where foo.dependent = fee order by foo.string desc, foo.component.count asc, fee.id" OK
+"select foo.foo, foo.dependent from foo in class org.hibernate.test.Foo order by foo.foo.string desc, foo.component.count asc, foo.dependent.id" OK
+"select foo from foo in class org.hibernate.test.Foo order by foo.dependent.id, foo.dependent.fi" OK
+"select one from one in class org.hibernate.test.One order by one.value asc" OK
+"select many.one from many in class org.hibernate.test.Many order by many.one.value asc, many.one.id" OK
+"select foo.id from org.hibernate.test.Foo foo where foo.joinedProp = 'foo'" OK
+"from org.hibernate.test.Foo foo inner join fetch foo.foo" OK
+"from org.hibernate.test.Baz baz left outer join fetch baz.fooToGlarch" OK
+"select foo.foo.foo.string from foo in class org.hibernate.test.Foo where foo.foo = 'bar'" OK
+"select foo.foo.foo.foo.string from foo in class org.hibernate.test.Foo where foo.foo.foo = 'bar'" OK
+"select foo.foo.foo.string from foo in class org.hibernate.test.Foo where foo.foo.foo.foo.string = 'bar'" OK
+"select foo.string from foo in class org.hibernate.test.Foo where foo.foo.foo = 'bar' and foo.foo.foo.foo = 'baz'" OK
+"select foo.string from foo in class org.hibernate.test.Foo where foo.foo.foo.foo.string = 'a' and foo.foo.string = 'b'" OK
+"from org.hibernate.test.Foo as foo where foo.component.glarch.name is not null" OK
+"from org.hibernate.test.Foo as foo left outer join foo.component.glarch as glarch where glarch.name = 'foo'" OK
+"from org.hibernate.test.Foo" OK
+"from org.hibernate.test.Foo foo left outer join foo.foo" OK
+"from org.hibernate.test.Foo, org.hibernate.test.Bar" OK
+"from org.hibernate.test.Baz baz left join baz.fooToGlarch, org.hibernate.test.Bar bar join bar.foo" OK
+"from org.hibernate.test.Baz baz left join baz.fooToGlarch join baz.fooSet" OK
+"from org.hibernate.test.Baz baz left join baz.fooToGlarch join fetch baz.fooSet foo left join fetch foo.foo" OK
+"from foo in class org.hibernate.test.Foo where foo.string='osama bin laden' and foo.boolean = true order by foo.string asc, foo.component.count desc" OK
+"from foo in class org.hibernate.test.Foo where foo.string='osama bin laden' order by foo.string asc, foo.component.count desc" OK
+"select foo.foo from foo in class org.hibernate.test.Foo" OK
+"from foo in class org.hibernate.test.Foo where foo.component.count is null order by foo.component.count" OK
+"from foo in class org.hibernate.test.Foo where foo.component.name='foo'" OK
+"select distinct foo.component.name, foo.component.name from foo in class org.hibernate.test.Foo where foo.component.name='foo'" OK
+"select distinct foo.component.name, foo.id from foo in class org.hibernate.test.Foo where foo.component.name='foo'" OK
+"from foo in class org.hibernate.test.Foo where foo.id=?" OK
+"from foo in class org.hibernate.test.Foo where foo.key=?" OK
+"select foo.foo from foo in class org.hibernate.test.Foo where foo.string='fizard'" OK
+"from foo in class org.hibernate.test.Foo where foo.component.subcomponent.name='bar'" OK
+"select foo.foo from foo in class org.hibernate.test.Foo where foo.foo.id=?" OK
+"from foo in class org.hibernate.test.Foo where foo.foo = ?" OK
+"from bar in class org.hibernate.test.Bar where bar.string='a string' or bar.string='a string'" OK
+"select foo.component.name, elements(foo.component.importantDates) from foo in class org.hibernate.test.Foo where foo.foo.id=?" OK
+"select max(elements(foo.component.importantDates)) from foo in class org.hibernate.test.Foo group by foo.id" OK
+"select foo.foo.foo.foo from foo in class org.hibernate.test.Foo, foo2 in class org.hibernate.test.Foo where foo = foo2.foo and not not ( not foo.string='fizard' ) and foo2.string between 'a' and (foo.foo.string) and ( foo2.string in ( 'fiz', 'blah') or 1=1 )" OK
+"from foo in class org.hibernate.test.Foo where foo.string='from BoogieDown -tinsel town =!@#$^&*())'" OK
+"from foo in class org.hibernate.test.Foo where not foo.string='foo''bar'" OK
+"from foo in class org.hibernate.test.Foo where foo.component.glarch.next is null" OK
+"from bar in class org.hibernate.test.Bar where bar.baz.count=667 and bar.baz.count!=123 and not bar.baz.name='1-E-1'" OK
+"from i in class org.hibernate.test.Bar where i.baz.name='Bazza'" OK
+"select count(distinct foo.foo) from foo in class org.hibernate.test.Foo" OK
+"select count(foo.foo.boolean) from foo in class org.hibernate.test.Foo" OK
+"select count(*), foo.int from foo in class org.hibernate.test.Foo group by foo.int" OK
+"select sum(foo.foo.int) from foo in class org.hibernate.test.Foo" OK
+"select count(foo) from foo in class org.hibernate.test.Foo where foo.id=?" OK
+"from foo in class org.hibernate.test.Foo where foo.boolean = ?" OK
+"select new Foo(fo.x) from org.hibernate.test.Fo fo" OK
+"select new Foo(fo.integer) from org.hibernate.test.Foo fo" OK
+"select new Foo(fo.x) from org.hibernate.test.Foo fo" OK
+"select foo.long, foo.component.name, foo, foo.foo from foo in class org.hibernate.test.Foo" OK
+"select avg(foo.float), max(foo.component.name), count(distinct foo.id) from foo in class org.hibernate.test.Foo" OK
+"select foo.long, foo.component, foo, foo.foo from foo in class org.hibernate.test.Foo" OK
+"from o in class org.hibernate.test.MoreStuff" OK
+"from o in class org.hibernate.test.Many" OK
+"from o in class org.hibernate.test.Fee" OK
+"from o in class org.hibernate.test.Qux" OK
+"from o in class org.hibernate.test.Y" OK
+"from o in class org.hibernate.test.Fumm" OK
+"from o in class org.hibernate.test.X" OK
+"from o in class org.hibernate.test.Simple" OK
+"from o in class org.hibernate.test.Location" OK
+"from o in class org.hibernate.test.Holder" OK
+"from o in class org.hibernate.test.Part" OK
+"from o in class org.hibernate.test.Baz" OK
+"from o in class org.hibernate.test.Vetoer" OK
+"from o in class org.hibernate.test.Sortable" OK
+"from o in class org.hibernate.test.Contained" OK
+"from o in class org.hibernate.test.Stuff" OK
+"from o in class org.hibernate.test.Immutable" OK
+"from o in class org.hibernate.test.Container" OK
+"from o in class org.hibernate.test.X$XX" OK
+"from o in class org.hibernate.test.One" OK
+"from o in class org.hibernate.test.Foo" OK
+"from o in class org.hibernate.test.Fo" OK
+"from o in class org.hibernate.test.Glarch" OK
+"from o in class org.hibernate.test.Fum" OK
+"from n in class org.hibernate.test.Holder" OK
+"from n in class org.hibernate.test.Baz" OK
+"from n in class org.hibernate.test.Bar" OK
+"from n in class org.hibernate.test.Glarch" OK
+"from n in class org.hibernate.test.Holder where n.name is not null" OK
+"from n in class org.hibernate.test.Baz where n.name is not null" OK
+"from n in class org.hibernate.test.Bar where n.name is not null" OK
+"from n in class org.hibernate.test.Glarch where n.name is not null" OK
+"from n0 in class org.hibernate.test.Holder, n1 in class org.hibernate.test.Holder where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Baz, n1 in class org.hibernate.test.Holder where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Bar, n1 in class org.hibernate.test.Holder where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Glarch, n1 in class org.hibernate.test.Holder where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Holder, n1 in class org.hibernate.test.Baz where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Baz, n1 in class org.hibernate.test.Baz where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Bar, n1 in class org.hibernate.test.Baz where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Glarch, n1 in class org.hibernate.test.Baz where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Holder, n1 in class org.hibernate.test.Bar where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Baz, n1 in class org.hibernate.test.Bar where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Bar, n1 in class org.hibernate.test.Bar where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Glarch, n1 in class org.hibernate.test.Bar where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Holder, n1 in class org.hibernate.test.Glarch where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Baz, n1 in class org.hibernate.test.Glarch where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Bar, n1 in class org.hibernate.test.Glarch where n0.name = n1.name" OK
+"from n0 in class org.hibernate.test.Glarch, n1 in class org.hibernate.test.Glarch where n0.name = n1.name" OK
+"from n in class org.hibernate.test.Holder where n.name = :name" OK
+"select baz.code, min(baz.count) from baz in class org.hibernate.test.Baz group by baz.code" OK
+"selecT baz from baz in class org.hibernate.test.Baz where baz.stringDateMap['foo'] is not null or baz.stringDateMap['bar'] = ?" OK
+"select baz from baz in class org.hibernate.test.Baz where baz.stringDateMap['now'] is not null" OK
+"select baz from baz in class org.hibernate.test.Baz where baz.stringDateMap['now'] is not null and baz.stringDateMap['big bang'] < baz.stringDateMap['now']" OK
+"select index(date) from org.hibernate.test.Baz baz join baz.stringDateMap as date" OK
+"select index(date) from org.hibernate.test.Baz baz join baz.stringDateMap date" OK
+"from foo in class org.hibernate.test.Foo where foo.integer not between 1 and 5 and foo.string not in ('cde', 'abc') and foo.string is not null and foo.integer<=3" OK
+"from org.hibernate.test.Baz baz inner join baz.collectionComponent.nested.foos foo where foo.string is null" OK
+"from org.hibernate.test.Baz baz inner join baz.fooSet where '1' in (from baz.fooSet foo where foo.string is not null)" OK
+"from org.hibernate.test.Baz baz where 'a' in elements(baz.collectionComponent.nested.foos) and 1.0 in elements(baz.collectionComponent.nested.floats)" OK
+"from org.hibernate.test.Foo foo join foo.foo where foo.foo in ('1','2','3')" OK
+"select foo.foo from org.hibernate.test.Foo foo where foo.foo in ('1','2','3')" OK
+"select foo.foo.string from org.hibernate.test.Foo foo where foo.foo in ('1','2','3')" OK
+"select foo.foo.string from org.hibernate.test.Foo foo where foo.foo.string in ('1','2','3')" OK
+"select foo.foo.long from org.hibernate.test.Foo foo where foo.foo.string in ('1','2','3')" OK
+"select count(*) from org.hibernate.test.Foo foo where foo.foo.string in ('1','2','3') or foo.foo.long in (1,2,3)" OK
+"select count(*) from org.hibernate.test.Foo foo where foo.foo.string in ('1','2','3') group by foo.foo.long" OK
+"from org.hibernate.test.Foo foo1 left join foo1.foo foo2 left join foo2.foo where foo1.string is not null" OK
+"from org.hibernate.test.Foo foo1 left join foo1.foo.foo where foo1.string is not null" OK
+"from org.hibernate.test.Foo foo1 left join foo1.foo foo2 left join foo1.foo.foo foo3 where foo1.string is not null" OK
+"select foo.formula from org.hibernate.test.Foo foo where foo.formula > 0" OK
+"from org.hibernate.test.Foo as foo join foo.foo as foo2 where foo2.id >'a' or foo2.id <'a'" OK
+"from org.hibernate.test.Holder" OK
+"from org.hibernate.test.Baz baz left outer join fetch baz.manyToAny" OK
+"from org.hibernate.test.Baz baz join baz.manyToAny" OK
+"select baz from org.hibernate.test.Baz baz join baz.manyToAny a where index(a) = 0" OK
+"select bar from org.hibernate.test.Bar bar where bar.baz.stringDateMap['now'] is not null" OK
+"select bar from org.hibernate.test.Bar bar join bar.baaz b where b.stringDateMap['big bang'] < b.stringDateMap['now'] and b.stringDateMap['now'] is not null" OK
+"select bar from org.hibernate.test.Bar bar where bar.baz.stringDateMap['big bang'] < bar.baz.stringDateMap['now'] and bar.baz.stringDateMap['now'] is not null" OK
+"select foo.string, foo.component, foo.id from org.hibernate.test.Bar foo" OK
+"select elements(baz.components) from org.hibernate.test.Baz baz" OK
+"select bc.name from org.hibernate.test.Baz baz join baz.components bc" OK
+"from org.hibernate.test.Foo foo where foo.integer < 10 order by foo.string" OK
+"from org.hibernate.test.Fee" OK
+"from org.hibernate.test.Holder h join h.otherHolder oh where h.otherHolder.name = 'bar'" OK
+"from org.hibernate.test.Baz baz join baz.fooSet foo join foo.foo.foo foo2 where foo2.string = 'foo'" OK
+"from org.hibernate.test.Baz baz join baz.fooArray foo join foo.foo.foo foo2 where foo2.string = 'foo'" OK
+"from org.hibernate.test.Baz baz join baz.stringDateMap date where index(date) = 'foo'" OK
+"from org.hibernate.test.Baz baz join baz.topGlarchez g where index(g) = 'A'" OK
+"select index(g) from org.hibernate.test.Baz baz join baz.topGlarchez g" OK
+"from org.hibernate.test.Baz baz left join baz.stringSet" OK
+"from org.hibernate.test.Baz baz join baz.stringSet str where str='foo'" OK
+"from org.hibernate.test.Baz baz left join fetch baz.stringSet" OK
+"from org.hibernate.test.Baz baz join baz.stringSet string where string='foo'" OK
+"from org.hibernate.test.Baz baz inner join baz.components comp where comp.name='foo'" OK
+"from org.hibernate.test.Glarch g inner join g.fooComponents comp where comp.fee is not null" OK
+"from org.hibernate.test.Glarch g inner join g.fooComponents comp join comp.fee fee where fee.count > 0" OK
+"from org.hibernate.test.Glarch g inner join g.fooComponents comp where comp.fee.count is not null" OK
+"from org.hibernate.test.Baz baz left join fetch baz.fooBag" OK
+"from org.hibernate.test.Glarch" OK
+"from org.hibernate.test.Baz baz left join fetch baz.sortablez order by baz.name asc" OK
+"from org.hibernate.test.Baz baz order by baz.name asc" OK
+"from org.hibernate.test.Foo foo, org.hibernate.test.Baz baz left join fetch baz.fees" OK
+"from org.hibernate.test.Foo foo, org.hibernate.test.Bar bar" OK
+"from org.hibernate.test.Foo foo" OK
+"from org.hibernate.test.Foo foo, org.hibernate.test.Bar bar, org.hibernate.test.Bar bar2" OK
+"from org.hibernate.test.X x" OK
+"select distinct foo from org.hibernate.test.Foo foo" OK
+"from org.hibernate.test.Glarch g where g.multiple.glarch=g and g.multiple.count=12" OK
+"from org.hibernate.test.Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like 'Bar %'" OK
+"select bar, b from org.hibernate.test.Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like 'Bar%'" OK
+"select bar, b from org.hibernate.test.Bar bar left join bar.baz baz left join baz.cascadingBars b where ( bar.name in (:nameList0_, :nameList1_, :nameList2_) or bar.name in (:nameList0_, :nameList1_, :nameList2_) ) and bar.string = :stringVal" OK
+"select bar, b from org.hibernate.test.Bar bar inner join bar.baz baz inner join baz.cascadingBars b where bar.name like 'Bar%'" OK
+"select bar, b from org.hibernate.test.Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like :name and b.name like :name" OK
+"select bar from org.hibernate.test.Bar as bar where bar.x > ? or bar.short = 1 or bar.string = 'ff ? bb'" OK
+"select bar from org.hibernate.test.Bar as bar where bar.string = ' ? ' or bar.string = '?'" OK
+"from org.hibernate.test.Baz baz, baz.fooArray foo" OK
+"from s in class org.hibernate.test.Stuff where s.foo.id = ? and s.id.id = ? and s.moreStuff.id.intId = ? and s.moreStuff.id.stringId = ?" OK
+"from s in class org.hibernate.test.Stuff where s.foo.id = ? and s.id.id = ? and s.moreStuff.name = ?" OK
+"from s in class org.hibernate.test.Stuff where s.foo.string is not null" OK
+"from s in class org.hibernate.test.Stuff where s.foo > '0' order by s.foo" OK
+"from ms in class org.hibernate.test.MoreStuff" OK
+"from fee in class org.hibernate.test.Fee" OK
+"select new Result(foo.string, foo.long, foo.integer) from foo in class org.hibernate.test.Foo" OK
+"select new Result( baz.name, foo.long, count(elements(baz.fooArray)) ) from org.hibernate.test.Baz baz join baz.fooArray foo group by baz.name, foo.long" OK
+"select new Result( baz.name, max(foo.long), count(foo) ) from org.hibernate.test.Baz baz join baz.fooArray foo group by baz.name" OK
+"select max( elements(bar.baz.fooArray) ) from org.hibernate.test.Bar as bar" OK
+"from org.hibernate.test.Baz baz left join baz.fooToGlarch join fetch baz.fooArray foo left join fetch foo.foo" OK
+"select baz.name from org.hibernate.test.Bar bar inner join bar.baz baz inner join baz.fooSet foo where baz.name = bar.string" OK
+"SELECT baz.name FROM org.hibernate.test.Bar AS bar INNER JOIN bar.baz AS baz INNER JOIN baz.fooSet AS foo WHERE baz.name = bar.string" OK
+"select baz.name from org.hibernate.test.Bar bar join bar.baz baz left outer join baz.fooSet foo where baz.name = bar.string" OK
+"select baz.name from org.hibernate.test.Bar bar, bar.baz baz, baz.fooSet foo where baz.name = bar.string" OK
+"SELECT baz.name FROM org.hibernate.test.Bar AS bar, bar.baz AS baz, baz.fooSet AS foo WHERE baz.name = bar.string" OK
+"select baz.name from org.hibernate.test.Bar bar left join bar.baz baz left join baz.fooSet foo where baz.name = bar.string" OK
+"select foo.string from org.hibernate.test.Bar bar left join bar.baz.fooSet foo where bar.string = foo.string" OK
+"select baz.name from org.hibernate.test.Bar bar left join bar.baz baz left join baz.fooArray foo where baz.name = bar.string" OK
+"select foo.string from org.hibernate.test.Bar bar left join bar.baz.fooArray foo where bar.string = foo.string" OK
+"select foo from bar in class org.hibernate.test.Bar inner join bar.baz as baz inner join baz.fooSet as foo" OK
+"select foo from bar in class org.hibernate.test.Bar inner join bar.baz.fooSet as foo" OK
+"select foo from bar in class org.hibernate.test.Bar, bar.baz as baz, baz.fooSet as foo" OK
+"select foo from bar in class org.hibernate.test.Bar, bar.baz.fooSet as foo" OK
+"from org.hibernate.test.Bar bar join bar.baz.fooArray foo" OK
+"from bar in class org.hibernate.test.Bar, foo in elements( bar.baz.fooArray )" OK
+"select one.id, elements(one.manies) from one in class org.hibernate.test.One" OK
+"select max( elements(one.manies) ) from one in class org.hibernate.test.One" OK
+"select one, elements(one.manies) from one in class org.hibernate.test.One" OK
+"select one, max(elements(one.manies)) from one in class org.hibernate.test.One group by one" OK
+"select elements(baz.fooArray) from baz in class org.hibernate.test.Baz where baz.id=?" OK
+"select indices(baz.fooArray) from baz in class org.hibernate.test.Baz where baz.id=?" OK
+"select baz, max(elements(baz.timeArray)) from baz in class org.hibernate.test.Baz group by baz" OK
+"select baz, baz.stringSet.size, count(distinct elements(baz.stringSet)), max(elements(baz.stringSet)) from baz in class org.hibernate.test.Baz group by baz" OK
+"select max( elements(baz.timeArray) ) from baz in class org.hibernate.test.Baz where baz.id=?" OK
+"select max(elements(baz.stringSet)) from baz in class org.hibernate.test.Baz where baz.id=?" OK
+"select size(baz.stringSet) from baz in class org.hibernate.test.Baz where baz.id=?" OK
+"from org.hibernate.test.Foo foo where foo.component.glarch.id is not null" OK
+"from baz in class org.hibernate.test.Baz" OK
+"select elements(baz.stringArray) from baz in class org.hibernate.test.Baz" OK
+"select elements(baz.stringList) from baz in class org.hibernate.test.Baz" OK
+"select count(*) from org.hibernate.test.Bar" OK
+"select count(*) from b in class org.hibernate.test.Bar" OK
+"from g in class org.hibernate.test.Glarch" OK
+"select baz, baz from baz in class org.hibernate.test.Baz" OK
+"select baz from baz in class org.hibernate.test.Baz order by baz" OK
+"from bar in class org.hibernate.test.Bar" OK
+"from f in class org.hibernate.test.Foo" OK
+"from q in class org.hibernate.test.Qux" OK
+"select foo from foo in class org.hibernate.test.Foo where foo.string='foo bar'" OK
+"from foo in class org.hibernate.test.Foo order by foo.string, foo.date" OK
+"from foo in class org.hibernate.test.Foo where foo.class='B'" OK
+"from foo in class org.hibernate.test.Foo where foo.class=Bar" OK
+"select bar from bar in class org.hibernate.test.Bar, foo in class org.hibernate.test.Foo where bar.string = foo.string and not bar=foo" OK
+"from foo in class org.hibernate.test.Foo where foo.string='foo bar'" OK
+"select foo from foo in class org.hibernate.test.Foo" OK
+"from bar in class org.hibernate.test.Bar where bar.barString='bar bar'" OK
+"from t in class org.hibernate.test.Trivial" OK
+"from foo in class org.hibernate.test.Foo where foo.date = ?" OK
+"from q in class org.hibernate.test.Qux where q.stuff is null" OK
+"from q in class org.hibernate.test.Qux where q.stuff=?" OK
+"from g in class org.hibernate.test.Glarch where g.version=2" OK
+"from g in class org.hibernate.test.Glarch where g.next is not null" OK
+"from g in class org.hibernate.test.Glarch order by g.order asc" OK
+"from foo in class org.hibernate.test.Foo order by foo.string asc" OK
+"select parent, child from parent in class org.hibernate.test.Foo, child in class org.hibernate.test.Foo where parent.foo = child" OK
+"select count(distinct child.id), count(distinct parent.id) from parent in class org.hibernate.test.Foo, child in class org.hibernate.test.Foo where parent.foo = child" OK
+"select child.id, parent.id, child.long from parent in class org.hibernate.test.Foo, child in class org.hibernate.test.Foo where parent.foo = child" OK
+"select child.id, parent.id, child.long, child, parent.foo from parent in class org.hibernate.test.Foo, child in class org.hibernate.test.Foo where parent.foo = child" OK
+"select parent, child from parent in class org.hibernate.test.Foo, child in class org.hibernate.test.Foo where parent.foo = child and parent.string='a string'" OK
+"from org.hibernate.test.Foo foo where foo.custom.s1 = 'one'" OK
+"from im in class org.hibernate.test.Immutable where im = ?" OK
+"from foo in class org.hibernate.test.Foo where foo.char='X'" OK
+"select distinct elements(baz.stringArray) from baz in class org.hibernate.test.Baz" OK
+"select elements(baz.fooArray) from baz in class org.hibernate.test.Baz" OK
+"from foo in class org.hibernate.test.Fo" OK
+"from foo in class org.hibernate.test.Foo where foo.dependent.qux.foo.string = 'foo2'" OK
+"from org.hibernate.test.Bar bar where bar.object.id = ? and bar.object.class = ?" OK
+"select one from org.hibernate.test.One one, org.hibernate.test.Bar bar where bar.object.id = one.id and bar.object.class = 'O'" OK
+"from l in class org.hibernate.test.Location where l.countryCode = 'AU' and l.description='foo bar'" OK
+"from org.hibernate.test.Bar bar" OK
+"From org.hibernate.test.Bar bar" OK
+"From org.hibernate.test.Foo foo" OK
+"select fum.id from fum in class org.hibernate.test.Fum where not fum.fum='FRIEND'" OK
+"from fum in class org.hibernate.test.Fum where not fum.fum='FRIEND'" OK
+"from fo in class org.hibernate.test.Fo where fo.id.string like 'an instance of fo'" OK
+"from org.hibernate.test.Outer o where o.id.detailId = ?" OK
+"from org.hibernate.test.Outer o where o.id.master.id.sup.dudu is not null" OK
+"from org.hibernate.test.Outer o where o.id.master.id.sup.id.akey is not null" OK
+"select o.id.master.id.sup.dudu from org.hibernate.test.Outer o where o.id.master.id.sup.dudu is not null" OK
+"select o.id.master.id.sup.id.akey from org.hibernate.test.Outer o where o.id.master.id.sup.id.akey is not null" OK
+"from org.hibernate.test.Outer o where o.id.master.bla = ''" OK
+"from org.hibernate.test.Outer o where o.id.master.id.one = ''" OK
+"from org.hibernate.test.Inner inn where inn.id.bkey is not null and inn.backOut.id.master.id.sup.id.akey > 'a'" OK
+"from org.hibernate.test.Outer as o left join o.id.master m left join m.id.sup where o.bubu is not null" OK
+"from org.hibernate.test.Outer as o left join o.id.master.id.sup s where o.bubu is not null" OK
+"from org.hibernate.test.Outer as o left join o.id.master m left join o.id.master.id.sup s where o.bubu is not null" OK
+"select fum1.fo from fum1 in class org.hibernate.test.Fum where fum1.fo.fum is not null" OK
+"from fum1 in class org.hibernate.test.Fum where fum1.fo.fum is not null order by fum1.fo.fum" OK
+"select elements(fum1.friends) from fum1 in class org.hibernate.test.Fum" OK
+"from fum1 in class org.hibernate.test.Fum, fr in elements( fum1.friends )" OK
+"select new Jay(eye) from org.hibernate.test.Eye eye" OK
+"from org.hibernate.test.Category cat where cat.name='new foo'" OK
+"from org.hibernate.test.Category cat where cat.name='new sub'" OK
+"from org.hibernate.test.Up up order by up.id2 asc" OK
+"from org.hibernate.test.Down down" OK
+"from org.hibernate.test.Up up" OK
+"from m in class org.hibernate.test.Master" OK
+"from s in class org.hibernate.test.Several" OK
+"from s in class org.hibernate.test.Single" OK
+"from d in class org.hibernate.test.Detail" OK
+"from c in class org.hibernate.test.Category where c.name = org.hibernate.test.Category.ROOT_CATEGORY" OK
+"select c from c in class org.hibernate.test.Container, s in class org.hibernate.test.Simple where c.oneToMany[2] = s" OK
+"select c from c in class org.hibernate.test.Container, s in class org.hibernate.test.Simple where c.manyToMany[2] = s" OK
+"select c from c in class org.hibernate.test.Container, s in class org.hibernate.test.Simple where s = c.oneToMany[2]" OK
+"select c from c in class org.hibernate.test.Container, s in class org.hibernate.test.Simple where s = c.manyToMany[2]" OK
+"select c from c in class org.hibernate.test.Container where c.oneToMany[0].name = 's'" OK
+"select c from c in class org.hibernate.test.Container where c.manyToMany[0].name = 's'" OK
+"select c from c in class org.hibernate.test.Container where 's' = c.oneToMany[2 - 2].name" OK
+"select c from c in class org.hibernate.test.Container where 's' = c.manyToMany[(3+1)/4-1].name" OK
+"select c from c in class org.hibernate.test.Container where c.manyToMany[ maxindex(c.manyToMany) ].count = 2" OK
+"select c from c in class org.hibernate.test.Container where c.oneToMany[ c.manyToMany[0].count ].name = 's'" OK
+"select c from org.hibernate.test.Container c where c.manyToMany[ c.oneToMany[0].count ].name = 's'" OK
+"select count(comp.name) from org.hibernate.test.Container c join c.components comp" OK
+"from org.hibernate.test.Parent p left join fetch p.child" OK
+"from org.hibernate.test.Parent p join p.child c where c.x > 0" OK
+"from org.hibernate.test.Child c join c.parent p where p.x > 0" OK
+"from org.hibernate.test.Child" OK
+"from org.hibernate.test.MoreStuff" OK
+"from org.hibernate.test.Many" OK
+"from org.hibernate.test.Qux" OK
+"from org.hibernate.test.Fumm" OK
+"from org.hibernate.test.Parent" OK
+"from org.hibernate.test.Simple" OK
+"from org.hibernate.test.Part" OK
+"from org.hibernate.test.Baz" OK
+"from org.hibernate.test.Vetoer" OK
+"from org.hibernate.test.Sortable" OK
+"from org.hibernate.test.Contained" OK
+"from org.hibernate.test.Circular" OK
+"from org.hibernate.test.Stuff" OK
+"from org.hibernate.test.Immutable" OK
+"from org.hibernate.test.Container" OK
+"from org.hibernate.test.One" OK
+"from org.hibernate.test.Fo" OK
+"from org.hibernate.test.Glarch" OK
+"from org.hibernate.test.Fum" OK
+"from org.hibernate.test.Glarch g" OK
+"from org.hibernate.test.Baz baz join baz.parts" OK
+"from c in class org.hibernate.test.Child where c.parent.count=66" OK
+"from org.hibernate.test.Parent p join p.child c where p.count=66" OK
+"select c, c.parent from c in class org.hibernate.test.Child order by c.parent.count" OK
+"select c, c.parent from c in class org.hibernate.test.Child where c.parent.count=66 order by c.parent.count" OK
+"select c, c.parent, c.parent.count from c in class org.hibernate.test.Child order by c.parent.count" OK
+"FROM p IN class org.hibernate.test.Parent WHERE p.count = ?" OK
+"select count(*) from org.hibernate.test.Container as c join c.components as ce join ce.simple as s where ce.name='foo'" OK
+"select c, s from org.hibernate.test.Container as c join c.components as ce join ce.simple as s where ce.name='foo'" OK
+"from s in class org.hibernate.test.Simple" OK
+"from m in class org.hibernate.test.Many" OK
+"from c in class org.hibernate.test.Container" OK
+"from o in class org.hibernate.test.Child" OK
+"from o in class org.hibernate.test.Parent" OK
+"from o in class org.hibernate.test.Circular" OK
+"from c in class org.hibernate.test.C2 where 1=1 or 1=1" OK
+"from b in class org.hibernate.test.B" OK
+"from a in class org.hibernate.test.A" OK
+"from org.hibernate.test.E e join e.reverse as b where b.count=1" OK
+"from org.hibernate.test.E e join e.as as b where b.count=1" OK
+"from org.hibernate.test.B" OK
+"from org.hibernate.test.C1" OK
+"from org.hibernate.test.C2" OK
+"from org.hibernate.test.E e, org.hibernate.test.A a where e.reverse = a.forward and a = ?" OK
+"from org.hibernate.test.E e join fetch e.reverse" OK
+"from org.hibernate.test.E e" OK
+"select max(s.count) from s in class org.hibernate.test.Simple" OK
+"select new org.hibernate.test.S(s.count, s.address) from s in class org.hibernate.test.Simple" OK
+"select count(*) from s in class org.hibernate.test.Simple" OK
+"from s in class org.hibernate.test.Simple where s.name=:name and s.count=:count" OK
+"from s in class org.hibernate.test.Simple where s.name in (:several0_, :several1_)" OK
+"from s in class org.hibernate.test.Simple where s.name in (:stuff0_, :stuff1_)" OK
+"from org.hibernate.test.Simple s where s.name=?" OK
+"from org.hibernate.test.Simple s where s.name=:name" OK
+"from s in class org.hibernate.test.Simple where upper( s.name ) ='SIMPLE 1'" OK
+"from s in class org.hibernate.test.Simple where not( upper( s.name ) ='yada' or 1=2 or 'foo'='bar' or not('foo'='foo') or 'foo' like 'bar' )" OK
+"from s in class org.hibernate.test.Simple where lower( s.name || ' foo' ) ='simple 1 foo'" OK
+"from s in class org.hibernate.test.Simple where upper( s.other.name ) ='SIMPLE 2'" OK
+"from s in class org.hibernate.test.Simple where not ( upper( s.other.name ) ='SIMPLE 2' )" OK
+"select distinct s from s in class org.hibernate.test.Simple where ( ( s.other.count + 3 ) = (15*2)/2 and s.count = 69) or ( ( s.other.count + 2 ) / 7 ) = 2" OK
+"select s from s in class org.hibernate.test.Simple where ( ( s.other.count + 3 ) = (15*2)/2 and s.count = 69) or ( ( s.other.count + 2 ) / 7 ) = 2 order by s.other.count" OK
+"select sum(s.count) from s in class org.hibernate.test.Simple group by s.count having sum(s.count) > 10" OK
+"select s.count from s in class org.hibernate.test.Simple group by s.count having s.count = 12" OK
+"select s.id, s.count, count(t), max(t.date) from s in class org.hibernate.test.Simple, t in class org.hibernate.test.Simple where s.count = t.count group by s.id, s.count order by s.count" OK
+"from s in class org.hibernate.test.Simple where s.name = ?" OK
+"from s in class org.hibernate.test.Simple where s.name = ? and upper(s.name) = ?" OK
+"from s in class org.hibernate.test.Simple where s.name = :foo and upper(s.name) = :bar or s.count=:count or s.count=:count + 1" OK
+"select s.id from s in class org.hibernate.test.Simple" OK
+"select all s, s.other from s in class org.hibernate.test.Simple where s = :s" OK
+"from s in class org.hibernate.test.Simple where s.name in (:name_list0_, :name_list1_) and s.count > :count" OK
+"from org.hibernate.test.Simple s" OK
+"from org.hibernate.test.Assignable" OK
+"from org.hibernate.test.Category" OK
+"from org.hibernate.test.A" OK
+"from foo in class org.hibernate.test.Foo where foo.string=?" OK
+"from foo in class org.hibernate.test.Foo" OK
+"from org.hibernate.test.Po po, org.hibernate.test.Lower low where low.mypo = po" OK
+"from org.hibernate.test.Po po join po.set as sm where sm.amount > 0" OK
+"from org.hibernate.test.Po po join po.top as low where low.foo = 'po'" OK
+"from org.hibernate.test.SubMulti sm join sm.children smc where smc.name > 'a'" OK
+"select s, ya from org.hibernate.test.Lower s join s.yetanother ya" OK
+"from org.hibernate.test.Lower s1 join s1.bag s2" OK
+"from org.hibernate.test.Lower s1 left join s1.bag s2" OK
+"select s, a from org.hibernate.test.Lower s join s.another a" OK
+"select s, a from org.hibernate.test.Lower s left join s.another a" OK
+"from org.hibernate.test.Top s, org.hibernate.test.Lower ls" OK
+"from org.hibernate.test.Lower ls join ls.set s where s.name > 'a'" OK
+"from org.hibernate.test.Po po join po.list sm where sm.name > 'a'" OK
+"from org.hibernate.test.Lower ls inner join ls.another s where s.name is not null" OK
+"from org.hibernate.test.Lower ls where ls.other.another.name is not null" OK
+"from org.hibernate.test.Multi m where m.derived like 'F%'" OK
+"from org.hibernate.test.SubMulti m where m.derived like 'F%'" OK
+"select s from org.hibernate.test.SubMulti as sm join sm.children as s where s.amount>-1 and s.name is null" OK
+"select elements(sm.children) from org.hibernate.test.SubMulti as sm" OK
+"select distinct sm from org.hibernate.test.SubMulti as sm join sm.children as s where s.amount>-1 and s.name is null" OK
+"select distinct s from s in class org.hibernate.test.SubMulti where s.moreChildren[1].amount < 1.0" OK
+"from s in class org.hibernate.test.TrivialClass where s.id = 2" OK
+"select s.count from s in class org.hibernate.test.Top" OK
+"from s in class org.hibernate.test.Lower where s.another.name='name'" OK
+"from s in class org.hibernate.test.Lower where s.yetanother.name='name'" OK
+"from s in class org.hibernate.test.Lower where s.yetanother.name='name' and s.yetanother.foo is null" OK
+"from s in class org.hibernate.test.Top where s.count=1" OK
+"select s.count from s in class org.hibernate.test.Top, ls in class org.hibernate.test.Lower where ls.another=s" OK
+"select elements(ls.bag), elements(ls.set) from ls in class org.hibernate.test.Lower" OK
+"from s in class org.hibernate.test.Lower" OK
+"from s in class org.hibernate.test.Top" OK
+"from sm in class org.hibernate.test.SubMulti" OK
+"select s from s in class org.hibernate.test.Top where s.count>0" OK
+"from m in class org.hibernate.test.Multi where m.count>0 and m.extraProp is not null" OK
+"from m in class org.hibernate.test.Top where m.count>0 and m.name is not null" OK
+"from m in class org.hibernate.test.Lower where m.other is not null" OK
+"from m in class org.hibernate.test.Multi where m.other.id = 1" OK
+"from m in class org.hibernate.test.SubMulti where m.amount > 0.0" OK
+"from m in class org.hibernate.test.Multi" OK
+"from m in class org.hibernate.test.Multi where m.class = SubMulti" OK
+"from m in class org.hibernate.test.Top where m.class = Multi" OK
+"from ls in class org.hibernate.test.Lower" OK
+"from ls in class org.hibernate.test.Lower, s in elements(ls.bag) where s.id is not null" OK
+"from ls in class org.hibernate.test.Lower, s in elements(ls.set) where s.id is not null" OK
+"from o in class org.hibernate.test.Top" OK
+"from o in class org.hibernate.test.Po" OK
+"from ChildMap cm where cm.parent is not null" OK
+"from ParentMap cm where cm.child is not null" OK
+"from org.hibernate.test.Componentizable" OK
+//testUnnamedParameter
+"select foo, bar from org.hibernate.test.Foo foo left outer join foo.foo bar where foo = ?" OK
+//testInElements
+"from bar in class org.hibernate.test.Bar, foo in elements(bar.baz.fooArray)" OK
+"from org.hibernate.test.Bar bar, foo in elements(bar.baz.fooArray)" OK
+//testDotElements
+"select distinct foo from baz in class org.hibernate.test.Baz, foo in elements(baz.fooArray)" OK
+"select foo from baz in class org.hibernate.test.Baz, foo in elements(baz.fooSet)" OK
+"select foo from baz in class org.hibernate.test.Baz, foo in elements(baz.fooArray)" OK
+"from org.hibernate.test.Baz baz where 'b' in elements(baz.collectionComponent.nested.foos) and 1.0 in elements(baz.collectionComponent.nested.floats)" OK
+//testNot
+"from eg.Cat cat where not ( cat.kittens.size < 1 )" OK
+"from eg.Cat cat where not ( cat.kittens.size > 1 )" OK
+"from eg.Cat cat where not ( cat.kittens.size >= 1 )" OK
+"from eg.Cat cat where not ( cat.kittens.size <= 1 )" OK
+"from eg.DomesticCat cat where not ( cat.name between 'A' and 'B' )" OK
+"from eg.DomesticCat cat where not ( cat.name not between 'A' and 'B' )" OK
+"from eg.Cat cat where not ( not cat.kittens.size <= 1 )" OK
+"from eg.Cat cat where not not ( not cat.kittens.size <= 1 )" OK
+//testOtherSyntax
+"select bar from org.hibernate.test.Bar bar order by ((bar.x - :valueX)*(bar.x - :valueX))" OK
+"from bar in class org.hibernate.test.Bar, foo in elements(bar.baz.fooSet)" OK
+"from one in class org.hibernate.test.One, many in elements(one.manies) where one.id = 1 and many.id = 1" OK
+"from org.hibernate.test.Inner _inner join _inner.middles middle" OK
+"FROM m IN class org.hibernate.test.Master WHERE NOT EXISTS ( FROM d IN elements(m.details) WHERE NOT d.i=5 )" OK
+"FROM m IN class org.hibernate.test.Master WHERE NOT 5 IN ( SELECT d.i FROM d IN elements(m.details) )" OK
+"SELECT m FROM m IN class org.hibernate.test.Master, d IN elements(m.details) WHERE d.i=5" OK
+"SELECT m.id FROM m IN class org.hibernate.test.Master, d IN elements(m.details) WHERE d.i=5" OK
+//I'm not sure about these... [jsd]
+//"select bar.string, foo.string from bar in class org.hibernate.test.Bar inner join bar.baz as baz inner join elements(baz.fooSet) as foo where baz.name = 'name'" OK
+//"select bar.string, foo.string from bar in class org.hibernate.test.Bar, bar.baz as baz, elements(baz.fooSet) as foo where baz.name = 'name'" OK
+//"select count(*) where this.amount>-1 and this.name is null" OK
+//"from sm in class org.hibernate.test.SubMulti where exists sm.children.elements" OK
+//testEjbqlExtensions
+"select object(a) from Animal a where a.mother member of a.offspring" OK
+"select object(a) from Animal a where a.offspring is empty" OK
+//testHB1042
+"select x from fmc_web.pool.Pool x left join x.containers c0 where (upper(x.name) = upper(':') and c0.id = 1)" OK
+//testKeywordInPath
+"from Customer c where c.order.status = 'argh'" OK
+"from Customer c where c.order.count > 3" OK
+"select c.where from Customer c where c.order.count > 3" OK
+"from Interval i where i.end <:end" OK
+"from Letter l where l.case = :case" OK
+//testPathologicalKeywordAsIdentifier
+"from Order order" OK
+"from Order order join order.group" OK
+"from X x order by x.group.by.from" OK
+"from Order x order by x.order.group.by.from" OK
+"select order.id from Order order" OK
+"select order from Order order" OK
+"from Order order where order.group.by.from is not null" OK
+"from Order order order by order.group.by.from" OK
+"from Group as group group by group.by.from" OK
+//testHHH354
+"from Foo f where f.full = 'yep'" OK
+//testWhereAsIdentifier
+"from where.Order" OK
+//testConstructorIn
+"from org.hibernate.test.Bar bar where (b.x, b.y, b.z) in (select foo, bar, baz from org.hibernate.test.Foo)" OK
+//testMultiByteCharacters
+"from User user where user.name like '%nn\u4e2dnn%'" OK
+//FIXME "from User user where user.\u432d like '%\u4e2d%'" OK
+//FIXME "from \u432d \u432d where \u432d.name like '%fred%'" OK
+//testHHH719
+"from Foo f order by com.fooco.SpecialFunction(f.id)" OK
+//testHHH1107
+"from Animal where zoo.address.street = '123 Bogus St.'" OK
+//testHHH1247
+"select distinct user.party from com.itf.iceclaims.domain.party.user.UserImpl user inner join user.party.$RelatedWorkgroups relatedWorkgroups where relatedWorkgroups.workgroup.id = :workgroup and relatedWorkgroups.effectiveTime.start <= :datesnow and relatedWorkgroups.effectiveTime.end > :dateenow " OK
+//testLineAndColumnNumber
+"from Foo f where f.name = 'fred'" OK
+//
+"from Animal a where a.bodyWeight = ?1" OK
+"select object(m) from Model m" OK
+"select o from Animal a inner join a.offspring o" OK
+"select object(o) from Animal a, in(a.offspring) o" OK
+"from Animal a where not exists elements(a.offspring)" OK
+"from Animal a where exists (from a.mother.father.offspring)" OK
+"select object(a) from Animal a where a.mother.father.offspring is not empty" OK
+"from Animal a where a.mother in (from a.offspring)" OK
+"from Animal a where a.mother not in (from a.offspring)" OK
+"select object(a) from Animal a where a.mother not member of a.offspring" OK
+"select object(a) from Animal a where a.description = concat('1', concat('2','3'), '4'||'5')||0" OK
+"from Animal a where substring(a.description, 1, 3) = :p1" OK
+"select substring(a.description, 1, 3) from Animal a" OK
+"from Animal a where lower(a.description) = :p1" OK
+"from Animal a where upper(a.description) = :p1" OK
+"from Animal a where length(a.description) = :p1" OK
+"select length(a.description) from Animal a" OK
+"from Animal a where locate(a.description, 'abc', 2) = :p1" OK
+"select locate(a.description, :p1, 2) from Animal a" OK
+"select object(a) from Animal a where trim(trailing '_' from a.description) = :p1" OK
+"select trim(trailing '_' from a.description) from Animal a" OK
+"select object(a) from Animal a where trim(leading '_' from a.description) = :p1" OK
+"select object(a) from Animal a where trim(a.description) = :p1" OK
+"select object(a) from Animal a where abs(a.bodyWeight) = sqrt(a.bodyWeight)" OK
+"select object(a) from Animal a where mod(a.bodyWeight, a.mother.bodyWeight) = :p1" OK
+"select object(a) from Animal a where BIT_LENGTH(a.bodyWeight) = :p1" OK
+"select BIT_LENGTH(a.bodyWeight) from Animal a" OK
+"select object(a) from Animal a where CURRENT_DATE = :p1 or CURRENT_TIME = :p2 or CURRENT_TIMESTAMP = :p3" OK
+"select object(a) from Animal a where a.bodyWeight like '%a%'" OK
+"select object(a) from Animal a where a.bodyWeight not like '%a%'" OK
+"select object(a) from Animal a where a.bodyWeight like '%a%' escape '%'" OK
+"from Human h where h.pregnant = true" OK
+"from Human h where h.pregnant = false" OK
+"from Human h where not( h.pregnant=true )" OK
+"select CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP from Animal a" OK
+"select p.name, a.zipCode, count(*) from Person p left outer join Employee e on e.id = p.id and p.type = 'E' and (e.effective>? or e.effective<?) join Address a on a.pid = p.id where upper(p.name) like 'G%' and p.age > 100 and (p.sex = 'M' or p.sex = 'F') and coalesce( trim(a.street), a.city, (a.zip) ) is not null order by p.name asc, a.zipCode asc" OK
+"select ( (m.age - p.age) * 12 ), trim(upper(p.name)) from Person p, Person m where p.mother = m.id and ( p.age = (select max(p0.age) from Person p0 where (p0.mother=m.id)) and p.name like ? )" OK
+"select case when p.age > 50 then 'old' when p.age > 18 then 'adult' else 'child' end from Person p where ( case when p.age > 50 then 'old' when p.age > 18 then 'adult' else 'child' end ) like ?" OK
+//HQLTest.testInvalidCollectionDereferencesFail
+"from Animal a where a.offspring.description = 'xyz'" OK
+"from Animal a where a.offspring.father.description = 'xyz'" OK
+//HQLTest.testSubComponentReferences
+"select c.address.zip.code from ComponentContainer c" OK
+"select c.address.zip from ComponentContainer c" OK
+"select c.address from ComponentContainer c" OK
+//HQLTest.testManyToAnyReferences
+"from PropertySet p where p.someSpecificProperty.id is not null" OK
+"from PropertySet p join p.generalProperties gp where gp.id is not null" OK
+//HQLTest.testCollectionJoinsInSubselect
+"select a.id, a.description from Animal a left join a.offspring where a in ( select a1 from Animal a1 left join a1.offspring o where a1.id=1)" OK
+"select h.id, h.description from Human h left join h.friends where h in ( select h1 from Human h1 left join h1.friends f where h1.id=1 )" OK
+//HQLTest.testEmptyInListFailureExpected
+"select o.orderDate - o.orderDate from Order o" OK
+//HQLTest.testDateTimeArithmeticReturnTypesAndParameterGuessing
+"select o.orderDate + 2 from Order o" OK
+"select o.orderDate -2 from Order o" OK
+"from Order o where o.orderDate > ?" OK
+"select o.orderDate + ? from Order o" OK
+//HQLTest.testReturnMetadata
+"select a as animal from Animal a" OK
+"select o as entity from java.lang.Object o" OK
+//HQLTest.testImplicitJoinsAlongWithCartesianProduct
+"select foo.foo from Foo foo, Foo foo2" OK
+"select foo.foo.foo from Foo foo, Foo foo2" OK
+//HQLTest.testSubselectBetween
+"from Animal x where (select max(a.bodyWeight) from Animal a) between :min and :max" OK
+"from Animal x where (select max(a.description) from Animal a) like 'big%'" OK
+"from Animal x where (select max(a.bodyWeight) from Animal a) is not null" OK
+"from Animal x where exists (select max(a.bodyWeight) from Animal a)" OK
+"from Animal x where (select max(a.bodyWeight) from Animal a) in (1,2,3)" OK
+//HQLTest.testFetchOrderBy
+"from Animal a left outer join fetch a.offspring where a.mother.id = :mid order by a.description" OK
+//HQLTest.testCollectionOrderBy
+"from Animal a join a.offspring o order by a.description" OK
+"from Animal a join fetch a.offspring order by a.description" OK
+"from Animal a join fetch a.offspring o order by o.description" OK
+"from Animal a join a.offspring o order by a.description, o.description" OK
+//HQLTest.testExpressionWithParamInFunction
+"from Animal a where abs(a.bodyWeight-:param) < 2.0" OK
+"from Animal a where abs(:param - a.bodyWeight) < 2.0" OK
+//HQLTest.testCompositeKeysWithPropertyNamedId
+"select e.id.id from EntityWithCrazyCompositeKey e" OK
+"select max(e.id.id) from EntityWithCrazyCompositeKey e" OK
+//HQLTest.testMaxindexHqlFunctionInElementAccessorFailureExpected
+"select c from ContainerX c where c.manyToMany[ maxindex(c.manyToMany) ].count = 2" OK
+"select c from Container c where c.manyToMany[ maxIndex(c.manyToMany) ].count = 2" OK
+//HQLTest.testMultipleElementAccessorOperatorsFailureExpected
+"select c from ContainerX c where c.oneToMany[ c.manyToMany[0].count ].name = 's'" OK
+//HQLTest.testKeyManyToOneJoinFailureExpected
+"from Order o left join fetch o.lineItems li left join fetch li.product p" OK
+"from Outer o where o.id.master.id.sup.dudu is not null" OK
+//HQLTest.testDuplicateExplicitJoinFailureExpected
+"from Animal a join a.mother m1 join a.mother m2" OK
+"from Zoo zoo join zoo.animals an join zoo.mammals m" OK
+"from Zoo zoo join zoo.mammals an join zoo.mammals m" OK
+//HQLTest.testIndexWithExplicitJoin
+"from Zoo zoo join zoo.animals an where zoo.mammals[ index(an) ] = an" OK
+"from Zoo zoo join zoo.mammals dog where zoo.mammals[ index(dog) ] = dog" OK
+"from Zoo zoo join zoo.mammals dog where dog = zoo.mammals[ index(dog) ]" OK
+//HQLTest.testOneToManyMapIndex
+"from Zoo zoo where zoo.mammals['dog'].description like '%black%'" OK
+"from Zoo zoo where zoo.mammals['dog'].father.description like '%black%'" OK
+"from Zoo zoo where zoo.mammals['dog'].father.id = 1234" OK
+"from Zoo zoo where zoo.animals['1234'].description like '%black%'" OK
+//HQLTest.testExplicitJoinMapIndex
+"from Zoo zoo, Dog dog where zoo.mammals['dog'] = dog" OK
+"from Zoo zoo join zoo.mammals dog where zoo.mammals['dog'] = dog" OK
+//HQLTest.testIndexFunction
+"from Zoo zoo join zoo.mammals dog where index(dog) = 'dog'" OK
+"from Zoo zoo join zoo.animals an where index(an) = '1234'" OK
+//HQLTest.testSelectCollectionOfValues
+"select baz, date from Baz baz join baz.stringDateMap date where index(date) = 'foo'" OK
+//HQLTest.testCollectionOfValues
+"from Baz baz join baz.stringDateMap date where index(date) = 'foo'" OK
+//HQLTest.testHHH719
+"from Baz b order by org.bazco.SpecialFunction(b.id)" OK
+"from Baz b order by anypackage.anyFunction(b.id)" OK
+//HQLTest.testParameterListExpansion
+"from Animal as animal where animal.id in (:idList_1, :idList_2)" OK
+//HQLTest.testComponentManyToOneDereferenceShortcut
+"from Zoo z where z.address.stateProvince.id is null" OK
+//HQLTest.testNestedCollectionImplicitJoins
+"select h.friends.offspring from Human h" OK
+//HQLTest.testExplicitJoinsInSubquery
+"from org.hibernate.test.hql.Animal as animal where animal.id in ( select a.id from org.hibernate.test.hql.Animal as a left join a.mother as mo )" OK
+//HQLTest.testImplicitJoinsInGroupBy
+"select o.mother.bodyWeight, count(distinct o) from Animal an join an.offspring as o group by o.mother.bodyWeight" OK
+//HQLTest.testCrazyIdFieldNames
+"select e.heresAnotherCrazyIdFieldName from MoreCrazyIdFieldNameStuffEntity e where e.heresAnotherCrazyIdFieldName is not null" OK
+"select e.heresAnotherCrazyIdFieldName.heresAnotherCrazyIdFieldName from MoreCrazyIdFieldNameStuffEntity e where e.heresAnotherCrazyIdFieldName is not null" OK
+//HQLTest.testSizeFunctionAndProperty
+"from Animal a where a.offspring.size > 0" OK
+"from Animal a join a.offspring where a.offspring.size > 1" OK
+"from Animal a where size(a.offspring) > 0" OK
+"from Animal a join a.offspring o where size(a.offspring) > 1" OK
+"from Animal a where size(a.offspring) > 1 and size(a.offspring) < 100" OK
+"from Human a where a.family.size > 0" OK
+"from Human a join a.family where a.family.size > 1" OK
+"from Human a where size(a.family) > 0" OK
+"from Human a join a.family o where size(a.family) > 1" OK
+"from Human a where a.family.size > 0 and a.family.size < 100" OK
+//HQLTest.testFromOnly
+"from Animal" OK
+"from Model" OK
+//HQLTest.testJoinPathEndingInValueCollection
+"select h from Human as h join h.nickNames as nn where h.nickName=:nn1 and (nn=:nn2 or nn=:nn3)" OK
+//HQLTest.testSerialJoinPathEndingInValueCollection
+"select h from Human as h join h.friends as f join f.nickNames as nn where h.nickName=:nn1 and (nn=:nn2 or nn=:nn3)" OK
+//HQLTest.testImplicitJoinContainedByCollectionFunction
+"from Human as h where 'shipping' in indices(h.father.addresses)" OK
+"from Human as h where 'shipping' in indices(h.father.father.addresses)" OK
+"from Human as h where 'sparky' in elements(h.father.nickNames)" OK
+"from Human as h where 'sparky' in elements(h.father.father.nickNames)" OK
+//HQLTest.testImpliedJoinInSubselectFrom
+"from Animal a where exists( from a.mother.offspring )" OK
+//HQLTest.testSubselectImplicitJoins
+"from Simple s where s = some( select sim from Simple sim where sim.other.count=s.other.count )" OK
+//HQLTest.testCollectionOfValuesSize
+"select size(baz.stringDateMap) from org.hibernate.test.legacy.Baz baz" OK
+//HQLTest.testCollectionFunctions
+"from Zoo zoo where size(zoo.animals) > 100" OK
+"from Zoo zoo where maxindex(zoo.mammals) = 'dog'" OK
+//HQLTest.testImplicitJoinInExplicitJoin
+"from Animal an inner join an.mother.mother gm" OK
+"from Animal an inner join an.mother.mother.mother ggm" OK
+"from Animal an inner join an.mother.mother.mother.mother gggm" OK
+//HQLTest.testImpliedManyToManyProperty
+"select c from ContainerX c where c.manyToMany[0].name = 's'" OK
+"select size(zoo.animals) from Zoo zoo" OK
+//HQLTest.testCollectionIndexFunctionsInSelect" OK
+"select maxindex(zoo.animals) from Zoo zoo" OK
+"select minindex(zoo.animals) from Zoo zoo" OK
+"select indices(zoo.animals) from Zoo zoo" OK
+//HQLTest.testCollectionElementFunctionsInSelect
+"select maxelement(zoo.animals) from Zoo zoo" OK
+"select minelement(zoo.animals) from Zoo zoo" OK
+"select elements(zoo.animals) from Zoo zoo" OK
+//HQLTest.testFetchCollectionOfValues
+"from Baz baz left join fetch baz.stringSet" OK
+//HQLTest.testFetchList
+"from User u join fetch u.permissions" OK
+//HQLTest.testCollectionFetchWithExplicitThetaJoin
+"select m from Master m1, Master m left join fetch m.details where m.name=m1.name" OK
+//HQLTest.testListElementFunctionInSelect
+"select maxelement(u.permissions) from User u" OK
+"select elements(u.permissions) from User u" OK
+//HQLTest.testListElementFunctionInWhere
+"from User u where 'read' in elements(u.permissions)" OK
+"from User u where 'write' <> all elements(u.permissions)" OK
+//HQLTest.testManyToManyElementFunctionInSelect
+"select maxelement(human.friends) from Human human" OK
+"select elements(human.friends) from Human human" OK
+//HQLTest.testManyToManyMaxElementFunctionInWhere
+"from Human human where 5 = maxelement(human.friends)" OK
+//HQLTest.testCollectionIndexFunctionsInWhere
+"from Zoo zoo where 4 = maxindex(zoo.animals)" OK
+"from Zoo zoo where 2 = minindex(zoo.animals)" OK
+//HQLTest.testCollectionIndicesInWhere
+"from Zoo zoo where 4 > some indices(zoo.animals)" OK
+"from Zoo zoo where 4 > all indices(zoo.animals)" OK
+//HQLTest.testIndicesInWhere
+"from Zoo zoo where 4 in indices(zoo.animals)" OK
+"from Zoo zoo where exists indices(zoo.animals)" OK
+//HQLTest.testCollectionElementInWhere
+"from Zoo zoo where 4 > some elements(zoo.animals)" OK
+"from Zoo zoo where 4 > all elements(zoo.animals)" OK
+//HQLTest.testElementsInWhere
+"from Zoo zoo where 4 in elements(zoo.animals)" OK
+"from Zoo zoo where exists elements(zoo.animals)" OK
+//HQLTest.testNull
+"from Human h where h.nickName is null" OK
+"from Human h where h.nickName is not null" OK
+//HQLTest.testSubstitutions
+"from Human h where h.pregnant = yes" OK
+"from Human h where h.pregnant = foo" OK
+//HQLTest.testEscapedQuote
+"from Human h where h.nickName='1 ov''tha''few'" OK
+//HQLTest.testCaseWhenElse
+"from Human h where case when h.nickName='1ovthafew' then 'Gavin' when h.nickName='turin' then 'Christian' else h.nickName end = h.name.first" OK
+//HQLTest.testCaseExprWhenElse
+"from Human h where case h.nickName when '1ovthafew' then 'Gavin' when 'turin' then 'Christian' else h.nickName end = h.name.first" OK
+//HQLTest.testInvalidHql
+"from Animal foo where an.bodyWeight > 10" OK
+"select an.name from Animal foo" OK
+"from Animal foo where an.verybogus > 10" OK
+"select an.boguspropertyname from Animal foo" OK
+"from NonexistentClass where name='foo'" OK
+"select new FOO_BOGUS_Animal(an.description, an.bodyWeight) from Animal an" OK
+"select new Animal(an.description, an.bodyWeight, 666) from Animal an" OK
+//HQLTest.testWhereBetween
+"from Animal an where an.bodyWeight between 1 and 10" OK
+//HQLTest.testConcatenation
+"from Human h where h.nickName = '1' || 'ov' || 'tha' || 'few'" OK
+//HQLTest.testWhereLike
+"from Animal a where a.description like '%black%'" OK
+"from Animal an where an.description like '%fat%'" OK
+"from Animal an where lower(an.description) like '%fat%'" OK
+//HQLTest.testWhereIn
+"from Animal an where an.description in ('fat', 'skinny')" OK
+//HQLTest.testLiteralInFunction
+"from Animal an where an.bodyWeight > abs(5)" OK
+"from Animal an where an.bodyWeight > abs(-5)" OK
+//HQLTest.testExpressionInFunction
+"from Animal an where an.bodyWeight > abs(3-5)" OK
+"from Animal an where an.bodyWeight > abs(3/5)" OK
+"from Animal an where an.bodyWeight > abs(3+5)" OK
+"from Animal an where an.bodyWeight > abs(3*5)" OK
+//HQLTest.testNotOrWhereClause
+"from Simple s where 'foo'='bar' or not 'foo'='foo'" OK
+"from Simple s where 'foo'='bar' or not ('foo'='foo')" OK
+"from Simple s where not ( 'foo'='bar' or 'foo'='foo' )" OK
+"from Simple s where not ( 'foo'='bar' and 'foo'='foo' )" OK
+"from Simple s where not ( 'foo'='bar' and 'foo'='foo' ) or not ('x'='y')" OK
+"from Simple s where not ( 'foo'='bar' or 'foo'='foo' ) and not ('x'='y')" OK
+"from Simple s where not ( 'foo'='bar' or 'foo'='foo' ) and 'x'='y'" OK
+"from Simple s where not ( 'foo'='bar' and 'foo'='foo' ) or 'x'='y'" OK
+"from Simple s where 'foo'='bar' and 'foo'='foo' or not 'x'='y'" OK
+"from Simple s where 'foo'='bar' or 'foo'='foo' and not 'x'='y'" OK
+"from Simple s where ('foo'='bar' and 'foo'='foo') or 'x'='y'" OK
+"from Simple s where ('foo'='bar' or 'foo'='foo') and 'x'='y'" OK
+"from Simple s where not( upper( s.name ) ='yada' or 1=2 or 'foo'='bar' or not('foo'='foo') or 'foo' like 'bar' )" OK
+//HQLTest.testComplexExpressionInFunction
+"from Animal an where an.bodyWeight > abs((3-5)/4)" OK
+//HQLTest.testStandardFunctions
+"from Animal where current_date = current_time" OK
+"from Animal a where upper(a.description) = 'FAT'" OK
+"select lower(a.description) from Animal a" OK
+//HQLTest.testOrderBy
+"from Animal an order by an.bodyWeight" OK
+"from Animal an order by an.bodyWeight asc" OK
+"from Animal an order by an.bodyWeight desc" OK
+"from Animal an order by sqrt(an.bodyWeight*4)/2" OK
+"from Animal an order by an.mother.bodyWeight" OK
+"from Animal an order by an.bodyWeight, an.description" OK
+"from Animal an order by an.bodyWeight asc, an.description desc" OK
+"from Human h order by sqrt(h.bodyWeight), year(h.birthdate)" OK
+//HQLTest.testGroupByFunction
+"select count(*) from Human h group by year(h.birthdate)" OK
+"select count(*) from Human h group by trunc( sqrt(h.bodyWeight*4)/2 )" OK
+"select count(*) from Human h group by year(sysdate)" OK
+//HQLTest.testPolymorphism
+"from Mammal" OK
+"from Dog" OK
+"from Mammal m where m.pregnant = false and m.bodyWeight > 10" OK
+"from Dog d where d.pregnant = false and d.bodyWeight > 10" OK
+//HQLTest.testProduct
+"from Animal, Animal" OK
+"from Animal x, Animal y where x.bodyWeight = y.bodyWeight" OK
+"from Animal x, Mammal y where x.bodyWeight = y.bodyWeight and not y.pregnant = true" OK
+"from Mammal, Mammal" OK
+//HQLTest.testJoinedSubclassProduct
+"from PettingZoo, PettingZoo" OK
+//HQLTest.testProjectProduct
+"select x from Human x, Human y where x.nickName = y.nickName" OK
+"select x, y from Human x, Human y where x.nickName = y.nickName" OK
+//HQLTest.testExplicitEntityJoins
+"from Animal an inner join an.mother mo" OK
+"from Animal an left outer join an.mother mo" OK
+"from Animal an left outer join fetch an.mother" OK
+//HQLTest.testMultipleExplicitEntityJoins
+"from Animal an inner join an.mother mo inner join mo.mother gm" OK
+"from Animal an left outer join an.mother mo left outer join mo.mother gm" OK
+"from Animal an inner join an.mother m inner join an.father f" OK
+"from Animal an left join fetch an.mother m left join fetch an.father f" OK
+//HQLTest.testMultipleExplicitJoins
+"from Animal an inner join an.mother mo inner join an.offspring os" OK
+"from Animal an left outer join an.mother mo left outer join an.offspring os" OK
+//HQLTest.testExplicitEntityJoinsWithRestriction
+"from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
+//HQLTest.testIdProperty
+"from Animal a where a.mother.id = 12" OK
+//HQLTest.testSubclassAssociation
+"from DomesticAnimal da join da.owner o where o.nickName = 'Gavin'" OK
+"from DomesticAnimal da left join fetch da.owner" OK
+"from Human h join h.pets p where p.pregnant = 1" OK
+"from Human h join h.pets p where p.bodyWeight > 100" OK
+"from Human h left join fetch h.pets" OK
+//HQLTest.testExplicitCollectionJoins
+"from Animal an inner join an.offspring os" OK
+"from Animal an left outer join an.offspring os" OK
+//HQLTest.testExplicitOuterJoinFetch
+"from Animal an left outer join fetch an.offspring" OK
+//HQLTest.testExplicitOuterJoinFetchWithSelect
+"select an from Animal an left outer join fetch an.offspring" OK
+//HQLTest.testExplicitJoins
+"from Zoo zoo join zoo.mammals mam where mam.pregnant = true and mam.description like '%white%'" OK
+"from Zoo zoo join zoo.animals an where an.description like '%white%'" OK
+//HQLTest.testMultibyteCharacterConstant
+"from Zoo zoo join zoo.animals an where an.description like '%\u4e2d%'" OK
+//HQLTest.testImplicitJoins
+"from Animal an where an.mother.bodyWeight > ?" OK
+"from Animal an where an.mother.bodyWeight > 10" OK
+"from Dog dog where dog.mother.bodyWeight > 10" OK
+"from Animal an where an.mother.mother.bodyWeight > 10" OK
+"from Animal an where an.mother is not null" OK
+"from Animal an where an.mother.id = 123" OK
+//HQLTest.testImplicitJoinInSelect
+"select foo, foo.long from Foo foo" OK
+"select foo.foo from Foo foo" OK
+"select foo, foo.foo from Foo foo" OK
+"select foo.foo from Foo foo where foo.foo is not null" OK
+//HQLTest.testSelectExpressions
+"select an.mother.mother from Animal an" OK
+"select an.mother.mother.mother from Animal an" OK
+"select an.mother.mother.bodyWeight from Animal an" OK
+"select an.mother.zoo.id from Animal an" OK
+"select user.human.zoo.id from User user" OK
+"select u.userName, u.human.name.first from User u" OK
+"select u.human.name.last, u.human.name.first from User u" OK
+"select bar.baz.name from Bar bar" OK
+"select bar.baz.name, bar.baz.count from Bar bar" OK
+//HQLTest.testSelectStandardFunctionsNoParens
+"select current_date, current_time, current_timestamp from Animal" OK
+//HQLTest.testMapIndex
+"from User u where u.permissions['hibernate']='read'" OK
+//HQLTest.testCollectionFunctionsInSelect
+"select baz, size(baz.stringSet), count( distinct elements(baz.stringSet) ), max( elements(baz.stringSet) ) from Baz baz group by baz" OK
+"select elements(fum1.friends) from org.hibernate.test.legacy.Fum fum1" OK
+"select elements(one.manies) from org.hibernate.test.legacy.One one" OK
+//HQLTest.testNamedParameters
+"from Animal an where an.mother.bodyWeight > :weight" OK
+//HQLTest.testClassProperty
+"from Animal a where a.mother.class = Reptile" OK
+//HQLTest.testComponent
+"from Human h where h.name.first = 'Gavin'" OK
+//HQLTest.testSelectEntity
+"select an from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
+"select mo, an from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
+//HQLTest.testValueAggregate
+"select max(p), min(p) from User u join u.permissions p" OK
+//HQLTest.testAggregation
+"select count(an) from Animal an" OK
+"select count(distinct an) from Animal an" OK
+"select count(distinct an.id) from Animal an" OK
+"select count(all an.id) from Animal an" OK
+//HQLTest.testSelectProperty
+"select an.bodyWeight, mo.bodyWeight from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
+//HQLTest.testSelectEntityProperty
+"select an.mother from Animal an" OK
+"select an, an.mother from Animal an" OK
+//HQLTest.testSelectDistinctAll
+"select distinct an.description, an.bodyWeight from Animal an" OK
+"select all an from Animal an" OK
+//HQLTest.testSelectAssociatedEntityId
+"select an.mother.id from Animal an" OK
+//HQLTest.testGroupBy
+"select an.mother.id, max(an.bodyWeight) from Animal an group by an.mother.id having max(an.bodyWeight)>1.0" OK
+//HQLTest.testGroupByMultiple
+"select s.id, s.count, count(t), max(t.date) from org.hibernate.test.legacy.Simple s, org.hibernate.test.legacy.Simple t where s.count = t.count group by s.id, s.count order by s.count" OK
+//HQLTest.testManyToMany
+"from Human h join h.friends f where f.nickName = 'Gavin'" OK
+"from Human h join h.friends f where f.bodyWeight > 100" OK
+//HQLTest.testManyToManyElementFunctionInWhere
+"from Human human where human in elements(human.friends)" OK
+"from Human human where human = some elements(human.friends)" OK
+//HQLTest.testManyToManyElementFunctionInWhere2
+"from Human h1, Human h2 where h2 in elements(h1.family)" OK
+"from Human h1, Human h2 where 'father' in indices(h1.family)" OK
+//HQLTest.testManyToManyFetch
+"from Human h left join fetch h.friends" OK
+//HQLTest.testManyToManyIndexAccessor
+"select c from ContainerX c, Simple s where c.manyToMany[2] = s" OK
+"select s from ContainerX c, Simple s where c.manyToMany[2] = s" OK
+"from ContainerX c, Simple s where c.manyToMany[2] = s" OK
+//HQLTest.testSelectNew
+"select new Animal(an.description, an.bodyWeight) from Animal an" OK
+"select new org.hibernate.test.hql.Animal(an.description, an.bodyWeight) from Animal an" OK
+//HQLTest.testSimpleCorrelatedSubselect
+"from Animal a where a.bodyWeight = (select o.bodyWeight from a.offspring o)" OK
+"from Animal a where a = (from a.offspring o)" OK
+//HQLTest.testSimpleUncorrelatedSubselect
+"from Animal a where a.bodyWeight = (select an.bodyWeight from Animal an)" OK
+"from Animal a where a = (from Animal an)" OK
+//HQLTest.testSimpleCorrelatedSubselect2
+"from Animal a where a = (select o from a.offspring o)" OK
+"from Animal a where a in (select o from a.offspring o)" OK
+//HQLTest.testSimpleUncorrelatedSubselect2
+"from Animal a where a = (select an from Animal an)" OK
+"from Animal a where a in (select an from Animal an)" OK
+//HQLTest.testUncorrelatedSubselect2
+"from Animal a where a.bodyWeight = (select max(an.bodyWeight) from Animal an)" OK
+//HQLTest.testCorrelatedSubselect2
+"from Animal a where a.bodyWeight > (select max(o.bodyWeight) from a.offspring o)" OK
+//HQLTest.testManyToManyJoinInSubselect
+"select foo from Foo foo where foo in (select elt from Baz baz join baz.fooArray elt)" OK
+//HQLTest.testImplicitJoinInSubselect
+"from Animal a where a = (select an.mother from Animal an)" OK
+"from Animal a where a.id = (select an.mother.id from Animal an)" OK
+//HQLTest.testManyToOneSubselect
+"from Animal a where 'foo' in (select m.description from a.mother m)" OK
+//HQLTest.testPositionalParameters
+"from Animal an where an.bodyWeight > ?" OK
+//HQLTest.testKeywordPropertyName
+"from Glarch g order by g.order asc" OK
+"select g.order from Glarch g where g.order = 3" OK
+//HQLTest.testJavaConstant
+"from org.hibernate.test.legacy.Category c where c.name = org.hibernate.test.legacy.Category.ROOT_CATEGORY" OK
+"from org.hibernate.test.legacy.Category c where c.id = org.hibernate.test.legacy.Category.ROOT_ID" OK
+"from Category c where c.name = Category.ROOT_CATEGORY" OK
+"select c.name, Category.ROOT_ID from Category as c" OK
+//HQLTest.testClassName
+"from Zoo zoo where zoo.class = PettingZoo" OK
+"from DomesticAnimal an where an.class = Dog" OK
+//HQLTest.testSelectDialectFunction
+"select mod(s.count, 2) from org.hibernate.test.legacy.Simple as s where s.id = 10" OK
+"select upper(human.name.first) from Human human" OK
+"from Human human where lower(human.name.first) like 'gav%'" OK
+"select max(a.bodyWeight) from Animal a" OK
+//HQLTest.testTwoJoins
+"from Human human join human.friends, Human h join h.mother" OK
+"from Human human join human.friends f, Animal an join an.mother m where f=m" OK
+"from Baz baz left join baz.fooToGlarch, Bar bar join bar.foo" OK
+//HQLTest.testToOneToManyManyJoinSequence
+"from Dog d join d.owner h join h.friends f where f.name.first like 'joe%'" OK
+//HQLTest.testToOneToManyJoinSequence
+"from Animal a join a.mother m join m.offspring" OK
+"from Dog d join d.owner m join m.offspring" OK
+"from Animal a join a.mother m join m.offspring o where o.bodyWeight > a.bodyWeight" OK
+//HQLTest.testSubclassExplicitJoin
+"from DomesticAnimal da join da.owner o where o.nickName = 'gavin'" OK
+"from DomesticAnimal da join da.owner o where o.bodyWeight > 0" OK
+//HQLTest.testMultipleExplicitCollectionJoins
+"from Animal an inner join an.offspring os join os.offspring gc" OK
+"from Animal an left outer join an.offspring os left outer join os.offspring gc" OK
+//HQLTest.testSelectDistinctComposite
+"select distinct p from org.hibernate.test.compositeelement.Parent p join p.children c where c.name like 'Child%'" OK
+//HQLTest.testDotComponent
+"select fum.id from org.hibernate.test.legacy.Fum as fum where not fum.fum='FRIEND'" OK
+//HQLTest.testOrderByCount
+"from Animal an group by an.zoo.id order by an.zoo.id, count(*)" OK
+//HQLTest.testHavingCount
+"from Animal an group by an.zoo.id having count(an.zoo.id) > 1" OK
+//HQLTest.selectWhereElements
+"select foo from Foo foo, Baz baz where foo in elements(baz.fooArray)" OK
+//HQLTest.testCollectionOfComponents
+"from Baz baz inner join baz.components comp where comp.name='foo'" OK
+//HQLTest.testOneToOneJoinedFetch
+"from org.hibernate.test.onetoone.joined.Person p join fetch p.address left join fetch p.mailingAddress" OK
+//HQLTest.testSubclassImplicitJoin
+"from DomesticAnimal da where da.owner.nickName like 'Gavin%'" OK
+"from DomesticAnimal da where da.owner.nickName = 'gavin'" OK
+"from DomesticAnimal da where da.owner.bodyWeight > 0" OK
+//HQLTest.testComponent2
+"from Dog dog where dog.owner.name.first = 'Gavin'" OK
+//HQLTest.testOneToOne
+"from User u where u.human.nickName='Steve'" OK
+"from User u where u.human.name.first='Steve'" OK
+//HQLTest.testSelectClauseImplicitJoin
+"select d.owner.mother from Dog d" OK
+"select d.owner.mother.description from Dog d" OK
+"select d.owner.mother from Dog d, Dog h" OK
+//HQLTest.testFromClauseImplicitJoin
+"from DomesticAnimal da join da.owner.mother m where m.bodyWeight > 10" OK
+//HQLTest.testImplicitJoinInFrom
+"from Human h join h.mother.mother.offspring o" OK
+//HQLTest.testDuplicateImplicitJoinInSelect
+"select an.mother.bodyWeight from Animal an join an.mother m where an.mother.bodyWeight > 10" OK
+"select an.mother.bodyWeight from Animal an where an.mother.bodyWeight > 10" OK
+"select an.mother from Animal an where an.mother.bodyWeight is not null" OK
+"select an.mother.bodyWeight from Animal an order by an.mother.bodyWeight" OK
+//HQLTest.testSelectProperty2
+"select an, mo.bodyWeight from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
+"select an, mo, an.bodyWeight, mo.bodyWeight from Animal an inner join an.mother mo where an.bodyWeight < mo.bodyWeight" OK
+//HQLTest.testSubclassWhere
+"from PettingZoo pz1, PettingZoo pz2 where pz1.id = pz2.id" OK
+"from PettingZoo pz1, PettingZoo pz2 where pz1.id = pz2" OK
+"from PettingZoo pz where pz.id > 0 " OK
+//HQLTest.testNestedImplicitJoinsInSelect
+"select foo.foo.foo.foo.string from org.hibernate.test.legacy.Foo foo where foo.foo.foo = 'bar'" OK
+"select foo.foo.foo.foo.string from org.hibernate.test.legacy.Foo foo" OK
+//HQLTest.testNestedComponent
+"from org.hibernate.test.legacy.Foo foo where foo.component.subcomponent.name='bar'" OK
+//HQLTest.testNull2
+"from Human h where not( h.nickName is null )" OK
+"from Human h where not( h.nickName is not null )" OK
+//HQLTest.testUnknownFailureFromMultiTableTest
+"from Lower s where s.yetanother.name='name'" OK
+//HQLTest.testJoinInSubselect
+"from Animal a where a in (select m from Animal an join an.mother m)" OK
+"from Animal a where a in (select o from Animal an join an.offspring o)" OK
+//HQLTest.testJoinedSubclassImplicitJoin
+"from org.hibernate.test.legacy.Lower s where s.yetanother.name='name'" OK
+//HQLTest.testProjectProductJoinedSubclass
+"select zoo from Zoo zoo, PettingZoo pz where zoo=pz" OK
+"select zoo, pz from Zoo zoo, PettingZoo pz where zoo=pz" OK
+//HQLTest.testCorrelatedSubselect1
+"from Animal a where exists (from a.offspring o where o.bodyWeight>10)" OK
+//HQLTest.testOuterAliasInSubselect
+"from Human h where h = (from Animal an where an = h)" OK
+//HQLTest.testFetch
+"from Zoo zoo left join zoo.mammals" OK
+"from Zoo zoo left join fetch zoo.mammals" OK
+//HQLTest.testOneToManyElementFunctionInWhere
+"from Zoo zoo where 'dog' in indices(zoo.mammals)" OK
+"from Zoo zoo, Dog dog where dog in elements(zoo.mammals)" OK
+//HQLTest.testManyToManyElementFunctionInSelect
+"select elements(zoo.mammals) from Zoo zoo" OK
+"select indices(zoo.mammals) from Zoo zoo" OK
+//HQLTest.testManyToManyInJoin
+ "select x.id from Human h1 join h1.family x" OK
+"select index(h2) from Human h1 join h1.family h2" OK
+//HQLTest.testManyToManyInSubselect
+ "from Human h1, Human h2 where h2 in (select x.id from h1.family x)" OK
+//HQLTest.testOneToManyIndexAccess
+ "from Zoo zoo where zoo.mammals['dog'] is not null" OK
+//HQLTest.testImpliedSelect
+ "select zoo from Zoo zoo" OK
+ "from Zoo zoo" OK
+ "from Zoo zoo join zoo.mammals m" OK
+ "from Zoo" OK
+ "from Zoo zoo join zoo.mammals" OK
+//HQLTest.testVectorSubselect
+ "from Animal a where ('foo', 'bar') in (select m.description, m.bodyWeight from a.mother m)" OK
+//HQLTest.testWierdSubselectImplicitJoinStuff
+"from Simple s where s = some( select sim from Simple sim where sim.other.count=s.other.count ) and s.other.count > 0" OK
+//HQLTest.testCollectionsInSelect2
+ "select foo.string from Bar bar left join bar.baz.fooArray foo where bar.string = foo.string" OK
+//HQLTest.testAssociationPropertyWithoutAlias
+"from Animal where zoo is null" OK
+//HQLTest.testComponentNoAlias
+"from Human where name.first = 'Gavin'" OK
+//ASTParserLoadingTest.testComponentNullnessChecks
+"from Human where name is null" OK
+"from Human where name is not null" OK
+"from Human where cast(? as string) is null" OK
+"from Human where ? is null" OK
+//ASTParserLoadingTest.testInvalidCollectionDereferencesFail
+"from Animal a join a.offspring o where o.description = 'xyz'" OK
+"from Animal a join a.offspring o where o.father.description = 'xyz'" OK
+"from Animal a join a.offspring o order by o.description" OK
+"from Animal a join a.offspring o order by o.father.description" OK
+"from Animal a order by a.offspring.description" OK
+"from Animal a order by a.offspring.father.description" OK
+//ASTParserLoadingTest.testExpressionWithParamInFunction
+"from Animal where abs(cast(:x as long) - :y) < 2.0" OK
+"from Animal where abs(:x - cast(:y as long)) < 2.0" OK
+"from Animal where abs(cast(:x as long) - cast(:y as long)) < 2.0" OK
+"from Animal where abs(:x - :y) < 2.0" OK
+"from Animal where lower(upper(cast(:foo as string))) like 'f%'" OK
+"from Animal where lower(upper(:foo)) like 'f%'" OK
+"from Animal a where abs(abs(a.bodyWeight - 1.0 + :param) * abs(length('ffobar')-3)) = 3.0" OK
+"from Animal where lower(upper('foo') || upper(cast(:bar as string))) like 'f%'" OK
+"from Animal where lower(upper('foo') || upper(:bar)) like 'f%'" OK
+"from Animal where abs(cast(1 as float) - cast(:param as float)) = 1.0" OK
+//ASTParserLoadingTest.testCrazyIdFieldNames
+"select e.heresAnotherCrazyIdFieldName from MoreCrazyIdFieldNameStuffEntity e" OK
+//ASTParserLoadingTest.testImplicitJoinsInDifferentClauses
+"select e.owner from SimpleAssociatedEntity e" OK
+"select e.id, e.owner from SimpleAssociatedEntity e" OK
+"from SimpleAssociatedEntity e order by e.owner" OK
+"select e.owner.id, count(*) from SimpleAssociatedEntity e group by e.owner" OK
+//ASTParserLoadingTest.testNestedComponentIsNull
+"from Commento c where c.marelo.commento.mcompr is null" OK
+//ASTParserLoadingTest.testSpecialClassPropertyReference
+"select a.description from Animal a where a.class = Mammal" OK
+"select a.class from Animal a" OK
+"from Animal an where an.class = Dog" OK
+//ASTParserLoadingTest.testSpecialClassPropertyReferenceFQN
+"from Zoo zoo where zoo.class = org.hibernate.test.hql.PettingZoo" OK
+"select a.description from Animal a where a.class = org.hibernate.test.hql.Mammal" OK
+"from DomesticAnimal an where an.class = org.hibernate.test.hql.Dog" OK
+"from Animal an where an.class = org.hibernate.test.hql.Dog" OK
+//ASTParserLoadingTest.testSubclassOrSuperclassPropertyReferenceInJoinedSubclass
+"from Zoo z join z.mammals as m where m.name.first = 'John'" OK
+"from Zoo z join z.mammals as m where m.pregnant = false" OK
+"select m.pregnant from Zoo z join z.mammals as m where m.pregnant = false" OK
+"from Zoo z join z.mammals as m where m.description = 'tabby'" OK
+"select m.description from Zoo z join z.mammals as m where m.description = 'tabby'" OK
+"select m.name from Zoo z join z.mammals as m where m.name.first = 'John'" OK
+"select m.pregnant from Zoo z join z.mammals as m" OK
+"select m.description from Zoo z join z.mammals as m" OK
+"select m.name from Zoo z join z.mammals as m" OK
+"from DomesticAnimal da join da.owner as o where o.nickName = 'Gavin'" OK
+"select da.father from DomesticAnimal da join da.owner as o where o.nickName = 'Gavin'" OK
+//ASTParserLoadingTest.testJPAPositionalParameterList
+"from Human where name.last in (?1)" OK
+//ASTParserLoadingTest.testComponentQueries
+"select h.name from Human h" OK
+"from Human h where h.name = h.name" OK
+"from Human h where h.name = :name" OK
+"from Human where name = :name" OK
+"from Human h where :name = h.name" OK
+"from Human h where :name <> h.name" OK
+"from Human h where h.name = ('John', 'X', 'Doe')" OK
+"from Human h where ('John', 'X', 'Doe') = h.name" OK
+"from Human h where ('John', 'X', 'Doe') <> h.name" OK
+"from Human h where ('John', 'X', 'Doe') >= h.name" OK
+"from Human h order by h.name" OK
+//ASTParserLoadingTest.testComponentParameterBinding
+"from Order o where o.customer.name =:name and o.id = :id" OK
+"from Order o where o.id = :id and o.customer.name =:name " OK
+//ASTParserLoadingTest.testAnyMappingReference
+"from PropertySet p where p.someSpecificProperty = :ssp" OK
+//ASTParserLoadingTest.testJdkEnumStyleEnumConstant
+"from Zoo z where z.classification = org.hibernate.test.hql.Classification.LAME" OK
+//ASTParserLoadingTest.testParameterTypeMismatchFailureExpected
+"from Animal a where a.description = :nonstring" OK
+//ASTParserLoadingTest.testMultipleBagFetchesFail
+"from Human h join fetch h.friends f join fetch f.friends fof" OK
+//ASTParserLoadingTest.testCollectionJoinsInSubselect
+"select h.id, h.description from Human h left join h.friends where h in ( select h1 from Human h1 left join h1.friends f where h1.id=1)" OK
+"select h.id, h.description from Human h left join h.friends f where f in ( select h1 from Human h1 left join h1.friends f1 where h = f1 )" OK
+//ASTParserLoadingTest.testCollectionFetchWithDistinctionAndLimit
+"select distinct p from Animal p inner join fetch p.offspring" OK
+"select p from Animal p inner join fetch p.offspring order by p.id" OK
+//ASTParserLoadingTest.testFetchInSubqueryFails
+"from Animal a where a.mother in (select m from Animal a1 inner join a1.mother as m join fetch m.mother)" OK
+//ASTParserLoadingTest.testQueryMetadataRetrievalWithFetching
+"from Animal a inner join fetch a.mother" OK
+//ASTParserLoadingTest.testSuperclassPropertyReferenceAfterCollectionIndexedAccess
+"from Zoo zoo where zoo.mammals['tiger'].mother.bodyWeight > 3.0f" OK
+//ASTParserLoadingTest.testJoinFetchCollectionOfValues
+"select h from Human as h join fetch h.nickNames" OK
+//ASTParserLoadingTest.testIntegerLiterals
+"from Foo where long = 1" OK
+"from Foo where long = 1L" OK
+//ASTParserLoadingTest.testDecimalLiterals
+"from Animal where bodyWeight > 100.0e-10" OK
+"from Animal where bodyWeight > 100.0E-10" OK
+"from Animal where bodyWeight > 100.001f" OK
+"from Animal where bodyWeight > 100.001F" OK
+"from Animal where bodyWeight > 100.001d" OK
+"from Animal where bodyWeight > 100.001D" OK
+"from Animal where bodyWeight > .001f" OK
+"from Animal where bodyWeight > 100e-10" OK
+"from Animal where bodyWeight > .01E-10" OK
+"from Animal where bodyWeight > 1e-38" OK
+//ASTParserLoadingTest.testNakedPropertyRef
+"from Animal where bodyWeight = bodyWeight" OK
+"select bodyWeight from Animal" OK
+"select max(bodyWeight) from Animal" OK
+//ASTParserLoadingTest.testNakedComponentPropertyRef
+"select name from Human" OK
+"select upper(h.name.first) from Human as h" OK
+"select upper(name.first) from Human" OK
+//ASTParserLoadingTest.testNakedImplicitJoins
+"from Animal where mother.father.id = 1" OK
+//ASTParserLoadingTest.testNakedEntityAssociationReference
+"from Animal where mother = :mother" OK
+//ASTParserLoadingTest.testNakedMapIndex
+"from Zoo where mammals['dog'].description like '%black%'" OK
+//ASTParserLoadingTest.testInvalidFetchSemantics
+"select mother from Human a left join fetch a.mother mother" OK
+//ASTParserLoadingTest.testArithmetic
+"select 2*2*2*2*(2*2) from Zoo" OK
+"select 2 / (1+1) from Zoo" OK
+"select 2 - (1+1) from Zoo" OK
+"select 2 - 1 + 1 from Zoo" OK
+"select 2 * (1-1) from Zoo" OK
+"select 4 / (2 * 2) from Zoo" OK
+"select 4 / 2 * 2 from Zoo" OK
+"select 2 * (2/2) from Zoo" OK
+"select 2 * (2/2+1) from Zoo" OK
+//ASTParserLoadingTest.testNestedCollectionFetch
+"from Animal a left join fetch a.offspring o left join fetch o.offspring where a.mother.id = 1 order by a.description" OK
+"from Zoo z left join fetch z.animals a left join fetch a.offspring where z.name ='MZ' order by a.description" OK
+"from Human h left join fetch h.pets a left join fetch a.offspring where h.name.first ='Gavin' order by a.description" OK
+//ASTParserLoadingTest.testSelectClauseSubselect
+"select (select max(z.id) from a.zoo z) from Animal a" OK
+"select (select max(z.id) from a.zoo z where z.name=:name) from Animal a" OK
+//ASTParserLoadingTest.testInitProxy
+"from Animal a" OK
+//ASTParserLoadingTest.testSelectClauseImplicitJoin
+"select distinct a.zoo from Animal a where a.zoo is not null" OK
+//ASTParserLoadingTest.testComponentOrderBy
+"from Human as h order by h.name" OK
+//ASTParserLoadingTest.testCastInSelect
+"select cast(bodyWeight as integer) from Animal" OK
+"select cast(a.bodyWeight as integer) from Animal a" OK
+//ASTParserLoadingTest.testAliases
+"select a.bodyWeight as abw, a.description from Animal a" OK
+"select count(*), avg(a.bodyWeight) as avg from Animal a" OK
+//ASTParserLoadingTest.testParameterMixing
+"from Animal a where a.description = ? and a.bodyWeight = ? or a.bodyWeight = :bw" OK
+//ASTParserLoadingTest.testOrdinalParameters
+"from Animal a where a.description = ? and a.bodyWeight = ?" OK
+"from Animal a where a.bodyWeight in (?, ?)" OK
+//ASTParserLoadingTest.testIndexParams
+"from Zoo zoo where zoo.mammals[:name] = :id" OK
+"from Zoo zoo where zoo.mammals[:name].bodyWeight > :w" OK
+"from Zoo zoo where zoo.animals[:sn].mother.bodyWeight < :mw" OK
+"from Zoo zoo where zoo.animals[:sn].description like :desc and zoo.animals[:sn].bodyWeight > :wmin and zoo.animals[:sn].bodyWeight < :wmax" OK
+"from Human where addresses[:type].city = :city and addresses[:type].country = :country" OK
+//ASTParserLoadingTest.testAggregation
+"select sum(h.bodyWeight) from Human h" OK
+"select avg(h.height) from Human h" OK
+"select max(a.id) from Animal a" OK
+//ASTParserLoadingTest.testSelectClauseCase
+"select case nickName when 'Oney' then 'gavin' when 'Turin' then 'christian' else nickName end from Human" OK
+"select case when bodyWeight > 100 then 'fat' else 'skinny' end from Human" OK
+//ASTParserLoadingTest.testImplicitPolymorphism
+"from java.lang.Comparable" OK
+"from java.lang.Object" OK
+//ASTParserLoadingTest.testCoalesce
+"from Human h where coalesce(h.nickName, h.name.first, h.name.last) = 'max'" OK
+"select nullif(nickName, '1e1') from Human" OK
+//ASTParserLoadingTest.testStr
+"select str(an.bodyWeight) from Animal an where str(an.bodyWeight) like '%1%'" OK
+"select str(an.bodyWeight, 8, 3) from Animal an where str(an.bodyWeight, 8, 3) like '%1%'" OK
+"select str(current_date) from Animal" OK
+"select str(year(current_date))||'-'||str(month(current_date))||'-'||str(day(current_date)) from Animal" OK
+//ASTParserLoadingTest.testCast
+"from Human h where h.nickName like 'G%'" OK
+"from Animal a where cast(a.bodyWeight as string) like '1.%'" OK
+"from Animal a where cast(a.bodyWeight as integer) = 1" OK
+//ASTParserLoadingTest.testExtract
+"select second(current_timestamp()), minute(current_timestamp()), hour(current_timestamp()) from Mammal m" OK
+"select day(m.birthdate), month(m.birthdate), year(m.birthdate) from Mammal m" OK
+"select extract(second from current_timestamp()), extract(minute from current_timestamp()), extract(hour from current_timestamp()) from Mammal m" OK
+"select extract(day from m.birthdate), extract(month from m.birthdate), extract(year from m.birthdate) from Mammal m" OK
+//ASTParserLoadingTest.testSelectExpressions
+"select 'found', lower(h.name.first) from Human h where lower(h.name.first) = 'gavin'" OK
+"select 'found', lower(h.name.first) from Human h where concat(h.name.first, ' ', h.name.initial, ' ', h.name.last) = 'Gavin A King'" OK
+"select 'found', lower(h.name.first) from Human h where h.name.first||' '||h.name.initial||' '||h.name.last = 'Gavin A King'" OK
+"select a.bodyWeight + m.bodyWeight from Animal a join a.mother m" OK
+"select 2.0 * (a.bodyWeight + m.bodyWeight) from Animal a join a.mother m" OK
+"select sum(a.bodyWeight + m.bodyWeight) from Animal a join a.mother m" OK
+"select sum(a.mother.bodyWeight * 2.0) from Animal a" OK
+"select concat(h.name.first, ' ', h.name.initial, ' ', h.name.last) from Human h" OK
+"select h.name.first||' '||h.name.initial||' '||h.name.last from Human h" OK
+"select nickName from Human" OK
+"select lower(nickName) from Human" OK
+"select abs(bodyWeight*-1) from Human" OK
+"select upper(h.name.first||' ('||h.nickName||')') from Human h" OK
+"select abs(a.bodyWeight-:param) from Animal a" OK
+"select abs(:param - a.bodyWeight) from Animal a" OK
+"select lower(upper('foo')) from Animal" OK
+"select lower(upper('foo') || upper('bar')) from Animal" OK
+"select sum(abs(bodyWeight - 1.0) * abs(length('ffobar')-3)) from Animal" OK
+//ASTParserLoadingTest.testImplicitJoin
+"from Animal a where a.mother.bodyWeight < 2.0 or a.mother.bodyWeight > 9.0" OK
+"from Animal a where a.mother.bodyWeight > 2.0 and a.mother.bodyWeight > 9.0" OK
+//ASTParserLoadingTest.testSimpleSelect
+"select a.mother from Animal as a" OK
+//ASTParserLoadingTest.testWhere
+"from Animal an where an.bodyWeight > 10" OK
+"from Animal an where not an.bodyWeight > 10" OK
+"from Animal an where an.bodyWeight between 0 and 10" OK
+"from Animal an where an.bodyWeight not between 0 and 10" OK
+"from Animal an where sqrt(an.bodyWeight)/2 > 10" OK
+"from Animal an where (an.bodyWeight > 10 and an.bodyWeight < 100) or an.bodyWeight is null" OK
+//ASTParserLoadingTest.testEntityFetching
+"from Animal an join fetch an.mother" OK
+"select an from Animal an join fetch an.mother" OK
+//ASTParserLoadingTest.testCollectionFetching
+"from Animal an join fetch an.offspring" OK
+"select an from Animal an join fetch an.offspring" OK
+//ASTParserLoadingTest.testProjectionQueries
+"select an.mother.id, max(an.bodyWeight) from Animal an group by an.mother.id" OK
+//ASTParserLoadingTest.testStandardFunctions
+"select current_time(), current_date(), current_timestamp() from Product" OK
+//ASTParserLoadingTest.testDynamicInstantiationQueries
+"select new list(an.description, an.bodyWeight) from Animal an" OK
+"select new map(an.description, an.bodyWeight) from Animal an" OK
+"select new map(an.description as descr, an.bodyWeight as bw) from Animal an" OK
+//ASTParserLoadingTest.testResultTransformerScalarQueries
+"select an.description as description, an.bodyWeight as bodyWeight from Animal an order by bodyWeight desc" OK
+"select a from Animal a, Animal b order by a.id" OK
+//ASTParserLoadingTest.testResultTransformerEntityQueries
+"select an as an from Animal an order by bodyWeight desc" OK
+//ASTParserLoadingTest.testEJBQLFunctions
+"from Animal a where a.description = concat('1', concat('2','3'), '4'||'5')||'0'" OK
+"from Animal a where substring(a.description, 1, 3) = 'cat'" OK
+"from Animal a where lower(a.description) = 'cat'" OK
+"from Animal a where upper(a.description) = 'CAT'" OK
+"select upper(a.description) from Animal a" OK
+"from Animal a where length(a.description) = 5" OK
+"from Animal a where locate('abc', a.description, 2) = 2" OK
+"from Animal a where locate('abc', a.description) = 2" OK
+"select locate('cat', a.description, 2) from Animal a" OK
+"from Animal a where trim(trailing '_' from a.description) = 'cat'" OK
+"from Animal a where trim(leading '_' from a.description) = 'cat'" OK
+"from Animal a where trim(both from a.description) = 'cat'" OK
+"from Animal a where trim(a.description) = 'cat'" OK
+"from Animal a where abs(a.bodyWeight) = sqrt(a.bodyWeight)" OK
+"from Animal a where mod(16, 4) = 4" OK
+"from Animal a where bit_length(a.bodyWeight) = 24" OK
+"select bit_length(a.bodyWeight) from Animal a" OK
+"from Animal a where a.description like '%a%'" OK
+"from Animal a where a.description not like '%a%'" OK
+"from Animal a where a.description like 'x%ax%' escape 'x'" OK
+//ASTParserLoadingTest.testSubselectBetween
+"from Animal x where (select max(a.bodyWeight) from Animal a) between 0 and 100" OK
+//
+//"from Animal x where (x.name, x.bodyWeight) = ('cat', 20)" OK
+
+/*
+DELETE STATEMENT
+*/
+"delete Animal where mother is not null" OK
+"delete Animal where not mother is not null" OK
+"delete Animal" OK
+"delete from Thing" OK
+"delete from Person" OK
+"delete from Location" OK
+"delete from Child" OK
+"delete from Parent" OK
+"delete from Item" OK
+"delete Customer where contactOwner is not null" OK
+"delete Employee where manager is not null" OK
+"delete Person" OK
+"delete Locality" OK
+"delete Country" OK
+"delete Continent" OK
+"delete from DataPoint" OK
+"delete from User where userid = :userid" OK
+"delete from Mail where alias = :alias" OK
+"delete from NumberedNode where name like 'child%'" OK
+"delete from fooArray where id_='???' and i>=8" OK
+"delete from t_user" OK
+"delete Animal where not description like 'root%'" OK
+"delete Animal where description like 'grand%'" OK
+"delete from Animal where mother is not null or father is not null" OK
+"delete Animal where mother = :mother" OK
+"delete EntityWithCrazyCompositeKey where id.id = 1 and id.otherId = 2" OK
+"delete from EntityWithCrazyCompositeKey where id.id = 1 and id.otherId = 2" OK
+"delete from EntityWithCrazyCompositeKey e where e.id.id = 1 and e.id.otherId = 2" OK
+"delete from Bar where barString = 's'" OK
+"delete Vehicle where owner = :owner" OK
+"delete Mammal where bodyWeight > 150" OK
+"delete from User u where u not in (select u from User u)" OK
+"delete SimpleEntityWithAssociation e where size( e.associatedEntities ) = 0 and e.name like '%'" OK
+"delete Animal where bodyWeight = null" OK
+"delete from PICKUP" OK
+"delete from Address where id = ? and version = ?" OK
+/*
+UDPATE STATEMENT
+*/
+"update Paper set color = :newColor" OK
+"update Document set name = :newName where name = :oldName" OK
+"update Mammal set bodyWeight = null" OK
+"update Zoo set address.city = null" OK
+"update PettingZoo set address.city = null" OK
+"update Vehicle set owner = null where owner = 'Steve'" OK
+"update Vehicle set owner = 'Steve'" OK
+"update Mammal set bodyWeight = ( select max(bodyWeight) from Animal )" OK
+"update Mammal set bodyWeight = 25" OK
+"update Mammal set description = description" OK
+"update Animal set bodyWeight = bodyWeight + :w1 + :w2" OK
+"update Animal set description = :newDesc where description = :desc" OK
+"update Animal set description = description where description = :desc" OK
+"update Zoo as z set name = name where id = :id" OK
+"update Zoo as z set z.name = z.name" OK
+"update PettingZoo pz set pz.name = pz.name where pz.id = :id" OK
+"update PettingZoo set name = name" OK
+"update Human set mother.name.initial = :initial" OK
+"update Animal a set a.mother = (from Animal where id = 1) where a.id = 2" OK
+"update Animal a set a.mother = null where a.id = 2" OK
+"update Human set name.first = :correction where id = :id" OK
+"update versioned TimestampVersioned set name = name" OK
+"update versioned IntegerVersioned set name = name" OK
+<<update SimpleEntityWithAssociation e
+ set e.name = 'updated'
+ where exists (
+ select a.id
+ from e.associatedEntities a
+ where a.name = 'one-to-many-association'
+ )>> OK
+<<update SimpleEntityWithAssociation e
+ set e.name = 'updated'
+ where exists (
+ select a.id
+ from e.manyToManyAssociatedEntities a
+ where a.name = 'many-to-many-association'
+ )>> OK
+<<update Human h
+ set h.description = 'updated'
+ where exists (
+ select f.id
+ from h.friends f
+ where f.name.last = 'Public'
+ )>> OK
+"update Human set Human.description = 'xyz' where Human.id = 1 and Human.description is null" OK
+"update BooleanLiteralEntity set yesNoBoolean = true, trueFalseBoolean = true, zeroOneBoolean = true" OK
+"update BooleanLiteralEntity set yesNoBoolean = :b1, trueFalseBoolean = :b2, zeroOneBoolean = :b3" OK
+"update NonExistentEntity e set e.someProp = ?" OK
+"update Customer c set c.company = 'XYZ'" OK
+"update User u set u.username = :un where u.name = :n" OK
+"update Person p set p.name = '<male>'" OK
+"update Person p set p.name = 'Shawn'" OK
+"update Address set city = ?, state=?, zip=?, version = ? where id in (select aid from Person)" OK
+"update Address set city = ?, state=?, zip=?, version = ? where id = ? and version = ? " OK
+/*
+INSERT STATEMENT
+*/
+"insert into Animal (description, bodyWeight) select h.description, h.bodyWeight from Human h join h.mother m where m.mother is not null" OK
+"insert into Animal (description, bodyWeight) select h.description, h.bodyWeight from Human h where h.mother.mother is not null" OK
+"insert into TimestampVersioned ( name ) select name from TimestampVersioned" OK
+"insert into IntegerVersioned ( name ) select name from IntegerVersioned" OK
+"insert into PettingZoo (name) select name from Zoo" OK
+"insert into Joiner (name, joinedName) select vin, owner from Car" OK
+"insert into Human (id, bodyWeight) select id, bodyWeight from Lizard" OK
+"insert into Pickup (owner, vin, id) select id, vin, owner from Car" OK
+"insert into Animal (description, bodyWeight, mother) select description, bodyWeight, mother from Human" OK
+"insert into PICKUP (id, vin, owner) select id, vin, owner from Car" OK
+"insert into Pickup (id, vin, owner) select id, vin, owner from Car" OK
Property changes on: core/branches/antlr3/src/test/gunit/org/hibernate/sql/ast/phase/hql/resolve/gUnitHQLTreeWalker.testsuite
___________________________________________________________________
Name: svn:eol-style
+ native
Added: core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java
===================================================================
--- core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java (rev 0)
+++ core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java 2009-04-22 17:46:26 UTC (rev 16403)
@@ -0,0 +1,89 @@
+package org.hibernate.sql.ast.phase.hql.resolve;
+
+import junit.framework.TestCase;
+
+import org.antlr.runtime.ANTLRStringStream;
+import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.tree.CommonTreeNodeStream;
+import org.antlr.runtime.tree.Tree;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.cfg.Environment;
+import org.hibernate.dialect.HSQLDialect;
+import org.hibernate.engine.SessionFactoryImplementor;
+import org.hibernate.hql.classic.ClassicQueryTranslatorFactory;
+import org.hibernate.sql.ast.phase.hql.parse.HQLLexer;
+import org.hibernate.sql.ast.phase.hql.parse.HQLParser;
+
+public class TestHQLResolver extends TestCase {
+
+ private SessionFactoryImplementor sessionFactory;
+ private CommonTokenStream tokens;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ sessionFactory = ( SessionFactoryImplementor ) new Configuration()
+ .setProperty( Environment.HBM2DDL_AUTO, "none" )
+ .setProperty( Environment.DIALECT, HSQLDialect.class.getName() )
+ .setProperty( Environment.QUERY_TRANSLATOR,
+ ClassicQueryTranslatorFactory.class.getName() )
+ .addResource(
+ "org/hibernate/sql/ast/phase/hql/domain/Mappings.hbm.xml" )
+ .buildSessionFactory();
+ }
+
+ protected void tearDown() throws Exception {
+ if ( sessionFactory != null ) {
+ sessionFactory.close();
+ }
+ super.tearDown();
+ }
+
+ public void testBasicStructure() throws Throwable {
+ Tree queryTree = normalize( "from Animal" );
+ }
+
+ public void testBasicSelectStructure() throws Throwable {
+ Tree queryTree = normalize( "from Animal as a inner join a.mother" );
+ }
+
+ public Tree normalize( String hql ) throws RecognitionException {
+ return normalize( hql, getSessionFactoryImplementor() );
+ }
+
+ protected SessionFactoryImplementor getSessionFactoryImplementor() {
+ return sessionFactory;
+ }
+
+ public Tree normalize( String hql, SessionFactoryImplementor sessionFactory )
+ throws RecognitionException {
+ Tree result = parse( hql );
+
+ CommonTreeNodeStream nodes = new CommonTreeNodeStream( result );
+ nodes.setTokenStream( tokens );
+
+ HQLResolution resololution = new HQLResolution( nodes, sessionFactory );
+
+ System.out.println( resololution.getTreePrinter().renderAsString(
+ result, "Parser Result" ) );
+
+ Tree resolvedTree = ( Tree ) resololution.statement().getTree();
+
+ System.out.println( resololution.getTreePrinter().renderAsString(
+ resolvedTree, "Resolution Result" ) );
+ return resolvedTree;
+ }
+
+ public Tree parse( String input ) throws RecognitionException {
+ HQLParser parser = buildHQLParser( input );
+ return ( Tree ) parser.statement().getTree();
+ }
+
+ private HQLParser buildHQLParser( String input ) {
+ ANTLRStringStream charStream = new ANTLRStringStream( input );
+ HQLLexer hqlLexer = new HQLLexer( charStream );
+ tokens = new CommonTokenStream( hqlLexer );
+ HQLParser parser = new HQLParser( tokens );
+ return parser;
+ }
+}
Property changes on: core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java
___________________________________________________________________
Name: svn:eol-style
+ native
15 years, 7 months