Use int64 instead of long in incremental sort code
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
This commit is contained in:
parent
cd5e82256d
commit
6ee3b5fb99
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user