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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? multiversionindex.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * 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.index;

import java.sql.SQLException;
import org.h2.engine.Database;
import org.h2.engine.Session;
import org.h2.message.Message;
import org.h2.result.Row;
import org.h2.result.SearchRow;
import org.h2.schema.Schema;
import org.h2.table.Column;
import org.h2.table.IndexColumn;
import org.h2.table.Table;
import org.h2.table.TableData;
import org.h2.util.ObjectArray;

/**
 * A multi-version index is a combination of a regular index,
 * and a in-memory tree index that contains uncommitted changes.
 * Uncommitted changes can include new rows, and deleted rows.
 */
public class MultiVersionIndex implements Index {

    private final Index base;
    private final TreeIndex delta;
    private final TableData table;
    private final Object sync;

    public MultiVersionIndex(Index base, TableData table) throws SQLException {
        this.base = base;
        this.table = table;
        IndexType deltaIndexType = IndexType.createNonUnique(false);
        this.delta = new TreeIndex(table, -1, "DELTA", base.getIndexColumns(), deltaIndexType);
        this.sync = base.getDatabase();
    }

    public void add(Session session, Row row) throws SQLException {
        synchronized (sync) {
            base.add(session, row);
            if (removeIfExists(session, row)) {
                // for example rolling back an delete operation
            } else if (row.getSessionId() != 0) {
                // don't insert rows that are added when creating an index
                delta.add(session, row);
            }
        }
    }

    public void close(Session session) throws SQLException {
        synchronized (sync) {
            base.close(session);
        }
    }

    public Cursor find(Session session, SearchRow first, SearchRow last) throws SQLException {
        synchronized (sync) {
            Cursor baseCursor = base.find(session, first, last);
            Cursor deltaCursor = delta.find(session, first, last);
            return new MultiVersionCursor(session, this, baseCursor, deltaCursor, sync);
        }
    }

    public Cursor findNext(Session session, SearchRow first, SearchRow last) throws SQLException {
        throw Message.getInternalError();
    }

    public boolean canFindNext() {
        // TODO possible, but more complicated
        return false;
    }

    public boolean canGetFirstOrLast() {
        // TODO in many cases possible, but more complicated
        return false;
    }

    public SearchRow findFirstOrLast(Session session, boolean first) throws SQLException {
        throw Message.getUnsupportedException();
    }

    public double getCost(Session session, int[] masks) throws SQLException {
        return base.getCost(session, masks);
    }

    public boolean needRebuild() {
        return base.needRebuild();
    }

    private boolean removeIfExists(Session session, Row row) throws SQLException {
        // maybe it was inserted by the same session just before
        Cursor c = delta.find(session, row, row);
        while (c.next()) {
            Row r = c.get();
            if (r.getPos() == row.getPos()) {
                delta.remove(session, row);
                return true;
            }
        }
        return false;
    }

    public void remove(Session session, Row row) throws SQLException {
        synchronized (sync) {
            base.remove(session, row);
            if (removeIfExists(session, row)) {
                // added and deleted in the same transaction: no change
            } else {
                delta.add(session, row);
            }
        }
    }

    public void remove(Session session) throws SQLException {
        synchronized (sync) {
            base.remove(session);
        }
    }

    public void truncate(Session session) throws SQLException {
        synchronized (sync) {
            delta.truncate(session);
            base.truncate(session);
        }
    }

    public void commit(int operation, Row row) throws SQLException {
        synchronized (sync) {
            removeIfExists(null, row);
        }
    }

    public int compareKeys(SearchRow rowData, SearchRow compare) {
        return base.compareKeys(rowData, compare);
    }

    public int compareRows(SearchRow rowData, SearchRow compare) throws SQLException {
        return base.compareRows(rowData, compare);
    }

    public int getColumnIndex(Column col) {
        return base.getColumnIndex(col);
    }

    public String getColumnListSQL() {
        return base.getColumnListSQL();
    }

    public Column[] getColumns() {
        return base.getColumns();
    }

    public IndexColumn[] getIndexColumns() {
        return base.getIndexColumns();
    }

    public long getCostRangeIndex(int[] masks, long rowCount) throws SQLException {
        return base.getCostRangeIndex(masks, rowCount);
    }

    public String getCreateSQL() {
        return base.getCreateSQL();
    }

    public String getCreateSQLForCopy(Table table, String quotedName) {
        return base.getCreateSQLForCopy(table, quotedName);
    }

    public String getDropSQL() {
        return base.getDropSQL();
    }

    public SQLException getDuplicateKeyException() {
        return base.getDuplicateKeyException();
    }

    public IndexType getIndexType() {
        return base.getIndexType();
    }

    public int getLookupCost(long rowCount) {
        return base.getLookupCost(rowCount);
    }

    public String getPlanSQL() {
        return base.getPlanSQL();
    }

    public long getRowCount(Session session) {
        return base.getRowCount(session);
    }

    public Table getTable() {
        return base.getTable();
    }

    public int getType() {
        return base.getType();
    }

    public boolean isNull(Row newRow) {
        return base.isNull(newRow);
    }

    public void removeChildrenAndResources(Session session) throws SQLException {
        synchronized (sync) {
            table.removeIndex(this);
            remove(session);
        }
    }

    public String getSQL() {
        return base.getSQL();
    }

    public Schema getSchema() {
        return base.getSchema();
    }

    public void checkRename() throws SQLException {
        base.checkRename();
    }

    public ObjectArray getChildren() {
        return base.getChildren();
    }

    public String getComment() {
        return base.getComment();
    }

    public Database getDatabase() {
        return base.getDatabase();
    }

    public int getHeadPos() {
        return base.getHeadPos();
    }

    public int getId() {
        return base.getId();
    }

    public long getModificationId() {
        return base.getModificationId();
    }

    public String getName() {
        return base.getName();
    }

    public boolean getTemporary() {
        return base.getTemporary();
    }

    public void rename(String newName) throws SQLException {
        base.rename(newName);
    }

    public void setComment(String comment) {
        base.setComment(comment);
    }

    public void setModified() {
        base.setModified();
    }

    public void setTemporary(boolean temporary) {
        base.setTemporary(temporary);
    }

    void debug(String s, Session session, SearchRow row) throws SQLException {
        // System.out.println(this + " " + s + " session:" + 
        //     (session == null ? -1: session.getId()) + " " + 
        //     (row == null ? "" : row.getValue(0).getString()));
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产欧美三级| ●精品国产综合乱码久久久久| 亚洲大片免费看| 91麻豆swag| 一区二区三区不卡视频| 91污在线观看| 亚洲精品日韩一| 91麻豆国产福利在线观看| 亚洲免费观看高清| 欧美四级电影网| 日韩av网站免费在线| 欧美一区二区三区婷婷月色 | 亚洲图片欧美一区| 欧美日本视频在线| 蜜桃av一区二区| 久久青草欧美一区二区三区| 成人在线综合网站| 亚洲免费电影在线| 3d动漫精品啪啪一区二区竹菊 | 国产精品另类一区| 97久久超碰国产精品电影| 亚洲精品免费看| 欧美一区二区三区成人| 国产精品综合二区| 亚洲精品成人少妇| 欧美一区二区三区精品| 国产精品一卡二卡在线观看| 亚洲品质自拍视频| 欧美日本一区二区三区四区| 激情综合亚洲精品| 中文字幕日韩精品一区| 欧美日韩国产免费| 看电视剧不卡顿的网站| 国产精品―色哟哟| 欧美高清性hdvideosex| 国产成人一区在线| 亚洲mv在线观看| 国产色产综合产在线视频| 在线观看www91| 93久久精品日日躁夜夜躁欧美| 亚洲一区二区精品3399| 精品国产91久久久久久久妲己| 972aa.com艺术欧美| 老鸭窝一区二区久久精品| 中文字幕一区二区在线播放| 日韩视频一区二区在线观看| 91麻豆国产自产在线观看| 国产麻豆一精品一av一免费| 亚洲午夜日本在线观看| 欧美韩国日本不卡| 91精品综合久久久久久| av不卡免费电影| 精品无人码麻豆乱码1区2区| 亚洲一区二三区| 国产精品美女一区二区在线观看| 欧美一级日韩一级| 91在线视频观看| 国产精品 日产精品 欧美精品| 亚洲成a人在线观看| 亚洲免费视频中文字幕| 国产日产欧产精品推荐色| 日韩一区二区在线播放| 欧美中文字幕一区二区三区亚洲| 国产成人aaa| 久久99久久精品| 免费在线观看一区| 亚洲成人一区在线| 亚洲精品中文在线观看| 综合欧美一区二区三区| 国产三级欧美三级| 久久女同精品一区二区| 日韩精品中文字幕一区 | 蜜臂av日日欢夜夜爽一区| 亚洲一区在线观看免费 | 91麻豆精品国产自产在线| 色狠狠色狠狠综合| 国产suv精品一区二区6| 国产精品一区在线| 久久66热re国产| 久久99精品久久久久| 蜜臀久久久久久久| 日韩主播视频在线| 视频一区二区中文字幕| 五月婷婷激情综合网| 午夜精品视频一区| 日韩精品亚洲一区| 丝袜亚洲精品中文字幕一区| 亚洲国产成人91porn| 午夜精品福利在线| 日本aⅴ亚洲精品中文乱码| 日本不卡视频一二三区| 麻豆精品在线视频| 久久99在线观看| 国产自产高清不卡| 国产成人在线视频免费播放| 成人激情文学综合网| 91丨porny丨国产入口| 91在线精品一区二区三区| 日本韩国一区二区三区视频| 欧美午夜不卡视频| 亚洲视频在线一区二区| 亚洲图片激情小说| 亚洲午夜久久久久中文字幕久| 亚洲成人av资源| 蜜桃久久久久久| 国产经典欧美精品| 色综合视频在线观看| 欧美日韩久久一区二区| 精品日本一线二线三线不卡| 久久久久久一级片| 亚洲视频一二三区| 日韩精品成人一区二区在线| 韩国成人精品a∨在线观看| 成人av集中营| 欧美日韩美女一区二区| 久久综合视频网| 亚洲精品美腿丝袜| 久久精品久久综合| www.欧美亚洲| 欧美一区二区在线观看| 国产亚洲制服色| 亚洲一区日韩精品中文字幕| 精品一区精品二区高清| 一本色道久久综合亚洲aⅴ蜜桃 | 91精品国产综合久久婷婷香蕉| 精品国产在天天线2019| 亚洲精品一二三四区| 激情丁香综合五月| 欧洲av一区二区嗯嗯嗯啊| 精品国产乱码久久久久久1区2区| 自拍偷拍国产精品| 免费亚洲电影在线| 色就色 综合激情| 久久综合久色欧美综合狠狠| 亚洲激情网站免费观看| 国产一区二区三区精品视频| 欧美亚州韩日在线看免费版国语版| 精品国产凹凸成av人网站| 亚洲综合成人在线视频| 国产激情一区二区三区| 在线播放亚洲一区| 亚洲人妖av一区二区| 久久99久久99小草精品免视看| 精品欧美乱码久久久久久| 亚洲欧美日韩成人高清在线一区| 麻豆极品一区二区三区| 欧美性受xxxx黑人xyx性爽| 国产精品青草久久| 精久久久久久久久久久| 欧美剧情片在线观看| 亚洲嫩草精品久久| 国产 日韩 欧美大片| 精品国产乱码久久久久久1区2区| 亚洲一区二区成人在线观看| 不卡电影一区二区三区| 久久精品亚洲精品国产欧美 | 欧美中文字幕亚洲一区二区va在线| 久久久三级国产网站| 美女视频一区二区三区| 欧美日韩精品欧美日韩精品 | 一区二区日韩av| 成人av在线资源| 国产无一区二区| 久久精品国产99| 91精品国产综合久久久久久久 | 91久久国产最好的精华液| 国产精品久久久爽爽爽麻豆色哟哟| 看电视剧不卡顿的网站| 日韩一区二区精品葵司在线| 波多野结衣亚洲一区| 国产精品蜜臀在线观看| 国产成人欧美日韩在线电影| 精品国产一区二区精华| 韩国一区二区三区| 精品国产免费视频| 国产露脸91国语对白| 国产午夜精品理论片a级大结局| 国产在线精品不卡| 久久久久久久久久看片| 国产精品白丝av| 国产精品麻豆久久久| 97精品国产97久久久久久久久久久久| 国产精品美女久久久久aⅴ国产馆| 国产99久久久久| 亚洲桃色在线一区| 欧美色综合久久| 日韩中文欧美在线| 日韩精品一区二区三区三区免费 | 一区二区三区 在线观看视频| 欧美在线啊v一区| 午夜精品一区二区三区三上悠亚| 欧美日韩亚洲不卡| 欧美aⅴ一区二区三区视频| 精品国产一区二区三区av性色| 国产精品996| 亚洲天堂a在线| 欧美精品精品一区| 国产乱一区二区| 中文字幕中文在线不卡住| 91久久香蕉国产日韩欧美9色|