Interface BlrCalculator

All Known Implementing Classes:
DefaultBlrCalculator

public interface BlrCalculator
Interface for calculating the blr (binary language representation) of a row.
Since:
3.0
Author:
Mark Rotteveel
  • Method Details

    • calculateBlr

      byte[] calculateBlr(RowDescriptor rowDescriptor) throws SQLException
      Calculates the blr for the row descriptor.
      Parameters:
      rowDescriptor - Row descriptor
      Returns:
      Byte array with the blr
      Throws:
      SQLException - When the RowDescriptor contains an unsupported field type.
    • calculateBlr

      byte[] calculateBlr(RowDescriptor rowDescriptor, RowValue rowValue) throws SQLException
      Calculates the blr for a specific row value.

      This allows to optimize for the actual length of the field.

      Parameters:
      rowDescriptor - Row descriptor
      rowValue - Row value
      Returns:
      Byte array with the blr
      Throws:
      SQLException - When the RowValue contains an unsupported field type.
    • calculateIoLength

      int calculateIoLength(FieldDescriptor fieldDescriptor) throws SQLException
      Calculates the io length for the field descriptor.

      The return value indicates the length and padding of the type in the buffer

      • < 0 : Type is of specified length * -1 and not padded
      • == 0 : Type is of dynamic length (which is specified in the buffer as an integer) and padded
      • > 0 : Type is of specified length minus 1 (subtracting 1 is required to avoid 0 for types of zero length) and padded

      Parameters:
      fieldDescriptor - Field descriptor
      Returns:
      The io length
      Throws:
      SQLException
    • calculateIoLength

      int calculateIoLength(FieldDescriptor fieldDescriptor, byte[] fieldData) throws SQLException
      Calculates the io length for the field descriptor and actual data.

      The return value indicates the length and padding of the type in the buffer

      • < 0 : Type is of specified length * -1 and not padded
      • == 0 : Type is of dynamic length (which is specified in the buffer as an integer) and padded
      • > 0 : Type is of specified length minus 1 (subtracting 1 is required to avoid 0 for types of zero length) and padded

      This allows to optimize for the actual length of the field.

      For CHAR (ISCConstants.SQL_TEXT the implementation should be consistent with the lengths as given by calculateIoLength(FieldDescriptor).

      Parameters:
      fieldDescriptor - Field descriptor
      fieldData - byte array (can be null) with field data.
      Returns:
      The io length
      Throws:
      SQLException
      Since:
      4.0
    • calculateBatchMessageLength

      int calculateBatchMessageLength(RowDescriptor rowDescriptor) throws SQLException
      Calculates the batch message length.
      Parameters:
      rowDescriptor - row descriptor
      Returns:
      batch message length
      Throws:
      SQLException - when the RowDescriptor contains an unsupported field type.
      Since:
      5