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, BIGINT, BINARY, BLOB, BOOLEAN, CHAR, CLOB, 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, 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

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`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(java.lang.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.
`java.io.Reader` `getReader()`
`TypeInfo` `getType()` Returns the data type.
`int` `hashCode()`
`boolean` `isLinkedToTable()` Check if this value is linked to a specific table.
`protected static java.io.InputStream` `rangeInputStream(java.io.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, 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 Detail

#### rangeInputStream

    protected static java.io.InputStream rangeInputStream(java.io.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 java.io.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(java.lang.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)