From 47c2595fb86a6339b63b225ee83d9c77faa516e0 Mon Sep 17 00:00:00 2001 From: Willy-J <32266792+Willy-J@users.noreply.github.com> Date: Wed, 9 Jul 2025 17:22:44 +0800 Subject: [PATCH] (fix)(headless) preserve model join order by using LinkedHashSet in probeRelatedModels (#2299) --- .../headless/core/translator/parser/calcite/SqlBuilder.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/SqlBuilder.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/SqlBuilder.java index b9db3dc5d..12c269a36 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/SqlBuilder.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/SqlBuilder.java @@ -88,7 +88,7 @@ public class SqlBuilder { GraphPath selectedGraphPath = null; for (String fromModel : queryModels) { for (String toModel : queryModels) { - if (fromModel != toModel) { + if (!fromModel.equals(toModel)) { GraphPath path = dijkstraAlg.getPath(fromModel, toModel); if (isGraphPathContainsAll(path, queryModels)) { selectedGraphPath = path; @@ -100,13 +100,13 @@ public class SqlBuilder { if (selectedGraphPath == null) { return dataModels; } - Set modelNames = Sets.newHashSet(); + Set modelNames = Sets.newLinkedHashSet(); for (DefaultEdge edge : selectedGraphPath.getEdgeList()) { modelNames.add(selectedGraphPath.getGraph().getEdgeSource(edge)); modelNames.add(selectedGraphPath.getGraph().getEdgeTarget(edge)); } return modelNames.stream().map(m -> ontology.getModelMap().get(m)) - .collect(Collectors.toSet()); + .collect(Collectors.toCollection(LinkedHashSet::new)); } private boolean isGraphPathContainsAll(GraphPath graphPath,