From: Sergey K. <jus...@us...> - 2005-04-24 19:38:06
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31965/src/NHibernate/Hql Modified Files: PreprocessingParser.cs QueryTranslator.cs Log Message: Integrated two more tests from H2.1, fixed uncovered bugs. Index: PreprocessingParser.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql/PreprocessingParser.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** PreprocessingParser.cs 31 Dec 2004 18:22:33 -0000 1.6 --- PreprocessingParser.cs 24 Apr 2005 19:37:57 -0000 1.7 *************** *** 40,43 **** --- 40,45 ---- collectionProps.Add( "maxelement", "maxElement" ); collectionProps.Add( "minelement", "minElement" ); + + collectionProps.Add( "index", "index" ); } Index: QueryTranslator.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql/QueryTranslator.cs,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** QueryTranslator.cs 14 Mar 2005 22:41:15 -0000 1.57 --- QueryTranslator.cs 24 Apr 2005 19:37:57 -0000 1.58 *************** *** 38,42 **** private IList whereTokens = new ArrayList(); // contains a List of strings containing Sql or SqlStrings private IList havingTokens = new ArrayList(); ! private IDictionary joins = new Hashtable(); private IList orderByTokens = new ArrayList(); private IList groupByTokens = new ArrayList(); --- 38,42 ---- private IList whereTokens = new ArrayList(); // contains a List of strings containing Sql or SqlStrings private IList havingTokens = new ArrayList(); ! private IDictionary joins = new SequencedHashMap(); private IList orderByTokens = new ArrayList(); private IList groupByTokens = new ArrayList(); *************** *** 860,877 **** sqlString = sql.ToQuerySqlString(); - System.Type[ ] classes = new System.Type[returnTypes.Length]; - for( int i = 0; i < returnTypes.Length; i++ ) - { - if( returnTypes[ i ] != null ) - { - classes[ i ] = returnTypes[ i ].ReturnedClass; - } - } - try { if( holderClass != null ) { ! holderConstructor = holderClass.GetConstructor( classes ); } } --- 860,868 ---- sqlString = sql.ToQuerySqlString(); try { if( holderClass != null ) { ! holderConstructor = ReflectHelper.GetConstructor( holderClass, returnTypes ); } } *************** *** 1024,1059 **** } ! private JoinFragment MergeJoins( JoinFragment ojf ) { ! //classes ! foreach( string name in typeMap.Keys ) { ! JoinFragment join = ( JoinFragment ) joins[ name ]; ! IQueryable p = GetPersisterForName( name ); ! bool includeSubclasses = returnedTypes.Contains( name ) && !IsShallowQuery; ! if( join != null ) { bool isCrossJoin = crossJoins.Contains( name ); ojf.AddFragment( join ); - ojf.AddJoins( ! ( (IJoinable) p).FromJoinFragment( name, isCrossJoin, includeSubclasses ), p.QueryWhereFragment( name, isCrossJoin, includeSubclasses ) ); - } - } ! foreach( string name in collections.Keys ) ! { ! JoinFragment collJoin = ( JoinFragment ) joins[ name ]; ! if( collJoin != null ) { ! ojf.AddFragment( collJoin ); } } - - return ojf; - } --- 1015,1048 ---- } ! private void MergeJoins( JoinFragment ojf ) { ! foreach( DictionaryEntry de in joins ) { ! string name = (string)de.Key; ! JoinFragment join = (JoinFragment) de.Value; ! if ( typeMap.Contains( name ) ) { + IQueryable p = GetPersisterForName( name ); + bool includeSubclasses = returnedTypes.Contains( name ) + && !IsShallowQuery; + bool isCrossJoin = crossJoins.Contains( name ); ojf.AddFragment( join ); ojf.AddJoins( ! p.FromJoinFragment( name, isCrossJoin, includeSubclasses ), p.QueryWhereFragment( name, isCrossJoin, includeSubclasses ) ); ! } ! else if ( collections.Contains( name ) ) { ! ojf.AddFragment(join); ! } ! else ! { ! //name from a super query (a bit inelegant that it shows up here) } } } *************** *** 1295,1299 **** // TODO: 2.1 - Check that something tidies up this cmd/reader IDataReader rs = GetResultSet( st, parameters.RowSelection, session ); ! return new EnumerableImpl( rs, st, session, ReturnTypes, ScalarColumnNames, parameters.RowSelection ); } --- 1284,1289 ---- // TODO: 2.1 - Check that something tidies up this cmd/reader IDataReader rs = GetResultSet( st, parameters.RowSelection, session ); ! return new EnumerableImpl( rs, st, session, ReturnTypes, ScalarColumnNames, parameters.RowSelection, ! holderClass ); } |