mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Fix crash in assign_collations_walker for EXISTS with empty SELECT list.
We (I think I, actually) forgot about this corner case while coding collation resolution. Per bug #8648 from Arjen Nienhuis.
This commit is contained in:
@ -484,16 +484,22 @@ assign_collations_walker(Node *node, assign_collations_context *context)
|
||||
* SubLink. Act as though the Query returns its first output
|
||||
* column, which indeed is what it does for EXPR_SUBLINK and
|
||||
* ARRAY_SUBLINK cases. In the cases where the SubLink
|
||||
* returns boolean, this info will be ignored.
|
||||
* returns boolean, this info will be ignored. Special case:
|
||||
* in EXISTS, the Query might return no columns, in which case
|
||||
* we need do nothing.
|
||||
*
|
||||
* We needn't recurse, since the Query is already processed.
|
||||
*/
|
||||
Query *qtree = (Query *) node;
|
||||
TargetEntry *tent;
|
||||
|
||||
if (qtree->targetList == NIL)
|
||||
return false;
|
||||
tent = (TargetEntry *) linitial(qtree->targetList);
|
||||
Assert(IsA(tent, TargetEntry));
|
||||
Assert(!tent->resjunk);
|
||||
if (tent->resjunk)
|
||||
return false;
|
||||
|
||||
collation = exprCollation((Node *) tent->expr);
|
||||
/* collation doesn't change if it's converted to array */
|
||||
strength = COLLATE_IMPLICIT;
|
||||
|
Reference in New Issue
Block a user