[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