Skip to content

Commit 8ad0ff5

Browse files
committed
Unified: Fix bad join in derivedStoreReadStep
Before ``` Pipeline standard for StaticNameBinding::derivedStoreReadStep/2#42234dff@fc4c9y3a was evaluated in 14 iterations totaling 10484ms (delta sizes total: 108052). 5330410 ~0% {3} r1 = JOIN `StaticNameBinding::TrackNamespace::track/1#cff0849d#reorder_1_0#prev_delta` WITH `StaticNameBinding::readStep/3#d06f28c6` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2 2567 ~0% {2} | JOIN WITH `StaticNameBinding::NamespaceNode.getMember/1#62056d4e#prev` ON FIRST 2 OUTPUT Lhs.2, Rhs.2 {2} | REWRITE WITH TEST InOut.1 != InOut.0 2567 ~1% {2} | SCAN OUTPUT In.1, In.0 811176 ~0% {3} r2 = SCAN `StaticNameBinding::NamespaceNode.getMember/1#62056d4e#prev_delta` OUTPUT In.1, In.0, In.2 3703647034 ~1% {4} | JOIN WITH `StaticNameBinding::readStep/3#d06f28c6_102#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Rhs.2, Lhs.1, Lhs.2 {4} | REWRITE WITH TEST InOut.3 != InOut.1 3703647034 ~0% {4} | SCAN OUTPUT In.0, In.2, In.1, In.3 105485 ~0% {2} | JOIN WITH `StaticNameBinding::TrackNamespace::track/1#cff0849d#reorder_1_0#prev` ON FIRST 2 OUTPUT Lhs.3, Lhs.2 108052 ~1% {2} r3 = r1 UNION r2 108052 ~1% {2} | AND NOT `StaticNameBinding::derivedStoreReadStep/2#42234dff#prev`(FIRST 2) return r3 ``` After ``` Pipeline standard for StaticNameBinding::derivedStoreReadStep/2#42234dff@7738dy18 was evaluated in 14 iterations totaling 42ms (delta sizes total: 108052). 5330410 ~0% {3} r1 = JOIN `StaticNameBinding::TrackNamespace::track/1#cff0849d#reorder_1_0#prev_delta` WITH `StaticNameBinding::readStep/3#d06f28c6` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2 2567 ~0% {2} | JOIN WITH `StaticNameBinding::NamespaceNode.getMember/1#62056d4e#prev` ON FIRST 2 OUTPUT Lhs.2, Rhs.2 {2} | REWRITE WITH TEST InOut.1 != InOut.0 2567 ~1% {2} | SCAN OUTPUT In.1, In.0 811176 ~4% {3} r2 = SCAN `StaticNameBinding::NamespaceNode.getMember/1#62056d4e#prev_delta` OUTPUT In.0, In.2, In.1 5362528 ~0% {3} | JOIN WITH `StaticNameBinding::TrackNamespace::track/1#cff0849d#prev` ON FIRST 1 OUTPUT Rhs.1, Lhs.2, Lhs.1 105485 ~0% {2} | JOIN WITH `StaticNameBinding::readStep/3#d06f28c6` ON FIRST 2 OUTPUT Lhs.2, Rhs.2 105485 ~0% {2} | REWRITE WITH TEST InOut.0 != InOut.1 108052 ~1% {2} r3 = r1 UNION r2 108052 ~1% {2} | AND NOT `StaticNameBinding::derivedStoreReadStep/2#42234dff#prev`(FIRST 2) return r3 ```
1 parent 8a95291 commit 8ad0ff5

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

‎unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,8 @@ module Track<TrackInputSig Input> {
341341
pragma[nomagic]
342342
private predicate derivedStoreReadStep(NameBindingNode node1, NameBindingNode node2) {
343343
exists(NamespaceNode namespace, string name |
344-
node1 = namespace.getMember(name) and // getMember() combines a store step with subsequent inheritance steps
345-
readStep(namespace.ref(), name, node2) and
344+
node1 = namespace.getMember(pragma[only_bind_into](name)) and // getMember() combines a store step with subsequent inheritance steps
345+
readStep(namespace.ref(), pragma[only_bind_into](name), node2) and
346346
node1 != node2
347347
)
348348
}

0 commit comments

Comments
 (0)