diff --git a/src/main/java/com/samskivert/depot/KeySet.java b/src/main/java/com/samskivert/depot/KeySet.java index 68dd3f4..69dfecd 100644 --- a/src/main/java/com/samskivert/depot/KeySet.java +++ b/src/main/java/com/samskivert/depot/KeySet.java @@ -129,7 +129,7 @@ public abstract class KeySet extends WhereClause return true; } return (obj instanceof EmptyKeySet) && - _pClass.equals(((EmptyKeySet)obj)._pClass); + _pClass.equals(((EmptyKeySet)obj)._pClass); } @Override public int hashCode () { @@ -145,11 +145,6 @@ public abstract class KeySet extends WhereClause { public SingleKeySet (Class pClass, Comparable[] keys) { super(pClass); - // TODO: remove when we update to 1.6 and change Postgres In handling - if (keys.length > In.MAX_KEYS) { - throw new IllegalArgumentException( - "Cannot create where clause for more than " + In.MAX_KEYS + " keys at a time."); - } _keys = keys; } diff --git a/src/test/java/com/samskivert/depot/QueryTest.java b/src/test/java/com/samskivert/depot/QueryTest.java index 5c8a48e..41e3acf 100644 --- a/src/test/java/com/samskivert/depot/QueryTest.java +++ b/src/test/java/com/samskivert/depot/QueryTest.java @@ -4,18 +4,19 @@ package com.samskivert.depot; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - import java.util.Collections; import java.util.List; +import java.util.Set; import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import com.google.common.collect.Sets; import com.samskivert.depot.annotation.Computed; import com.samskivert.depot.expression.SQLExpression; +import com.samskivert.depot.impl.operator.In; import com.samskivert.depot.util.Builder2; import com.samskivert.util.RandomUtil; @@ -76,7 +77,7 @@ public class QueryTest extends TestBase assertEquals(CREATE_RECORDS, results.size()); for (float result : results) { assertTrue("Age goes from [0,99) and awesomeness goes from [0.0,1.0), so their " + - "product should be [0.0,100), not " + result, result >= 0 && result < 100); + "product should be [0.0,100), not " + result, result >= 0 && result < 100); } assertEquals(CREATE_RECORDS, _repo.findAll(TestRecord.class).size()); @@ -85,13 +86,23 @@ public class QueryTest extends TestBase _repo.from(TestRecord.class).whereTrue().delete(); assertEquals(0, _repo.findAll(TestRecord.class).size()); + } -// // TODO: try to break our In() clause -// Set ids = Sets.newHashSet(); -// for (int ii = 1; ii <= In.MAX_KEYS*2+3; ii++) { -// ids.add(ii); -// } -// _repo.deleteAll(TestRecord.class, KeySet.newSimpleKeySet(TestRecord.class, ids)); + @Test public void testMaxKeys () { + Set ids = Sets.newHashSet(); + int count = In.MAX_KEYS+3; + for (int ii = 1; ii <= count; ii++) { + TestRecord record = createTestRecord(ii); + record.name = "Spam! " + ii; + record.age = RandomUtil.getInt(100); + record.awesomeness = RandomUtil.getFloat(1.0F); + record.homeTown = "Over there"; + _repo.insert(record); + ids.add(ii); + } + assertEquals(count, _repo.from(TestRecord.class).selectCount()); + _repo.deleteAll(TestRecord.class, KeySet.newSimpleKeySet(TestRecord.class, ids)); + assertEquals(0, _repo.from(TestRecord.class).selectCount()); } @Test public void testLimitedDelete ()