Opened 2 years ago

Last modified 2 years ago

#26399 new Cleanup/optimization

Refactor SchemaEditor to facilitate Firebird handlings of column defaults

Reported by: Maximiliano Robaina Owned by: nobody
Component: Migrations Version: master
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Tim Graham)

I humbly think that django migration api need a some refactoring to facilitate third-party backend integration.

For instance, the SchemaEditor.add_field() method, if I try to delete a default value on a column that does not have a previous default value definition I get an error on firebird, for which reason, I need to check if that field has got defined a default value before. Then I need to rewrite the whole add_field method too.

Maybe a possible approach would be to have sql templates (sql_alter_column_default, sql_alter_column_no_default, etc.) as methods, instead of class attributes.

A discussion about this on django-developers.

Change History (3)

comment:1 Changed 2 years ago by Tim Graham

Description: modified (diff)
Summary: Migration refactoring - to facilitate third-party backend integrationRefactor SchemaEditor to facilitate Firebird handlings of column defaults
Triage Stage: UnreviewedAccepted
Type: UncategorizedCleanup/optimization

It will be easiest to move forward with this if you can submit a pull request with a proposal.

comment:2 Changed 2 years ago by Maximiliano Robaina

Hi timgraham,
Thanks for response, but is firebird the only one third-party backend with this problem?
I don't think so, you can check in [1] the need to override some privante methods.
I named alter_column_default as an example but change nullability into _alter_field method is a use case too.

[1] https://bitbucket.org/Manfre/django-mssql/src/24ef16a3c7d0e157ebd26f96b561e812c5ebc07b/sqlserver_ado/schema.py?at=master&fileviewer=file-view-default#schema.py-153

comment:3 Changed 2 years ago by Tim Graham

I don't know but the ticket description is too vague about what exactly should be done. I don't think anyone except a maintainer of or contributor to a third-party backend is in a good position to complete this task.

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