aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeMergeAppend.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-03-26 18:28:40 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2011-03-26 18:28:40 -0400
commit7208fae18f1fdb242b4fcced77a3b836e15ac3ec (patch)
treee857033e3c74a3f73de3e29720290ee721199df3 /src/backend/executor/nodeMergeAppend.c
parent0c9d9e8dd655fff7bcfc401e82838b8c20c16939 (diff)
downloadpostgresql-7208fae18f1fdb242b4fcced77a3b836e15ac3ec.tar.gz
postgresql-7208fae18f1fdb242b4fcced77a3b836e15ac3ec.zip
Clean up cruft around collation initialization for tupdescs and scankeys.
I found actual bugs in GiST and plpgsql; the rest of this is cosmetic but meant to decrease the odds of future bugs of omission.
Diffstat (limited to 'src/backend/executor/nodeMergeAppend.c')
-rw-r--r--src/backend/executor/nodeMergeAppend.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/backend/executor/nodeMergeAppend.c b/src/backend/executor/nodeMergeAppend.c
index e46af8cff93..73920f21c8c 100644
--- a/src/backend/executor/nodeMergeAppend.c
+++ b/src/backend/executor/nodeMergeAppend.c
@@ -134,30 +134,32 @@ ExecInitMergeAppend(MergeAppend *node, EState *estate, int eflags)
{
Oid sortFunction;
bool reverse;
+ int flags;
if (!get_compare_function_for_ordering_op(node->sortOperators[i],
&sortFunction, &reverse))
elog(ERROR, "operator %u is not a valid ordering operator",
node->sortOperators[i]);
+ /* We use btree's conventions for encoding directionality */
+ flags = 0;
+ if (reverse)
+ flags |= SK_BT_DESC;
+ if (node->nullsFirst[i])
+ flags |= SK_BT_NULLS_FIRST;
+
/*
* We needn't fill in sk_strategy or sk_subtype since these scankeys
* will never be passed to an index.
*/
- ScanKeyInit(&mergestate->ms_scankeys[i],
- node->sortColIdx[i],
- InvalidStrategy,
- sortFunction,
- (Datum) 0);
-
- ScanKeyEntryInitializeCollation(&mergestate->ms_scankeys[i],
- node->collations[i]);
-
- /* However, we use btree's conventions for encoding directionality */
- if (reverse)
- mergestate->ms_scankeys[i].sk_flags |= SK_BT_DESC;
- if (node->nullsFirst[i])
- mergestate->ms_scankeys[i].sk_flags |= SK_BT_NULLS_FIRST;
+ ScanKeyEntryInitialize(&mergestate->ms_scankeys[i],
+ flags,
+ node->sortColIdx[i],
+ InvalidStrategy,
+ InvalidOid,
+ node->collations[i],
+ sortFunction,
+ (Datum) 0);
}
/*