mirror of
https://github.com/postgres/postgres.git
synced 2025-05-15 19:15:29 +03:00
Avoid some code duplication in map_partition_varattnos().
Code to map attribute numbers in map_partition_varattnos() duplicates what convert_tuples_by_name_map() does. Avoid that. Amit Langote, per a report from Álvaro Herrera. Discussion: http://postgr.es/m/9ce97382-54c8-deb3-9ee9-a2ec271d866b%40lab.ntt.co.jp
This commit is contained in:
parent
8a8afe2f54
commit
cc144155f7
@ -917,32 +917,19 @@ List *
|
|||||||
map_partition_varattnos(List *expr, int target_varno,
|
map_partition_varattnos(List *expr, int target_varno,
|
||||||
Relation partrel, Relation parent)
|
Relation partrel, Relation parent)
|
||||||
{
|
{
|
||||||
TupleDesc tupdesc = RelationGetDescr(parent);
|
|
||||||
AttrNumber attno;
|
|
||||||
AttrNumber *part_attnos;
|
AttrNumber *part_attnos;
|
||||||
bool found_whole_row;
|
bool found_whole_row;
|
||||||
|
|
||||||
if (expr == NIL)
|
if (expr == NIL)
|
||||||
return NIL;
|
return NIL;
|
||||||
|
|
||||||
part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber));
|
part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel),
|
||||||
for (attno = 1; attno <= tupdesc->natts; attno++)
|
RelationGetDescr(parent),
|
||||||
{
|
gettext_noop("could not convert row type"));
|
||||||
Form_pg_attribute attribute = tupdesc->attrs[attno - 1];
|
|
||||||
char *attname = NameStr(attribute->attname);
|
|
||||||
AttrNumber part_attno;
|
|
||||||
|
|
||||||
if (attribute->attisdropped)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
part_attno = get_attnum(RelationGetRelid(partrel), attname);
|
|
||||||
part_attnos[attno - 1] = part_attno;
|
|
||||||
}
|
|
||||||
|
|
||||||
expr = (List *) map_variable_attnos((Node *) expr,
|
expr = (List *) map_variable_attnos((Node *) expr,
|
||||||
target_varno, 0,
|
target_varno, 0,
|
||||||
part_attnos,
|
part_attnos,
|
||||||
tupdesc->natts,
|
RelationGetDescr(parent)->natts,
|
||||||
&found_whole_row);
|
&found_whole_row);
|
||||||
/* There can never be a whole-row reference here */
|
/* There can never be a whole-row reference here */
|
||||||
if (found_whole_row)
|
if (found_whole_row)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user