ri_ExtractValues(Relation rel, HeapTuple tup,
				 const RI_ConstraintInfo *riinfo, bool rel_is_pk,
				 Datum *vals, char *nulls)
{
	TupleDesc	tupdesc = rel->rd_att;
	const int16 *attnums;
	int			i;
	bool		isnull;

	if (rel_is_pk)
		attnums = riinfo->pk_attnums;
	else
		attnums = riinfo->fk_attnums;

	for (i = 0; i < riinfo->nkeys; i++)
	{
		vals[i] = heap_getattr(tup, attnums[i], tupdesc,
							   &isnull);
		nulls[i] = isnull ? 'n' : ' ';
	}
}
ri_ExtractValues(Relation rel, HeapTuple tup,
				 const RI_ConstraintInfo *riinfo, bool rel_is_pk,
				 Datum *vals, char *nulls)
{
	TupleDesc	tupdesc = rel->rd_att;
	const int16 *attnums;
	int			i;
	bool		isnull;

	if (rel_is_pk)
		attnums = riinfo->pk_attnums;
	else
		attnums = riinfo->fk_attnums;

	for (i = 0; i < riinfo->nkeys; i++)
	{
		vals[i] = heap_getattr(tup, attnums[i], tupdesc,
							   &isnull);
		nulls[i] = isnull ? 'n' : ' ';
	}
}