From d6e8938ca41fafd4a92f48856718b6ef11be3dec Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 7 Nov 2024 17:01:11 +0100 Subject: [PATCH] [jOOQ/jOOQ#17580] AbstractRecord::compareTo doesn't produce correct ordering --- .../main/java/org/jooq/impl/AbstractRecord.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java index 7853608bec..3c441aa2be 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java @@ -1270,17 +1270,16 @@ implements return array1.length - array2.length; } - /** - * Compare two uncomparable objects - */ - final int compare0(Object object1, Object object2) { - return object1 == object2 + final int compare0(Object o1, Object o2) { + return o1 == o2 ? 0 - : object1 == null + : o1 == null ? -1 - : object2 == null + : o2 == null ? 1 - : object1.hashCode() - object2.hashCode(); + : o1 instanceof Comparable && o1.getClass() == o2.getClass() + ? ((Comparable) o1).compareTo(o2) + : o1.hashCode() - o2.hashCode(); } // -------------------------------------------------------------------------