Hi, I have a table with an integer column 'userid'. But I am not seeing an out of range error when trying to get an id larger than possible in integer:
db=# explain select * from users where userid = 21474836472871287898765456789::numeric; QUERY PLAN -------------------------------------------------------------------------- Seq Scan on users (cost=0.00..4047620.36 rows=431750 width=301) Filter: ((userid)::numeric = '21474836472871287898765456789'::numeric) (2 rows) I do see an error when using a bind variable though, just not in psql. Also, when putting it in quotes or explicitly casting it to integer, I do get the our of range message: db=# select * from users where userid = 21474836472344567898765456789::integer; ERROR: integer out of range db=# explain select * from users where userid = '21474737377373737373'; ERROR: value "21474737377373737373" is out of range for type integer LINE 1: ...lain select * from users where userid = '214747373... ^ db=# explain select * from users where userid = '2147'; QUERY PLAN --------------------------------------------------------------------------- Index Scan using userid_pkey on users (cost=0.57..8.59 rows=1 width=301) Index Cond: (userid = 2147) It seems when on psql and querying for a numeric type, postgres is not checking the type of the column, but instead converting into the numeric type that best matches the length: db=# explain select * from users where userid = 2147473737737373; QUERY PLAN --------------------------------------------------------------------------- Index Scan using userid_pkey on users (cost=0.57..8.59 rows=1 width=301) Index Cond: (userid = '2147473737737373'::bigint) (2 rows) db=# explain select * from users where userid = 21474737377373737373; QUERY PLAN ------------------------------------------------------------------ Seq Scan on users (cost=0.00..4047620.36 rows=431750 width=301) Filter: ((userid)::numeric = '21474737377373737373'::numeric) (2 rows) Why is it that postgres checks the data type of the column when value is in quotes vs not checking when no quotes are used? Thanks, -- Payal Singh