Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql
In directory sc8-pr-cvs1:/tmp/cvs-serv21958/sf/hibernate/hql
Modified Files:
FromParser.java GroupByParser.java OrderByParser.java
PathExpressionParser.java QueryTranslator.java
SelectParser.java WhereParser.java
Log Message:
fixed minor problems with new HQL stuff:
* return ALL joined objects mentioned in FROM clause (iff no select clause)
* throw a meaningful exception when property is not found
made name attribute optional in hibernate.cfg.xml
Index: FromParser.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/FromParser.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** FromParser.java 2 Mar 2003 12:58:52 -0000 1.10
--- FromParser.java 3 Mar 2003 09:30:57 -0000 1.11
***************
*** 103,107 ****
if (classPersister!=null) {
! q.addCrossJoinedFromType(token, classPersister);
}
else if (entityName!=null) {
--- 103,107 ----
if (classPersister!=null) {
! q.addFromClass(token, classPersister);
}
else if (entityName!=null) {
***************
*** 131,135 ****
Loadable p = q.getPersisterUsingImports(token);
if (p==null) throw new QueryException("persister not found: " + token);
! q.addCrossJoinedFromType(alias, p);
}
else {
--- 131,135 ----
Loadable p = q.getPersisterUsingImports(token);
if (p==null) throw new QueryException("persister not found: " + token);
! q.addFromClass(alias, p);
}
else {
Index: GroupByParser.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/GroupByParser.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** GroupByParser.java 28 Feb 2003 07:01:28 -0000 1.5
--- GroupByParser.java 3 Mar 2003 09:30:58 -0000 1.6
***************
*** 27,31 ****
ParserHelper.parse(pathExpressionParser, q.unalias(token), ParserHelper.PATH_SEPARATORS, q);
q.appendGroupByToken( pathExpressionParser.getWhereColumn() );
! pathExpressionParser.addFromAssociation(q);
}
else {
--- 27,31 ----
ParserHelper.parse(pathExpressionParser, q.unalias(token), ParserHelper.PATH_SEPARATORS, q);
q.appendGroupByToken( pathExpressionParser.getWhereColumn() );
! pathExpressionParser.addAssociation(q);
}
else {
Index: OrderByParser.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/OrderByParser.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** OrderByParser.java 28 Feb 2003 07:01:28 -0000 1.5
--- OrderByParser.java 3 Mar 2003 09:31:00 -0000 1.6
***************
*** 26,30 ****
ParserHelper.parse(pathExpressionParser, q.unalias(token), ParserHelper.PATH_SEPARATORS, q);
q.appendOrderByToken( pathExpressionParser.getWhereColumn() );
! pathExpressionParser.addFromAssociation(q);
}
else {
--- 26,30 ----
ParserHelper.parse(pathExpressionParser, q.unalias(token), ParserHelper.PATH_SEPARATORS, q);
q.appendOrderByToken( pathExpressionParser.getWhereColumn() );
! pathExpressionParser.addAssociation(q);
}
else {
Index: PathExpressionParser.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/PathExpressionParser.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** PathExpressionParser.java 2 Mar 2003 06:58:48 -0000 1.12
--- PathExpressionParser.java 3 Mar 2003 09:31:02 -0000 1.13
***************
*** 200,208 ****
protected Type getPropertyType(QueryTranslator q) throws QueryException {
! return q.getPersisterForName(currentName).getPropertyType( getPropertyPath() );
}
protected String[] currentColumns(QueryTranslator q) throws QueryException {
! return q.getPersisterForName(currentName).toColumns( currentName, getPropertyPath() );
}
--- 200,214 ----
protected Type getPropertyType(QueryTranslator q) throws QueryException {
! String path = getPropertyPath();
! Type type = q.getPersisterForName(currentName).getPropertyType(path);
! if (type==null) throw new QueryException("could not resolve property type: " + path);
! return type;
}
protected String[] currentColumns(QueryTranslator q) throws QueryException {
! String path = getPropertyPath();
! String[] columns = q.getPersisterForName(currentName).toColumns(currentName, path);
! if (columns==null) throw new QueryException("could not resolve property columns: " + path);
! return columns;
}
***************
*** 356,361 ****
}
! public String addFromAssociation(QueryTranslator q) {
q.addJoin( getName(), join );
return currentName;
}
--- 362,371 ----
}
! public void addAssociation(QueryTranslator q) {
q.addJoin( getName(), join );
+ }
+
+ public String addFromAssociation(QueryTranslator q) {
+ q.addFrom(currentName, join);
return currentName;
}
***************
*** 385,389 ****
join.addJoin( p.getTableName(), elementName, collectionElementColumns, keyColumnNames, joinType);
}
! q.addFromType(elementName, clazz, join, false);
return elementName;
--- 395,399 ----
join.addJoin( p.getTableName(), elementName, collectionElementColumns, keyColumnNames, joinType);
}
! q.addFrom(elementName, clazz, join);
return elementName;
Index: QueryTranslator.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/QueryTranslator.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** QueryTranslator.java 2 Mar 2003 06:58:48 -0000 1.17
--- QueryTranslator.java 3 Mar 2003 09:31:03 -0000 1.18
***************
*** 17,21 ****
import java.util.StringTokenizer;
- import net.sf.hibernate.AssertionFailure;
import net.sf.hibernate.Hibernate;
import net.sf.hibernate.HibernateException;
--- 17,20 ----
***************
*** 204,223 ****
}
- /**
- * Return the SQL for a <tt>find()</tt> style query.
- * @return the SQL as a string
- */
protected String getSQLString() {
- if ( shallowQuery ) throw new AssertionFailure("");
- logQuery(queryString, sqlString);
- return sqlString;
- }
-
- /**
- * Return the SQL for an <tt>iterate()</tt> style query.
- * @return the SQL as a string
- */
- protected String getScalarSelectSQL() {
- if ( !shallowQuery ) throw new AssertionFailure("");
logQuery(queryString, sqlString);
return sqlString;
--- 203,207 ----
***************
*** 322,344 ****
}
! void addFromType(String name, Class type, JoinFragment join, boolean crossJoin) {
! //TODO: join type!!
addType(name, type);
fromTypes.add(name);
addJoin(name, join);
- if (crossJoin) crossJoins.add(name);
}
! void addCrossJoinedFromType(String name, Loadable classPersister) {
JoinFragment ojf = createJoinFragment();
ojf.addCrossJoin( classPersister.getTableName(), name );
! addFromType(name, classPersister.getMappedClass(), ojf, true);
}
! void addReturnType(String name) {
returnTypes.add(name);
}
! void addScalarType(Type type) {
scalarTypes.add(type);
}
--- 306,331 ----
}
! void addFrom(String name, Class type, JoinFragment join) {
addType(name, type);
+ addFrom(name, join);
+ }
+
+ void addFrom(String name, JoinFragment join) {
fromTypes.add(name);
addJoin(name, join);
}
! void addFromClass(String name, Loadable classPersister) {
JoinFragment ojf = createJoinFragment();
ojf.addCrossJoin( classPersister.getTableName(), name );
! crossJoins.add(name);
! addFrom(name, classPersister.getMappedClass(), ojf);
}
! void addSelectClass(String name) {
returnTypes.add(name);
}
! void addSelectScalar(Type type) {
scalarTypes.add(type);
}
***************
*** 700,704 ****
);
}
! addFromType(elementName, elemType.getPersistentClass(), join, false);
}
--- 687,691 ----
);
}
! addFrom(elementName, elemType.getPersistentClass(), join);
}
***************
*** 738,742 ****
public Iterator iterate(Object[] values, Type[] types, RowSelection selection, Map namedParams, SessionImplementor session) throws HibernateException, SQLException {
! PreparedStatement st = prepareQueryStatement( getScalarSelectSQL(), values, types, selection, false, session );
try {
bindNamedParameters(st, namedParams, session);
--- 725,729 ----
public Iterator iterate(Object[] values, Type[] types, RowSelection selection, Map namedParams, SessionImplementor session) throws HibernateException, SQLException {
! PreparedStatement st = prepareQueryStatement( getSQLString(), values, types, selection, false, session );
try {
bindNamedParameters(st, namedParams, session);
***************
*** 755,759 ****
public ScrollableResults scroll(Object[] values, Type[] types, RowSelection selection, Map namedParams, SessionImplementor session) throws HibernateException, SQLException {
! PreparedStatement st = prepareQueryStatement( getScalarSelectSQL(), values, types, selection, true, session );
try {
bindNamedParameters(st, namedParams, session);
--- 742,746 ----
public ScrollableResults scroll(Object[] values, Type[] types, RowSelection selection, Map namedParams, SessionImplementor session) throws HibernateException, SQLException {
! PreparedStatement st = prepareQueryStatement( getSQLString(), values, types, selection, true, session );
try {
bindNamedParameters(st, namedParams, session);
Index: SelectParser.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/SelectParser.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** SelectParser.java 1 Mar 2003 12:15:27 -0000 1.7
--- SelectParser.java 3 Mar 2003 09:31:05 -0000 1.8
***************
*** 104,108 ****
if (!ready) throw new QueryException(", expected before aggregate function in SELECT: " + token);
if ( lctoken.equals("count") ) {
! q.addScalarType(Hibernate.INTEGER);
count = true;
}
--- 104,108 ----
if (!ready) throw new QueryException(", expected before aggregate function in SELECT: " + token);
if ( lctoken.equals("count") ) {
! q.addSelectScalar(Hibernate.INTEGER);
count = true;
}
***************
*** 122,127 ****
}
q.appendScalarSelectToken( aggregatePathExpressionParser.getWhereColumn() );
! if (!count) q.addScalarType( aggregatePathExpressionParser.getWhereColumnType() );
! aggregatePathExpressionParser.addFromAssociation(q);
}
else {
--- 122,127 ----
}
q.appendScalarSelectToken( aggregatePathExpressionParser.getWhereColumn() );
! if (!count) q.addSelectScalar( aggregatePathExpressionParser.getWhereColumnType() );
! aggregatePathExpressionParser.addAssociation(q);
}
else {
***************
*** 136,144 ****
}
else if ( pathExpressionParser.getWhereColumnType().isEntityType() ) {
! q.addReturnType( pathExpressionParser.getSelectName() );
}
q.appendScalarSelectTokens( pathExpressionParser.getWhereColumns() );
! q.addScalarType( pathExpressionParser.getWhereColumnType() );
! pathExpressionParser.addFromAssociation(q);
ready = false;
--- 136,144 ----
}
else if ( pathExpressionParser.getWhereColumnType().isEntityType() ) {
! q.addSelectClass( pathExpressionParser.getSelectName() );
}
q.appendScalarSelectTokens( pathExpressionParser.getWhereColumns() );
! q.addSelectScalar( pathExpressionParser.getWhereColumnType() );
! pathExpressionParser.addAssociation(q);
ready = false;
Index: WhereParser.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/WhereParser.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** WhereParser.java 2 Mar 2003 06:58:49 -0000 1.10
--- WhereParser.java 3 Mar 2003 09:31:06 -0000 1.11
***************
*** 237,241 ****
throw new QueryException("MappingException occurred compiling subquery", me );
}
! appendToken( q, subq.getScalarSelectSQL() );
inSubselect = false;
bracketsSinceSelect=0;
--- 237,241 ----
throw new QueryException("MappingException occurred compiling subquery", me );
}
! appendToken( q, subq.getSQLString() );
inSubselect = false;
bracketsSinceSelect=0;
|