Refactor sql.query.select and select_fields
|Reported by:||akaariai||Owned by:||nobody|
|Component:||Database layer (models, ORM)||Version:||master|
|Cc:||Triage Stage:||Ready for checkin|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
I introduced some major gis regressions in commit [f64a5ef404cb6fd28e008a01039a3beea2fa8e1b] - a fix for #19102. The reason for the regressions was that Query.select and select_fields must be in sync, but this applies only to gis backend. The commit did:
qs.select = [something]
while it should have done:
qs.select, qs.select_fields = [something], [None]
The qs.select and select_fields must always be edited in sync for gis to work. There are not even comments explaining how select and select_fields work currently.
I have implemented a refactor for this which removes select_fields and collapses it into qs.select. This way it will be impossible to do the same mistake I did in future.
It seems similar refactoring should be done for related_select_cols/related_select_fields.