mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Cleanup tests for Oracle
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
package io.ebean;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
import org.junit.Test;
|
||||
|
||||
import javax.persistence.PersistenceException;
|
||||
|
||||
@@ -23,6 +23,8 @@ public class EbeanServer_eqlTest extends BaseTestCase {
|
||||
if (isSqlServer()) {
|
||||
assertThat(query.getGeneratedSql()).startsWith("select top 100 ");
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.id");
|
||||
} else if (isOracle()) {
|
||||
assertThat(query.getGeneratedSql()).contains("where rownum <= 100");
|
||||
} else {
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.id limit 100");
|
||||
}
|
||||
@@ -39,6 +41,8 @@ public class EbeanServer_eqlTest extends BaseTestCase {
|
||||
if (isSqlServer()) {
|
||||
assertThat(query.getGeneratedSql()).startsWith("select top 10 ");
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.id");
|
||||
} else if (isOracle()) {
|
||||
assertThat(query.getGeneratedSql()).contains("where rownum <= 10");
|
||||
} else {
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.id limit 10");
|
||||
}
|
||||
@@ -54,6 +58,9 @@ public class EbeanServer_eqlTest extends BaseTestCase {
|
||||
|
||||
if (isSqlServer()) {
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.id offset 3 rows fetch next 10 rows only");
|
||||
} else if (isOracle()) {
|
||||
assertThat(query.getGeneratedSql()).contains("where rownum <= 13");
|
||||
assertThat(query.getGeneratedSql()).contains("where rn_ > 3");
|
||||
} else {
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.id limit 10 offset 3");
|
||||
}
|
||||
@@ -72,6 +79,9 @@ public class EbeanServer_eqlTest extends BaseTestCase {
|
||||
|
||||
if (isSqlServer()) {
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.name, t0.id offset 3 rows fetch next 10 rows only");
|
||||
} else if (isOracle()) {
|
||||
assertThat(query.getGeneratedSql()).contains("where rownum <= 13");
|
||||
assertThat(query.getGeneratedSql()).contains("where rn_ > 3");
|
||||
} else {
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.name, t0.id limit 10 offset 3");
|
||||
}
|
||||
@@ -89,6 +99,9 @@ public class EbeanServer_eqlTest extends BaseTestCase {
|
||||
|
||||
if (isSqlServer()) {
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.id offset 3 rows fetch next 10 rows only");
|
||||
} else if (isOracle()) {
|
||||
assertThat(query.getGeneratedSql()).contains("where rownum <= 13");
|
||||
assertThat(query.getGeneratedSql()).contains("where rn_ > 3");
|
||||
} else {
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.id limit 10 offset 3");
|
||||
}
|
||||
@@ -106,6 +119,9 @@ public class EbeanServer_eqlTest extends BaseTestCase {
|
||||
if (isSqlServer()) {
|
||||
assertThat(query.getGeneratedSql()).startsWith("select top 10 ");
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.id");
|
||||
} else if (isOracle()) {
|
||||
assertThat(query.getGeneratedSql()).contains("t0 order by t0.id");
|
||||
assertThat(query.getGeneratedSql()).contains(" a where rownum <= 10");
|
||||
} else {
|
||||
assertThat(query.getGeneratedSql()).endsWith("order by t0.id limit 10");
|
||||
}
|
||||
|
||||
@@ -340,7 +340,7 @@ public class EqlParserTest extends BaseTestCase {
|
||||
public void fetch_lazy50_asHint() throws Exception {
|
||||
|
||||
ResetBasicData.reset();
|
||||
Query<Customer> query = parse("fetch billingAddress (+lazy(50),city)");
|
||||
Query<Customer> query = parse("fetch billingAddress (+lazy(50),city) order by id");
|
||||
List<Customer> list = query.findList();
|
||||
|
||||
assertThat(query.getGeneratedSql()).doesNotContain(", t1.city");
|
||||
|
||||
@@ -4,11 +4,10 @@ import io.ebean.AcquireLockException;
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.EbeanServer;
|
||||
import io.ebean.annotation.Platform;
|
||||
import io.ebean.Query;
|
||||
import io.ebean.Transaction;
|
||||
import io.ebean.annotation.ForPlatform;
|
||||
|
||||
import io.ebean.annotation.Platform;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
@@ -31,7 +30,6 @@ public class TestQueryForUpdate extends BaseTestCase {
|
||||
|
||||
Query<Customer> query = Ebean.find(Customer.class)
|
||||
.forUpdate()
|
||||
.setMaxRows(1)
|
||||
.order().desc("id");
|
||||
|
||||
query.findList();
|
||||
@@ -44,13 +42,41 @@ public class TestQueryForUpdate extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
@ForPlatform({
|
||||
Platform.H2, Platform.ORACLE, Platform.POSTGRES, Platform.SQLSERVER
|
||||
Platform.H2, Platform.POSTGRES, Platform.SQLSERVER, Platform.ORACLE
|
||||
})
|
||||
public void testForUpdate_noWait_noMaxRows() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
Ebean.beginTransaction();
|
||||
|
||||
try {
|
||||
Query<Customer> query = Ebean.find(Customer.class)
|
||||
.forUpdateNoWait()
|
||||
.order().desc("id");
|
||||
|
||||
query.findList();
|
||||
if (isOracle()) {
|
||||
assertThat(sqlOf(query)).contains("for update nowait");
|
||||
} else if (isSqlServer()) {
|
||||
assertThat(sqlOf(query)).contains("with (updlock,nowait)");
|
||||
} else {
|
||||
assertThat(sqlOf(query)).contains("for update nowait");
|
||||
}
|
||||
|
||||
} finally {
|
||||
Ebean.endTransaction();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@ForPlatform({
|
||||
Platform.H2, Platform.POSTGRES, Platform.SQLSERVER
|
||||
})
|
||||
public void testForUpdate_noWait() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
|
||||
EbeanServer server = Ebean.getDefaultServer();
|
||||
|
||||
Ebean.beginTransaction();
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
package org.tests.family;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.annotation.IgnorePlatform;
|
||||
import io.ebean.annotation.Platform;
|
||||
import io.ebeaninternal.server.deploy.BeanDescriptor;
|
||||
import io.ebeaninternal.server.deploy.BeanProperty;
|
||||
import io.ebeaninternal.server.deploy.BeanPropertyAssocOne;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.EBasic;
|
||||
import org.tests.model.family.ChildPerson;
|
||||
import org.tests.model.family.GrandParentPerson;
|
||||
import org.tests.model.family.ParentPerson;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
|
||||
public class TestInheritance extends BaseTestCase {
|
||||
@@ -37,6 +42,7 @@ public class TestInheritance extends BaseTestCase {
|
||||
* +- parent3 Michael(60)
|
||||
* </pre>
|
||||
*/
|
||||
@IgnorePlatform(Platform.ORACLE)
|
||||
@Test
|
||||
public void testInheritance() {
|
||||
// create some other beans
|
||||
|
||||
@@ -2,6 +2,8 @@ package org.tests.model.history;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.annotation.IgnorePlatform;
|
||||
import io.ebean.annotation.Platform;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
@@ -35,6 +37,7 @@ public class TestHistoryExclude extends BaseTestCase {
|
||||
linkFound.getDocs().size();
|
||||
}
|
||||
|
||||
@IgnorePlatform(Platform.ORACLE)
|
||||
@Test
|
||||
public void testAsOfThenLazy() {
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@ package org.tests.model.history;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.annotation.IgnorePlatform;
|
||||
import io.ebean.annotation.Platform;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
@@ -35,6 +37,7 @@ public class TestHistoryInclude extends BaseTestCase {
|
||||
assertThat(linkFound.getDocs().size()).isEqualTo(2);
|
||||
}
|
||||
|
||||
@IgnorePlatform(Platform.ORACLE)
|
||||
@Test
|
||||
public void testAsOfThenLazy() {
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ public class TestManyToOneAsOne extends BaseTestCase {
|
||||
|
||||
@Transactional(batchSize = 20)
|
||||
@Test
|
||||
@IgnorePlatform(Platform.SQLSERVER) // probably due the use of sequences - Empl has already an ID and Addr refers to it.
|
||||
@IgnorePlatform({Platform.SQLSERVER, Platform.ORACLE}) // probably due the use of sequences - Empl has already an ID and Addr refers to it.
|
||||
public void test_when_jdbcBatch() {
|
||||
runInserts();
|
||||
}
|
||||
|
||||
@@ -3,15 +3,14 @@ package org.tests.query.other;
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.Query;
|
||||
|
||||
import org.tests.model.basic.Contact;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.tests.inherit.ChildA;
|
||||
import org.tests.inherit.Data;
|
||||
import org.tests.inherit.EUncle;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Contact;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.util.List;
|
||||
@@ -169,6 +168,9 @@ public class TestQuerySingleAttribute extends BaseTestCase {
|
||||
List<String> ids = query.findSingleAttributeList();
|
||||
if (isSqlServer()) {
|
||||
assertThat(sqlOf(query)).contains("select distinct top 100 t0.id from o_customer t0");
|
||||
} else if (isOracle()) {
|
||||
assertThat(sqlOf(query)).contains("from ( select distinct t0.id from o_customer t0");
|
||||
assertThat(sqlOf(query)).contains("where rownum <= 100");
|
||||
} else {
|
||||
assertThat(sqlOf(query)).contains("select distinct t0.id from o_customer t0 limit 100");
|
||||
}
|
||||
@@ -243,6 +245,8 @@ public class TestQuerySingleAttribute extends BaseTestCase {
|
||||
List<String> ids = query.findSingleAttributeList();
|
||||
if (isSqlServer()) {
|
||||
assertThat(sqlOf(query)).contains("select top 100 t0.id from o_customer t0");
|
||||
} else if (isOracle()) {
|
||||
assertThat(sqlOf(query)).contains("where rownum <= 100");
|
||||
} else {
|
||||
assertThat(sqlOf(query)).contains("select t0.id from o_customer t0 limit 100");
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@ package org.tests.query.other;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.Order;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.Order;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -44,6 +44,7 @@ public class TestWhereAnnotation extends BaseTestCase {
|
||||
LoggedSqlCollector.start();
|
||||
|
||||
List<Customer> customers = Ebean.find(Customer.class)
|
||||
.order().asc("id")
|
||||
.findList();
|
||||
|
||||
List<Order> orders = customers.get(0).getOrders();
|
||||
|
||||
@@ -4,10 +4,10 @@ import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.SqlQuery;
|
||||
import io.ebean.SqlRow;
|
||||
import org.tests.model.basic.Order;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Order;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
@@ -62,6 +62,8 @@ public class SqlQueryTests extends BaseTestCase {
|
||||
// explicit order is specified. In postgres this leads to strange scrolling
|
||||
// artifacts.
|
||||
assertThat(sql.get(0)).contains("order by 1 offset 3 rows fetch next 10 rows only");
|
||||
} else if (isOracle()) {
|
||||
assertThat(sql.get(0)).contains("from o_order offset 3 rows fetch next 10 rows only");
|
||||
} else {
|
||||
assertThat(sql.get(0)).contains("Select * from o_order limit 10 offset 3; --bind()");
|
||||
}
|
||||
@@ -100,6 +102,8 @@ public class SqlQueryTests extends BaseTestCase {
|
||||
|
||||
if (isSqlServer()) {
|
||||
assertThat(sql.get(0)).contains("Select * from o_order order by id offset 0 rows fetch next 10 rows only;");
|
||||
} else if (isOracle()) {
|
||||
assertThat(sql.get(0)).contains("from o_order order by id fetch next 10 rows only;");
|
||||
} else {
|
||||
assertThat(sql.get(0)).contains("Select * from o_order order by id limit 10");
|
||||
}
|
||||
@@ -120,6 +124,8 @@ public class SqlQueryTests extends BaseTestCase {
|
||||
|
||||
if (isSqlServer()) {
|
||||
assertThat(sql.get(0)).contains("select * from o_order where o_order.id > ? order by id offset 0 rows fetch next 10 rows only;");
|
||||
} else if (isOracle()) {
|
||||
assertThat(sql.get(0)).contains("order by id fetch next 10 rows only");
|
||||
} else {
|
||||
assertThat(sql.get(0)).contains("select * from o_order where o_order.id > ? order by id limit 10;");
|
||||
}
|
||||
@@ -139,6 +145,8 @@ public class SqlQueryTests extends BaseTestCase {
|
||||
|
||||
if (isSqlServer()) {
|
||||
assertThat(sql.get(0)).contains("offset 0 rows fetch next 10 rows only");
|
||||
} else if (isOracle()) {
|
||||
assertThat(sql.get(0)).contains("fetch next 10 rows only");
|
||||
} else {
|
||||
assertThat(sql.get(0)).contains("limit 10");
|
||||
}
|
||||
|
||||
@@ -10,11 +10,11 @@ import io.ebean.RawSql;
|
||||
import io.ebean.RawSqlBuilder;
|
||||
import io.ebean.annotation.IgnorePlatform;
|
||||
import io.ebean.annotation.Platform;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.Order;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
@@ -23,6 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TestRawSqlOrmQuery extends BaseTestCase {
|
||||
|
||||
@IgnorePlatform(Platform.ORACLE)
|
||||
@Test
|
||||
public void testNamed() {
|
||||
|
||||
@@ -168,11 +169,14 @@ public class TestRawSqlOrmQuery extends BaseTestCase {
|
||||
if (isSqlServer()) {
|
||||
assertThat(query.getGeneratedSql()).contains("top 100 ");
|
||||
assertThat(query.getGeneratedSql()).contains("order by o.ship_date desc, o.id");
|
||||
} else if (isOracle()) {
|
||||
assertThat(query.getGeneratedSql()).contains("a where rownum <= 100 )");
|
||||
} else {
|
||||
assertThat(query.getGeneratedSql()).contains("order by o.ship_date desc, o.id limit 100");
|
||||
}
|
||||
}
|
||||
|
||||
@IgnorePlatform(Platform.ORACLE)
|
||||
@Test
|
||||
public void testPaging_when_setOrderBy_expect_id_appendToOrderBy() {
|
||||
|
||||
@@ -227,6 +231,8 @@ public class TestRawSqlOrmQuery extends BaseTestCase {
|
||||
if (isSqlServer()) {
|
||||
assertThat(sqlOf(query)).contains("select top 100 ");
|
||||
assertThat(sqlOf(query)).contains("order by o.id desc");
|
||||
} else if (isOracle()) {
|
||||
assertThat(sqlOf(query)).contains("a where rownum <= 100 )");
|
||||
} else {
|
||||
assertThat(sqlOf(query)).contains("order by o.id desc limit 100");
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.ebean.EbeanServer;
|
||||
import io.ebean.Query;
|
||||
import io.ebean.annotation.IgnorePlatform;
|
||||
import io.ebean.annotation.Platform;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.Order;
|
||||
@@ -107,8 +108,11 @@ public class TestNativeSqlBasic extends BaseTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Oracle does not support getTableName() via JDBC resultSet meta data
|
||||
*/
|
||||
@Test
|
||||
@IgnorePlatform(Platform.SQLSERVER) // does only work in 'cursor' mode!
|
||||
@IgnorePlatform({Platform.SQLSERVER, Platform.ORACLE}) // does only work in 'cursor' mode!
|
||||
public void partialAssoc() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
@@ -126,6 +130,36 @@ public class TestNativeSqlBasic extends BaseTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void partialAssocIncludingOracle() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
EbeanServer server = Ebean.getDefaultServer();
|
||||
|
||||
String nativeSql = "select o.id, o.status, o.kcustomer_id from o_order o";
|
||||
|
||||
List<Order> orders = server.findNative(Order.class, nativeSql)
|
||||
.findList();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
|
||||
for (Order order : orders) {
|
||||
order.getStatus();
|
||||
}
|
||||
|
||||
List<String> sql = LoggedSqlCollector.current();
|
||||
assertThat(sql).isEmpty();
|
||||
|
||||
for (Order order : orders) {
|
||||
order.getCustomer().getName();
|
||||
}
|
||||
|
||||
sql = LoggedSqlCollector.stop();
|
||||
assertThat(sql).hasSize(1);
|
||||
assertThat(sql.get(0)).contains(" from o_customer t0 where ");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fetchQuery() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user