亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? undologrecord.java

?? 非常棒的java數(shù)據(jù)庫(kù)
?? JAVA
字號(hào):
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.log;

import java.sql.SQLException;

import org.h2.constant.ErrorCode;
import org.h2.constant.SysProperties;
import org.h2.engine.Constants;
import org.h2.engine.Session;
import org.h2.index.Cursor;
import org.h2.index.Index;
import org.h2.message.Message;
import org.h2.result.Row;
import org.h2.store.DataPage;
import org.h2.store.FileStore;
import org.h2.table.Table;
import org.h2.util.ObjectArray;
import org.h2.value.Value;

/**
 * An entry in a undo log.
 */
public class UndoLogRecord {
    public static final short INSERT = 0, DELETE = 1;
    private static final int IN_MEMORY = 0, STORED = 1, IN_MEMORY_READ_POS = 2;
    private Table table;
    private Row row;
    private short operation;
    private short state;
    private int filePos;

    public boolean isStored() {
        return state == STORED;
    }

    public boolean canStore() {
        return table.getUniqueIndex() != null;
    }

    public UndoLogRecord(Table table, short op, Row row) {
        this.table = table;
        this.row = row;
        this.operation = op;
        this.state = IN_MEMORY;
    }

    public void undo(Session session) throws SQLException {
        switch (operation) {
        case INSERT:
            if (state == IN_MEMORY_READ_POS) {
                Index index = table.getUniqueIndex();
                Cursor cursor = index.find(session, row, row);
                cursor.next();
                int pos = cursor.getPos();
                row.setPos(pos);
                state = IN_MEMORY;
            }
            if (session.getDatabase().getLockMode() == Constants.LOCK_MODE_OFF) {
                if (row.getDeleted()) {
                    // it might have been deleted by another thread
                    return;
                }
            }
            try {
                table.removeRow(session, row);
            } catch (SQLException e) {
                if (session.getDatabase().getLockMode() == Constants.LOCK_MODE_OFF
                        && e.getErrorCode() == ErrorCode.ROW_NOT_FOUND_WHEN_DELETING_1) {
                    // it might have been deleted by another thread
                    // ignore
                } else {
                    throw e;
                }
            }
            break;
        case DELETE:
            try {
                row.setPos(0);
                table.addRow(session, row);
            } catch (SQLException e) {
                if (session.getDatabase().getLockMode() == Constants.LOCK_MODE_OFF
                        && e.getErrorCode() == ErrorCode.DUPLICATE_KEY_1) {
                    // it might have been added by another thread
                    // ignore
                } else {
                    throw e;
                }
            }
            break;
        default:
            throw Message.getInternalError("op=" + operation);
        }
    }

    public void save(DataPage buff, FileStore file) throws SQLException {
        buff.reset();
        buff.writeInt(0);
        buff.writeInt(operation);
        buff.writeInt(row.getColumnCount());
        for (int i = 0; i < row.getColumnCount(); i++) {
            buff.writeValue(row.getValue(i));
        }
        buff.fillAligned();
        buff.setInt(0, buff.length() / Constants.FILE_BLOCK_SIZE);
        buff.updateChecksum();
        filePos = (int) (file.getFilePointer() / Constants.FILE_BLOCK_SIZE);
        file.write(buff.getBytes(), 0, buff.length());
        row = null;
        state = STORED;
    }

    public void seek(FileStore file) throws SQLException {
        file.seek(filePos * Constants.FILE_BLOCK_SIZE);
    }

    public void load(DataPage buff, FileStore file, Session session) throws SQLException {
        int min = Constants.FILE_BLOCK_SIZE;
        seek(file);
        buff.reset();
        file.readFully(buff.getBytes(), 0, min);
        int len = buff.readInt() * Constants.FILE_BLOCK_SIZE;
        buff.checkCapacity(len);
        if (len - min > 0) {
            file.readFully(buff.getBytes(), min, len - min);
        }
        buff.check(len);
        int op = buff.readInt();
        if (SysProperties.CHECK) {
            if (operation != op) {
                throw Message.getInternalError("operation=" + operation + " op=" + op);
            }
        }
        int columnCount = buff.readInt();
        Value[] values = new Value[columnCount];
        for (int i = 0; i < columnCount; i++) {
            values[i] = buff.readValue();
        }
        row = new Row(values, 0);
        state = IN_MEMORY_READ_POS;
    }

    public Table getTable() {
        return table;
    }

    public void commit() throws SQLException {
        ObjectArray list = table.getIndexes();
        for (int i = 0; i < list.size(); i++) {
            Index index = (Index) list.get(i);
            index.commit(operation, row);
        }
    }

    public Row getRow() {
        return row;
    }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道久久综合亚洲91| 日本欧美一区二区三区| 欧美日韩一区二区欧美激情| 裸体健美xxxx欧美裸体表演| 国产精品久久精品日日| 日韩免费看网站| 欧美视频中文字幕| 日韩亚洲欧美在线观看| 色av综合在线| 国产精品久久毛片a| 欧美一区二区三区在线观看| 色狠狠综合天天综合综合| 国产在线视视频有精品| 日本强好片久久久久久aaa| 国产精品久久久久婷婷二区次| 欧美一区二区三区的| 欧美在线视频全部完| eeuss国产一区二区三区| 国产麻豆一精品一av一免费| 青青草国产精品亚洲专区无| 亚洲国产va精品久久久不卡综合| 国产精品福利在线播放| 国产女人aaa级久久久级 | 偷拍与自拍一区| 中文字幕中文在线不卡住| 欧美精品一区二区在线播放| 欧美一级视频精品观看| 欧美日韩国产色站一区二区三区| 色999日韩国产欧美一区二区| 成人国产电影网| 粉嫩蜜臀av国产精品网站| 国产在线播放一区三区四| 卡一卡二国产精品| 麻豆精品国产91久久久久久| 男女激情视频一区| 久久电影国产免费久久电影| 欧美日本免费一区二区三区| 91视频com| 在线精品亚洲一区二区不卡| 日本久久电影网| 91国偷自产一区二区开放时间| av网站免费线看精品| 91伊人久久大香线蕉| 99精品视频在线免费观看| 99久久国产综合精品麻豆| 一本一道波多野结衣一区二区 | 欧美自拍偷拍一区| 欧美性猛交xxxx乱大交退制版| 在线免费不卡视频| 欧美高清dvd| 欧美一级免费观看| 精品国精品国产| 国产日韩欧美不卡| 亚洲色图.com| 香蕉久久夜色精品国产使用方法| 天堂午夜影视日韩欧美一区二区| 日韩av不卡在线观看| 国内精品久久久久影院色| 国产成人99久久亚洲综合精品| www.久久精品| 欧美日韩成人在线一区| 日韩欧美一区二区在线视频| 久久久久99精品一区| 亚洲免费在线电影| 日日噜噜夜夜狠狠视频欧美人 | 日韩黄色片在线观看| 免费高清成人在线| 丁香天五香天堂综合| 91免费精品国自产拍在线不卡| 欧洲一区在线电影| 精品久久久久久久久久久久包黑料| 久久久www免费人成精品| 亚洲精品视频在线观看免费| 天天射综合影视| 国产精品一区二区你懂的| 色综合久久88色综合天天免费| 91精品国产综合久久久久久久 | 国产精品久久久久婷婷二区次| 亚洲精品成人悠悠色影视| 免费观看一级欧美片| 成人一区二区三区视频在线观看| 精品视频免费看| 国产亚洲欧美在线| 香蕉成人啪国产精品视频综合网| 国产在线播放一区三区四| 在线观看亚洲成人| 国产午夜精品久久| 偷拍日韩校园综合在线| 成人高清在线视频| 日韩视频123| 一区二区三区av电影| 国产高清久久久| 91.xcao| 国产成a人无v码亚洲福利| 欧美剧在线免费观看网站| 亚洲国产精品av| 久久精品国产99久久6| 日本乱人伦aⅴ精品| 国产精品午夜春色av| 毛片av一区二区| 欧美日韩在线播放一区| 国产精品久久精品日日| 激情文学综合丁香| 91精品午夜视频| 夜夜精品浪潮av一区二区三区| 国产69精品一区二区亚洲孕妇| 日韩欧美第一区| 天堂久久久久va久久久久| 色综合激情久久| 日本一区二区电影| 国产米奇在线777精品观看| 欧美久久久久中文字幕| 伊人婷婷欧美激情| www.在线成人| 国产网站一区二区| 国产一区二区不卡| 欧美mv和日韩mv国产网站| 日韩av电影天堂| 欧美美女喷水视频| 亚洲国产wwwccc36天堂| 91福利视频网站| 樱桃国产成人精品视频| 97久久超碰国产精品电影| 国产精品乱码一区二区三区软件| 国产精品一区二区三区四区| 精品国产一区二区三区久久久蜜月 | 欧美日韩免费一区二区三区| 亚洲女同女同女同女同女同69| 成人国产精品免费观看视频| 国产清纯美女被跳蛋高潮一区二区久久w | 国产精品一色哟哟哟| 精品国产精品网麻豆系列| 久久99国产精品成人| 精品欧美乱码久久久久久1区2区| 久久精品国产成人一区二区三区| 日韩欧美一二三区| 另类调教123区| 欧美精品一区二区三区高清aⅴ| 麻豆精品国产91久久久久久| 日韩三区在线观看| 韩国成人精品a∨在线观看| 久久先锋资源网| 国产成人综合视频| 国产精品久久久久久久久图文区 | 久久99国产精品久久99| 欧美va亚洲va国产综合| 国产在线精品免费| 国产欧美日产一区| 91丨porny丨国产入口| 一卡二卡欧美日韩| 777色狠狠一区二区三区| 久久99热这里只有精品| 国产欧美日本一区二区三区| 不卡的av网站| 亚洲国产精品久久久久婷婷884 | 亚洲综合色丁香婷婷六月图片| 欧美色图第一页| 日韩二区三区在线观看| 精品国产乱码久久久久久图片 | 国产尤物一区二区在线| 中文在线一区二区| 欧美视频一区二区三区四区| 日本亚洲视频在线| 国产欧美视频在线观看| 欧洲视频一区二区| 美女视频一区在线观看| 中文字幕精品综合| 欧美色图在线观看| 国内精品伊人久久久久av影院| 国产精品久线在线观看| 欧美日韩三级一区二区| 国产在线精品一区二区夜色| 日韩久久免费av| 久久婷婷色综合| k8久久久一区二区三区| 一区二区三区不卡在线观看| 日韩一级免费一区| 99久久婷婷国产精品综合| 婷婷国产在线综合| 欧美经典一区二区| 欧美丝袜第三区| 国产白丝精品91爽爽久久| 亚洲综合丁香婷婷六月香| 久久在线观看免费| 欧洲色大大久久| 国产91丝袜在线播放| 亚洲国产欧美另类丝袜| 国产欧美日韩卡一| 538在线一区二区精品国产| 成人h动漫精品一区二| 日本91福利区| 亚洲美女在线国产| 久久精品人人做| 91精品国产欧美一区二区成人| 成人一区二区在线观看| 裸体健美xxxx欧美裸体表演| 亚洲精品中文在线观看| 久久久综合九色合综国产精品| 欧美三级中文字幕| av电影天堂一区二区在线|