To debug lock timeout errors, set derby.locks.monitor=true and derby.locks.deadlockTrace=true in derby.properties. This will print the lock table information to the derby.log when the timeout happens. If you also set derby.language.logStatementText=true, then all the statements executed on the system will be written out to the derby.log
public class LazyLoad extends WebPage {
public LazyLoad() {
IColumn[] columns = new IColumn[] {
new PropertyColumn(new Model("col1"), "intValue"),
new PropertyColumn(new Model("col2"), "class") };
ISortableDataProvider dataProvider = new SortableDataProvider() {
public int size() {
return 300000;
}
public IModel model(Object object) {
return new Model((Integer) object);
}
public Iterator iterator(int first, int count) {
return loadEntriesFromDatabase(first, count).iterator();
}
private List<Integer> loadEntriesFromDatabase(int first, int count) {
List<Integer> items = new ArrayList<Integer>();
for (int i = 0; i < count; i++) {
items.add(new Integer(first + i));
}
return items;
}
};
DefaultDataTable t = new DefaultDataTable("t", columns, dataProvider, 3);
add(t);
}
}
Probably the only valid reason for using
set enable_seqscan=false
is when you're writing queries and want to quickly see what the query plan would actually be were there large amounts of data in the table(s).
M. Shaker, H. Ibrahim, A. Mustapha, and L. Abdullah. Proceedings of the 11th International Conference on Information Integration and Web-based Applications & Services, page 470--476. New York, NY, USA, ACM, (2009)