#1631 - Change logging for SqlUpdate ... such that it is more consistent with other SQL logging wrt JDBC batch

This commit is contained in:
rob bygrave
2019-02-07 17:20:49 +13:00
parent 0c03a8b925
commit 9e1d7ab722
20 changed files with 192 additions and 109 deletions
+10
View File
@@ -94,6 +94,16 @@ public abstract class BaseTestCase {
return trimSql(query.getGeneratedSql(), columns);
}
protected void assertSqlBind(List<String> sql, int i) {
assertThat(sql.get(i)).contains("-- bind");
}
protected void assertSqlBind(List<String> sql, int from, int to) {
for (int i = from; i <= to; i++) {
assertThat(sql.get(i)).contains("-- bind");
}
}
protected String trimSql(String sql) {
if (sql.contains(" c1,")) {
@@ -41,12 +41,12 @@ public class TestMergeM2M extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(3);
assertThat(sql).hasSize(6);
assertThat(sql.get(0)).contains("select");
assertThat(sql.get(1)).contains("insert into mmachine");
assertThat(sql.get(2)).contains("insert into mmachine_mgroup");
}
else {
assertSqlBind(sql, 3, 5);
} else {
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("select");
assertThat(sql.get(1)).contains("insert into mmachine");
@@ -66,11 +66,13 @@ public class TestMergeM2M extends BaseTestCase {
Ebean.merge(m1, options);
sql = LoggedSqlCollector.current();
assertThat(sql).hasSize(4);
assertThat(sql).hasSize(9);
assertThat(sql.get(0)).contains("select");
assertThat(sql.get(1)).contains("delete from mmachine_mgroup");
assertThat(sql.get(2)).contains("insert into mmachine_mgroup");
assertThat(sql.get(3)).contains("update mmachine");
assertSqlBind(sql, 2, 4);
assertThat(sql.get(5)).contains("insert into mmachine_mgroup");
assertSqlBind(sql, 6, 7);
assertThat(sql.get(8)).contains("update mmachine");
}
}
@@ -30,11 +30,11 @@ public class TestElementCollectionBasic extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(4);
assertThat(sql.get(0)).contains("insert into ec_person");
assertThat(sql.get(1)).contains("insert into ec_person_phone");
}
else {
assertSqlBind(sql, 2, 3);
} else {
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).contains("insert into ec_person");
assertThat(sql.get(1)).contains("insert into ec_person_phone");
@@ -130,12 +130,13 @@ public class TestElementCollectionBasic extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(3);
assertThat(sql).hasSize(6);
assertThat(sql.get(0)).contains("update ec_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(1)).contains("delete from ec_person_phone where owner_id=?");
assertThat(sql.get(2)).contains("insert into ec_person_phone (owner_id,phone) values (?,?)");
}
else {
assertSqlBind(sql, 3, 5);
} else {
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("update ec_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(1)).contains("delete from ec_person_phone where owner_id=?");
@@ -160,10 +161,12 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
List<String> sql = LoggedSqlCollector.current();
assertThat(sql).hasSize(4);
assertThat(sql).hasSize(9);
assertThat(sql.get(0)).contains("update ec_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(2)).contains("delete from ec_person_phone where owner_id=?");
assertThat(sql.get(3)).contains("insert into ec_person_phone (owner_id,phone) values (?,?)");
assertSqlBind(sql, 3);
assertThat(sql.get(4)).contains("insert into ec_person_phone (owner_id,phone) values (?,?)");
assertSqlBind(sql, 5, 8);
assertThat(eventLog()).containsExactly("preUpdate", "postUpdate");
@@ -192,9 +195,11 @@ public class TestElementCollectionBasic extends BaseTestCase {
}
List<String> sql = LoggedSqlCollector.current();
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(8);
assertThat(sql.get(0)).contains("delete from ec_person_phone where owner_id=?");
assertThat(sql.get(1)).contains("insert into ec_person_phone (owner_id,phone) values (?,?)");
assertSqlBind(sql, 1);
assertThat(sql.get(2)).contains("insert into ec_person_phone (owner_id,phone) values (?,?)");
assertSqlBind(sql, 3, 7);
assertThat(eventLog()).containsExactly("preUpdate", "postUpdate");
@@ -208,11 +213,12 @@ public class TestElementCollectionBasic extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(8);
assertThat(sql.get(0)).contains("delete from ec_person_phone where owner_id=?");
assertThat(sql.get(1)).contains("insert into ec_person_phone (owner_id,phone) values (?,?)");
}
else {
assertSqlBind(sql, 2, 7);
} else {
assertThat(sql).hasSize(7);
assertThat(sql.get(0)).contains("delete from ec_person_phone where owner_id=?");
assertThat(sql.get(1)).contains("insert into ec_person_phone (owner_id,phone) values (?,?)");
@@ -1,5 +1,6 @@
package org.tests.model.elementcollection;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.annotation.PersistBatch;
import io.ebeaninternal.api.SpiEbeanServer;
@@ -10,7 +11,7 @@ import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class TestElementCollectionBasicCache {
public class TestElementCollectionBasicCache extends BaseTestCase {
@Test
public void test() {
@@ -42,9 +43,9 @@ public class TestElementCollectionBasicCache {
sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(3);
}
else {
assertThat(sql).hasSize(6);
assertSqlBind(sql, 3, 5);
} else {
assertThat(sql).hasSize(5);
}
@@ -68,9 +69,8 @@ public class TestElementCollectionBasicCache {
sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2); // cache hit
}
else {
assertThat(sql).hasSize(6); // cache hit
} else {
assertThat(sql).hasSize(5); // cache hit
}
@@ -25,11 +25,11 @@ public class TestElementCollectionBasicMap extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(4);
assertThat(sql.get(0)).contains("insert into ecm_person");
assertThat(sql.get(1)).contains("insert into ecm_person_phone");
}
else {
assertSqlBind(sql, 2, 3);
} else {
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).contains("insert into ecm_person");
assertThat(sql.get(1)).contains("insert into ecm_person_phone");
@@ -105,12 +105,12 @@ public class TestElementCollectionBasicMap extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(3);
assertThat(sql).hasSize(6);
assertThat(sql.get(0)).contains("update ecm_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(1)).contains("delete from ecm_person_phone_numbers where ecm_person_id=?");
assertThat(sql.get(2)).contains("insert into ecm_person_phone_numbers (ecm_person_id,type,number) values (?,?,?)");
}
else {
assertSqlBind(sql, 3, 5);
} else {
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("update ecm_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(1)).contains("delete from ecm_person_phone_numbers where ecm_person_id=?");
@@ -139,11 +139,11 @@ public class TestElementCollectionBasicMap extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(6);
assertThat(sql.get(0)).contains("delete from ecm_person_phone_numbers where ecm_person_id=?");
assertThat(sql.get(1)).contains("insert into ecm_person_phone_numbers (ecm_person_id,type,number) values (?,?,?)");
}
else {
assertSqlBind(sql, 2, 5);
} else {
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("delete from ecm_person_phone_numbers where ecm_person_id=?");
assertThat(sql.get(1)).contains("insert into ecm_person_phone_numbers (ecm_person_id,type,number) values (?,?,?)");
@@ -23,9 +23,10 @@ public class TestElementCollectionBasicMapAsLob extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(4);
assertThat(sql.get(0)).contains("insert into ecmc_person");
assertThat(sql.get(1)).contains("insert into ecmc_person_phone");
assertSqlBind(sql, 2, 3);
} else {
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).contains("insert into ecmc_person");
@@ -1,5 +1,6 @@
package org.tests.model.elementcollection;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.annotation.PersistBatch;
import io.ebeaninternal.api.SpiEbeanServer;
@@ -10,7 +11,7 @@ import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class TestElementCollectionBasicMapCache {
public class TestElementCollectionBasicMapCache extends BaseTestCase {
@Test
public void test() {
@@ -44,9 +45,9 @@ public class TestElementCollectionBasicMapCache {
sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(3);
}
else {
assertThat(sql).hasSize(6);
assertSqlBind(sql, 3, 5);
} else {
assertThat(sql).hasSize(5);
}
@@ -72,9 +73,9 @@ public class TestElementCollectionBasicMapCache {
sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2); // cache hit
}
else {
assertThat(sql).hasSize(4); // cache hit
assertSqlBind(sql, 2, 3);
} else {
assertThat(sql).hasSize(3); // cache hit
}
@@ -24,11 +24,11 @@ public class TestElementCollectionBasicSet extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(4);
assertThat(sql.get(0)).contains("insert into ecs_person");
assertThat(sql.get(1)).contains("insert into ecs_person_phone");
}
else {
assertSqlBind(sql, 2, 3);
} else {
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).contains("insert into ecs_person");
assertThat(sql.get(1)).contains("insert into ecs_person_phone");
@@ -103,12 +103,12 @@ public class TestElementCollectionBasicSet extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(3);
assertThat(sql).hasSize(6);
assertThat(sql.get(0)).contains("update ecs_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(1)).contains("delete from ecs_person_phone where ecs_person_id=?");
assertThat(sql.get(2)).contains("insert into ecs_person_phone (ecs_person_id,phone) values (?,?)");
}
else {
assertSqlBind(sql, 3, 5);
} else {
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("update ecs_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(1)).contains("delete from ecs_person_phone where ecs_person_id=?");
@@ -137,11 +137,11 @@ public class TestElementCollectionBasicSet extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(6);
assertThat(sql.get(0)).contains("delete from ecs_person_phone where ecs_person_id=?");
assertThat(sql.get(1)).contains("insert into ecs_person_phone (ecs_person_id,phone) values (?,?)");
}
else {
assertSqlBind(sql, 2, 5);
} else {
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("delete from ecs_person_phone where ecs_person_id=?");
assertThat(sql.get(1)).contains("insert into ecs_person_phone (ecs_person_id,phone) values (?,?)");
@@ -23,11 +23,11 @@ public class TestElementCollectionEmbeddedList extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(4);
assertThat(sql.get(0)).contains("insert into ecbl_person");
assertThat(sql.get(1)).contains("insert into ecbl_person_phone_numbers");
}
else {
assertSqlBind(sql, 2, 3);
} else {
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).contains("insert into ecbl_person");
assertThat(sql.get(1)).contains("insert into ecbl_person_phone_numbers");
@@ -103,12 +103,12 @@ public class TestElementCollectionEmbeddedList extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(3);
assertThat(sql).hasSize(6);
assertThat(sql.get(0)).contains("update ecbl_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(1)).contains("delete from ecbl_person_phone_numbers where person_id=?");
assertThat(sql.get(2)).contains("insert into ecbl_person_phone_numbers (person_id,country_code,area,number) values (?,?,?,?)");
}
else {
assertSqlBind(sql, 3, 5);
} else {
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("update ecbl_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(1)).contains("delete from ecbl_person_phone_numbers where person_id=?");
@@ -137,11 +137,11 @@ public class TestElementCollectionEmbeddedList extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(6);
assertThat(sql.get(0)).contains("delete from ecbl_person_phone_numbers where person_id=?");
assertThat(sql.get(1)).contains("insert into ecbl_person_phone_numbers (person_id,country_code,area,number) values (?,?,?,?)");
}
else {
assertSqlBind(sql, 2, 5);
} else {
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("delete from ecbl_person_phone_numbers where person_id=?");
assertThat(sql.get(1)).contains("insert into ecbl_person_phone_numbers (person_id,country_code,area,number) values (?,?,?,?)");
@@ -48,11 +48,11 @@ public class TestElementCollectionEmbeddedListCache extends BaseTestCase {
sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2); // update of collection only
assertThat(sql).hasSize(4); // update of collection only
assertThat(sql.get(0)).contains("delete from ecbl_person_phone_numbers where person_id=?");
assertThat(sql.get(1)).contains("insert into ecbl_person_phone_numbers (person_id,country_code,area,number) values (?,?,?,?)");
}
else {
assertSqlBind(sql, 2, 3);
} else {
assertThat(sql).hasSize(3); // update of collection only
assertThat(sql.get(0)).contains("delete from ecbl_person_phone_numbers where person_id=?");
assertThat(sql.get(1)).contains("insert into ecbl_person_phone_numbers (person_id,country_code,area,number) values (?,?,?,?)");
@@ -76,7 +76,7 @@ public class TestElementCollectionEmbeddedListCache extends BaseTestCase {
Ebean.save(three);
sql = LoggedSqlCollector.current();
assertThat(sql).hasSize(3);
assertThat(sql).hasSize(4);
EcblPerson four = Ebean.find(EcblPerson.class)
.setId(person.getId())
@@ -24,11 +24,11 @@ public class TestElementCollectionEmbeddedMap extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(4);
assertThat(sql.get(0)).contains("insert into ecbm_person");
assertThat(sql.get(1)).contains("insert into ecbm_person_phone_numbers");
}
else {
assertSqlBind(sql, 2, 3);
} else {
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).contains("insert into ecbm_person");
assertThat(sql.get(1)).contains("insert into ecbm_person_phone_numbers");
@@ -96,12 +96,12 @@ public class TestElementCollectionEmbeddedMap extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(3);
assertThat(sql).hasSize(6);
assertThat(sql.get(0)).contains("update ecbm_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(1)).contains("delete from ecbm_person_phone_numbers where person_id=?");
assertThat(sql.get(2)).contains("insert into ecbm_person_phone_numbers (person_id,mkey,country_code,area,number)");
}
else {
assertSqlBind(sql, 3, 5);
} else {
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("update ecbm_person set name=?, version=? where id=? and version=?");
assertThat(sql.get(1)).contains("delete from ecbm_person_phone_numbers where person_id=?");
@@ -130,11 +130,11 @@ public class TestElementCollectionEmbeddedMap extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql).hasSize(6);
assertThat(sql.get(0)).contains("delete from ecbm_person_phone_numbers where person_id=?");
assertThat(sql.get(1)).contains("insert into ecbm_person_phone_numbers (person_id,mkey,country_code,area,number) values (?,?,?,?,?)");
}
else {
assertSqlBind(sql, 2, 5);
} else {
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("delete from ecbm_person_phone_numbers where person_id=?");
assertThat(sql.get(1)).contains("insert into ecbm_person_phone_numbers (person_id,mkey,country_code,area,number) values (?,?,?,?,?)");
@@ -49,11 +49,11 @@ public class TestElementCollectionEmbeddedMapCache extends BaseTestCase {
sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2); // update of collection only
assertThat(sql).hasSize(4); // update of collection only
assertThat(sql.get(0)).contains("delete from ecbm_person_phone_numbers where person_id=?");
assertThat(sql.get(1)).contains("insert into ecbm_person_phone_numbers (person_id,mkey,country_code,area,number) values (?,?,?,?,?)");
}
else {
assertSqlBind(sql, 2, 3);
} else {
assertThat(sql).hasSize(3); // update of collection only
assertThat(sql.get(0)).contains("delete from ecbm_person_phone_numbers where person_id=?");
assertThat(sql.get(1)).contains("insert into ecbm_person_phone_numbers (person_id,mkey,country_code,area,number) values (?,?,?,?,?)");
@@ -77,7 +77,7 @@ public class TestElementCollectionEmbeddedMapCache extends BaseTestCase {
Ebean.save(three);
sql = LoggedSqlCollector.current();
assertThat(sql).hasSize(3);
assertThat(sql).hasSize(4);
EcbmPerson four = Ebean.find(EcbmPerson.class)
.setId(person.getId())
@@ -38,10 +38,11 @@ public class TestOneToManyJoinTable extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(1);
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).contains("insert into troop_monkey (troop_pid, monkey_mid) values (?, ?)");
}
else {
assertSqlBind(sql, 1, 2);
} else {
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("insert into troop_monkey (troop_pid, monkey_mid) values (?, ?)");
assertThat(sql.get(1)).contains("insert into troop_monkey (troop_pid, monkey_mid) values (?, ?)");
@@ -96,12 +97,14 @@ public class TestOneToManyJoinTable extends BaseTestCase {
//Collections.sort(sql);
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(8);
assertThat(sql).hasSize(13);
assertThat(sql.get(0)).contains("insert into trainer ");
assertThat(sql.get(1)).contains("insert into monkey ");
assertSqlBind(sql, 2, 4);
assertThat(sql.get(5)).contains("update monkey set name=?, food_preference=?, version=? where mid=? and version=?");
assertThat(sql.get(6)).contains("-- bind(");
assertThat(sql.get(7)).contains("insert into trainer_monkey ");
assertSqlBind(sql, 8, 12);
} else {
assertThat(sql).hasSize(10);
@@ -34,7 +34,7 @@ public class TestOneToManyJoinTableInheritance extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
assertThat(sql).hasSize(8);
assertThat(sql).hasSize(11);
assertThat(sql.get(0)).contains("insert into class_super ");
assertThat(sql.get(1)).contains("-- bind(ClassA)");
assertThat(sql.get(2)).contains("-- bind(ClassB)");
@@ -43,6 +43,7 @@ public class TestOneToManyJoinTableInheritance extends BaseTestCase {
assertThat(sql.get(5)).contains("-- bind(Tim");
assertThat(sql.get(6)).contains("-- bind(Uim");
assertThat(sql.get(7)).contains("insert into class_super_monkey (class_super_sid, monkey_mid) values (?, ?)");
assertSqlBind(sql, 8, 10);
ClassA dbA = Ebean.find(ClassA.class, 1);
ClassB dbB = Ebean.find(ClassB.class, 2);
@@ -38,10 +38,10 @@ public class TestOneToManyJoinTableNoTableName extends BaseTestCase {
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(1);
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).contains("insert into mkeygroup_monkey (mkeygroup_pid, monkey_mid) values (?, ?)");
}
else {
assertSqlBind(sql, 1, 2);
} else {
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("insert into mkeygroup_monkey (mkeygroup_pid, monkey_mid) values (?, ?)");
assertThat(sql.get(1)).contains("insert into mkeygroup_monkey (mkeygroup_pid, monkey_mid) values (?, ?)");
@@ -3,9 +3,13 @@ package org.tests.update;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.SqlUpdate;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import java.util.List;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
@@ -13,6 +17,8 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
@Test
public void test() {
LoggedSqlCollector.start();
SqlUpdate sqlUpdate = Ebean.createSqlUpdate("delete from o_customer where id in (:ids)");
sqlUpdate.setParameter("ids", asList(9991, 9992, 9993));
@@ -24,6 +30,8 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?)", sqlUpdate.getGeneratedSql());
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(2);
}
@@ -5,6 +5,7 @@ import io.ebean.Ebean;
import io.ebean.SqlUpdate;
import io.ebean.Transaction;
import io.ebean.meta.MetaTimedMetric;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Assert;
import org.junit.Test;
import org.tests.idkeys.db.AuditLog;
@@ -42,19 +43,55 @@ public class TestSqlUpdateInTxn extends BaseTestCase {
@Test
public void testExecute_inTransaction_withBatch() {
LoggedSqlCollector.start();
try (Transaction transaction = Ebean.beginTransaction()) {
transaction.setBatchMode(true);
int row = Ebean.createSqlUpdate("update audit_log set description = description where id = ?")
.setParameter(1, 999999)
.execute();
SqlUpdate sqlUpdate = Ebean.createSqlUpdate("update audit_log set description = description where id = ?")
.setParameter(1, 999999);
int row = sqlUpdate.execute();
// update statement using JDBC batch so not executed yet
assertThat(row).isEqualTo(-1);
sqlUpdate.setParameter(1, 999998);
sqlUpdate.execute();
transaction.commit();
}
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).contains("update audit_log set description = description where id = ?");
assertSqlBind(sql, 1, 2);
}
@Test
public void testExecute_inTransaction_withoutBatch() {
LoggedSqlCollector.start();
try (Transaction transaction = Ebean.beginTransaction()) {
transaction.setBatchMode(false);
SqlUpdate sqlUpdate = Ebean.createSqlUpdate("update audit_log set description = description where id = ?")
.setParameter(1, 999999);
int row0 = sqlUpdate.execute();
assertThat(row0).isEqualTo(0);
sqlUpdate.setParameter(1, 999998);
int row1 = sqlUpdate.execute();
assertThat(row1).isEqualTo(0);
transaction.commit();
}
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("update audit_log set description = description where id = ?; -- bind(999999)");
assertThat(sql.get(1)).contains("update audit_log set description = description where id = ?; -- bind(999998)");
}
@Test