Commit 3a0d95d1 authored by Tom Lane's avatar Tom Lane

Yawn ... still another place not quite ready for zero-column tables.

parent fda15b35
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/optimizer/prep/prepunion.c,v 1.109 2004/04/07 18:17:25 tgl Exp $ * $PostgreSQL: pgsql/src/backend/optimizer/prep/prepunion.c,v 1.110 2004/05/11 22:43:55 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -264,8 +264,11 @@ generate_union_plan(SetOperationStmt *op, Query *parse, ...@@ -264,8 +264,11 @@ generate_union_plan(SetOperationStmt *op, Query *parse,
List *sortList; List *sortList;
sortList = addAllTargetsToSortList(NULL, NIL, tlist, false); sortList = addAllTargetsToSortList(NULL, NIL, tlist, false);
if (sortList)
{
plan = (Plan *) make_sort_from_sortclauses(parse, sortList, plan); plan = (Plan *) make_sort_from_sortclauses(parse, sortList, plan);
plan = (Plan *) make_unique(plan, sortList); plan = (Plan *) make_unique(plan, sortList);
}
*sortClauses = sortList; *sortClauses = sortList;
} }
else else
...@@ -324,6 +327,13 @@ generate_nonunion_plan(SetOperationStmt *op, Query *parse, ...@@ -324,6 +327,13 @@ generate_nonunion_plan(SetOperationStmt *op, Query *parse,
* correct output. * correct output.
*/ */
sortList = addAllTargetsToSortList(NULL, NIL, tlist, false); sortList = addAllTargetsToSortList(NULL, NIL, tlist, false);
if (sortList == NIL) /* nothing to sort on? */
{
*sortClauses = NIL;
return plan;
}
plan = (Plan *) make_sort_from_sortclauses(parse, sortList, plan); plan = (Plan *) make_sort_from_sortclauses(parse, sortList, plan);
switch (op->op) switch (op->op)
{ {
...@@ -519,9 +529,9 @@ generate_append_tlist(List *colTypes, bool flag, ...@@ -519,9 +529,9 @@ generate_append_tlist(List *colTypes, bool flag,
* First extract typmods to use. * First extract typmods to use.
* *
* If the inputs all agree on type and typmod of a particular column, use * If the inputs all agree on type and typmod of a particular column, use
* that typmod; else use -1. * that typmod; else use -1. (+1 here in case of zero columns.)
*/ */
colTypmods = (int32 *) palloc(length(colTypes) * sizeof(int32)); colTypmods = (int32 *) palloc(length(colTypes) * sizeof(int32) + 1);
foreach(planl, input_plans) foreach(planl, input_plans)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment