aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-05-01 02:47:56 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-05-01 02:47:56 +0200
commit7a44e7f355b68a8c6ff75718b637ee9983b72f74 (patch)
tree599cdf4c7a85cd76993b29a22b67a7cf9afe06df
parentfeat: query parameter binding validation (diff)
downloadrefinery-7a44e7f355b68a8c6ff75718b637ee9983b72f74.tar.gz
refinery-7a44e7f355b68a8c6ff75718b637ee9983b72f74.tar.zst
refinery-7a44e7f355b68a8c6ff75718b637ee9983b72f74.zip
refactor: avoid unnecessary Literal substitutions
-rw-r--r--subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/ClausePostProcessor.java12
1 files changed, 9 insertions, 3 deletions
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/ClausePostProcessor.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/ClausePostProcessor.java
index 7a56145c..72bc06a1 100644
--- a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/ClausePostProcessor.java
+++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/ClausePostProcessor.java
@@ -11,6 +11,7 @@ import tools.refinery.store.query.literal.Literal;
11import tools.refinery.store.query.literal.VariableDirection; 11import tools.refinery.store.query.literal.VariableDirection;
12import tools.refinery.store.query.substitution.MapBasedSubstitution; 12import tools.refinery.store.query.substitution.MapBasedSubstitution;
13import tools.refinery.store.query.substitution.StatelessSubstitution; 13import tools.refinery.store.query.substitution.StatelessSubstitution;
14import tools.refinery.store.query.substitution.Substitution;
14import tools.refinery.store.query.term.NodeVariable; 15import tools.refinery.store.query.term.NodeVariable;
15import tools.refinery.store.query.term.Variable; 16import tools.refinery.store.query.term.Variable;
16 17
@@ -135,15 +136,20 @@ class ClausePostProcessor {
135 } 136 }
136 137
137 private void substituteLiterals() { 138 private void substituteLiterals() {
138 var substitution = new MapBasedSubstitution(Collections.unmodifiableMap(representatives), 139 Substitution substitution;
139 StatelessSubstitution.IDENTITY); 140 if (representatives.isEmpty()) {
141 substitution = null;
142 } else {
143 substitution = new MapBasedSubstitution(Collections.unmodifiableMap(representatives),
144 StatelessSubstitution.IDENTITY);
145 }
140 for (var literal : literals) { 146 for (var literal : literals) {
141 if (isPositiveEquivalence(literal)) { 147 if (isPositiveEquivalence(literal)) {
142 // We already retained all equivalences that cannot be replaced with substitutions in 148 // We already retained all equivalences that cannot be replaced with substitutions in
143 // {@link#keepParameterEquivalences()}. 149 // {@link#keepParameterEquivalences()}.
144 continue; 150 continue;
145 } 151 }
146 var substitutedLiteral = literal.substitute(substitution); 152 var substitutedLiteral = substitution == null ? literal : literal.substitute(substitution);
147 substitutedLiterals.add(substitutedLiteral); 153 substitutedLiterals.add(substitutedLiteral);
148 } 154 }
149 } 155 }