#13441 closed (fixed)
maximum name length not specified for PostgreSQL
Reported by: | Andrew Ball | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
Severity: | Keywords: | ||
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Neither the postgresql nor postgresql_psycopg2 database backends implement the DatabaseOperations.max_name_length() method. Issue #13434 contains changeset ([13040]) that implements the corresponding method for the MySQL database backend, thus preventing the BaseDatabaseCreation class's sql_indices_for_field() method from trying to make indices in MySQL with names that are too long. The same fix should work for PostgreSQL, given a suitable max_name_length() implementation.
Generally, the maximum identifier length in PostgreSQL is 63, but it may be changed by recompiling PostgreSQL with the NAMEDATALEN macro in src/include/pg_config_manual.h changed. Note that the maximum identifier length is always one less than the value of that macro.
I've made a patch that just returns 63 in both PostgreSQL backends, with a docstring explaining about the possibility of recompiling PostgreSQL and suggesting that someone who has recompiled PostgreSQL and wants a different maximum name length could make their own database backend by inheriting almost everything from one of the existing backends and overridding the max_name_length() method in the database operations class.
Attachments (1)
Change History (5)
by , 15 years ago
Attachment: | postgresql_max_name_length.diff added |
---|
comment:1 by , 15 years ago
I have run the unit tests with the postgresql_psycopg2 on revision r13042 of the trunk with my patch applied. All tests passed.
comment:2 by , 15 years ago
milestone: | → 1.2 |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:3 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
patch to specify the maximum name length for PostgreSQL