problem with sqlContainer and Table - mismatched pagination

i have a 21 row table and use the sqlContainer with defaults (pageLength 200) (total rows in the DB is about 110, 000)
using the vertical scroll bar to scroll (drag or click on bar or arrows)
it is possible to scroll and still have rows visible with rownum smaller than the last 200 queried

it appears semi-random whether or not the row you scroll too will be within the last 200
there are some rows i can absolutely guarantee will always be out of sync

eg.
if i scroll forward to rownum 38378
the last query will always be
jdbc tmp qry dlg - get results Executing query! SELECT * FROM (SELECT x.*, ROWNUM AS “rownum” FROM (SELECT * FROM TERM ORDER BY UPPER(TERM) ASC) x) WHERE “rownum” BETWEEN 38401 AND 38600
and the problem will occur

on the other hand scrolling forward to rownum 31936 is always good
however the following scroll back to is not

ID:Europe|TERM:Europe|COMMENTS:null|DATE_FIRST_ACTIVE:2012-04-13 18:51:01.031|DATE_FIRST_INACTIVE:null|CREATED_DATETIME:2012-04-13 18:51:01.031|CREATED_BY:sjm|MODIFIED_DATETIME:2012-04-13 18:51:01.031|MODIFIED_BY:sjm|rownum:31936 / Europe / TERM

jdbc tmp qry dlg - get results Executing query! SELECT * FROM (SELECT x.*, ROWNUM AS “rownum” FROM (SELECT * FROM TERM ORDER BY UPPER(TERM) ASC) x) WHERE “rownum” BETWEEN 31801 AND 32000

if mouse click on row EUROPE (rownum 31936)
the program then queries forward in 200 chunks to the end of the DB taking quite some time
before acknowledging the actual mouse click

the relevant bits of trace look like this
if the visible rownum is within the last query all is good and the ui.Table calls ui.AbstractComponent ~ fireEvent
good:
caller ~ sun.reflect.NativeMethodAccessorImpl ~ invoke0
callee ~ int_.nato.nc3a.nmrr.vms.vaadin.components.TermList$5 ~ itemClick
— trace ~ int_.nato.nc3a.nmrr.vms.vaadin.components.TermList$5 ~ itemClick
— trace ~ sun.reflect.NativeMethodAccessorImpl ~ invoke0
— trace ~ sun.reflect.NativeMethodAccessorImpl ~ invoke
— trace ~ sun.reflect.DelegatingMethodAccessorImpl ~ invoke
— trace ~ java.lang.reflect.Method ~ invoke
— trace ~ com.vaadin.event.ListenerMethod ~ receiveEvent
— trace ~ com.vaadin.event.EventRouter ~ fireEvent
— trace ~ com.vaadin.ui.AbstractComponent ~ fireEvent
— trace ~ com.vaadin.ui.Table ~ handleClickEvent
— trace ~ com.vaadin.ui.Table ~ changeVariables
— trace ~ com.vaadin.terminal.gwt.server.AbstractCommunicationManager ~ changeVariables

if the visible rownum is not within the last query it is bad and the ui.Table calls ui.AbstractSelect ~ getItem
bad:
caller ~ com.vaadin.data.util.sqlcontainer.SQLContainer ~ containsId
callee ~ int_.nato.nc3a.nmrr.vms.vaadin.container.JdbcTemplateQueryDelegate ~ containsRowWithKey
containsRowWithKey key Gate
— trace ~ int_.nato.nc3a.nmrr.vms.vaadin.container.JdbcTemplateQueryDelegate ~ containsRowWithKey
— trace ~ com.vaadin.data.util.sqlcontainer.SQLContainer ~ containsId
— trace ~ com.vaadin.data.util.sqlcontainer.SQLContainer ~ indexOfId
— trace ~ com.vaadin.data.util.sqlcontainer.SQLContainer ~ getItem
— trace ~ com.vaadin.ui.AbstractSelect ~ getItem
— trace ~ com.vaadin.ui.Table ~ handleClickEvent
— trace ~ com.vaadin.ui.Table ~ changeVariables
— trace ~ com.vaadin.terminal.gwt.server.AbstractCommunicationManager ~ changeVariables

a work around is to set pagelength large and the query to the end of the DB is then quicker
but this is not really a solution

actually default pageLength is 100

a very simple fix

seems the default for “implementationRespectsPagingLimits”
should be “FALSE”