Remove MAX_KEYS limit, added test.

We've had JDBC array support in Postgres for 5 years now, so I think we're
probably safe to assume it's working everywhere. Ha ha, I'm such an optimist.
This commit is contained in:
Michael Bayne
2014-10-02 14:30:11 -07:00
parent 62c17819f4
commit 190c38f8a8
2 changed files with 22 additions and 16 deletions
@@ -145,11 +145,6 @@ public abstract class KeySet<T extends PersistentRecord> extends WhereClause
{
public SingleKeySet (Class<T> 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;
}
@@ -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;
@@ -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<Integer> 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<Integer> 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 ()