[hibernate-commits] Hibernate SVN: r19412 - in core/trunk: parent and 3 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri May 7 23:34:06 EDT 2010


Author: steve.ebersole at jboss.com
Date: 2010-05-07 23:34:05 -0400 (Fri, 07 May 2010)
New Revision: 19412

Modified:
   core/trunk/core/src/main/java/org/hibernate/dialect/Dialect.java
   core/trunk/core/src/main/java/org/hibernate/dialect/H2Dialect.java
   core/trunk/core/src/main/java/org/hibernate/dialect/HSQLDialect.java
   core/trunk/parent/pom.xml
   core/trunk/testsuite/src/test/java/org/hibernate/test/compositeelement/CompositeElementTest.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/criteria/CriteriaQueryTest.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/hql/CriteriaHQLAlignmentTest.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/hql/HQLTest.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/hql/ScrollableCollectionFetchingTest.java
Log:
HHH-5200 - Prepare to use H2 as the default testing datbase


Modified: core/trunk/core/src/main/java/org/hibernate/dialect/Dialect.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/dialect/Dialect.java	2010-05-07 20:53:34 UTC (rev 19411)
+++ core/trunk/core/src/main/java/org/hibernate/dialect/Dialect.java	2010-05-08 03:34:05 UTC (rev 19412)
@@ -2015,4 +2015,23 @@
 	public boolean supportsBindAsCallableArgument() {
 		return true;
 	}
+
+	/**
+	 * Does this dialect support `count(a,b)`?
+	 *
+	 * @return True if the database supports counting tuples; false otherwise.
+	 */
+	public boolean supportsTupleCounts() {
+		return false;
+	}
+
+	/**
+	 * Does this dialect support `count(distinct a,b)`?
+	 *
+	 * @return True if the database supports counting disintct tuples; false otherwise.
+	 */
+	public boolean supportsTupleDistinctCounts() {
+		// oddly most database in fact seem to, so true is the default.
+		return true;
+	}
 }

Modified: core/trunk/core/src/main/java/org/hibernate/dialect/H2Dialect.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/dialect/H2Dialect.java	2010-05-07 20:53:34 UTC (rev 19411)
+++ core/trunk/core/src/main/java/org/hibernate/dialect/H2Dialect.java	2010-05-08 03:34:05 UTC (rev 19412)
@@ -305,4 +305,9 @@
 	public boolean supportsLobValueChangePropogation() {
 		return false;
 	}
+
+	@Override
+	public boolean supportsTupleDistinctCounts() {
+		return false;
+	}
 }

Modified: core/trunk/core/src/main/java/org/hibernate/dialect/HSQLDialect.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/dialect/HSQLDialect.java	2010-05-07 20:53:34 UTC (rev 19411)
+++ core/trunk/core/src/main/java/org/hibernate/dialect/HSQLDialect.java	2010-05-08 03:34:05 UTC (rev 19412)
@@ -331,4 +331,9 @@
 	public boolean supportsLobValueChangePropogation() {
 		return false;
 	}
+
+	@Override
+	public boolean supportsTupleDistinctCounts() {
+		return false;
+	}
 }

Modified: core/trunk/parent/pom.xml
===================================================================
--- core/trunk/parent/pom.xml	2010-05-07 20:53:34 UTC (rev 19411)
+++ core/trunk/parent/pom.xml	2010-05-08 03:34:05 UTC (rev 19412)
@@ -598,7 +598,7 @@
             <properties>
                 <db.dialect>org.hibernate.dialect.H2Dialect</db.dialect>
                 <jdbc.driver>org.h2.Driver</jdbc.driver>
-                <jdbc.url>jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1</jdbc.url>
+                <jdbc.url>jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE</jdbc.url>
                 <jdbc.user>sa</jdbc.user>
                 <jdbc.pass />
                 <jdbc.isolation />

Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/compositeelement/CompositeElementTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/compositeelement/CompositeElementTest.java	2010-05-07 20:53:34 UTC (rev 19411)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/compositeelement/CompositeElementTest.java	2010-05-08 03:34:05 UTC (rev 19412)
@@ -90,6 +90,7 @@
 	public void testCustomColumnReadAndWrite() {
 		final double HEIGHT_INCHES = 49;
 		final double HEIGHT_CENTIMETERS = HEIGHT_INCHES * 2.54d;
+
 		Session s = openSession();
 		Transaction t = s.beginTransaction();
 		Child c = new Child( "Child One" );
@@ -99,8 +100,8 @@
 		c.setParent( p );
 		s.save( p );
 		s.flush();
-		
-		// Test value conversion during insert		
+
+		// Test value conversion during insert
 		Double heightViaSql = (Double)s.createSQLQuery("select height_centimeters from parentchild c where c.name='Child One'")
 			.uniqueResult();
 		assertEquals(HEIGHT_CENTIMETERS, heightViaSql, 0.01d);

Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/criteria/CriteriaQueryTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/criteria/CriteriaQueryTest.java	2010-05-07 20:53:34 UTC (rev 19411)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/criteria/CriteriaQueryTest.java	2010-05-08 03:34:05 UTC (rev 19412)
@@ -985,10 +985,18 @@
 			result = s.createCriteria( Student.class )
 				.setProjection( Projections.count( "cityState" ) )
 				.uniqueResult();
-			fail( "expected SQLGrammarException" );
+			if ( ! getDialect().supportsTupleCounts() ) {
+				fail( "expected SQLGrammarException" );
+			}
+			assertEquals( 1, ( ( Long ) result ).longValue() );
 		}
 		catch ( SQLGrammarException ex ) {
-			// expected
+			if ( ! getDialect().supportsTupleCounts() ) {
+				// expected
+			}
+			else {
+				throw ex;
+			}
 		}
 		finally {
 			t.rollback();
@@ -999,13 +1007,18 @@
 		t = s.beginTransaction();
 		try {
 			result = s.createCriteria( Student.class )
-				.setProjection( Projections.countDistinct( "cityState" ) )
-				.uniqueResult();
+					.setProjection( Projections.countDistinct( "cityState" ) )
+					.uniqueResult();
+			if ( ! getDialect().supportsTupleDistinctCounts() ) {
+				fail( "expected SQLGrammarException" );
+			}
 			assertEquals( 1, ( ( Long ) result ).longValue() );
 		}
 		catch ( SQLGrammarException ex ) {
-			// HSQLDB's cannot handle more than 1 argument in SELECT COUNT( DISTINCT ... ) )
-			if ( ! ( getDialect() instanceof HSQLDialect ) )  {
+			if ( ! getDialect().supportsTupleDistinctCounts() ) {
+				// expected
+			}
+			else {
 				throw ex;
 			}
 		}
@@ -1276,11 +1289,16 @@
 		s = openSession();
 		t = s.beginTransaction();
 		try {
-			Object result = s.createCriteria( CourseMeeting.class).setProjection( Projections.countDistinct( "id" ) ).list();
+			s.createCriteria( CourseMeeting.class).setProjection( Projections.countDistinct( "id" ) ).list();
+			if ( ! getDialect().supportsTupleDistinctCounts() ) {
+				fail( "expected SQLGrammarException" );
+			}
 		}
 		catch ( SQLGrammarException ex ) {
-			// HSQLDB's cannot handle more than 1 argument in SELECT COUNT( DISTINCT ... ) )
-			if ( ! ( getDialect() instanceof HSQLDialect ) )  {
+			if ( ! getDialect().supportsTupleDistinctCounts() ) {
+				// expected
+			}
+			else {
 				throw ex;
 			}
 		}

Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/hql/CriteriaHQLAlignmentTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/hql/CriteriaHQLAlignmentTest.java	2010-05-07 20:53:34 UTC (rev 19411)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/hql/CriteriaHQLAlignmentTest.java	2010-05-08 03:34:05 UTC (rev 19412)
@@ -230,11 +230,16 @@
 		t = s.beginTransaction();
 		try {
 			count = ( Long ) s.createQuery( "select count( distinct name ) from Human" ).uniqueResult();
+			if ( ! getDialect().supportsTupleDistinctCounts() ) {
+				fail( "expected SQLGrammarException" );
+			}
 			assertEquals( 2, count.longValue() );
 		}
 		catch ( SQLGrammarException ex ) {
-			// HSQLDB's cannot handle more than 1 argument in SELECT COUNT( DISTINCT ... ) )
-			if ( ! ( getDialect() instanceof HSQLDialect ) )  {
+			if ( ! getDialect().supportsTupleDistinctCounts() ) {
+				// expected
+			}
+			else {
 				throw ex;
 			}
 		}
@@ -247,13 +252,18 @@
 		t = s.beginTransaction();
 		try {
 			count = ( Long ) s.createCriteria( Human.class )
-				.setProjection( Projections.count( "name" ).setDistinct() )
-				.uniqueResult();
+					.setProjection( Projections.count( "name" ).setDistinct() )
+					.uniqueResult();
+			if ( ! getDialect().supportsTupleDistinctCounts() ) {
+				fail( "expected SQLGrammarException" );
+			}
 			assertEquals( 2, count.longValue() );
 		}
 		catch ( SQLGrammarException ex ) {
-			// HSQLDB's cannot handle more than 1 argument in SELECT COUNT( DISTINCT ... ) )
-			if ( ! ( getDialect() instanceof HSQLDialect ) )  {
+			if ( ! getDialect().supportsTupleDistinctCounts() ) {
+				// expected
+			}
+			else {
 				throw ex;
 			}
 		}
@@ -278,10 +288,18 @@
 		t = s.beginTransaction();
 		try {
 			count = ( Long ) s.createQuery( "select count( name ) from Human" ).uniqueResult();
-			fail( "should have failed due to SQLGrammarException" );
+			if ( ! getDialect().supportsTupleCounts() ) {
+				fail( "expected SQLGrammarException" );
+			}
+			assertEquals( 1, count.longValue() );
 		}
 		catch ( SQLGrammarException ex ) {
-			// expected
+			if ( ! getDialect().supportsTupleCounts() ) {
+				// expected
+			}
+			else {
+				throw ex;
+			}
 		}
 		finally {
 			t.rollback();
@@ -292,12 +310,20 @@
 		t = s.beginTransaction();
 		try {
 			count = ( Long ) s.createCriteria( Human.class )
-				.setProjection( Projections.count( "name" ) )
-				.uniqueResult();
-			fail( "should have failed due to SQLGrammarException" );
+					.setProjection( Projections.count( "name" ) )
+					.uniqueResult();
+			if ( ! getDialect().supportsTupleCounts() ) {
+				fail( "expected SQLGrammarException" );
+			}
+			assertEquals( 1, count.longValue() );
 		}
 		catch ( SQLGrammarException ex ) {
-			// expected
+			if ( ! getDialect().supportsTupleCounts() ) {
+				// expected
+			}
+			else {
+				throw ex;
+			}
 		}
 		finally {
 			t.rollback();

Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/hql/HQLTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/hql/HQLTest.java	2010-05-07 20:53:34 UTC (rev 19411)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/hql/HQLTest.java	2010-05-08 03:34:05 UTC (rev 19412)
@@ -14,6 +14,7 @@
 import org.hibernate.Hibernate;
 import org.hibernate.QueryException;
 import org.hibernate.dialect.DB2Dialect;
+import org.hibernate.dialect.H2Dialect;
 import org.hibernate.dialect.HSQLDialect;
 import org.hibernate.dialect.IngresDialect;
 import org.hibernate.dialect.MySQLDialect;
@@ -726,9 +727,12 @@
 	public void testGroupByFunction() {
 		if ( getDialect() instanceof Oracle8iDialect ) return; // the new hiearchy...
 		if ( getDialect() instanceof PostgreSQLDialect ) return;
-		assertTranslation( "select count(*) from Human h group by year(h.birthdate)" );
+		if ( ! H2Dialect.class.isInstance( getDialect() ) ) {
+			// H2 has no year function
+			assertTranslation( "select count(*) from Human h group by year(h.birthdate)" );
+			assertTranslation( "select count(*) from Human h group by year(sysdate)" );
+		}
 		assertTranslation( "select count(*) from Human h group by trunc( sqrt(h.bodyWeight*4)/2 )" );
-		assertTranslation( "select count(*) from Human h group by year(sysdate)" );
 	}
 
 

Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/hql/ScrollableCollectionFetchingTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/hql/ScrollableCollectionFetchingTest.java	2010-05-07 20:53:34 UTC (rev 19411)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/hql/ScrollableCollectionFetchingTest.java	2010-05-08 03:34:05 UTC (rev 19412)
@@ -53,17 +53,15 @@
 		Session s = openSession();
 		Transaction txn = s.beginTransaction();
 
-		assertTrue(s
-		        .createQuery( "from Animal a left join fetch a.offspring where a.description like :desc order by a.id" )
-		        .setString( "desc", "root%" )
-		        .list()
-				.isEmpty() );
+		final String query = "from Animal a left join fetch a.offspring where a.description like :desc order by a.id";
 
-		ScrollableResults results = s
-		        .createQuery( "from Animal a left join fetch a.offspring where a.description like :desc order by a.id" )
-		        .setString( "desc", "root%" )
-		        .scroll();
+		// first, as a control, make sure there are no results
+		int size = s.createQuery( query ).setString( "desc", "root%" ).list().size();
+		assertEquals( 0, size );
 
+		// now get the scrollable results
+		ScrollableResults results = s.createQuery( query ).setString( "desc", "root%" ).scroll();
+
 		assertFalse( results.isFirst() );
 		assertFalse( results.isLast() );
 



More information about the hibernate-commits mailing list