Since derby supports Blobs < 2G right now this causes no problems because
1) when pos <=0 it throws an error
2) when pos > MAX_INT it rolls around to a negative value and again throws an exception

since derby supports maximum size of 2G we should throw this exception so I will take your second approach.

Thank you for pointing this out
Narayanan

Andreas Korneliussen wrote On 02/15/06 17:01,:

      if ((int) pos <= 0) {
          throw new SqlException(agent_.logWriter_,
              new MessageId(SQLState.BLOB_BAD_POSITION), new Long(pos));
      }


Is the casting of pos from long to int safe ? Consider the case if pos is > Integer.MAXINT. Is it intentional that pos > Integer.MAXINT gives this exception ?

How about:

 >       if (pos <= 0L) {
 >           throw new SqlException(agent_.logWriter_,
> new MessageId(SQLState.BLOB_BAD_POSITION), new Long(pos));
 >       }

or if it is intentional to give an exception if pos is bigger than Integer.MAXINT, one could write it more explicitly:

 >       if (pos <= 0L || pos >= MAXPOS) {
 >           throw new SqlException(agent_.logWriter_,
> new MessageId(SQLState.BLOB_BAD_POSITION), new Long(pos));
 >       }


Andreas

Reply via email to