rowUpdater = new FBRowUpdater(gdsHelper, xsqlvars, this, cached);
rowUpdater = new FBRowUpdater(gdsHelper, xsqlvars, this, cached, listener);
    protected FBResultSet(GDSHelper gdsHelper,                           AbstractStatement fbStatement,                           AbstractIscStmtHandle stmt,                           FBObjectListener.ResultSetListener listener,                          boolean trimStrings,                           int rsType,                           int rsConcurrency,                          int rsHoldability,                          boolean cached)     throws SQLException {                this.gdsHelper = gdsHelper;        this.cursorName = fbStatement.getCursorName();                this.listener = listener;                this.rsType = rsType;        this.rsConcurrency = rsConcurrency;        this.rsHoldability = rsHoldability;                this.trimStrings = trimStrings;                this.xsqlvars = stmt.getOutSqlda().sqlvar;        this.maxRows = fbStatement.getMaxRows();                this.fbStatement = fbStatement;                boolean updatableCursor = fbStatement.isUpdatableCursor();        if (rsType == ResultSet.TYPE_SCROLL_INSENSITIVE)            cached = true;                if (cached) {            prepareVars(true);            fbFetcher = new FBCachedFetcher(gdsHelper,                    fbStatement.fetchSize, fbStatement.maxRows, stmt, this,                    rsType == ResultSet.TYPE_FORWARD_ONLY);        } else {            prepareVars(false);                        if (rsType == ResultSet.TYPE_SCROLL_SENSITIVE) {                fbStatement.addWarning(new FBSQLWarning(                    "Result set type changed. "                     + "ResultSet.TYPE_SCROLL_SENSITIVE is not supported."));                                    rsType = ResultSet.TYPE_SCROLL_INSENSITIVE;            }                        if (updatableCursor)                  fbFetcher = new FBUpdatableCursorFetcher(gdsHelper,                        fbStatement, stmt, this, fbStatement.getMaxRows(),                        fbStatement.getFetchSize());            else                fbFetcher = new FBStatementFetcher(gdsHelper,                        fbStatement, stmt, this, fbStatement.getMaxRows(),                        fbStatement.getFetchSize());        }                if (rsConcurrency == ResultSet.CONCUR_UPDATABLE) {            try {                rowUpdater = new FBRowUpdater(gdsHelper, xsqlvars, this, cached);            } catch (FBResultSetNotUpdatableException ex) {                fbStatement.addWarning(new FBSQLWarning(                    "Result set concurrency changed to READ ONLY."));                rsConcurrency = ResultSet.CONCUR_READ_ONLY;            }        }    }