Thread: Character Data Type 'Name'

Character Data Type 'Name'

From
Andy Anderson
Date:
I'm creating my own table of metadata about other tables in my
database. As such, one column will be the names of those other tables,
and the maximum length of the data in this column would be the allowed
length of an identifier. So one possible data type for this column
would be 'varchar(NAMEDATALEN - 1)'.

However, it would seem to be much simpler to use the special character
type 'name', except that the documentation in section 8.3 warns that
"The 'name' type exists only for storage of identifiers in the
internal system catalogs and is not intended for use by the general
user. "

Is there any real harm in using 'name', though, other than lack of
portability?

-- Andy

Re: Character Data Type 'Name'

From
Tom Lane
Date:
Andy Anderson <aanderson@amherst.edu> writes:
> I'm creating my own table of metadata about other tables in my
> database. As such, one column will be the names of those other tables,
> and the maximum length of the data in this column would be the allowed
> length of an identifier. So one possible data type for this column
> would be 'varchar(NAMEDATALEN - 1)'.

> However, it would seem to be much simpler to use the special character
> type 'name', except that the documentation in section 8.3 warns that
> "The 'name' type exists only for storage of identifiers in the
> internal system catalogs and is not intended for use by the general
> user. "

> Is there any real harm in using 'name', though, other than lack of
> portability?

Well, the warning is just there because we don't want anyone whining
that we broke their app if we decide to whack around the properties
of "name".  If you're intentionally tracking PG-specific behavior,
though, I think using "name" is perfectly sensible.

            regards, tom lane