From ae53ad69e61e56b0e2615ca1559364b502434b84 Mon Sep 17 00:00:00 2001 From: Amul Sul Date: Wed, 4 Jun 2014 15:43:52 +0530 Subject: [PATCH] examine_attribute function's arguments changed. Pass single attribute rather than whole Relation and attribute index --- src/backend/commands/analyze.c | 21 +++++++++++---------- 1 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index c09ca7e..aa909ee 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -96,7 +96,7 @@ static void compute_index_stats(Relation onerel, double totalrows, AnlIndexData *indexdata, int nindexes, HeapTuple *rows, int numrows, MemoryContext col_context); -static VacAttrStats *examine_attribute(Relation onerel, int attnum, +static VacAttrStats *examine_attribute(Form_pg_attribute attr, Node *index_expr); static int acquire_sample_rows(Relation onerel, int elevel, HeapTuple *rows, int targrows, @@ -386,9 +386,10 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, (errcode(ERRCODE_UNDEFINED_COLUMN), errmsg("column \"%s\" of relation \"%s\" does not exist", col, RelationGetRelationName(onerel)))); - vacattrstats[tcnt] = examine_attribute(onerel, i, NULL); + vacattrstats[tcnt] = examine_attribute(onerel->rd_att->attrs[i - 1], + NULL); if (vacattrstats[tcnt] != NULL) - tcnt++; + vacattrstats[tcnt++]->tupattnum = i; } attr_cnt = tcnt; } @@ -400,9 +401,10 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, tcnt = 0; for (i = 1; i <= attr_cnt; i++) { - vacattrstats[tcnt] = examine_attribute(onerel, i, NULL); + vacattrstats[tcnt] = examine_attribute(onerel->rd_att->attrs[i - 1], + NULL); if (vacattrstats[tcnt] != NULL) - tcnt++; + vacattrstats[tcnt++]->tupattnum = i; } attr_cnt = tcnt; } @@ -454,9 +456,10 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, indexkey = (Node *) lfirst(indexpr_item); indexpr_item = lnext(indexpr_item); thisdata->vacattrstats[tcnt] = - examine_attribute(Irel[ind], i + 1, indexkey); + examine_attribute(Irel[ind]->rd_att->attrs[i], + indexkey); if (thisdata->vacattrstats[tcnt] != NULL) - tcnt++; + thisdata->vacattrstats[tcnt++]->tupattnum = i + 1; } } thisdata->attr_cnt = tcnt; @@ -855,9 +858,8 @@ compute_index_stats(Relation onerel, double totalrows, * and index_expr is the expression tree representing the column's data. */ static VacAttrStats * -examine_attribute(Relation onerel, int attnum, Node *index_expr) +examine_attribute(Form_pg_attribute attr, Node *index_expr) { - Form_pg_attribute attr = onerel->rd_att->attrs[attnum - 1]; HeapTuple typtuple; VacAttrStats *stats; int i; @@ -905,7 +907,6 @@ examine_attribute(Relation onerel, int attnum, Node *index_expr) elog(ERROR, "cache lookup failed for type %u", stats->attrtypid); stats->attrtype = (Form_pg_type) GETSTRUCT(typtuple); stats->anl_context = anl_context; - stats->tupattnum = attnum; /* * The fields describing the stats->stavalues[n] element types default to -- 1.7.1