Class DefaultBlrCalculator

    • Constructor Detail

      • DefaultBlrCalculator

        public DefaultBlrCalculator​(short dialect)
    • Method Detail

      • calculateBlr

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

        public byte[] calculateBlr​(RowDescriptor rowDescriptor,
                                   RowValue rowValue)
                            throws java.sql.SQLException
        Description copied from interface: BlrCalculator
        Calculates the blr for a specific row value.

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

        Specified by:
        calculateBlr in interface BlrCalculator
        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

        public int calculateIoLength​(FieldDescriptor fieldDescriptor)
                              throws java.sql.SQLException
        Description copied from interface: BlrCalculator
        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

        Specified by:
        calculateIoLength in interface BlrCalculator
        Parameters:
        fieldDescriptor - Field descriptor
        Returns:
        The io length
        Throws:
        java.sql.SQLException
      • calculateIoLength

        public int calculateIoLength​(FieldDescriptor fieldDescriptor,
                                     byte[] fieldData)
                              throws java.sql.SQLException
        Description copied from interface: BlrCalculator
        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 BlrCalculator.calculateIoLength(FieldDescriptor).

        Specified by:
        calculateIoLength in interface BlrCalculator
        Parameters:
        fieldDescriptor - Field descriptor
        fieldData - byte array (can be null) with field data.
        Returns:
        The io length
        Throws:
        java.sql.SQLException
      • calculateBatchMessageLength

        public int calculateBatchMessageLength​(RowDescriptor rowDescriptor)
                                        throws java.sql.SQLException
        Description copied from interface: BlrCalculator
        Calculates the batch message length.
        Specified by:
        calculateBatchMessageLength in interface BlrCalculator
        Parameters:
        rowDescriptor - row descriptor
        Returns:
        batch message length
        Throws:
        java.sql.SQLException - when the RowDescriptor contains an unsupported field type.