mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
EQL - parsing IN expressions with named parameters
This commit is contained in:
@@ -23,6 +23,9 @@ public class InExpressionTest {
|
||||
InExpression ex1 = new InExpression("foo", values, false);
|
||||
InExpression ex2 = new InExpression("bar", values, false);
|
||||
|
||||
ex1.prepareExpression(null);
|
||||
ex2.prepareExpression(null);
|
||||
|
||||
HashQueryPlanBuilder b1 = new HashQueryPlanBuilder();
|
||||
ex1.queryPlanHash(b1);
|
||||
|
||||
@@ -41,6 +44,9 @@ public class InExpressionTest {
|
||||
InExpression ex1 = new InExpression("foo", values1, false);
|
||||
InExpression ex2 = new InExpression("foo", values2, false);
|
||||
|
||||
ex1.prepareExpression(null);
|
||||
ex2.prepareExpression(null);
|
||||
|
||||
HashQueryPlanBuilder b1 = new HashQueryPlanBuilder();
|
||||
ex1.queryPlanHash(b1);
|
||||
|
||||
@@ -58,6 +64,9 @@ public class InExpressionTest {
|
||||
InExpression ex1 = new InExpression("foo", values, true);
|
||||
InExpression ex2 = new InExpression("foo", values, false);
|
||||
|
||||
ex1.prepareExpression(null);
|
||||
ex2.prepareExpression(null);
|
||||
|
||||
HashQueryPlanBuilder b1 = new HashQueryPlanBuilder();
|
||||
ex1.queryPlanHash(b1);
|
||||
|
||||
@@ -75,6 +84,9 @@ public class InExpressionTest {
|
||||
InExpression ex1 = new InExpression("foo", values, true);
|
||||
InExpression ex2 = new InExpression("foo", values, true);
|
||||
|
||||
ex1.prepareExpression(null);
|
||||
ex2.prepareExpression(null);
|
||||
|
||||
HashQueryPlanBuilder b1 = new HashQueryPlanBuilder();
|
||||
ex1.queryPlanHash(b1);
|
||||
|
||||
@@ -94,7 +106,9 @@ public class InExpressionTest {
|
||||
|
||||
@NotNull
|
||||
private InExpression exp(String propName, boolean not, Object... values) {
|
||||
return new InExpression(propName, Arrays.asList(values), not);
|
||||
InExpression ex = new InExpression(propName, Arrays.asList(values), not);
|
||||
ex.prepareExpression(null);
|
||||
return ex;
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -114,6 +114,28 @@ public class EqlParserTest {
|
||||
assertThat(query.getGeneratedSql()).contains("where t0.name in (?, ? )");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void where_in_when_namedParams_withWhitespace() throws Exception {
|
||||
|
||||
Query<Customer> query = parse("where name in (:one, :two)");
|
||||
query.setParameter("one", "Foo");
|
||||
query.setParameter("two", "Bar");
|
||||
query.findList();
|
||||
|
||||
assertThat(query.getGeneratedSql()).contains("where t0.name in (?, ? )");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void where_in_when_namedParams_withNoWhitespace() throws Exception {
|
||||
|
||||
Query<Customer> query = parse("where name in (:one,:two)");
|
||||
query.setParameter("one", "Foo");
|
||||
query.setParameter("two", "Bar");
|
||||
query.findList();
|
||||
|
||||
assertThat(query.getGeneratedSql()).contains("where t0.name in (?, ? )");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void where_in_when_namedParamAsList() throws Exception {
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ public class DefaultOrmQueryTest {
|
||||
DefaultOrmQuery<Order> q1 = (DefaultOrmQuery<Order>)Ebean.find(Order.class).where().in("name", "a","b","c").query();
|
||||
DefaultOrmQuery<Order> q2 = (DefaultOrmQuery<Order>)Ebean.find(Order.class).where().in("id", 2,2,3).query();
|
||||
|
||||
prepare(q1, q2);
|
||||
assertThat(q1.createQueryPlanKey()).isNotEqualTo(q2.createQueryPlanKey());
|
||||
assertThat(q1.queryBindHash()).isNotEqualTo(q2.queryBindHash());
|
||||
}
|
||||
@@ -47,6 +48,7 @@ public class DefaultOrmQueryTest {
|
||||
DefaultOrmQuery<Order> q1 = (DefaultOrmQuery<Order>)Ebean.find(Order.class).where().in("id", 1,2,3).query();
|
||||
DefaultOrmQuery<Order> q2 = (DefaultOrmQuery<Order>)Ebean.find(Order.class).where().in("id", 2,2,3).query();
|
||||
|
||||
prepare(q1, q2);
|
||||
assertThat(q1.createQueryPlanKey()).isEqualTo(q2.createQueryPlanKey());
|
||||
assertThat(q1.queryBindHash()).isNotEqualTo(q2.queryBindHash());
|
||||
}
|
||||
@@ -57,6 +59,7 @@ public class DefaultOrmQueryTest {
|
||||
DefaultOrmQuery<Order> q1 = (DefaultOrmQuery<Order>)Ebean.find(Order.class).where().in("id", 1,2,3).query();
|
||||
DefaultOrmQuery<Order> q2 = (DefaultOrmQuery<Order>)Ebean.find(Order.class).where().in("id", 1,2,3).query();
|
||||
|
||||
prepare(q1, q2);
|
||||
assertThat(q1.createQueryPlanKey()).isEqualTo(q2.createQueryPlanKey());
|
||||
assertThat(q1.queryBindHash()).isEqualTo(q2.queryBindHash());
|
||||
}
|
||||
@@ -72,7 +75,12 @@ public class DefaultOrmQueryTest {
|
||||
.setFirstRow(1)
|
||||
.setMaxRows(0);
|
||||
|
||||
prepare(query1, query2);
|
||||
assertThat(query1.createQueryPlanKey()).isNotEqualTo(query2.createQueryPlanKey());
|
||||
}
|
||||
|
||||
private void prepare(DefaultOrmQuery<?> q1, DefaultOrmQuery<?> q2) {
|
||||
q1.prepare(null);
|
||||
q2.prepare(null);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user