mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-27 14:30:16 +00:00
Adapt a few Oracle pagination with lock tests to consider that only Oracle 12.2 supports the fetch clause perfectly
This commit is contained in:
parent
3704dad923
commit
f7af0017f7
@ -10,6 +10,8 @@
|
||||
import org.hibernate.LockMode;
|
||||
import org.hibernate.LockOptions;
|
||||
import org.hibernate.dialect.OracleDialect;
|
||||
import org.hibernate.engine.spi.SessionImplementor;
|
||||
import org.hibernate.query.FetchClauseType;
|
||||
import org.hibernate.resource.jdbc.spi.StatementInspector;
|
||||
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
@ -68,6 +70,7 @@ public void testNativeQuery(SessionFactoryScope scope) {
|
||||
.list();
|
||||
assertEquals( 10, people.size() );
|
||||
assertFalse( mostRecentStatementInspector.sqlContains( "fetch" ) );
|
||||
assertTrue( mostRecentStatementInspector.sqlContains( "rownum" ) );
|
||||
}
|
||||
);
|
||||
|
||||
@ -77,7 +80,7 @@ public void testNativeQuery(SessionFactoryScope scope) {
|
||||
.setMaxResults( 10 )
|
||||
.list();
|
||||
assertEquals( 10, people.size() );
|
||||
assertTrue( mostRecentStatementInspector.sqlContains( "fetch" ) );
|
||||
assertSqlContainsFetch( session );
|
||||
}
|
||||
);
|
||||
|
||||
@ -88,7 +91,7 @@ public void testNativeQuery(SessionFactoryScope scope) {
|
||||
.setMaxResults( 10 )
|
||||
.list();
|
||||
assertEquals( 10, people.size() );
|
||||
assertTrue( mostRecentStatementInspector.sqlContains( "fetch" ) );
|
||||
assertSqlContainsFetch( session );
|
||||
}
|
||||
);
|
||||
}
|
||||
@ -130,6 +133,7 @@ public void testCriteriaQuery(SessionFactoryScope scope) {
|
||||
.getResultList();
|
||||
assertEquals( 10, people.size() );
|
||||
assertFalse( mostRecentStatementInspector.sqlContains( "fetch" ) );
|
||||
assertTrue( mostRecentStatementInspector.sqlContains( "rownum" ) );
|
||||
}
|
||||
);
|
||||
|
||||
@ -156,7 +160,7 @@ public void testCriteriaQuery(SessionFactoryScope scope) {
|
||||
.setFirstResult( 2 )
|
||||
.getResultList();
|
||||
assertEquals( 10, people.size() );
|
||||
assertTrue( mostRecentStatementInspector.sqlContains( "fetch" ) );
|
||||
assertSqlContainsFetch( session );
|
||||
}
|
||||
);
|
||||
|
||||
@ -173,6 +177,7 @@ public void testHqlQuery(SessionFactoryScope scope) {
|
||||
.getResultList();
|
||||
assertEquals( 10, people.size() );
|
||||
assertFalse( mostRecentStatementInspector.sqlContains( "fetch" ) );
|
||||
assertTrue( mostRecentStatementInspector.sqlContains( "rownum" ) );
|
||||
}
|
||||
);
|
||||
|
||||
@ -196,7 +201,7 @@ public void testHqlQuery(SessionFactoryScope scope) {
|
||||
.getResultList();
|
||||
assertEquals( 10, people.size() );
|
||||
assertEquals( 10, people.size() );
|
||||
assertTrue( mostRecentStatementInspector.sqlContains( "fetch" ) );
|
||||
assertSqlContainsFetch( session );
|
||||
}
|
||||
);
|
||||
|
||||
@ -209,6 +214,7 @@ public void testHqlQuery(SessionFactoryScope scope) {
|
||||
.getResultList();
|
||||
assertEquals( 1, people.size() );
|
||||
assertFalse( mostRecentStatementInspector.sqlContains( "fetch" ) );
|
||||
assertTrue( mostRecentStatementInspector.sqlContains( "rownum" ) );
|
||||
}
|
||||
);
|
||||
|
||||
@ -226,6 +232,16 @@ public void testHqlQuery(SessionFactoryScope scope) {
|
||||
|
||||
}
|
||||
|
||||
private void assertSqlContainsFetch(SessionImplementor session) {
|
||||
// We can only assert for fetch if the database actually supports it
|
||||
if ( session.getFactory().getJdbcServices().getDialect().supportsFetchClause( FetchClauseType.ROWS_ONLY ) ) {
|
||||
assertTrue( mostRecentStatementInspector.sqlContains( "fetch" ) );
|
||||
}
|
||||
else {
|
||||
assertTrue( mostRecentStatementInspector.sqlContains( "rownum" ) );
|
||||
}
|
||||
}
|
||||
|
||||
public static class MostRecentStatementInspector implements StatementInspector {
|
||||
private String mostRecentSql;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user