Author: max...@jb... Date: 2006-05-04 15:07:57 -0400 (Thu, 04 May 2006) New Revision: 9879 Modified: trunk/Hibernate3/src/org/hibernate/hql/classic/SelectParser.java trunk/Hibernate3/test/org/hibernate/test/extralazy/ExtraLazyTest.java trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java trunk/Hibernate3/test/org/hibernate/test/joinfetch/JoinFetchTest.java trunk/Hibernate3/test/org/hibernate/test/legacy/FooBarTest.java trunk/Hibernate3/test/org/hibernate/test/legacy/Result.java trunk/Hibernate3/test/org/hibernate/test/legacy/SQLFunctionsTest.java trunk/Hibernate3/test/org/hibernate/test/map/MapIndexFormulaTest.java Log: HHH-1538 fixes to the testsuite + fix stupid hardcoded logic in old query translator for count(*) Added HQLTest.testAggregationReturnType to test for the above statements. Consequence: COUNT changed from Hibernate.INTEGER to Hibernate.LONG MAX/MIN no changes AVG changed from being dependent on the field to only return Hibernate.DOUBLE SUM changed from always just return the type of the field to return according to the above rules. Stuff that falls besides these rules simply just return the underlying field/column type. e..g SUM(timestamp) will return timestamp; but will/should fail on the db Modified: trunk/Hibernate3/src/org/hibernate/hql/classic/SelectParser.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/hql/classic/SelectParser.java 2006-05-04 18:50:40 UTC (rev 9878) +++ trunk/Hibernate3/src/org/hibernate/hql/classic/SelectParser.java 2006-05-04 19:07:57 UTC (rev 9879) @@ -121,7 +121,7 @@ else if ( COUNT_MODIFIERS.contains( lctoken ) ) { if ( !ready || !aggregate ) throw new QueryException( token + " only allowed inside aggregate function in SELECT" ); q.appendScalarSelectToken( token ); - if ( "*".equals( token ) ) q.addSelectScalar( Hibernate.INTEGER ); //special case + if ( "*".equals( token ) ) q.addSelectScalar( Hibernate.LONG ); //special case } else if ( getFunction( lctoken, q ) != null && token.equals( q.unalias( token ) ) ) { // the name of an SQL function Modified: trunk/Hibernate3/test/org/hibernate/test/extralazy/ExtraLazyTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/extralazy/ExtraLazyTest.java 2006-05-04 18:50:40 UTC (rev 9878) +++ trunk/Hibernate3/test/org/hibernate/test/extralazy/ExtraLazyTest.java 2006-05-04 19:07:57 UTC (rev 9879) @@ -167,7 +167,7 @@ assertEquals(smap.size(), 1); gavin = (User) g.getUsers().put("gavin", turin); s.delete(gavin); - assertEquals( s.createQuery("select count(*) from SessionAttribute").uniqueResult(), new Integer(0) ); + assertEquals( s.createQuery("select count(*) from SessionAttribute").uniqueResult(), new Long(0) ); t.commit(); s.close(); @@ -178,10 +178,10 @@ turin = (User) g.getUsers().get("turin"); smap = turin.getSession(); assertEquals(smap.size(), 0); - assertEquals( s.createQuery("select count(*) from User").uniqueResult(), new Integer(1) ); + assertEquals( s.createQuery("select count(*) from User").uniqueResult(), new Long(1) ); s.delete(g); s.delete(turin); - assertEquals( s.createQuery("select count(*) from User").uniqueResult(), new Integer(0) ); + assertEquals( s.createQuery("select count(*) from User").uniqueResult(), new Long(0) ); t.commit(); s.close(); } Modified: trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java 2006-05-04 18:50:40 UTC (rev 9878) +++ trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java 2006-05-04 19:07:57 UTC (rev 9879) @@ -648,7 +648,7 @@ h.setName( new Name("Gavin", 'A', "King") ); h.setNickName("Oney"); s.persist(h); - Float sum = (Float) s.createQuery("select sum(h.bodyWeight) from Human h").uniqueResult(); + Double sum = (Double) s.createQuery("select sum(h.bodyWeight) from Human h").uniqueResult(); Double avg = (Double) s.createQuery("select avg(h.height) from Human h").uniqueResult(); assertEquals(sum.floatValue(), 74.0, 0.01); assertEquals(avg.doubleValue(), 120.5, 0.01); Modified: trunk/Hibernate3/test/org/hibernate/test/joinfetch/JoinFetchTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/joinfetch/JoinFetchTest.java 2006-05-04 18:50:40 UTC (rev 9878) +++ trunk/Hibernate3/test/org/hibernate/test/joinfetch/JoinFetchTest.java 2006-05-04 19:07:57 UTC (rev 9879) @@ -194,8 +194,8 @@ .uniqueResult(); assertFalse( Hibernate.isInitialized( hb.getUsers() ) ); //gavin = (User) s.createFilter( hb.getUsers(), "where index(this) = 'gavin'" ).uniqueResult(); - Integer size = (Integer) s.createFilter( hb.getUsers(), "select count(*)" ).uniqueResult(); - assertEquals( new Integer(2), size ); + Long size = (Long) s.createFilter( hb.getUsers(), "select count(*)" ).uniqueResult(); + assertEquals( new Long(2), size ); assertFalse( Hibernate.isInitialized( hb.getUsers() ) ); s.delete(hb); t.commit(); Modified: trunk/Hibernate3/test/org/hibernate/test/legacy/FooBarTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/legacy/FooBarTest.java 2006-05-04 18:50:40 UTC (rev 9878) +++ trunk/Hibernate3/test/org/hibernate/test/legacy/FooBarTest.java 2006-05-04 19:07:57 UTC (rev 9879) @@ -516,19 +516,19 @@ assertTrue( "query many-to-one", list.size()==1 ); Iterator rs = s.iterate("select count(distinct foo.foo) from Foo foo"); - assertTrue( "count", ( (Integer) rs.next() ).intValue()==2 ); + assertTrue( "count", ( (Long) rs.next() ).longValue()==2 ); assertTrue( !rs.hasNext() ); rs = s.iterate("select count(foo.foo.boolean) from Foo foo"); - assertTrue( "count", ( (Integer) rs.next() ).intValue()==2 ); + assertTrue( "count", ( (Long) rs.next() ).longValue()==2 ); assertTrue( !rs.hasNext() ); rs = s.iterate("select count(*), foo.int from Foo foo group by foo.int"); - assertTrue( "count(*) group by", ( (Object[]) rs.next() )[0].equals( new Integer(3) ) ); + assertTrue( "count(*) group by", ( (Object[]) rs.next() )[0].equals( new Long(3) ) ); assertTrue( !rs.hasNext() ); rs = s.iterate("select sum(foo.foo.int) from Foo foo"); - assertTrue( "sum", ( (Integer) rs.next() ).intValue()==4 ); + assertTrue( "sum", ( (Long) rs.next() ).longValue()==4 ); assertTrue( !rs.hasNext() ); rs = s.iterate("select count(foo) from Foo foo where foo.id=?", foo.getKey(), Hibernate.STRING); - assertTrue( "id query count", ( (Integer) rs.next() ).intValue()==1 ); + assertTrue( "id query count", ( (Long) rs.next() ).longValue()==1 ); assertTrue( !rs.hasNext() ); list = s.find( "from Foo foo where foo.boolean = ?", new Boolean(true), Hibernate.BOOLEAN ); @@ -573,9 +573,9 @@ while ( rs.hasNext() ) { count++; Object[] row = (Object[]) rs.next(); - assertTrue( row[0] instanceof Float ); + assertTrue( row[0] instanceof Double ); assertTrue( row[1] instanceof String ); - assertTrue( row[2] instanceof Integer ); + assertTrue( row[2] instanceof Long ); } assertTrue(count!=0); list = s.find("select foo.long, foo.component, foo, foo.foo from Foo foo"); @@ -2238,8 +2238,8 @@ public void testPersistCollections() throws Exception { Session s = openSession(); Transaction txn = s.beginTransaction(); - assertTrue( ( (Integer) s.iterate("select count(*) from Bar").next() ).intValue()==0 ); - assertTrue( s.iterate("select count(*) from Bar b").next().equals( new Integer(0) ) ); + assertTrue( ( (Long) s.iterate("select count(*) from Bar").next() ).longValue()==0 ); + assertTrue( s.iterate("select count(*) from Bar b").next().equals( new Long(0) ) ); assertFalse( s.iterate("from Glarch g").hasNext() ); Baz baz = new Baz(); @@ -2259,7 +2259,7 @@ s = openSession(); txn = s.beginTransaction(); - assertTrue( ( (Integer) s.iterate("select count(*) from Bar").next() ).intValue()==1 ); + assertTrue( ( (Long) s.iterate("select count(*) from Bar").next() ).longValue()==1 ); baz = (Baz) ( (Object[]) s.find("select baz, baz from Baz baz").get(0) )[1]; assertTrue( baz.getCascadingBars().size()==1 ); //System.out.println( s.print(baz) ); @@ -2296,7 +2296,7 @@ s = openSession(); txn = s.beginTransaction(); - assertTrue( ( (Integer) s.iterate("select count(*) from Bar").next() ).intValue()==1 ); + assertTrue( ( (Long) s.iterate("select count(*) from Bar").next() ).longValue()==1 ); baz = (Baz) s.find("select baz from Baz baz order by baz").get(0); assertTrue( "collection of custom types - added element", baz.getCustoms().size()==4 && baz.getCustoms().get(0)!=null ); assertTrue ( "component of component in collection", baz.getComponents()[1].getSubcomponent()!=null ); @@ -2328,7 +2328,7 @@ s = openSession(); txn = s.beginTransaction(); - assertTrue( ( (Integer) s.iterate("select count(*) from Bar").next() ).intValue()==1 ); + assertTrue( ( (Long) s.iterate("select count(*) from Bar").next() ).longValue()==1 ); baz = (Baz) s.load(Baz.class, baz.getCode()); assertTrue( baz.getCascadingBars().size()==1 ); Bar bar = new Bar(); @@ -2363,7 +2363,7 @@ Session s2 = openSession(); Transaction txn2 = s2.beginTransaction(); - assertTrue( ( (Integer) s2.iterate("select count(*) from Bar").next() ).intValue()==3 ); + assertTrue( ( (Long) s2.iterate("select count(*) from Bar").next() ).longValue()==3 ); Baz baz2 = (Baz) s2.find("select baz from Baz baz order by baz").get(0); Object o = baz2.getFooComponentToFoo().get( new FooComponent("name", 123, null, null) ); assertTrue( @@ -2407,7 +2407,7 @@ s = openSession(); txn = s.beginTransaction(); - assertTrue( ( (Integer) s.iterate("select count(*) from Bar").next() ).intValue()==3 ); + assertTrue( ( (Long) s.iterate("select count(*) from Bar").next() ).longValue()==3 ); baz = (Baz) s.find("select baz from Baz baz order by baz").get(0); assertTrue( baz.getTopGlarchez().size()==2 ); assertTrue( baz.getCascadingBars().size()==1 ); @@ -2421,7 +2421,7 @@ s2.reconnect(); txn2 = s2.beginTransaction(); baz = (Baz) s2.load(Baz.class, baz.getCode()); - assertTrue( ( (Integer) s2.iterate("select count(*) from Bar").next() ).intValue()==3 ); + assertTrue( ( (Long) s2.iterate("select count(*) from Bar").next() ).longValue()==3 ); s2.delete(baz); s2.delete( baz.getTopGlarchez().get( new Character('G') ) ); s2.delete( baz.getTopGlarchez().get( new Character('H') ) ); @@ -3344,8 +3344,8 @@ Iterator rs = s.iterate("select count(distinct child.id), count(distinct parent.id) from Foo parent, Foo child where parent.foo = child"); Object[] row = (Object[]) rs.next(); - assertTrue( "multi-column count", ( (Integer) row[0] ).intValue()==1 ); - assertTrue( "multi-column count", ( (Integer) row[1] ).intValue()==1 ); + assertTrue( "multi-column count", ( (Long) row[0] ).intValue()==1 ); + assertTrue( "multi-column count", ( (Long) row[1] ).intValue()==1 ); assertTrue( !rs.hasNext() ); rs = s.iterate("select child.id, parent.id, child.long from Foo parent, Foo child where parent.foo = child"); Modified: trunk/Hibernate3/test/org/hibernate/test/legacy/Result.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/legacy/Result.java 2006-05-04 18:50:40 UTC (rev 9878) +++ trunk/Hibernate3/test/org/hibernate/test/legacy/Result.java 2006-05-04 19:07:57 UTC (rev 9879) @@ -4,7 +4,7 @@ public class Result { private String name; private long amount; - private int count; + private long count; /** * Returns the amount. * @return long @@ -17,7 +17,7 @@ * Returns the count. * @return int */ - public int getCount() { + public long getCount() { return count; } @@ -41,7 +41,7 @@ * Sets the count. * @param count The count to set */ - public void setCount(int count) { + public void setCount(long count) { this.count = count; } @@ -58,4 +58,10 @@ amount = a; count = c; } + + public Result(String n, long a, long c) { + name = n; + amount = a; + count = c; + } } Modified: trunk/Hibernate3/test/org/hibernate/test/legacy/SQLFunctionsTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/legacy/SQLFunctionsTest.java 2006-05-04 18:50:40 UTC (rev 9878) +++ trunk/Hibernate3/test/org/hibernate/test/legacy/SQLFunctionsTest.java 2006-05-04 19:07:57 UTC (rev 9879) @@ -379,7 +379,7 @@ Iterator iter = s.iterate("select sum(s.count) from Simple s group by s.count having sum(s.count) > 10"); assertTrue( iter.hasNext() ); - assertTrue( new Integer(12).equals( iter.next() ) ); + assertEquals( new Long(12), iter.next() ); assertTrue( !iter.hasNext() ); if ( ! (getDialect() instanceof MySQLDialect) ) { iter = s.iterate("select s.count from Simple s group by s.count having s.count = 12"); Modified: trunk/Hibernate3/test/org/hibernate/test/map/MapIndexFormulaTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/map/MapIndexFormulaTest.java 2006-05-04 18:50:40 UTC (rev 9878) +++ trunk/Hibernate3/test/org/hibernate/test/map/MapIndexFormulaTest.java 2006-05-04 19:07:57 UTC (rev 9879) @@ -53,7 +53,7 @@ assertEquals(smap.size(), 1); gavin = (User) g.getUsers().put("gavin", turin); s.delete(gavin); - assertEquals( s.createQuery("select count(*) from SessionAttribute").uniqueResult(), new Integer(0) ); + assertEquals( s.createQuery("select count(*) from SessionAttribute").uniqueResult(), new Long(0) ); t.commit(); s.close(); @@ -64,10 +64,10 @@ turin = (User) g.getUsers().get("turin"); smap = turin.getSession(); assertEquals(smap.size(), 0); - assertEquals( s.createQuery("select count(*) from User").uniqueResult(), new Integer(1) ); + assertEquals( s.createQuery("select count(*) from User").uniqueResult(), new Long(1) ); s.delete(g); s.delete(turin); - assertEquals( s.createQuery("select count(*) from User").uniqueResult(), new Integer(0) ); + assertEquals( s.createQuery("select count(*) from User").uniqueResult(), new Long(0) ); t.commit(); s.close(); } |