mirror of https://github.com/citusdata/citus.git
Replace heap_getattr with heap_deform_tuple & fix multi_metadata_attributes.sql
parent
5f6913e82e
commit
538f8913f5
|
@ -3971,23 +3971,19 @@ CitusTableTypeIdList(CitusTableType citusTableType)
|
|||
HeapTuple heapTuple = systable_getnext(scanDescriptor);
|
||||
while (HeapTupleIsValid(heapTuple))
|
||||
{
|
||||
bool isNull = false;
|
||||
bool isNullArray[Natts_pg_dist_partition];
|
||||
Datum datumArray[Natts_pg_dist_partition];
|
||||
heap_deform_tuple(heapTuple, tupleDescriptor, datumArray, isNullArray);
|
||||
|
||||
Datum partMethodDatum =
|
||||
heap_getattr(heapTuple, Anum_pg_dist_partition_partmethod,
|
||||
tupleDescriptor, &isNull);
|
||||
Datum replicationModelDatum =
|
||||
heap_getattr(heapTuple, Anum_pg_dist_partition_repmodel,
|
||||
tupleDescriptor, &isNull);
|
||||
Datum partMethodDatum = datumArray[Anum_pg_dist_partition_partmethod - 1];
|
||||
Datum replicationModelDatum = datumArray[Anum_pg_dist_partition_repmodel - 1];
|
||||
|
||||
Oid partitionMethod = DatumGetChar(partMethodDatum);
|
||||
Oid replicationModel = DatumGetChar(replicationModelDatum);
|
||||
|
||||
if (IsCitusTableTypeInternal(partitionMethod, replicationModel, citusTableType))
|
||||
{
|
||||
Datum relationIdDatum = heap_getattr(heapTuple,
|
||||
Anum_pg_dist_partition_logicalrelid,
|
||||
tupleDescriptor, &isNull);
|
||||
Datum relationIdDatum = datumArray[Anum_pg_dist_partition_logicalrelid - 1];
|
||||
|
||||
Oid relationId = DatumGetObjectId(relationIdDatum);
|
||||
|
||||
|
|
|
@ -947,10 +947,11 @@ ColocationGroupTableList(uint32 colocationId, uint32 count)
|
|||
HeapTuple heapTuple = systable_getnext(scanDescriptor);
|
||||
while (HeapTupleIsValid(heapTuple))
|
||||
{
|
||||
bool isNull = false;
|
||||
Oid colocatedTableId = heap_getattr(heapTuple,
|
||||
Anum_pg_dist_partition_logicalrelid,
|
||||
tupleDescriptor, &isNull);
|
||||
bool isNullArray[Natts_pg_dist_partition];
|
||||
Datum datumArray[Natts_pg_dist_partition];
|
||||
heap_deform_tuple(heapTuple, tupleDescriptor, datumArray, isNullArray);
|
||||
Oid colocatedTableId = DatumGetObjectId(
|
||||
datumArray[Anum_pg_dist_partition_logicalrelid - 1]);
|
||||
|
||||
colocatedTableList = lappend_oid(colocatedTableList, colocatedTableId);
|
||||
heapTuple = systable_getnext(scanDescriptor);
|
||||
|
@ -1116,7 +1117,6 @@ ColocatedTableId(Oid colocationId)
|
|||
{
|
||||
Oid colocatedTableId = InvalidOid;
|
||||
bool indexOK = true;
|
||||
bool isNull = false;
|
||||
ScanKeyData scanKey[1];
|
||||
int scanKeyCount = 1;
|
||||
|
||||
|
@ -1141,8 +1141,11 @@ ColocatedTableId(Oid colocationId)
|
|||
HeapTuple heapTuple = systable_getnext(scanDescriptor);
|
||||
while (HeapTupleIsValid(heapTuple))
|
||||
{
|
||||
colocatedTableId = heap_getattr(heapTuple, Anum_pg_dist_partition_logicalrelid,
|
||||
tupleDescriptor, &isNull);
|
||||
bool isNullArray[Natts_pg_dist_partition];
|
||||
Datum datumArray[Natts_pg_dist_partition];
|
||||
heap_deform_tuple(heapTuple, tupleDescriptor, datumArray, isNullArray);
|
||||
colocatedTableId = DatumGetObjectId(
|
||||
datumArray[Anum_pg_dist_partition_logicalrelid - 1]);
|
||||
|
||||
/*
|
||||
* Make sure the relation isn't dropped for the remainder of
|
||||
|
|
|
@ -6,7 +6,9 @@
|
|||
-- part of the query so new changes to it won't affect this test.
|
||||
SELECT attrelid::regclass, attname, atthasmissing, attmissingval
|
||||
FROM pg_attribute
|
||||
WHERE atthasmissing AND attrelid NOT IN ('pg_dist_node'::regclass, 'pg_dist_rebalance_strategy'::regclass)
|
||||
WHERE atthasmissing AND attrelid NOT IN ('pg_dist_node'::regclass,
|
||||
'pg_dist_rebalance_strategy'::regclass,
|
||||
'pg_dist_partition'::regclass)
|
||||
ORDER BY attrelid, attname;
|
||||
attrelid | attname | atthasmissing | attmissingval
|
||||
---------------------------------------------------------------------
|
||||
|
|
|
@ -7,5 +7,7 @@
|
|||
-- part of the query so new changes to it won't affect this test.
|
||||
SELECT attrelid::regclass, attname, atthasmissing, attmissingval
|
||||
FROM pg_attribute
|
||||
WHERE atthasmissing AND attrelid NOT IN ('pg_dist_node'::regclass, 'pg_dist_rebalance_strategy'::regclass)
|
||||
WHERE atthasmissing AND attrelid NOT IN ('pg_dist_node'::regclass,
|
||||
'pg_dist_rebalance_strategy'::regclass,
|
||||
'pg_dist_partition'::regclass)
|
||||
ORDER BY attrelid, attname;
|
||||
|
|
Loading…
Reference in New Issue