public FBRowUpdater(AbstractConnection connection, XSQLVAR[] xsqlvars) throws SQLException {
public FBRowUpdater(AbstractConnection connection, XSQLVAR[] xsqlvars, Synchronizable syncProvider) throws SQLException {
    public FBRowUpdater(AbstractConnection connection, XSQLVAR[] xsqlvars) throws SQLException {        this.connection = connection;                this.xsqlvars = new XSQLVAR[xsqlvars.length];        this.fields = new FBField[xsqlvars.length];                for (int i = 0; i < xsqlvars.length; i++) {            XSQLVAR xsqlvar = new XSQLVAR();            xsqlvar.copyFrom(xsqlvars[i]);                        this.xsqlvars[i] = xsqlvar;        }                newRow = new byte[xsqlvars.length][];        updatedFlags = new boolean[xsqlvars.length];                for (int i = 0; i < this.xsqlvars.length; i++) {                        final int fieldPos = i;                        // implementation of the FieldDataProvider interface            FieldDataProvider dataProvider = new FieldDataProvider() {                public byte[] getFieldData() {                    if (updatedFlags[fieldPos]) {                                                if (inInsertRow)                            return insertRow[fieldPos];                        else                            return newRow[fieldPos];                    } else                        return oldRow[fieldPos];                }                public void setFieldData(byte[] data) {                    if (inInsertRow)                        insertRow[fieldPos] = data;                    else                        newRow[fieldPos] = data;                                        updatedFlags[fieldPos] = true;                }            };                        fields[i] = FBField.createField(this.xsqlvars[i], dataProvider, cached);        }                // find the table name (there can be only one table per result set)        for (int i = 0; i < xsqlvars.length; i++) {            if (tableName == null)                tableName = xsqlvars[i].relname;            else            if (!tableName.equals(xsqlvars[i].relname))                throw new FBResultSetNotUpdatableException(                    "Underlying result set references at least two relations: " +                     tableName + " and " + xsqlvars[i].relname + ".");        }    }