diff options
author | Robert Haas <rhaas@postgresql.org> | 2017-01-19 14:13:15 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2017-01-19 14:13:15 -0500 |
commit | cc144155f7cdd51e19984f82da6625dc75de9fda (patch) | |
tree | 6de0f6e0a574aa3e296bfd9d6dbbb206b01684a8 /src | |
parent | 8a8afe2f54c27dbb47df3853803158c5205d41ce (diff) | |
download | postgresql-cc144155f7cdd51e19984f82da6625dc75de9fda.tar.gz postgresql-cc144155f7cdd51e19984f82da6625dc75de9fda.zip |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/catalog/partition.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index ff55f9c1b84..45f7132f543 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -917,32 +917,19 @@ List * map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent) { - TupleDesc tupdesc = RelationGetDescr(parent); - AttrNumber attno; AttrNumber *part_attnos; bool found_whole_row; if (expr == NIL) return NIL; - part_attnos = (AttrNumber *) palloc0(tupdesc->natts * sizeof(AttrNumber)); - for (attno = 1; attno <= tupdesc->natts; attno++) - { - 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; - } - + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); expr = (List *) map_variable_attnos((Node *) expr, target_varno, 0, part_attnos, - tupdesc->natts, + RelationGetDescr(parent)->natts, &found_whole_row); /* There can never be a whole-row reference here */ if (found_whole_row) |