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 Detail

      • calculateBlr

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

        byte[] calculateBlr​(RowDescriptor rowDescriptor,
                            RowValue rowValue)
                     throws java.sql.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:
        java.sql.SQLException - When the RowValue contains an unsupported field type.
      • calculateIoLength

        int calculateIoLength​(FieldDescriptor fieldDescriptor)
                       throws java.sql.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:
        java.sql.SQLException
      • calculateIoLength

        int calculateIoLength​(FieldDescriptor fieldDescriptor,
                              byte[] fieldData)
                       throws java.sql.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:
        java.sql.SQLException
        Since:
        4.0
      • calculateBatchMessageLength

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