Class SQLBlob

    • Constructor Detail

      • SQLBlob

        public SQLBlob()
      • SQLBlob

        public SQLBlob​(byte[] val)
      • SQLBlob

        public SQLBlob​(java.sql.Blob val)
    • Method Detail

      • getTypeName

        public java.lang.String getTypeName()
        Description copied from interface: DataValueDescriptor
        Get the SQL name of the datatype
        Returns:
        The SQL name of the datatype
      • getMaxMemoryUsage

        int getMaxMemoryUsage()
        Return max memory usage for a SQL Blob
        Specified by:
        getMaxMemoryUsage in class SQLBinary
      • cloneValue

        public DataValueDescriptor cloneValue​(boolean forceMaterialization)
        Returns a clone of this BLOB value.

        Unlike the other binary types, BLOBs can be very large. We try to clone the underlying stream when possible to avoid having to materialize the value into memory.

        Specified by:
        cloneValue in interface DataValueDescriptor
        Overrides:
        cloneValue in class SQLBinary
        Parameters:
        forceMaterialization - any streams representing the data value will be materialized if true, the data value will be kept as a stream if possible if false
        Returns:
        A clone of this BLOB value.
        See Also:
        DataValueDescriptor.cloneValue(boolean)
      • normalize

        public void normalize​(DataTypeDescriptor desiredType,
                              DataValueDescriptor source)
                       throws StandardException
        Normalization method - this method may be called when putting a value into a SQLBit, for example, when inserting into a SQLBit column. See NormalizeResultSet in execution.
        Specified by:
        normalize in interface DataValueDescriptor
        Overrides:
        normalize in class DataType
        Parameters:
        desiredType - The type to normalize the source column to
        source - The value to normalize
        Throws:
        StandardException - Thrown for null into non-nullable column, and for truncation error
      • getTypeFormatId

        public int getTypeFormatId()
        Return my format identifier.
        Returns:
        The identifier. (A UUID stuffed in an array of 16 bytes).
        See Also:
        TypedFormat.getTypeFormatId()
      • setValueFromResultSet

        public void setValueFromResultSet​(java.sql.ResultSet resultSet,
                                          int colNumber,
                                          boolean isNullable)
                                   throws java.sql.SQLException,
                                          StandardException
        Description copied from interface: DataValueDescriptor
        Set the value based on the value for the specified DataValueDescriptor from the specified ResultSet.
        Parameters:
        resultSet - The specified ResultSet.
        colNumber - The 1-based column # into the resultSet.
        isNullable - Whether or not the column is nullable (No need to call wasNull() if not)
        Throws:
        java.sql.SQLException - Thrown on error
        StandardException
        See Also:
        DataValueDescriptor.setValueFromResultSet(java.sql.ResultSet, int, boolean)
      • typePrecedence

        public int typePrecedence()
        Description copied from class: DataType
        Each built-in type in JSQL has a precedence. This precedence determines how to do type promotion when using binary operators. For example, float has a higher precedence than int, so when adding an int to a float, the result type is float. The precedence for some types is arbitrary. For example, it doesn't matter what the precedence of the boolean type is, since it can't be mixed with other types. But the precedence for the number types is critical. The SQL standard requires that exact numeric types be promoted to approximate numeric when one operator uses both. Also, the precedence is arranged so that one will not lose precision when promoting a type.
        Specified by:
        typePrecedence in interface DataValueDescriptor
        Overrides:
        typePrecedence in class DataType
        Returns:
        The precedence of this type.
        See Also:
        DataValueDescriptor.typePrecedence()
      • setInto

        public void setInto​(java.sql.PreparedStatement ps,
                            int position)
                     throws java.sql.SQLException,
                            StandardException
        Description copied from class: SQLBinary
        Adding this method to ensure that super class' setInto method doesn't get called that leads to the violation of JDBC spec( untyped nulls ) when batching is turned on.
        Specified by:
        setInto in interface DataValueDescriptor
        Overrides:
        setInto in class SQLBinary
        Throws:
        java.sql.SQLException - thrown by the PreparedStatement object
        StandardException - thrown by me accessing my value.
      • isLengthLess

        private final boolean isLengthLess()
        Tell if this blob is length less.
        Returns:
        true if the length of the blob is not known, false otherwise