Top Inners Fields Constructors Methods
org.hsqldb.persist

public Class LobManager

extends Object
Class Inheritance
Imports
java.io.EOFException, .IOException, .InputStream, java.util.concurrent.locks.Lock, .ReadWriteLock, .ReentrantReadWriteLock, java.util.zip.DataFormatException, .Deflater, .Inflater, org.hsqldb.Database, .HsqlException, .Session, .SessionInterface, .Statement, org.hsqldb.error.Error, .ErrorCode, org.hsqldb.lib.ArrayUtil, .HsqlByteArrayInputStream, .LineGroupReader, .OrderedHashMap, org.hsqldb.map.ValuePool, org.hsqldb.navigator.RowSetNavigator, org.hsqldb.result.Result, .ResultLob, .ResultMetaData, org.hsqldb.types.BinaryData, .BlobData, .BlobDataID, .ClobData, .ClobDataID, .Collation, .Types

Author
Fred Toussi (fredt@users dot sourceforge.net)
Since
1.9.0
Version
2.7.3

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static interface
private static interface
private static interface
private static interface
private static interface
private static interface
pack-priv static interface
private static interface
private static interface

Field Summary

Modifier and TypeField and Description
pack-priv byte[]
pack-priv boolean
pack-priv Statement
pack-priv Statement
private static final String
private static final String
pack-priv Statement
private static final String
pack-priv Statement
private static final String
pack-priv boolean
pack-priv Database
pack-priv byte[]
pack-priv Deflater
pack-priv Statement
private static final String
pack-priv Statement
private static final String
private static final String
pack-priv Statement
pack-priv Statement
private static final String
private static final String
pack-priv Statement
private static final String
pack-priv Statement
pack-priv Statement
private static final String
private static final String
private static final String
pack-priv Statement
private static final String
pack-priv Statement
private static final String
private static final String
pack-priv Statement
pack-priv Statement
pack-priv Inflater
private static final String
pack-priv int
pack-priv int
pack-priv LobStore
pack-priv ReadWriteLock
pack-priv Statement
private static final String
pack-priv static final String
pack-priv volatile boolean
pack-priv Session
pack-priv int
pack-priv Statement
private static final String
pack-priv Statement
private static final String
pack-priv long
pack-priv Lock

Constructor Summary

AccessConstructor and Description
public
LobManager(Database database)

Method Summary

Modifier and TypeMethod and Description
public Result
adjustUsageCount(Session session, long lobID, int delta)

Executes in user session.

public void
public int
compare(long lobId, byte[] b)

public int
public int
compare(Collation collation, long lobId, String b)

public int
private int
compareBytesCompressed(long aID, long bID)

private int
compareBytesNormal(long aID, long bID)

private int
compareTextCompressed(Collation collation, long aID, long bID)

private int
compareTextNormal(Collation collation, long aID, long bID)

public void
private void
copyBlockSet(int[][] source, int[][] target)

public long
createBlob(Session session, long length)

private Result
createBlockAddresses(long lobID, int offset, int count)

public long
createClob(Session session, long length)

public Result
createDuplicateLob(long lobID)

public Result
createDuplicateLob(long lobID, long newLength)

private Result
createFullBlockAddresses(long lobID, int offset, int count)

private Result
createPart(long lobID, long partOffset, int dataLength, int byteLength, int blockOffset, int blockCount)

public void
private int
deflate(byte[] data, int offset, int length)

private void
deleteBlockAddresses(long lobID, int offset, int limit)

public Result
deleteLob(long lobID)

public Result
private void
divideBlockAddresses(long lobID, int offset)

public BlobData
getBlob(long lobID)

private int
getBlockAddress(int[][] blockAddresses, int blockOffset)

private int[][]
getBlockAddresses(long lobID, int offset, int limit)

public Result
getBytes(long lobID, long offset, int length)

private Result
getBytesCompressed(long lobID, long offset, int length)

private Result
getBytesNormal(long lobID, long offset, int length)

public Result
getChars(long lobID, long offset, int length)

public ClobData
getClob(long lobID)

private long[]
getLastPart(long lobID)

public Result
getLength(long lobID)

public Result
getLob(long lobID, long offset, long length)

Used for SUBSTRING

public int
private Object[]
getLobHeader(long lobID)

public LobStore
private Long
private Result
getPartBytesCompressedInBuffer(long lobID, long[] part)

private long[][]
getParts(long lobID, long offset, long limit)

public Result
getTruncateLength(long lobID)

public long
private void
inflate(byte[] data, int length)

private void
public void
lock()

public void
open()

public Result
setBytes(long lobID, long offset, byte[] dataBytes, int dataLength)

returns new LOB length

private Result
setBytesBA(long lobID, long offset, byte[] dataBytes, int dataLength)

private Result
setBytesBACompressed(long lobID, long offset, byte[] dataBytes, int dataLength)

private Result
setBytesBACompressedPart(long lobID, long offset, byte[] dataBytes, int dataLength)

Only for loading parts of the same lob, not for overwriting parts of existing lob

private Result
setBytesBANormal(long lobID, long offset, byte[] dataBytes, int dataLength)

public Result
setBytesForNewBlob(long lobID, InputStream inputStream, long length)

for new blob only blob length is set to inputStream size (not given length which could be incorrect)

private Result
setBytesIS(long lobID, InputStream inputStream, long offset, long length)

private Result
setBytesISCompressed(long lobID, InputStream inputStream, long baseOffset, long length)

private Result
setBytesISNormal(long lobID, InputStream inputStream, long length)

public Result
setChars(long lobID, long offset, char[] chars, int dataLength)

returns new full length of Clob

public Result
setCharsForNewClob(long lobID, InputStream inputStream, long length)

private Result
setLength(long lobID, long length)

public void
public void
public Result
truncate(long lobID, long offset)

public void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

byteBufferback to summary
pack-priv byte[] byteBuffer
compressLobsback to summary
pack-priv boolean compressLobs
createLobback to summary
pack-priv Statement createLob
createLobPartCallback to summary
pack-priv Statement createLobPartCall
createLobPartCallSQLback to summary
private static final String createLobPartCallSQL
createLobSQLback to summary
private static final String createLobSQL
createPartback to summary
pack-priv Statement createPart
createPartSQLback to summary
private static final String createPartSQL
createSingleLobPartCallback to summary
pack-priv Statement createSingleLobPartCall
createSingleLobPartCallSQLback to summary
private static final String createSingleLobPartCallSQL
cryptLobsback to summary
pack-priv boolean cryptLobs
databaseback to summary
pack-priv Database database
dataBufferback to summary
pack-priv byte[] dataBuffer
deflaterback to summary
pack-priv Deflater deflater
deleteLobCallback to summary
pack-priv Statement deleteLobCall
deleteLobCallSQLback to summary
private static final String deleteLobCallSQL
deleteLobPartCallback to summary
pack-priv Statement deleteLobPartCall
deleteLobPartCallSQLback to summary
private static final String deleteLobPartCallSQL
deleteUnusedCallSQLback to summary
private static final String deleteUnusedCallSQL
deleteUnusedLobsback to summary
pack-priv Statement deleteUnusedLobs
divideLobPartCallback to summary
pack-priv Statement divideLobPartCall
divideLobPartCallSQLback to summary
private static final String divideLobPartCallSQL
existsBlocksSQLback to summary
private static final String existsBlocksSQL
getLastPartback to summary
pack-priv Statement getLastPart
getLastPartSQLback to summary
private static final String getLastPartSQL
getLobback to summary
pack-priv Statement getLob
getLobCountback to summary
pack-priv Statement getLobCount
getLobCountSQLback to summary
private static final String getLobCountSQL
getLobPartSQLback to summary
private static final String getLobPartSQL
getLobSQLback to summary
private static final String getLobSQL
getLobUseLimitback to summary
pack-priv Statement getLobUseLimit
getLobUseLimitSQLback to summary
private static final String getLobUseLimitSQL
getNextLobIdback to summary
pack-priv Statement getNextLobId
getNextLobIdSQLback to summary
private static final String getNextLobIdSQL
getPartsSQLback to summary
private static final String getPartsSQL
getSpanningBlocksback to summary
pack-priv Statement getSpanningBlocks
getSpanningPartsback to summary
pack-priv Statement getSpanningParts
inflaterback to summary
pack-priv Inflater inflater
initialiseBlocksSQLback to summary
private static final String initialiseBlocksSQL
largeLobBlockSizeback to summary
pack-priv int largeLobBlockSize
lobBlockSizeback to summary
pack-priv int lobBlockSize
lobStoreback to summary
pack-priv LobStore lobStore
lockback to summary
pack-priv ReadWriteLock lock
mergeUnusedSpaceback to summary
pack-priv Statement mergeUnusedSpace
mergeUnusedSpaceSQLback to summary
private static final String mergeUnusedSpaceSQL
resourceFileNameback to summary
pack-priv static final String resourceFileName
storeModifiedback to summary
pack-priv volatile boolean storeModified
sysLobSessionback to summary
pack-priv Session sysLobSession
totalBlockLimitCountback to summary
pack-priv int totalBlockLimitCount
updateLobLengthback to summary
pack-priv Statement updateLobLength
updateLobLengthSQLback to summary
private static final String updateLobLengthSQL
updateLobUsageback to summary
pack-priv Statement updateLobUsage
updateLobUsageSQLback to summary
private static final String updateLobUsageSQL
usageChangedback to summary
pack-priv long usageChanged
writeLockback to summary
pack-priv Lock writeLock

Constructor Detail

LobManagerback to summary
public LobManager(Database database)

Method Detail

adjustUsageCountback to summary
public Result adjustUsageCount(Session session, long lobID, int delta)

Executes in user session. No lock

closeback to summary
public void close()
compareback to summary
public int compare(long lobId, byte[] b)
compareback to summary
public int compare(BlobData a, BlobData b)
compareback to summary
public int compare(Collation collation, long lobId, String b)
compareback to summary
public int compare(Collation collation, ClobData a, ClobData b)
compareBytesCompressedback to summary
private int compareBytesCompressed(long aID, long bID)
compareBytesNormalback to summary
private int compareBytesNormal(long aID, long bID)
compareTextCompressedback to summary
private int compareTextCompressed(Collation collation, long aID, long bID)
compareTextNormalback to summary
private int compareTextNormal(Collation collation, long aID, long bID)
compileStatementsback to summary
public void compileStatements()
copyBlockSetback to summary
private void copyBlockSet(int[][] source, int[][] target)
createBlobback to summary
public long createBlob(Session session, long length)
createBlockAddressesback to summary
private Result createBlockAddresses(long lobID, int offset, int count)
createClobback to summary
public long createClob(Session session, long length)
createDuplicateLobback to summary
public Result createDuplicateLob(long lobID)
createDuplicateLobback to summary
public Result createDuplicateLob(long lobID, long newLength)
createFullBlockAddressesback to summary
private Result createFullBlockAddresses(long lobID, int offset, int count)
createPartback to summary
private Result createPart(long lobID, long partOffset, int dataLength, int byteLength, int blockOffset, int blockCount)
createSchemaback to summary
public void createSchema()
deflateback to summary
private int deflate(byte[] data, int offset, int length)
deleteBlockAddressesback to summary
private void deleteBlockAddresses(long lobID, int offset, int limit)
deleteLobback to summary
public Result deleteLob(long lobID)
deleteUnusedLobsback to summary
public Result deleteUnusedLobs()
divideBlockAddressesback to summary
private void divideBlockAddresses(long lobID, int offset)
getBlobback to summary
public BlobData getBlob(long lobID)
getBlockAddressback to summary
private int getBlockAddress(int[][] blockAddresses, int blockOffset)
getBlockAddressesback to summary
private int[][] getBlockAddresses(long lobID, int offset, int limit)
getBytesback to summary
public Result getBytes(long lobID, long offset, int length)
getBytesCompressedback to summary
private Result getBytesCompressed(long lobID, long offset, int length)
getBytesNormalback to summary
private Result getBytesNormal(long lobID, long offset, int length)
getCharsback to summary
public Result getChars(long lobID, long offset, int length)
getClobback to summary
public ClobData getClob(long lobID)
getLastPartback to summary
private long[] getLastPart(long lobID)
getLengthback to summary
public Result getLength(long lobID)
getLobback to summary
public Result getLob(long lobID, long offset, long length)

Used for SUBSTRING

getLobCountback to summary
public int getLobCount()
getLobHeaderback to summary
private Object[] getLobHeader(long lobID)
getLobStoreback to summary
public LobStore getLobStore()
getNewLobIDback to summary
private Long getNewLobID()
getPartBytesCompressedInBufferback to summary
private Result getPartBytesCompressedInBuffer(long lobID, long[] part)
getPartsback to summary
private long[][] getParts(long lobID, long offset, long limit)
getTruncateLengthback to summary
public Result getTruncateLength(long lobID)
getUsageChangedback to summary
public long getUsageChanged()
inflateback to summary
private void inflate(byte[] data, int length)
initialiseLobSpaceback to summary
private void initialiseLobSpace()
lockback to summary
public void lock()
openback to summary
public void open()
setBytesback to summary
public Result setBytes(long lobID, long offset, byte[] dataBytes, int dataLength)

returns new LOB length

setBytesBAback to summary
private Result setBytesBA(long lobID, long offset, byte[] dataBytes, int dataLength)
setBytesBACompressedback to summary
private Result setBytesBACompressed(long lobID, long offset, byte[] dataBytes, int dataLength)
setBytesBACompressedPartback to summary
private Result setBytesBACompressedPart(long lobID, long offset, byte[] dataBytes, int dataLength)

Only for loading parts of the same lob, not for overwriting parts of existing lob

setBytesBANormalback to summary
private Result setBytesBANormal(long lobID, long offset, byte[] dataBytes, int dataLength)
setBytesForNewBlobback to summary
public Result setBytesForNewBlob(long lobID, InputStream inputStream, long length)

for new blob only blob length is set to inputStream size (not given length which could be incorrect)

setBytesISback to summary
private Result setBytesIS(long lobID, InputStream inputStream, long offset, long length)
setBytesISCompressedback to summary
private Result setBytesISCompressed(long lobID, InputStream inputStream, long baseOffset, long length)
setBytesISNormalback to summary
private Result setBytesISNormal(long lobID, InputStream inputStream, long length)
setCharsback to summary
public Result setChars(long lobID, long offset, char[] chars, int dataLength)

returns new full length of Clob

setCharsForNewClobback to summary
public Result setCharsForNewClob(long lobID, InputStream inputStream, long length)
setLengthback to summary
private Result setLength(long lobID, long length)
setUsageChangedback to summary
public void setUsageChanged()
synchback to summary
public void synch()
truncateback to summary
public Result truncate(long lobID, long offset)
unlockback to summary
public void unlock()
org.hsqldb.persist back to summary

private Interface LobManager.ALLOC_BLOCKS


Field Summary

Modifier and TypeField and Description
public static final int
public static final int
public static final int

Field Detail

BLOCK_COUNTback to summary
public static final int BLOCK_COUNT
BLOCK_OFFSETback to summary
public static final int BLOCK_OFFSET
LOB_IDback to summary
public static final int LOB_ID
org.hsqldb.persist back to summary

private Interface LobManager.ALLOC_PART


Field Summary

Modifier and TypeField and Description
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int

Field Detail

BLOCK_COUNTback to summary
public static final int BLOCK_COUNT
BLOCK_OFFSETback to summary
public static final int BLOCK_OFFSET
LOB_IDback to summary
public static final int LOB_ID
PART_BYTESback to summary
public static final int PART_BYTES
PART_LENGTHback to summary
public static final int PART_LENGTH
PART_OFFSETback to summary
public static final int PART_OFFSET
org.hsqldb.persist back to summary

private Interface LobManager.DELETE_BLOCKS


Field Summary

Modifier and TypeField and Description
public static final int
public static final int
public static final int
public static final int

Field Detail

BLOCK_LIMITback to summary
public static final int BLOCK_LIMIT
BLOCK_OFFSETback to summary
public static final int BLOCK_OFFSET
LOB_IDback to summary
public static final int LOB_ID
TX_IDback to summary
public static final int TX_ID
org.hsqldb.persist back to summary

private Interface LobManager.DIVIDE_BLOCK


Field Summary

Modifier and TypeField and Description
public static final int
public static final int

Field Detail

BLOCK_OFFSETback to summary
public static final int BLOCK_OFFSET
LOB_IDback to summary
public static final int LOB_ID
org.hsqldb.persist back to summary

private Interface LobManager.GET_LOB_PART


Field Summary

Modifier and TypeField and Description
public static final int
public static final int
public static final int

Field Detail

BLOCK_LIMITback to summary
public static final int BLOCK_LIMIT
BLOCK_OFFSETback to summary
public static final int BLOCK_OFFSET
LOB_IDback to summary
public static final int LOB_ID
org.hsqldb.persist back to summary

private Interface LobManager.LOB_IDS


Field Summary

Modifier and TypeField and Description
public static final int
public static final int
public static final int
public static final int

Field Detail

LOB_IDback to summary
public static final int LOB_ID
LOB_LENGTHback to summary
public static final int LOB_LENGTH
LOB_TYPEback to summary
public static final int LOB_TYPE
LOB_USAGE_COUNTback to summary
public static final int LOB_USAGE_COUNT
org.hsqldb.persist back to summary

pack-priv Interface LobManager.LOBS


Field Summary

Modifier and TypeField and Description
public static final int
public static final int
public static final int
public static final int

Field Detail

BLOCK_ADDRback to summary
public static final int BLOCK_ADDR
BLOCK_COUNTback to summary
public static final int BLOCK_COUNT
BLOCK_OFFSETback to summary
public static final int BLOCK_OFFSET
LOB_IDback to summary
public static final int LOB_ID
org.hsqldb.persist back to summary

private Interface LobManager.UPDATE_LENGTH


Field Summary

Modifier and TypeField and Description
public static final int
public static final int

Field Detail

LOB_IDback to summary
public static final int LOB_ID
LOB_LENGTHback to summary
public static final int LOB_LENGTH
org.hsqldb.persist back to summary

private Interface LobManager.UPDATE_USAGE


Field Summary

Modifier and TypeField and Description
public static final int
public static final int

Field Detail

BLOCK_COUNTback to summary
public static final int BLOCK_COUNT
LOB_IDback to summary
public static final int LOB_ID