3

tinyint 拡張機能を使用して Postgres でいくつかのテストを行っていたときに、その範囲に関して驚くべきことに遭遇しました。入力すると、まったく期待していなかっselect -128::tinyintたメッセージが表示されました。ERROR: tinyint out of range

負の数が正の最大値 (1 バイト整数の場合は 127) よりも 1 大きい (または小さい) 必要があると仮定すると、拡張機能のバグだと思いましたが、拡張されていない数値でこれを試してみると、まったく同じことがわかりました。ハプニング。

select -32768::smallint→範囲外

select -2147483648::integer→範囲外

select -9223372036854775808::bigint→範囲外

数値データ型のドキュメント ( https://www.postgresql.org/docs/current/datatype-numeric.html )を参照すると、これらの数値はすべて可能である必要があります-32767。なぜこれが起こっているのか、またはこれは他の人々のコピーでも起こるのでしょうか.-2147483647-9223372036854775807

ubuntu 16.xデスクトップでpostgresql 10とpostgresql 11の両方を使用してみました。

4

1 に答える 1