すべてのデータベースおよびユーザーのどの列でも、データを圧縮および圧縮解除するためにその圧縮関連の関数を使用していない場合のみ、REPLACE FUNCTIONリクエストを実行することができます。列のデータが決まったアルゴリズムを使用してすでに圧縮されていると、そのアルゴリズムが変更された場合は圧縮解除できないため、このような制限が必要になります。
ただし、このルールには唯一の例外があり、データ ディクショナリで既存の関数の仕様を変更することがなく、その実行モードがPROTECTEDである場合には、アルゴリズム圧縮に対するREPLACE FUNCTIONリクエストが有効です。
たとえば、オブジェクトが次のような順序で作成されているDDLリクエストについて考えてみましょう。
CREATE FUNCTION scsu_comp …; CREATE FUNCTION scsu_decomp …; CREATE TABLE t1 ( col_1 INTEGER, col_2 CHARACTER(10) COMPRESS ('abc', 'efg') COMPRESS USING scsu_comp DECOMPRESS USING scsu_decomp);
テーブルt1の列col_2は、それぞれアルゴリズム圧縮および圧縮解除のUDFscsu_compおよびscsu_decompを参照します。
テーブルt1が作成されると、scsu_compまたはscsu_decompの任意のに対するREPLACE FUNCTIONリクエストは、リクエスト側にエラーを返します。例外条件に早期に気付いている、という前提は、十分なものではありません。