Package org.h2.mvstore.db

# Class LobStorageMap

java.lang.Object
org.h2.mvstore.db.LobStorageMap

All Implemented Interfaces:
  `LobStorageInterface`

public final class LobStorageMap extends Object implements LobStorageInterface
This class stores LOB objects in the database, in maps. This is the back-end i.e. the server side of the LOB storage.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static final class`
`LobStorageMap.BlobMeta`
`static final class`
`LobStorageMap.BlobReference`

## Constructor Summary

Constructors
Constructor
Description
`LobStorageMap(Database database)`

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
Close LobStorage and release all resources
`ValueLob`
`copyLob(ValueLob old, int tableId)`
Copy a lob.
`ValueBlob`
`createBlob(InputStream in, long maxLength)`
Create a BLOB object.
`ValueClob`
`createClob(Reader reader, long maxLength)`
Create a CLOB object.
`InputStream`
`getInputStream(long lobId, int tableId, long byteCount)`
Get the input stream for the given lob
`InputStream`
`getInputStream(long lobId, long byteCount)`
Get the input stream for the given lob, only called on server side of a TCP connection.
`boolean`
`isReadOnly()`
Whether the storage is read-only
`static MVMap<Long,byte[]>`
`openLobDataMap(TransactionStore txStore)`
Open map used to store LOB data
`static MVMap<Long,LobStorageMap.BlobMeta>`
`openLobMap(TransactionStore txStore)`
Open map used to store LOB metadata
`void`
`removeAllForTable(int tableId)`
Remove all LOBs for this table.
`void`
`removeLob(ValueLob lob)`
Delete a LOB (from the database, if it is stored there).

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### LobStorageMap

public LobStorageMap(Database database)

## Method Details

### openLobMap

public static MVMap<Long,LobStorageMap.BlobMeta> openLobMap(TransactionStore txStore)
Open map used to store LOB metadata

Parameters:
  `txStore` - containing map
Returns:
  MVMap instance

### openLobDataMap

public static MVMap<Long,byte[]> openLobDataMap(TransactionStore txStore)
Open map used to store LOB data

Parameters:
  `txStore` - containing map
Returns:
  MVMap instance

### createBlob

public ValueBlob createBlob(InputStream in, long maxLength)
Description copied from interface: `LobStorageInterface`
Create a BLOB object.

Specified by:
  `createBlob` in interface `LobStorageInterface`
Parameters:
  `in` - the input stream
  `maxLength` - the maximum length (-1 if not known)
Returns:
  the LOB

### createClob

public ValueClob createClob(Reader reader, long maxLength)
Description copied from interface: `LobStorageInterface`
Create a CLOB object.

Specified by:
  `createClob` in interface `LobStorageInterface`
Parameters:
  `reader` - the reader
  `maxLength` - the maximum length (-1 if not known)
Returns:
  the LOB

### isReadOnly

public boolean isReadOnly()
Description copied from interface: `LobStorageInterface`
Whether the storage is read-only

Specified by:
  `isReadOnly` in interface `LobStorageInterface`
Returns:
  true if yes

### copyLob

public ValueLob copyLob(ValueLob old, int tableId)
Description copied from interface: `LobStorageInterface`
Copy a lob.

Specified by:
  `copyLob` in interface `LobStorageInterface`
Parameters:
  `old` - the old lob
  `tableId` - the new table id
Returns:
  the new lob

### getInputStream

public InputStream getInputStream(long lobId, long byteCount) throws IOException
Description copied from interface: `LobStorageInterface`
Get the input stream for the given lob, only called on server side of a TCP connection.

Specified by:
  `getInputStream` in interface `LobStorageInterface`
Parameters:
  `lobId` - the lob id
  `byteCount` - the number of bytes to read, or -1 if not known
Returns:
  the stream
Throws:
  `IOException` - on failure

### getInputStream

public InputStream getInputStream(long lobId, int tableId, long byteCount) throws IOException
Description copied from interface: `LobStorageInterface`
Get the input stream for the given lob

Specified by:
  `getInputStream` in interface `LobStorageInterface`
Parameters:
  `lobId` - the lob id
  `tableId` - the able id
  `byteCount` - the number of bytes to read, or -1 if not known
Returns:
  the stream
Throws:
  `IOException` - on failure

### removeAllForTable

public void removeAllForTable(int tableId)
Description copied from interface: `LobStorageInterface`
Remove all LOBs for this table.

Specified by:
  `removeAllForTable` in interface `LobStorageInterface`
Parameters:
  `tableId` - the table id

### removeLob

public void removeLob(ValueLob lob)
Description copied from interface: `LobStorageInterface`
Delete a LOB (from the database, if it is stored there).

Specified by:
  `removeLob` in interface `LobStorageInterface`
Parameters:
  `lob` - the lob

### close

public void close()
Description copied from interface: `LobStorageInterface`
Close LobStorage and release all resources

Specified by:
  `close` in interface `LobStorageInterface`