]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Use int64 instead of long in incremental sort code
authorDavid Rowley <drowley@postgresql.org>
Sun, 2 Aug 2020 02:24:46 +0000 (14:24 +1200)
committerDavid Rowley <drowley@postgresql.org>
Sun, 2 Aug 2020 02:24:46 +0000 (14:24 +1200)
Windows 64bit has 4-byte long values which is not suitable for tracking
disk space usage in the incremental sort code. Let's just make all these
fields int64s.

Author: James Coleman
Discussion: https://postgr.es/m/CAApHDvpky%2BUhof8mryPf5i%3D6e6fib2dxHqBrhp0Qhu0NeBhLJw%40mail.gmail.com
Backpatch-through: 13, where the incremental sort code was added

src/backend/commands/explain.c
src/include/nodes/execnodes.h
src/include/utils/tuplesort.h

index 54e3797a15b6260fcfb776325dfb434566d71476..1e565fd3375523e0680ed55b497d152d5fdfed8f 100644 (file)
@@ -2676,7 +2676,7 @@ show_sort_info(SortState *sortstate, ExplainState *es)
                TuplesortInstrumentation stats;
                const char *sortMethod;
                const char *spaceType;
-               long            spaceUsed;
+               int64           spaceUsed;
 
                tuplesort_get_stats(state, &stats);
                sortMethod = tuplesort_method_name(stats.sortMethod);
@@ -2686,7 +2686,7 @@ show_sort_info(SortState *sortstate, ExplainState *es)
                if (es->format == EXPLAIN_FORMAT_TEXT)
                {
                        ExplainIndentText(es);
-                       appendStringInfo(es->str, "Sort Method: %s  %s: %ldkB\n",
+                       appendStringInfo(es->str, "Sort Method: %s  %s: " INT64_FORMAT "kB\n",
                                                         sortMethod, spaceType, spaceUsed);
                }
                else
@@ -2715,7 +2715,7 @@ show_sort_info(SortState *sortstate, ExplainState *es)
                        TuplesortInstrumentation *sinstrument;
                        const char *sortMethod;
                        const char *spaceType;
-                       long            spaceUsed;
+                       int64           spaceUsed;
 
                        sinstrument = &sortstate->shared_info->sinstrument[n];
                        if (sinstrument->sortMethod == SORT_TYPE_STILL_IN_PROGRESS)
@@ -2731,7 +2731,7 @@ show_sort_info(SortState *sortstate, ExplainState *es)
                        {
                                ExplainIndentText(es);
                                appendStringInfo(es->str,
-                                                                "Sort Method: %s  %s: %ldkB\n",
+                                                                "Sort Method: %s  %s: " INT64_FORMAT "kB\n",
                                                                 sortMethod, spaceType, spaceUsed);
                        }
                        else
@@ -2795,23 +2795,23 @@ show_incremental_sort_group_info(IncrementalSortGroupInfo *groupInfo,
 
                if (groupInfo->maxMemorySpaceUsed > 0)
                {
-                       long            avgSpace = groupInfo->totalMemorySpaceUsed / groupInfo->groupCount;
+                       int64           avgSpace = groupInfo->totalMemorySpaceUsed / groupInfo->groupCount;
                        const char *spaceTypeName;
 
                        spaceTypeName = tuplesort_space_type_name(SORT_SPACE_TYPE_MEMORY);
-                       appendStringInfo(es->str, "  Average %s: %ldkB  Peak %s: %ldkB",
+                       appendStringInfo(es->str, "  Average %s: " INT64_FORMAT "kB  Peak %s: " INT64_FORMAT "kB",
                                                         spaceTypeName, avgSpace,
                                                         spaceTypeName, groupInfo->maxMemorySpaceUsed);
                }
 
                if (groupInfo->maxDiskSpaceUsed > 0)
                {
-                       long            avgSpace = groupInfo->totalDiskSpaceUsed / groupInfo->groupCount;
+                       int64           avgSpace = groupInfo->totalDiskSpaceUsed / groupInfo->groupCount;
 
                        const char *spaceTypeName;
 
                        spaceTypeName = tuplesort_space_type_name(SORT_SPACE_TYPE_DISK);
-                       appendStringInfo(es->str, "  Average %s: %ldkB  Peak %s: %ldkB",
+                       appendStringInfo(es->str, "  Average %s: " INT64_FORMAT "kB  Peak %s: " INT64_FORMAT "kB",
                                                         spaceTypeName, avgSpace,
                                                         spaceTypeName, groupInfo->maxDiskSpaceUsed);
                }
@@ -2829,7 +2829,7 @@ show_incremental_sort_group_info(IncrementalSortGroupInfo *groupInfo,
 
                if (groupInfo->maxMemorySpaceUsed > 0)
                {
-                       long            avgSpace = groupInfo->totalMemorySpaceUsed / groupInfo->groupCount;
+                       int64           avgSpace = groupInfo->totalMemorySpaceUsed / groupInfo->groupCount;
                        const char *spaceTypeName;
                        StringInfoData memoryName;
 
@@ -2846,7 +2846,7 @@ show_incremental_sort_group_info(IncrementalSortGroupInfo *groupInfo,
                }
                if (groupInfo->maxDiskSpaceUsed > 0)
                {
-                       long            avgSpace = groupInfo->totalDiskSpaceUsed / groupInfo->groupCount;
+                       int64           avgSpace = groupInfo->totalDiskSpaceUsed / groupInfo->groupCount;
                        const char *spaceTypeName;
                        StringInfoData diskName;
 
index 6f96b31fb438303f74911706f9a37f9b0196e9c6..cf832d7f909754b3e4a529ba004262dda6140518 100644 (file)
@@ -2032,10 +2032,10 @@ typedef struct SortState
 typedef struct IncrementalSortGroupInfo
 {
        int64           groupCount;
-       long            maxDiskSpaceUsed;
-       long            totalDiskSpaceUsed;
-       long            maxMemorySpaceUsed;
-       long            totalMemorySpaceUsed;
+       int64           maxDiskSpaceUsed;
+       int64           totalDiskSpaceUsed;
+       int64           maxMemorySpaceUsed;
+       int64           totalMemorySpaceUsed;
        bits32          sortMethods;    /* bitmask of TuplesortMethod */
 } IncrementalSortGroupInfo;
 
index d992b4875a5e85095140a1201a612904c199442a..9e76666fe9483701e7cfb0acf0c0fabd06b7f720 100644 (file)
@@ -90,7 +90,7 @@ typedef struct TuplesortInstrumentation
 {
        TuplesortMethod sortMethod; /* sort algorithm used */
        TuplesortSpaceType spaceType;   /* type of space spaceUsed represents */
-       long            spaceUsed;              /* space consumption, in kB */
+       int64           spaceUsed;              /* space consumption, in kB */
 } TuplesortInstrumentation;