Package org.h2.value

# Class ValueLob

java.lang.Object
org.h2.value.VersionedValue<Value>
org.h2.value.Value
org.h2.value.ValueLob

All Implemented Interfaces:
  `HasSQL`, `Typed`

Direct Known Subclasses:
  `ValueBlob`, `ValueClob`

public abstract class ValueLob extends Value
A implementation of the BINARY LARGE OBJECT and CHARACTER LARGE OBJECT data types. Small objects are kept in memory and stored in the record. Large objects are either stored in the database, or in temporary files.

## Field Summary

### Fields inherited from class org.h2.value.Value

`ARRAY, ASSIGN_TO, BIGINT, BINARY, BLOB, BOOLEAN, CAST_TO, CHAR, CLOB, CONVERT_TO, DATE, DECFLOAT, DOUBLE, EMPTY_VALUES, ENUM, GEOMETRY, INTEGER, INTERVAL_DAY, INTERVAL_DAY_TO_HOUR, INTERVAL_DAY_TO_MINUTE, INTERVAL_DAY_TO_SECOND, INTERVAL_HOUR, INTERVAL_HOUR_TO_MINUTE, INTERVAL_HOUR_TO_SECOND, INTERVAL_MINUTE, INTERVAL_MINUTE_TO_SECOND, INTERVAL_MONTH, INTERVAL_SECOND, INTERVAL_YEAR, INTERVAL_YEAR_TO_MONTH, JAVA_OBJECT, JSON, MAX_LONG_DECIMAL, MIN_LONG_DECIMAL, NULL, NUMERIC, REAL, ROW, SMALLINT, TIME, TIME_TZ, TIMESTAMP, TIMESTAMP_TZ, TINYINT, TYPE_COUNT, UNKNOWN, UUID, VARBINARY, VARCHAR, VARCHAR_IGNORECASE`

### Fields inherited from interface org.h2.util.HasSQL

`ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS`

## Method Summary

Modifier and Type
Method
Description
`abstract ValueLob`
`copy(DataHandler database, int tableId)`
Copy a large value, to be used in the given table.
`ValueLob`
`copyToResult()`
Create an independent copy of this value, that will be bound to a result.
`boolean`
`equals(Object other)`
Check if the two values have the same hash code.
`byte[]`
`getBytes()`
`byte[]`
`getBytesNoCopy()`
`LobData`
`getLobData()`
`int`
`getMemory()`
Get the memory used by this object.
`Reader`
`getReader()`
`TypeInfo`
`getType()`
Returns the data type.
`int`
`hashCode()`
`boolean`
`isLinkedToTable()`
Check if this value is linked to a specific table.
`protected static InputStream`
`rangeInputStream(InputStream inputStream, long oneBasedOffset, long length, long dataSize)`
Create an input stream that is s subset of the given stream.
`void`
`remove()`
Remove the underlying resource, if any.

### Methods inherited from class org.h2.value.Value

`add, castTo, charLength, clearCache, compareTo, compareTypeSafe, compareWithNull, containsNull, convertForAssignTo, convertTo, convertTo, convertTo, convertTo, convertTo, convertToAnyArray, convertToAnyJson, convertToAnyRow, convertToBigint, convertToBoolean, convertToChar, convertToDate, convertToDouble, convertToEnum, convertToGeometry, convertToInt, convertToInt, convertToJavaObject, convertToJson, convertToLong, convertToReal, convertToSmallint, convertToTinyint, convertToUuid, divide, getBigDecimal, getBoolean, getByte, getDouble, getFloat, getHigherOrder, getInputStream, getInputStream, getInt, getLong, getReader, getShort, getSignum, getString, getTypeName, getUnsupportedExceptionForOperation, getValueType, getValueWithFirstNull, isFalse, isTrue, modulus, multiply, negate, octetLength, subtract, toString`

### Methods inherited from class org.h2.value.VersionedValue

`getCommittedValue, getCurrentValue, getOperationId, isCommitted`

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

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.h2.util.HasSQL

`getSQL, getSQL, getTraceSQL`

## Method Details

### rangeInputStream

protected static InputStream rangeInputStream(InputStream inputStream, long oneBasedOffset, long length, long dataSize)
Create an input stream that is s subset of the given stream.

Parameters:
  `inputStream` - the source input stream
  `oneBasedOffset` - the offset (1 means no offset)
  `length` - the length of the result, in bytes
  `dataSize` - the length of the input, in bytes
Returns:
  the smaller input stream

### isLinkedToTable

public boolean isLinkedToTable()
Check if this value is linked to a specific table. For values that are kept fully in memory, this method returns false.

Returns:
  true if it is

### remove

public void remove()
Remove the underlying resource, if any. For values that are kept fully in memory this method has no effect.

### copy

public abstract ValueLob copy(DataHandler database, int tableId)
Copy a large value, to be used in the given table. For values that are kept fully in memory this method has no effect.

Parameters:
  `database` - the data handler
  `tableId` - the table where this object is used
Returns:
  the new value or itself

### getType

public TypeInfo getType()
Description copied from interface: `Typed`
Returns the data type.

Specified by:
  `getType` in interface `Typed`
Specified by:
  `getType` in class `Value`
Returns:
  the data type

### getReader

public Reader getReader()

Overrides:
  `getReader` in class `Value`

### getBytes

public byte[] getBytes()

Overrides:
  `getBytes` in class `Value`

### getBytesNoCopy

public byte[] getBytesNoCopy()

Overrides:
  `getBytesNoCopy` in class `Value`

### hashCode

public int hashCode()

Specified by:
  `hashCode` in class `Value`

### equals

public boolean equals(Object other)
Description copied from class: `Value`
Check if the two values have the same hash code. No data conversion is made; this method returns false if the other object is not of the same class. For some values, compareTo may return 0 even if equals return false. Example: ValueDecimal 0.0 and 0.00.

Specified by:
  `equals` in class `Value`
Parameters:
  `other` - the other value
Returns:
  true if they are equal

### getMemory

public int getMemory()
Description copied from class: `Value`
Get the memory used by this object.

Overrides:
  `getMemory` in class `Value`
Returns:
  the memory used in bytes

### getLobData

public LobData getLobData()

### copyToResult

public ValueLob copyToResult()
Create an independent copy of this value, that will be bound to a result.

Returns:
  the value (this for small objects)