Matija Lesar <matija.lesar@gmail.com> writes:
> I have uint4 domain created like this:
> CREATE DOMAIN uint4 AS int8
> CHECK(VALUE BETWEEN 0 AND 4294967295);
> If I try to cast negative number to this domain check constraint is not
> validated:
> SELECT -1::uint4, pg_typeof(-1::uint4), 1::uint4, pg_typeof(1::uint4);
:: binds tighter than minus, so you would need to write these like
"(-1)::uint4" to get the behavior you're expecting. See
https://www.postgresql.org/docs/9.5/static/sql-syntax-lexical.html#SQL-PRECEDENCE
regards, tom lane