8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/src/backend/optimizer/util/relnode.c,v 1.53 2003/11/29 19:51:51 pgsql Exp $
11
+ * $PostgreSQL: pgsql/src/backend/optimizer/util/relnode.c,v 1.54 2003/12/08 18: 19:58 tgl Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
@@ -161,7 +161,8 @@ make_base_rel(Query *root, int relid)
161
161
case RTE_SUBQUERY:
162
162
case RTE_FUNCTION:
163
163
/* Subquery or function --- need only set up attr range */
164
- rel->min_attr = 1;
164
+ /* Note: 0 is included in range to support whole-row Vars */
165
+ rel->min_attr = 0;
165
166
rel->max_attr = length(rte->eref->colnames);
166
167
break;
167
168
default:
@@ -170,18 +171,11 @@ make_base_rel(Query *root, int relid)
170
171
break;
171
172
}
172
173
173
- if (rel->max_attr >= rel->min_attr)
174
- {
175
- rel->attr_needed = (Relids *)
176
- palloc0((rel->max_attr - rel->min_attr + 1) * sizeof(Relids));
177
- rel->attr_widths = (int32 *)
178
- palloc0((rel->max_attr - rel->min_attr + 1) * sizeof(int32));
179
- }
180
- else
181
- {
182
- rel->attr_needed = NULL;
183
- rel->attr_widths = NULL;
184
- }
174
+ Assert(rel->max_attr >= rel->min_attr);
175
+ rel->attr_needed = (Relids *)
176
+ palloc0((rel->max_attr - rel->min_attr + 1) * sizeof(Relids));
177
+ rel->attr_widths = (int32 *)
178
+ palloc0((rel->max_attr - rel->min_attr + 1) * sizeof(int32));
185
179
186
180
return rel;
187
181
}