Use TupleDescAttr macro consistently
A few places were directly accessing the attrs[] array. This goes against the standards set by 2cd708452. Fix that. Discussion: https://postgr.es/m/CAApHDvrBztXP3yx=NKNmo3xwFAFhEdyPnvrDg3=M0RhDs+4vYw@mail.gmail.com
This commit is contained in:
parent
0c1aca4614
commit
65b71dec2d
@ -309,7 +309,7 @@ gist_page_items(PG_FUNCTION_ARGS)
|
|||||||
bool typisvarlena;
|
bool typisvarlena;
|
||||||
Oid typoid;
|
Oid typoid;
|
||||||
|
|
||||||
typoid = tupdesc->attrs[i].atttypid;
|
typoid = TupleDescAttr(tupdesc, i)->atttypid;
|
||||||
getTypeOutputInfo(typoid, &foutoid, &typisvarlena);
|
getTypeOutputInfo(typoid, &foutoid, &typisvarlena);
|
||||||
value = OidOutputFunctionCall(foutoid, itup_values[i]);
|
value = OidOutputFunctionCall(foutoid, itup_values[i]);
|
||||||
}
|
}
|
||||||
|
@ -839,18 +839,19 @@ AddNewAttributeTuples(Oid new_rel_oid,
|
|||||||
/* add dependencies on their datatypes and collations */
|
/* add dependencies on their datatypes and collations */
|
||||||
for (int i = 0; i < natts; i++)
|
for (int i = 0; i < natts; i++)
|
||||||
{
|
{
|
||||||
|
Form_pg_attribute attr = TupleDescAttr(tupdesc, i);
|
||||||
|
|
||||||
/* Add dependency info */
|
/* Add dependency info */
|
||||||
ObjectAddressSubSet(myself, RelationRelationId, new_rel_oid, i + 1);
|
ObjectAddressSubSet(myself, RelationRelationId, new_rel_oid, i + 1);
|
||||||
ObjectAddressSet(referenced, TypeRelationId,
|
ObjectAddressSet(referenced, TypeRelationId, attr->atttypid);
|
||||||
tupdesc->attrs[i].atttypid);
|
|
||||||
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
|
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
|
||||||
|
|
||||||
/* The default collation is pinned, so don't bother recording it */
|
/* The default collation is pinned, so don't bother recording it */
|
||||||
if (OidIsValid(tupdesc->attrs[i].attcollation) &&
|
if (OidIsValid(attr->attcollation) &&
|
||||||
tupdesc->attrs[i].attcollation != DEFAULT_COLLATION_OID)
|
attr->attcollation != DEFAULT_COLLATION_OID)
|
||||||
{
|
{
|
||||||
ObjectAddressSet(referenced, CollationRelationId,
|
ObjectAddressSet(referenced, CollationRelationId,
|
||||||
tupdesc->attrs[i].attcollation);
|
attr->attcollation);
|
||||||
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
|
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -717,7 +717,7 @@ pg_prepared_statement(PG_FUNCTION_ARGS)
|
|||||||
|
|
||||||
result_types = palloc_array(Oid, result_desc->natts);
|
result_types = palloc_array(Oid, result_desc->natts);
|
||||||
for (int i = 0; i < result_desc->natts; i++)
|
for (int i = 0; i < result_desc->natts; i++)
|
||||||
result_types[i] = result_desc->attrs[i].atttypid;
|
result_types[i] = TupleDescAttr(result_desc, i)->atttypid;
|
||||||
values[4] = build_regtype_array(result_types, result_desc->natts);
|
values[4] = build_regtype_array(result_types, result_desc->natts);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -658,7 +658,7 @@ ExecInitIndexOnlyScan(IndexOnlyScan *node, EState *estate, int eflags)
|
|||||||
/* First, count the number of such index keys */
|
/* First, count the number of such index keys */
|
||||||
for (int attnum = 0; attnum < indnkeyatts; attnum++)
|
for (int attnum = 0; attnum < indnkeyatts; attnum++)
|
||||||
{
|
{
|
||||||
if (indexRelation->rd_att->attrs[attnum].atttypid == CSTRINGOID &&
|
if (TupleDescAttr(indexRelation->rd_att, attnum)->atttypid == CSTRINGOID &&
|
||||||
indexRelation->rd_opcintype[attnum] == NAMEOID)
|
indexRelation->rd_opcintype[attnum] == NAMEOID)
|
||||||
namecount++;
|
namecount++;
|
||||||
}
|
}
|
||||||
@ -676,7 +676,7 @@ ExecInitIndexOnlyScan(IndexOnlyScan *node, EState *estate, int eflags)
|
|||||||
|
|
||||||
for (int attnum = 0; attnum < indnkeyatts; attnum++)
|
for (int attnum = 0; attnum < indnkeyatts; attnum++)
|
||||||
{
|
{
|
||||||
if (indexRelation->rd_att->attrs[attnum].atttypid == CSTRINGOID &&
|
if (TupleDescAttr(indexRelation->rd_att, attnum)->atttypid == CSTRINGOID &&
|
||||||
indexRelation->rd_opcintype[attnum] == NAMEOID)
|
indexRelation->rd_opcintype[attnum] == NAMEOID)
|
||||||
indexstate->ioss_NameCStringAttNums[idx++] = (AttrNumber) attnum;
|
indexstate->ioss_NameCStringAttNums[idx++] = (AttrNumber) attnum;
|
||||||
}
|
}
|
||||||
|
@ -175,10 +175,10 @@ MemoizeHash_hash(struct memoize_hash *tb, const MemoizeKey *key)
|
|||||||
|
|
||||||
if (!pslot->tts_isnull[i]) /* treat nulls as having hash key 0 */
|
if (!pslot->tts_isnull[i]) /* treat nulls as having hash key 0 */
|
||||||
{
|
{
|
||||||
FormData_pg_attribute *attr;
|
Form_pg_attribute attr;
|
||||||
uint32 hkey;
|
uint32 hkey;
|
||||||
|
|
||||||
attr = &pslot->tts_tupleDescriptor->attrs[i];
|
attr = TupleDescAttr(pslot->tts_tupleDescriptor, i);
|
||||||
|
|
||||||
hkey = datum_image_hash(pslot->tts_values[i], attr->attbyval, attr->attlen);
|
hkey = datum_image_hash(pslot->tts_values[i], attr->attbyval, attr->attlen);
|
||||||
|
|
||||||
@ -242,7 +242,7 @@ MemoizeHash_equal(struct memoize_hash *tb, const MemoizeKey *key1,
|
|||||||
|
|
||||||
for (int i = 0; i < numkeys; i++)
|
for (int i = 0; i < numkeys; i++)
|
||||||
{
|
{
|
||||||
FormData_pg_attribute *attr;
|
Form_pg_attribute attr;
|
||||||
|
|
||||||
if (tslot->tts_isnull[i] != pslot->tts_isnull[i])
|
if (tslot->tts_isnull[i] != pslot->tts_isnull[i])
|
||||||
{
|
{
|
||||||
@ -255,7 +255,7 @@ MemoizeHash_equal(struct memoize_hash *tb, const MemoizeKey *key1,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* perform binary comparison on the two datums */
|
/* perform binary comparison on the two datums */
|
||||||
attr = &tslot->tts_tupleDescriptor->attrs[i];
|
attr = TupleDescAttr(tslot->tts_tupleDescriptor, i);
|
||||||
if (!datum_image_eq(tslot->tts_values[i], pslot->tts_values[i],
|
if (!datum_image_eq(tslot->tts_values[i], pslot->tts_values[i],
|
||||||
attr->attbyval, attr->attlen))
|
attr->attbyval, attr->attlen))
|
||||||
{
|
{
|
||||||
|
@ -174,7 +174,7 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent,
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < relation->rd_att->natts; i++)
|
for (int i = 0; i < relation->rd_att->natts; i++)
|
||||||
{
|
{
|
||||||
FormData_pg_attribute *attr = &relation->rd_att->attrs[i];
|
Form_pg_attribute attr = TupleDescAttr(relation->rd_att, i);
|
||||||
|
|
||||||
if (attr->attnotnull)
|
if (attr->attnotnull)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user