aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_clause.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/parser/parse_clause.c')
-rw-r--r--src/backend/parser/parse_clause.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index 8118036495b..4c976909088 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -2933,7 +2933,7 @@ transformWindowDefinitions(ParseState *pstate,
sortcl->sortop);
/* Record properties of sort ordering */
wc->inRangeColl = exprCollation(sortkey);
- wc->inRangeAsc = (rangestrategy == BTLessStrategyNumber);
+ wc->inRangeAsc = !sortcl->reverse_sort;
wc->inRangeNullsFirst = sortcl->nulls_first;
}
@@ -3489,6 +3489,7 @@ addTargetToSortList(ParseState *pstate, TargetEntry *tle,
sortcl->eqop = eqop;
sortcl->sortop = sortop;
sortcl->hashable = hashable;
+ sortcl->reverse_sort = reverse;
switch (sortby->sortby_nulls)
{
@@ -3571,6 +3572,8 @@ addTargetToGroupList(ParseState *pstate, TargetEntry *tle,
grpcl->tleSortGroupRef = assignSortGroupRef(tle, targetlist);
grpcl->eqop = eqop;
grpcl->sortop = sortop;
+ grpcl->reverse_sort = false; /* sortop is "less than", or
+ * InvalidOid */
grpcl->nulls_first = false; /* OK with or without sortop */
grpcl->hashable = hashable;