You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This rule was highlighted as performing poorly as it created an
effective cross product on declarations with the same name, which is
expensive on some databases.
The performance fix is to:
(a) Create a predicate which represents all the conflicting identifiers
by simply counting the number of declarations and confirming at
least on such declaration is external.
(b) Use this to create a result table of Declarations that conflict
with those identifiers.
(c) Implement a "non unique" external identifier class that provides a
member predicate to get all the conflicting declarations.
The key point here is to prevent the optimiser from doing a join between
Declaration.getName() and Declaration.getName(). Instead, the join is
between the names of the non-unique external identifiers and the much
smaller table of declarations that conflict with at least one such
entry.
0 commit comments