変更をすばやく追跡するために、大きなCLOB値のハッシュを計算するDB2関数を探しています。他のエンジンは、CHECKSUM
,CRC32
またはMD5
のような機能を有する。 LUWの機能はGET_HASH_VALUE
ですが、zOSでは利用できません。DB2 for zOSにCRC32または他のハッシュ関数がありますか?
制約:UDFまたはストアドプロシージャにアクセスできません。
ここでは、CRC32を計算する素早く汚れたコードの断片があります。これは約100文字までしか動作しません。
WITH crc(t,c,j) AS (
SELECT 'Hello World!',4294967295,0 FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT SUBSTR(t,2),bitxor(c,ASCII(t)),8 FROM crc WHERE t>'' AND j=0
UNION ALL
SELECT t,BITXOR(c/2,BITAND(3988292384,-BITAND(c,1))),j-1 FROM crc WHERE j>0
)
SELECT RIGHT(HEX(BITNOT(c)),8) FROM CRC WHERE t='' AND j=0
http://www.lammertbies.nl/comm/info/crc-calculation.htmlに対してチェック結果:
1
--------
1C291CA3
出典:http://www.hackersdelight.org/hdcodetxt/crc.c.txt
これらの制約が当てはまるのは残念です。 Metal CまたはアセンブラーUDFは、オーバーヘッドが少なく、ここで不思議に思うでしょう。基本的なCRC32プログラムは、CBTテープ(z/OSフリーウェア)のWebサイトで入手できます。ファイル番号493を参照してください。 DB2 z/OSの目標は、z/OSとLUWを互換にすることです。拡張要求を開きます。 – zarchasmpgmr