Maximum characters in labels (table names, columns etc)
PostgresqlKeywordIdentifierPostgresql Problem Overview
Hope this question wasn't asked before. Does anyone know the character limit for domain names? For example if I write this:
CREATE DOMAIN d_complement_activite_etablissement AS character varying
it will create a domain with the name:
d_complement_activite_etabliss
(Yeah, I know how to count, but I want some more info on the subject).
Is there a command that can change this maximum length? Is this length the same for other names (columns, tables etc)?
Postgresql Solutions
Solution 1 - Postgresql
You ask:
> Is there a command that can change this maximum length? Is this length > the same for other names (columns, tables etc)?
The manual answers here:
> The system uses no more than NAMEDATALEN-1
bytes of an identifier;
> longer names can be written in commands, but they will be truncated.
> By default, NAMEDATALEN
is 64 so the maximum identifier length is 63 bytes. If this limit is problematic, it can be raised by changing the
> NAMEDATALEN
constant in src/include/pg_config_manual.h
.
Bold emphasis mine.
The only way to change it is to hack the source code and recompile PostgreSQL.
Domain names are identifiers like any other. When I execute:
CREATE DOMAIN d_complement_activite_etablissement_or_even_loger_than_that AS text
I get what I ordered (tested on PostgreSQL 8.4 - 11):
d_complement_activite_etablissement_or_even_loger_than_that
There must be some other piece of software between you and your database cropping the name.
Note that characters in UTF encoding occupy 1 to 4 bytes. (But ASCII characters (like used in the example) are encoded with a single byte.)