1
私はPL/pgSQL関数callbackfunc
を持っています。私がbitwiseの結果でそれを実行し、私のアプリで結果をアンパックすると、私は65/0/65/65
(これは1090535745
です)を得ました。ビット演算(1094795585
)の結果を直接返して展開すると、65/65/65/65
が得られます。どうして?PL/pgSQL関数が不正なビット結果を返す
は、それはオペレータの優先だ
CREATE OR REPLACE FUNCTION callbackfunc(value double precision[][][], pos integer[][], VARIADIC userargs text[])
RETURNS double precision
AS $$
DECLARE
var_result double precision;
BEGIN
var_result := (65 << 24 | 65 << 16 | 65 << 8 | 65 << 0);
--var_result := 1094795585;
RETURN var_result;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;