VARCHAR(n) is a variable-length character string of size up to n
, but Postgres allows the limit to be omitted, so that VARCHAR and TEXT both mean a variable-length character string with no size limit (or, well, presumably some large limit imposed by the implementation).
It has been said that there is no performance difference between the two e.g. in Postgres: Convert varchar to text
Is there are any difference at all? If not, why are they still considered two different types?