#31300 closed New feature (wontfix)
Add function-based virtual fields on PostgreSQL and Oracle.
Reported by: | Dulmandakh | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Petr Přikryl | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
PostgreSQL 12 added support for Generated Columns, see https://www.postgresql.org/docs/12/ddl-generated-columns.html. And I find it very interesting and useful, for example with SearchVectorField.
I imagine it would be called GeneratedField and accept base_field as ArrayField, then expression to generate a value for the field. For example,
class Album(models.Model): ... title = models.CharField(max_length=120) search = GeneratedField( SearchVectorField(), F('title') )
then generate SQL something like below.
CREATE TABLE album ( ... title char(120), search tsvector GENERATED ALWAYS AS title STORED );
I would like to work on this feature, but don't know how to pass expression and generate migration using the expression.
Change History (2)
comment:1 Changed 2 years ago by
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Summary: | Add Generated Columns (PostgreSQL) support → Add function-based virtual fields on PostgreSQL and Oracle. |
comment:2 Changed 14 months ago by
Cc: | Petr Přikryl added |
---|
We have an accepted ticket #30511 about identity columns on PostgreSQL, and I think we should stay with this. Generated/Function-based virtual columns are a huge topic that would require many changes and have many caveats, e.g. functions must be deterministic. They are feasible also on Oracle. This kind of features require few weeks (even months) of works, a precise plan, and should be preceded by a discussion on DevelopersMailingList and even DEP.