mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
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.
This commit is contained in:
@ -829,10 +829,9 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, Index scanrelid,
|
||||
varattno, /* attribute number to scan */
|
||||
op_strategy, /* op's strategy */
|
||||
op_righttype, /* strategy subtype */
|
||||
((OpExpr *) clause)->inputcollid, /* collation */
|
||||
opfuncid, /* reg proc to use */
|
||||
scanvalue); /* constant */
|
||||
ScanKeyEntryInitializeCollation(this_scan_key,
|
||||
((OpExpr *) clause)->inputcollid);
|
||||
}
|
||||
else if (IsA(clause, RowCompareExpr))
|
||||
{
|
||||
@ -957,10 +956,9 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, Index scanrelid,
|
||||
varattno, /* attribute number */
|
||||
op_strategy, /* op's strategy */
|
||||
op_righttype, /* strategy subtype */
|
||||
inputcollation, /* collation */
|
||||
opfuncid, /* reg proc to use */
|
||||
scanvalue); /* constant */
|
||||
ScanKeyEntryInitializeCollation(this_sub_key,
|
||||
inputcollation);
|
||||
n_sub_key++;
|
||||
}
|
||||
|
||||
@ -1042,10 +1040,9 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, Index scanrelid,
|
||||
varattno, /* attribute number to scan */
|
||||
op_strategy, /* op's strategy */
|
||||
op_righttype, /* strategy subtype */
|
||||
saop->inputcollid, /* collation */
|
||||
opfuncid, /* reg proc to use */
|
||||
(Datum) 0); /* constant */
|
||||
ScanKeyEntryInitializeCollation(this_scan_key,
|
||||
saop->inputcollid);
|
||||
}
|
||||
else if (IsA(clause, NullTest))
|
||||
{
|
||||
@ -1094,6 +1091,7 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, Index scanrelid,
|
||||
varattno, /* attribute number to scan */
|
||||
InvalidStrategy, /* no strategy */
|
||||
InvalidOid, /* no strategy subtype */
|
||||
InvalidOid, /* no collation */
|
||||
InvalidOid, /* no reg proc for this */
|
||||
(Datum) 0); /* constant */
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user