/** * Write the header data. */ void initWrite() { data = store.createData(); data.writeByte((byte) Page.TYPE_STREAM_DATA); data.writeShortInt(0); data.writeInt(trunk); data.writeInt(logKey); remaining = store.getPageSize() - data.length(); }
@Override public int read() throws IOException { fillBuffer(); if (endOfFile) { return -1; } int i = page.readByte() & 0xff; remainingInBuffer--; return i; }
PageInputStream(PageStore store, int logKey, int firstTrunkPage, int dataPage) { this.store = store; this.trace = store.getTrace(); // minus one because we increment before comparing this.logKey = logKey - 1; this.firstTrunkPage = firstTrunkPage; trunkIterator = new PageStreamTrunk.Iterator(store, firstTrunkPage); this.dataPage = dataPage; }
private void flushBuffer(Data buff) { buff.checkCapacity(1); buff.writeByte((byte) 0); buff.fillAligned(); buff.setInt(0, buff.length() / Constants.FILE_BLOCK_SIZE); file.write(buff.getBytes(), 0, buff.length()); }
private void writeStaticHeader() { Data page = Data.create(database, new byte[pageSize - FileStore.HEADER_LENGTH]); page.writeInt(pageSize); page.writeByte((byte) WRITE_VERSION); page.writeByte((byte) READ_VERSION); file.seek(FileStore.HEADER_LENGTH); file.write(page.getBytes(), 0, pageSize - FileStore.HEADER_LENGTH); writeCount++; }
@Override public void write() { data = store.createData(); data.writeByte((byte) Page.TYPE_STREAM_TRUNK); data.writeShortInt(0); data.writeInt(parent); data.writeInt(logKey); data.writeInt(nextTrunk); data.writeShortInt(pageCount); for (int i = 0; i < pageCount; i++) { data.writeInt(pageIds[i]); } store.writePage(getPos(), data); }
@Override public void write() { data = store.createData(); data.writeByte((byte) Page.TYPE_FREE_LIST); data.writeShortInt(0); for (int i = 0; i < pageCount; i += 8) { data.writeByte((byte) used.getByte(i)); } store.writePage(getPos(), data); }
@Override public Value createClob(Reader reader, long maxLength) { init(); long max = maxLength == -1 ? Long.MAX_VALUE : maxLength; CountingReaderInputStream in = new CountingReaderInputStream(reader, max); return addLob(in, Long.MAX_VALUE, Value.CLOB, in); }
private int getFirstFree(int start) { int free = -1; for (int id = getFreeListId(start); start < pageCount; id++) { free = getFreeList(id).getFirstFree(start); if (free != -1) { break; } } return free; }
private Data getBuffer() { if (writeBuffer.length() == 0) { return writeBuffer; } return store.createData(); }
@Override public LobStorageInterface getLobStorage() { if (lobStorage == null) { if (dbSettings.mvStore) { lobStorage = new LobStorageMap(this); } else { lobStorage = new LobStorageBackend(this); } } return lobStorage; }
/** * A table is truncated. * * @param session the session * @param tableId the table id */ public synchronized void logTruncate(Session session, int tableId) { if (!recoveryRunning) { openForWriting(); log.logTruncate(session, tableId); } }
/** * Set the bit of an already allocated page. * * @param pageId the page to allocate */ void allocatePage(int pageId) { PageFreeList list = getFreeListForPage(pageId); list.allocate(pageId); }
/** * INTERNAL */ @Override public FileStore openFile(String name, String mode, boolean mustExist) { return FileStore.open(this, name, "rw"); }
public synchronized void setMaxLogSize(long value) { if (pageStore != null) { pageStore.setMaxLogSize(value); } }