SQLServerでのS2Pager動作確認

Microsoftが提供しているJDBCドライバが結構不安なSQLServerでS2Pagerを使ってみたら、やっぱり動かなかった……。
具体的に言うと、レコードの件数が必ず0件になってしまいます。
検証した結果、SQLServerのドライバでwhile(resultSet.next())などの構文を使ってResultSetを最後までループさせてしまうと、ResultSet#getRow()が必ず0を返してしまうというバグが原因でした。

結局PagerResultSetWrapper#next()メソッドを以下のように変更して動作を確認。コメントしているのが変更点。

    public boolean next() throws SQLException {
        boolean next = super.next();
        if ((condition.getLimit() == PagerCondition.NONE_LIMIT || counter < condition.getLimit()) && next) {
            counter += 1;
            return true;
/*削除
        } else {
            boolean cursor = ResultSetUtil.autoLast(original);
            System.out.println("cursor=" + cursor);
            int count = original.getRow();
            if (!cursor) {
                count = original.getRow() - 1;
            }
            count = count <= 0 ? 0 : count;
*/
//追記ここから
        } else if (next) {
            counter += 1;
            while(original.next()){
                counter += 1;
            }
        }
//追記ここまで
        condition.setCount(counter + condition.getOffset());
        return false;
	}

ドライバのバグのせいだし、本家で対応しなくてもいいと思いますが、お見知りおきを>id:agtさま。
あと、S2Pagerのサンプルアプリケーションで検索条件を入れられるようになってますが、一度何か選択して、その後ブランクに戻して検索しなおすと、前の検索条件で検索されてしまう、という不具合があるようです。