On 2017/01/14 13:36, Amit Langote wrote:
> On Sat, Jan 14, 2017 at 6:10 AM, Robert Haas <robertmh...@gmail.com> wrote:
>> On Fri, Jan 13, 2017 at 3:09 PM, Alvaro Herrera <alvhe...@2ndquadrant.com>
>>> I'm just saying that the problem at hand is already solved for a related
>>> feature, so ISTM this new code should use the recently added routine
>>> rather than doing the same thing in a different way.
>> Oh, I see. Amit, thoughts?
> Hm, perhaps. The code in map_partition_varattnos() that creates the
> map could be replaced by a call to the new
> convert_tuples_by_name_map(). In fact, it could even have used the
> old version of it (convert_tuples_by_name()). I guess I just aped
> what other callers of map_variable_attnos() were doing, which is to
> generate the map themselves (not that they ought to be changed to use
> I will send a patch at my earliest convenience. Thanks to Alvaro for
> pointing that out.
And here is the patch.
>From e04fde063af93e756f15a374611cdb2fa2708ece Mon Sep 17 00:00:00 2001
From: amit <amitlangot...@gmail.com>
Date: Mon, 16 Jan 2017 14:37:50 +0900
Subject: [PATCH 1/7] Avoid code duplication in map_partition_varattnos()
Content-Type: text/plain; charset=UTF-8
Code to map attribute numbers in map_partition_varattnos() duplicates
what convert_tuples_by_name_map() does. Avoid that.
Amit Langote, pointed out by Ãlvaro Herrera.
src/backend/catalog/partition.c | 21 ++++-----------------
1 file changed, 4 insertions(+), 17 deletions(-)
diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c
index 874e69d8d6..01e0c6c360 100644
@@ -885,32 +885,19 @@ get_qual_from_partbound(Relation rel, Relation parent, Node *bound)
map_partition_varattnos(List *expr, Relation partrel, Relation parent)
- TupleDesc tupdesc = RelationGetDescr(parent);
- AttrNumber attno;
if (expr == 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)
- part_attno = get_attnum(RelationGetRelid(partrel), attname);
- part_attnos[attno - 1] = part_attno;
+ part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel),
+ gettext_noop("could not convert row type"));
expr = (List *) map_variable_attnos((Node *) expr,
/* There can never be a whole-row reference here */
Sent via pgsql-hackers mailing list (email@example.com)
To make changes to your subscription: