Use correct datum macros in more tuplesort specialization functions.
authorJohn Naylor <john.naylor@postgresql.org>
Thu, 12 May 2022 02:18:21 +0000 (09:18 +0700)
committerJohn Naylor <john.naylor@postgresql.org>
Thu, 12 May 2022 02:20:32 +0000 (09:20 +0700)
Also clarify that ApplySignedSortComparator() is not built on 32-bit machines.

Folow-up to c90c16591

Reviewed-by: David Rowley
Discussion: https://www.postgresql.org/message-id/CAFBsxsFmt4_JUP8XgSJqwaAS9a9s8K8_PvMu%3Dj%3DDfwU%3D8QjNPw%40mail.gmail.com

src/include/utils/sortsupport.h

index ae8f4852a8bdfb988a4f1ca39e3a2b3243537b7b..140a9f9ffc4062ac3e75850f4f7b68e0706f6221 100644 (file)
@@ -262,6 +262,7 @@ ApplyUnsignedSortComparator(Datum datum1, bool isNull1,
        return compare;
 }
 
+#if SIZEOF_DATUM >= 8
 static inline int
 ApplySignedSortComparator(Datum datum1, bool isNull1,
                                                  Datum datum2, bool isNull2,
@@ -287,19 +288,15 @@ ApplySignedSortComparator(Datum datum1, bool isNull1,
        }
        else
        {
-#if SIZEOF_DATUM == 8
-               compare = (int64) datum1 < (int64) datum2 ? -1 :
-                       (int64) datum1 > (int64) datum2 ? 1 : 0;
-#else
-               compare = (int32) datum1 < (int32) datum2 ? -1 :
-                       (int32) datum1 > (int32) datum2 ? 1 : 0;
-#endif
+               compare = DatumGetInt64(datum1) < DatumGetInt64(datum2) ? -1 :
+                       DatumGetInt64(datum1) > DatumGetInt64(datum2) ? 1 : 0;
                if (ssup->ssup_reverse)
                        INVERT_COMPARE_RESULT(compare);
        }
 
        return compare;
 }
+#endif
 
 static inline int
 ApplyInt32SortComparator(Datum datum1, bool isNull1,
@@ -326,8 +323,8 @@ ApplyInt32SortComparator(Datum datum1, bool isNull1,
        }
        else
        {
-               compare = (int32) datum1 < (int32) datum2 ? -1 :
-                       (int32) datum1 > (int32) datum2 ? 1 : 0;
+               compare = DatumGetInt32(datum1) < DatumGetInt32(datum2) ? -1 :
+                       DatumGetInt32(datum1) > DatumGetInt32(datum2) ? 1 : 0;
                if (ssup->ssup_reverse)
                        INVERT_COMPARE_RESULT(compare);
        }