Daniele Varrazzo <daniele.varrazzo@xxxxxxxxx> writes: > I'm trying to use a domain to define a data type constraint, let's say > an hypothetical uk_post_code with pattern LNNLL. I'd enforce no > whitespaces, all uppercase. > I would also need a way to normalize before validate: given an input > such as "w3 6bq", normalize it to W36BQ before trying to apply the > check. It would be great if I could give this function the same name > of the domain, so that uk_post_code('w3 6bq') would return W36BQ cast > to the domain. That particular case isn't going to work unless you choose a different function name --- as you've found out, the parser prefers the interpretation that this means the same as 'w3 6bq'::uk_post_code, which is not a cast but just a literal of the named type. If you were willing to write something like uk_post_code('w3 6bq'::text) and define your function as taking text (or varchar if that turns you on), it should work. Likewise anytime the argument is a variable/expression of known type text. But with a bare untyped literal, no. regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general