Derbyのロック機構(共有ロック)にて、java.sql.Blobやjava.sql.Clobが指し示すデータベース上の情報の更新や削除は防がれています。 しかしながら、Derbyの即時ロックの機構は、java.sql.Blobやjava.sql.Clobに対応する列が守られていない瞬間の存在を許すことがあります。 引き続くgetBlob/getClobおよびjava.sql.Blob/java.sql.Clobの呼び出しは未定義な振る舞いを起こす可能性があります。
さらにjava.sql.Blob/java.sql.Clobを持つトランザクションが、(他のトランザクションに対して)、対応行を更新することを防ぐ機構はありません。(この問題はgetXXXStreamメソッドにも存在しています。) java.sql.Blob/java.sql.Clobが開いていており、アプリケーションプログラムにて対応する情報の更新が妨げられた場合、失敗したことにより予期せぬ振る舞いが起きる可能性があります。
ResultSet rs = s.executeQuery("SELECT text FROM CLOBS WHERE i = 1"); while (rs.next()) { aclob=rs.getClob(1); ip = rs.getAsciiStream(1); }
サイズの大きな列の情報を扱うストリームはスレッドセーフではありません。従って、もしユーザが複数のスレッドを作成して、それらスレッドからストリームにアクセスした場合、未定義の動作を起こします。
Clobにはロケールによる振る舞いの違いがありません。