Community
Participate
Working Groups
Currently, constant literals are mapped to a unary relation which is then joined against a partial match set. Suggested improvements: - Rete implementation: introduce a ValueMultiplexer node that multiplexes input tuples to child nodes based on the tuple value at a given position. A child node can be registered for each concrete constant value of that variable. Both kinds of nodes will be memoryless, and tuple propagation cost will not increase by the number of different constant values used at the given position. - Query planning: make sure that constant filtering takes precedence over non-constant joins (even heath-joins)
Updated target milestone to 1.4
Further improvement: - Query planning: in case of negative calls, apply constant filter to the negatively called pattern before anti-joining it, if the constant variable is not shared with other other constraints (besides the NAC and the constant constraint).
(the previous idea applies for aggregation as well)
Postponing issues to 1.5
New Gerrit change created: https://git.eclipse.org/r/81800
New Gerrit change created: https://git.eclipse.org/r/82293
Gerrit change https://git.eclipse.org/r/81800 was merged to [master]. Commit: http://git.eclipse.org/c/viatra/org.eclipse.viatra.git/commit/?id=388b0d3c0326022ff69bb89cc6dc05e2fa3c0d96
New Gerrit change created: https://git.eclipse.org/r/84079
New Gerrit change created: https://git.eclipse.org/r/84081
Gerrit change https://git.eclipse.org/r/84081 was merged to [master]. Commit: http://git.eclipse.org/c/viatra/org.eclipse.viatra.git/commit/?id=d6f7cdc7b9888d16a5ea5f04c4b7c5d613e55c71
The first two tasks have been addressed and they have been measured to increase performance. Future optimization possibility: "Query planning: in case of negative calls, apply constant filter to the negatively called pattern before anti-joining it, if the constant variable is not shared with other other constraints (besides the NAC and the constant constraint)."