#30511: AutoField with postgres10/11 as generated identity. -------------------------------------+------------------------------------- Reporter: Michael Kany | Owner: nobody Type: New feature | Status: new Component: Database layer | Version: master (models, ORM) | Severity: Normal | Resolution: Keywords: postgres generated | Triage Stage: identity | Unreviewed Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------------+------------------------------------- Changes (by felixxm):
* version: 2.2 => master Old description: > We are currently working on a Django / Postgresql 11 project. We needed > an adjustment for the postgres module because of its compatibility with > .NET Framework and dataset generation. > In postgres 10/11 there is the new feature identity column called > GENERATED AS IDENTITY instead of serial. > column_name type GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY > [(sequence_option)] > We have created a module based on db.backends.postgres that adds 2 new > django model fields. I would like implement the new feature into pyodbc > module or new module for postgres 10/11 useful for later versions of > django. > > Adjustments only in base.py (line 70ff): > data_types = { > 'IdentityAutoField': 'integer', > 'IdentityBigAutoField': 'bigint', > > and schema.py, def column_sql () (line 178ff): > # Primary key / unique outputs > if field.primary_key: > sql + = "PRIMARY KEY" > if field.get_internal_type () in ("IdentityAutoField", > "IdentityBigAutoField"): > sql + = "GENERATED ALWAYS AS IDENTITY" > elif field.unique: > sql + = "UNIQUE" > > I can also send our code > > best regards > Michael Kany New description: We are currently working on a Django / Postgresql 11 project. We needed an adjustment for the postgres module because of its compatibility with .NET Framework and dataset generation. In postgres 10/11 there is the new feature identity column called GENERATED AS IDENTITY instead of serial. column_name type GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY [(sequence_option)] We have created a module based on db.backends.postgres that adds 2 new django model fields. I would like implement the new feature into pyodbc module or new module for postgres 10/11 useful for later versions of django. Adjustments only in base.py (line 70ff): {{{ data_types = { 'IdentityAutoField': 'integer', 'IdentityBigAutoField': 'bigint', }}} and schema.py, def column_sql () (line 178ff): {{{ # Primary key / unique outputs if field.primary_key: sql + = "PRIMARY KEY" if field.get_internal_type () in ("IdentityAutoField", "IdentityBigAutoField"): sql + = "GENERATED ALWAYS AS IDENTITY" elif field.unique: sql + = "UNIQUE" }}} I can also send our code best regards Michael Kany -- Comment: Thanks for the report. Can you provide more details about your use case? Can you also clarify what are you proposing? e.g. - using `GENERATED AS IDENTITY` instead of `serial` on PostgreSQL (I don't see much value in this), - adding extra fields to the PostgreSQL backends. In Oracle we used `GENERATED AS IDENTITY` because there is no other way to create `serial`-like columns on Oracle which is not the case on PostgreSQL. -- Ticket URL: <https://code.djangoproject.com/ticket/30511#comment:2> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/068.ea4f352abbe31e9b260855435c394b77%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.