From 91ae267ea0825e18e04f22afccf5b966d96eab1d Mon Sep 17 00:00:00 2001 From: Stamatis Zampetakis Date: Fri, 27 Feb 2026 20:51:45 +0200 Subject: [PATCH] Sort constraints for deterministic order and stability --- .../org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java | 3 +++ .../java/org/apache/hadoop/hive/metastore/ObjectStore.java | 1 + 2 files changed, 4 insertions(+) diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java index 49d187505dc3..3aa1edb47ea4 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java @@ -1878,6 +1878,9 @@ public List getForeignKeys(String catName, String parent_db_name, if (queryText.endsWith("AND")) { queryText = queryText.substring(0, queryText.length()-3); } + queryText += """ + ORDER BY %1$s."CONSTRAINT_NAME" ASC, %1$s."POSITION ASC" + """.formatted(KEY_CONSTRAINTS); List pms = new ArrayList(); pms.add(catName); if (foreign_db_name != null) { diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java index 8a2c94a6443d..b1f1eb19d645 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -11618,6 +11618,7 @@ private List getForeignKeysViaJdo(String catName, String parentDb if (foreignDbName != null) { params.add(foreignDbName); } + query.setOrdering("constraintName ascending, position ascending"); constraints = (Collection) query.executeWithArray(params.toArray(new String[0])); pm.retrieveAll(constraints);