Opened 7 years ago

Last modified 13 months ago

#27452 assigned New feature

Add Postgres serial field to contrib.postgres

Reported by: Johannes Maron Owned by: InvalidInterrupt
Component: contrib.postgres Version: dev
Severity: Normal Keywords:
Cc: info@…, InvalidInterrupt Triage Stage: Accepted
Has patch: yes Needs documentation: yes
Needs tests: yes Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Burhan Khalid)

Since we have the beautiful contrib.postgres package now, we can add a couple more Postgres specific fields, that are not supported by MySQL but handy to all the Postgres fan boys.

That being said, I guess it's a good idea to start with Serial.

The PostgreSQL documentation: https://www.postgresql.org/docs/9.1/static/datatype-numeric.html describes the field as follows:

The data types serial and bigserial are not true types, but merely a notational convenience for creating unique identifier columns (similar to the AUTO_INCREMENT property supported by some other databases).

Use Cases:

  1. Anywhere an automatic incrementing value is required, but a primary key is often (mis)used.
  2. Providing additional (user controlled) auto-incrementing values.

The primary benefit is that is isolates the primary key for the sole use of maintaining referential integrity.

Change History (23)

comment:1 Changed 7 years ago by Burhan Khalid

Description: modified (diff)

comment:2 Changed 7 years ago by Johannes Maron

I opened a PR with an implementation that I am already using somewhere. It added a couple of tests and documentation too.
I guess this is a good starting point for a discussion.

Last edited 7 years ago by Tim Graham (previous) (diff)

comment:3 Changed 7 years ago by Johannes Maron

Owner: set to Johannes Maron
Status: newassigned

comment:4 Changed 7 years ago by Tim Graham

Has patch: set
Patch needs improvement: set
Triage Stage: UnreviewedAccepted

comment:5 Changed 5 years ago by Johannes Maron

Patch needs improvement: unset

comment:6 Changed 5 years ago by Simon Charette

Patch needs improvement: set

comment:7 Changed 4 years ago by Johannes Maron

Patch needs improvement: unset

comment:8 Changed 4 years ago by Nick Pope

Patch needs improvement: set

comment:9 Changed 4 years ago by Nick Pope

Version: 1.10master

comment:10 Changed 4 years ago by Johannes Maron

Patch needs improvement: unset

comment:11 Changed 4 years ago by Mariusz Felisiak

Needs tests: set
Patch needs improvement: set

comment:12 Changed 4 years ago by InvalidInterrupt

Cc: InvalidInterrupt added

comment:13 Changed 4 years ago by Johannes Maron

I closed my PR for now, due to a lack of interest. Since Django does support returning values since v3.0 everyone who needs such a field can build it. Yet, I don't have the time get the feature into Django for now.

comment:14 in reply to:  13 Changed 4 years ago by InvalidInterrupt

Replying to Johannes Hoppe:

I closed my PR for now, due to a lack of interest. Since Django does support returning values since v3.0 everyone who needs such a field can build it. Yet, I don't have the time get the feature into Django for now.

Do you mind if I continue working on this using your branch? Handling sequence resets after loading fixtures will require changes to the DB backend.

comment:15 Changed 4 years ago by Claude Paroz

Owner: Johannes Maron deleted
Status: assignednew

Latest comment from Johannes is clearly an invitation to help :-)

comment:16 Changed 4 years ago by InvalidInterrupt

Owner: set to InvalidInterrupt
Status: newassigned

comment:17 Changed 4 years ago by InvalidInterrupt

Needs tests: unset
Patch needs improvement: unset

comment:18 Changed 3 years ago by Mariusz Felisiak

Needs tests: set
Patch needs improvement: set

comment:19 Changed 3 years ago by InvalidInterrupt

Needs tests: unset
Patch needs improvement: unset

comment:20 Changed 3 years ago by Johannes Maron

Hi, the new default patch depends on https://github.com/django/django/pull/11783. Maybe you would care to review this one, to get things moving along faster? Best Joe

comment:21 Changed 3 years ago by Johannes Maron

Needs documentation: set
Needs tests: set

comment:22 Changed 17 months ago by Claude Paroz

Does this still make sense now that Django is using identity columns for *AutoFields?

comment:23 Changed 13 months ago by Simon Charette

Claude, yes I think that the move to identity columns on Postgres made this feature even more desirable (e.g. #34131).

Note: See TracTickets for help on using tickets.
Back to Top