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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? logfile.java

?? 非常棒的java數(shù)據(jù)庫
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
            }
            int sumLength = in.readInt();
            byte[] summary = new byte[sumLength];
            if (sumLength > 0) {
                in.read(summary, 0, sumLength);
            }
            if (diskFile) {
                database.getDataFile().initFromSummary(summary);
            } else {
                database.getIndexFile().initFromSummary(summary);
            }
            break;
        }
        case 'T':
            if (undo) {
                throw Message.getInternalError("cannot undo truncate");
            } else {
                logSystem.addRedoLog(storage, recordId, blockCount, null);
                storage.setRecordCount(0);
                storage.getDiskFile().setPageOwner(recordId / DiskFile.BLOCKS_PER_PAGE, -1);
                logSystem.setLastCommitForSession(sessionId, id, pos);
            }
            break;
        case 'I':
            if (undo) {
                logSystem.addRedoLog(storage, recordId, blockCount, null);
                storage.setRecordCount(storage.getRecordCount() - 1);
            } else {
                logSystem.getOrAddSessionState(sessionId);
                logSystem.addRedoLog(storage, recordId, blockCount, rec);
                storage.setRecordCount(storage.getRecordCount() + 1);
            }
            break;
        case 'D':
            if (undo) {
                logSystem.addRedoLog(storage, recordId, blockCount, rec);
                storage.setRecordCount(storage.getRecordCount() + 1);
            } else {
                logSystem.getOrAddSessionState(sessionId);
                logSystem.addRedoLog(storage, recordId, blockCount, null);
                storage.setRecordCount(storage.getRecordCount() - 1);
            }
            break;
        default:
            throw Message.getInternalError("type=" + type);
        }
        return true;
    }

    public void redoAllGoEnd() throws SQLException {
        boolean readOnly = logSystem.getDatabase().getReadOnly();
        long length = file.length();
        if (length <= FileStore.HEADER_LENGTH) {
            return;
        }
        try {
            int max = (int) (length / BLOCK_SIZE);
            while (true) {
                pos = getBlock();
                database.setProgress(DatabaseEventListener.STATE_RECOVER, fileName, pos, max);
                if ((long) pos * BLOCK_SIZE >= length) {
                    break;
                }
                boolean more = redoOrUndo(false, readOnly);
                if (!more) {
                    break;
                }
            }
            database.setProgress(DatabaseEventListener.STATE_RECOVER, fileName, max, max);
        } catch (SQLException e) {
            database.getTrace(Trace.LOG).debug("Stop reading log file: " + e.getMessage(), e);
            // wrong checksum (at the end of the log file)
        } catch (OutOfMemoryError e) {
            // OutOfMemoryError means not enough memory is allocated to the VM.
            // this is not necessarily at the end of the log file
            throw Message.convert(e);
        } catch (Throwable e) {
            database.getTrace(Trace.LOG).error("Error reading log file (non-fatal)", e);
            // TODO log exception, but mark as 'probably ok'
            // on power loss, sometime there is garbage at the end of the file
            // we stop recovering in this case (checksum mismatch)
        }
        go(pos);
    }

    void go(int pos) throws SQLException {
        file.seek((long) pos * BLOCK_SIZE);
    }

    void undo(int pos) throws SQLException {
        go(pos);
        redoOrUndo(true, false);
    }

    void flush() throws SQLException {
        if (bufferPos > 0) {
            if (file == null) {
                throw Message.getSQLException(ErrorCode.SIMULATED_POWER_OFF);
            }
            file.write(buffer, 0, bufferPos);
            pos = getBlock();
            for (int i = 0; i < unwritten.size(); i++) {
                Record r = (Record) unwritten.get(i);
                r.setLogWritten(id, pos);
            }
            unwritten.clear();
            bufferPos = 0;
            long min = (long) pos * BLOCK_SIZE;
            min = MathUtils.scaleUp50Percent(Constants.FILE_MIN_SIZE, min, Constants.FILE_PAGE_SIZE, Constants.FILE_MAX_INCREMENT);
            if (min > file.length()) {
                file.setLength(min);
            }
        }
    }

    void close(boolean delete) throws SQLException {
        SQLException closeException = null;
        try {
            flush();
        } catch (SQLException e) {
            closeException = e;
        }
        // continue with close even if flush was not possible (file storage problem)
        if (file != null) {
            try {
                file.close();
                file = null;
                if (delete) {
                    database.deleteLogFileLater(fileName);
                }
            } catch (IOException e) {
                if (closeException == null) {
                    closeException = Message.convertIOException(e, fileName);
                }
            }
            file = null;
            fileNamePrefix = null;
        }
        if (closeException != null) {
            throw closeException;
        }
    }

    void addSummary(boolean dataFile, byte[] summary) throws SQLException {
        DataPage buff = DataPage.create(database, 256);
        buff.writeInt(0);
        buff.writeByte((byte) 'S');
        buff.writeInt(0);
        buff.writeInt(0); // storageId
        buff.writeInt(0); // recordId
        buff.writeInt(0); // blockCount
        buff.writeByte((byte) (dataFile ? 'D' : 'I'));
        if (summary == null) {
            buff.writeInt(0);
        } else {
            buff.checkCapacity(summary.length);
            buff.writeInt(summary.length);
            buff.write(summary, 0, summary.length);
        }
        writeBuffer(buff, null);
    }

    void addTruncate(Session session, int storageId, int recordId, int blockCount) throws SQLException {
        DataPage buff = rowBuff;
        buff.reset();
        buff.writeInt(0);
        buff.writeByte((byte) 'T');
        buff.writeInt(session.getId());
        buff.writeInt(storageId);
        buff.writeInt(recordId);
        buff.writeInt(blockCount);
        writeBuffer(buff, null);
    }

    void add(Session session, int storageId, Record record) throws SQLException {
        record.prepareWrite();
        DataPage buff = rowBuff;
        buff.reset();
        buff.writeInt(0);
        if (record.getDeleted()) {
            buff.writeByte((byte) 'D');
        } else {
            buff.writeByte((byte) 'I');
        }
        buff.writeInt(session.getId());
        buff.writeInt(storageId);
        buff.writeInt(record.getPos());
        int blockCount = record.getBlockCount();
        buff.writeInt(blockCount);
        buff.checkCapacity(DiskFile.BLOCK_SIZE * blockCount);
        record.write(buff);
        writeBuffer(buff, record);
    }

    void setFirstUncommittedPos(int firstUncommittedPos) throws SQLException {
        this.firstUncommittedPos = firstUncommittedPos;
        int pos = getBlock();
        writeHeader();
        go(pos);
    }

    int getFirstUncommittedPos() {
        return firstUncommittedPos;
    }

    private void writeHeader() throws SQLException {
        file.seek(FileStore.HEADER_LENGTH);
        DataPage buff = getHeader();
        file.write(buff.getBytes(), 0, buff.length());
    }

    void truncate(int pos) throws SQLException {
        go(pos);
        file.setLength((long) pos * BLOCK_SIZE);
    }

    private DataPage getHeader() {
        DataPage buff = rowBuff;
        buff.reset();
        buff.writeInt(id);
        buff.writeInt(firstUncommittedPos);
        // TODO need to update & use firstUnwrittenPos
        buff.writeInt(firstUnwrittenPos);
        buff.fill(3 * BLOCK_SIZE);
        return buff;
    }

    private void readHeader() throws SQLException {
        DataPage buff = getHeader();
        int len = buff.length();
        buff.reset();
        if (file.length() < FileStore.HEADER_LENGTH + len) {
            // this is an empty file
            return;
        }
        file.readFully(buff.getBytes(), 0, len);
        id = buff.readInt();
        firstUncommittedPos = buff.readInt();
        firstUnwrittenPos = buff.readInt();
    }

    int getPos() {
        return pos;
    }

    public long getFileSize() throws SQLException {
        return file.getFilePointer();
    }

    public void sync() {
        if (file != null) {
            file.sync();
        }
    }

    void updatePreparedCommit(boolean commit, int pos, int sessionId, int blocks) throws SQLException {
        synchronized (database) {
            int posNow = getBlock();
            DataPage buff = rowBuff;
            buff.reset();
            buff.writeInt(blocks);
            if (commit) {
                buff.writeByte((byte) 'C');
            } else {
                buff.writeByte((byte) 'R');
            }
            buff.writeInt(sessionId);
            buff.fill(blocks * BLOCK_SIZE);
            buff.updateChecksum();
            go(pos);
            file.write(buff.getBytes(), 0, BLOCK_SIZE * blocks);
            go(posNow);
        }
    }

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品资源网站| 欧美tk丨vk视频| ...xxx性欧美| 成人动漫一区二区三区| 国产精品久久久久影院色老大 | 依依成人精品视频| 色哟哟国产精品| 亚洲综合在线免费观看| 欧美日韩一区二区三区不卡| 日韩高清电影一区| 日韩欧美国产系列| 国产成人aaa| 亚洲精品午夜久久久| 欧美日韩一区二区欧美激情 | 蜜桃精品在线观看| 国产午夜精品久久久久久免费视 | 国产激情一区二区三区四区 | 亚洲国产婷婷综合在线精品| 日韩一区二区三区免费看| 狠狠色丁香久久婷婷综合丁香| 国产三区在线成人av| 91蜜桃婷婷狠狠久久综合9色| 午夜在线电影亚洲一区| 久久精品夜夜夜夜久久| 91麻豆免费视频| 奇米精品一区二区三区在线观看一| 亚洲精品在线免费观看视频| 99久久99久久免费精品蜜臀| 日韩在线一二三区| 亚洲国产高清在线| 精品视频一区 二区 三区| 国产一区二区福利视频| 亚洲人成亚洲人成在线观看图片| 555www色欧美视频| 99久久久久久| 精品一二线国产| 一区二区三区在线不卡| 26uuu精品一区二区三区四区在线| 91美女精品福利| 久久狠狠亚洲综合| 亚洲精品乱码久久久久久久久| 日韩一卡二卡三卡| 色网综合在线观看| 国产精品自拍毛片| 亚洲成人动漫av| 国产精品剧情在线亚洲| 日韩免费电影网站| 色av综合在线| 成人小视频免费在线观看| 蜜桃av一区二区三区| 亚洲曰韩产成在线| 国产精品美女www爽爽爽| 日韩免费性生活视频播放| 在线一区二区三区四区| 成人国产在线观看| 国产一区二区三区免费看 | 亚洲视频你懂的| 欧美精品一区视频| 欧美区在线观看| 一本久道久久综合中文字幕| 国产成人久久精品77777最新版本| 免费不卡在线视频| 天堂一区二区在线| 亚洲综合视频在线观看| 日韩一区日韩二区| 日本一区二区三区久久久久久久久不 | 久久爱www久久做| 日韩黄色一级片| 图片区小说区国产精品视频| 一区二区三区在线免费| 亚洲人成网站色在线观看| 国产精品水嫩水嫩| 中文字幕欧美日本乱码一线二线| 精品成人在线观看| 精品国产污网站| 欧美大片免费久久精品三p| 欧美一区二区在线不卡| 在线播放亚洲一区| 91精品国产高清一区二区三区| 欧美日韩亚洲综合一区| 在线播放日韩导航| 5858s免费视频成人| 日韩一区二区在线免费观看| 欧美一区二区三区不卡| 欧美电视剧免费观看| 日韩欧美区一区二| 亚洲精品中文字幕乱码三区 | 色综合天天性综合| 91在线观看高清| 在线视频综合导航| 欧美日韩高清在线播放| 91麻豆精品国产91久久久资源速度| 欧美精品少妇一区二区三区 | 在线观看日产精品| 欧美日韩成人综合| 日韩一级大片在线观看| 久久青草国产手机看片福利盒子 | 亚洲欧洲av在线| 一区二区视频免费在线观看| 亚洲成av人片在线| 久久99久久精品| 成人中文字幕合集| 色狠狠桃花综合| 91精品国产一区二区三区香蕉| 日韩精品专区在线影院观看| 欧美经典一区二区三区| 亚洲精选视频免费看| 蜜桃av一区二区三区电影| 高清久久久久久| 欧美午夜电影网| 久久久久久夜精品精品免费| 国产精品伦一区| 午夜精品免费在线| 国产精品夜夜嗨| 欧美午夜精品一区二区蜜桃| 欧美v亚洲v综合ⅴ国产v| 国产精品剧情在线亚洲| 午夜a成v人精品| 国产精品一区二区三区99| 日本黄色一区二区| 精品久久人人做人人爽| 亚洲欧美福利一区二区| 久久成人精品无人区| 色域天天综合网| 亚洲精品在线免费观看视频| 亚洲制服丝袜一区| 国产成人日日夜夜| 欧美肥胖老妇做爰| 久久成人免费网| 精品欧美乱码久久久久久1区2区| 亚洲另类中文字| 国产成人av一区| 国产精品国产三级国产aⅴ中文 | 高清不卡在线观看| 欧美在线你懂的| 中文字幕av不卡| 日本不卡不码高清免费观看| 99久久综合狠狠综合久久| 日韩欧美在线123| 亚洲精品免费一二三区| 国产精品一品二品| 欧美一个色资源| 一区二区三区中文字幕电影| 国产ts人妖一区二区| 欧美一区二区久久| 亚洲一区二区美女| 91麻豆免费视频| 亚洲国产精品99久久久久久久久| jlzzjlzz亚洲日本少妇| 欧美日韩国产精选| 欧美丝袜自拍制服另类| 国产欧美在线观看一区| 免费成人在线观看视频| 欧美狂野另类xxxxoooo| 一区二区三区四区av| 99久久综合99久久综合网站| 久久精品人人做人人综合| 久久不见久久见中文字幕免费| 91精品国产综合久久久久久久久久| 亚洲激情av在线| 91麻豆文化传媒在线观看| 亚洲欧洲精品一区二区精品久久久| 国产99久久久国产精品潘金| 精品日韩一区二区三区| 久久机这里只有精品| 日韩欧美的一区| 日本成人在线一区| 欧美一区二区女人| 麻豆精品蜜桃视频网站| 日韩午夜激情视频| 麻豆成人91精品二区三区| 欧美电视剧在线看免费| 国产一区999| 国产日韩影视精品| 国产成人精品免费看| 国产三级欧美三级| 成人精品视频一区二区三区尤物| 国产精品欧美综合在线| 成人免费视频国产在线观看| 国产精品麻豆网站| 日本久久电影网| 亚洲综合一二区| 这里是久久伊人| 久久99精品国产| 欧美激情综合网| 99精品在线免费| 亚洲国产sm捆绑调教视频 | 久久久久久久久免费| 国产成人av在线影院| 国产精品久久久久一区| 在线观看日韩av先锋影音电影院| 亚洲成人av免费| 精品久久99ma| 国产高清精品在线| 亚洲人成小说网站色在线| 日韩高清不卡在线| 777久久久精品| 国产精品美女久久久久久久久久久 | 国内外精品视频| 亚洲视频一区二区在线观看|