Andrei wrote:
переходим (там где это возможно) со своих функций на встроенные в
сервер. столкнулись с такой проблемой. Побитовый сдвиг влево единицы
на 31 разряд кидает ошибку на сервере 2.5. Проверить можно такой
процедурой:
recreate procedure test_bin_shl
as
declare variable a integer = 0;
declare variable b integer = 1;
begin
a = bin_shl(b, 31);
a = bin_shl(b, 32);
end
Результатом сдвига является bigint. Единица, сдвинутая влево на 31 бит
все еще является валидным значением bigint, но уже не влазит в
переменную "a" типа int при присваивании.
--
Дмитрий Еманов