FAQ | This is a LIVE service | Changelog

Skip to content

Remove obsolete method for handling many-many rows

We used to handle representing many-many relationships in a view by returning multiple rows with the same value in the 'id' column, each row having column named mm_(something) containing one of the foreign key values at the other end of the many-many relationship. The code would look for columns named 'mm_' and group their values for rows with the same 'id'. That scaled very poorly for views with multiple many-many relationships and we long ago moved to a model where the view returns one row for each id and a column named mm_(something) containing an array of foreign for each many-many relationship. Because we to support both for a time the code would check for 'collatable columns' by doing a regexp match on the view definition and for any it found, checked if they were an array or not.

Unfortunately the regexp match sometimes returns the wrong thing, eg when the view definition selects underlying columns named mm_(something) and renames them, which we sometimes want to do. This change removes the old method of handling many-many relationships, thus removing the need for a regexp matching process to detect such columns. This should be fine for Chemistry's database but I don't know about Maths'.

Merge request reports