Есть ли в DB2 для zOS CRC32 или другая хэш-функция?

Я ищу функцию DB2 для вычисления хэшей для больших значений CLOB, чтобы быстро отслеживать изменения. Другие движки имеют такие функции, как CHECKSUM, CRC32 или MD5. Функция в LUW — GET_HASH_VALUE, но недоступна в zOS.

Ограничения: нет доступа к пользовательским функциям или хранимым процедурам.

Вот быстрый и грязный фрагмент кода, который вычисляет 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


person Stavr00    schedule 14.06.2016    source источник
comment
Жаль, что на вас наложены эти ограничения. Metal C или UDF на ассемблере творили бы здесь чудеса с низкими накладными расходами. Базовая программа CRC32 доступна на веб-сайте CBT Tape (бесплатное ПО для z/OS), см. файл №493. Цель DB2 z/OS — сделать z/OS и LUW совместимыми, поэтому отправьте запрос на расширение.   -  person zarchasmpgmr    schedule 18.06.2016


Ответы (1)


Ответ зависит от того, какая у вас версия DB2. Если вы используете DB2 9.7 или выше, посмотрите здесь: https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0055167.html

person Valerie R    schedule 24.06.2016