postgres.git / summary / log / commit / refs

commit    6827de95ee094f8a2cb892a40e6f154491e78496
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Thu May 07 01:18:49 2026 +0000

    Simplify code in objectaddress.c for some property graph objects
    
    Property graph element labels and label properties relied on a direct
    systable scan when retrieving their object descriptions.  These can be
    simplified with get_catalog_object_by_oid().  This offers the benefit to
    do a direct syscache lookup, if available.
    
    The same logic will be used in a follow-up patch when retrieving the
    object identity parts, applying the same rule across the board for these
    object types.
    
    Extracted from a larger patch by the author.
    
    Author: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
    Reviewed-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
    Reviewed-by: Alex Guo <guo.alex.hengchen@gmail.com>
    Discussion: https://postgr.es/m/aej1DkLwhyZWmtxJ@bdtpg


src/backend/catalog/objectaddress.c | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index c1862809577..050b7829eb0 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -4106,26 +4106,19 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok) case PropgraphElementLabelRelationId: { Relation rel; - SysScanDesc scan; - ScanKeyData key[1]; HeapTuple tuple; Form_pg_propgraph_element_label pgelform; ObjectAddress oa; rel = table_open(PropgraphElementLabelRelationId, AccessShareLock); - ScanKeyInit(&key[0], - Anum_pg_propgraph_element_label_oid, - BTEqualStrategyNumber, F_OIDEQ, - ObjectIdGetDatum(object->objectId)); - - scan = systable_beginscan(rel, PropgraphElementLabelObjectIndexId, true, NULL, 1, key); - tuple = systable_getnext(scan); + tuple = get_catalog_object_by_oid(rel, + Anum_pg_propgraph_element_label_oid, + object->objectId); if (!HeapTupleIsValid(tuple)) { if (!missing_ok) elog(ERROR, "could not find tuple for element label %u", object->objectId); - systable_endscan(scan); table_close(rel, AccessShareLock); break; } @@ -4136,7 +4129,6 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok) ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid); appendStringInfoString(&buffer, getObjectDescription(&oa, false)); - systable_endscan(scan); table_close(rel, AccessShareLock); break; } @@ -4166,26 +4158,19 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok) case PropgraphLabelPropertyRelationId: { Relation rel; - SysScanDesc scan; - ScanKeyData key[1]; HeapTuple tuple; Form_pg_propgraph_label_property plpform; ObjectAddress oa; rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock); - ScanKeyInit(&key[0], - Anum_pg_propgraph_label_property_oid, - BTEqualStrategyNumber, F_OIDEQ, - ObjectIdGetDatum(object->objectId)); - - scan = systable_beginscan(rel, PropgraphLabelPropertyObjectIndexId, true, NULL, 1, key); - tuple = systable_getnext(scan); + tuple = get_catalog_object_by_oid(rel, + Anum_pg_propgraph_label_property_oid, + object->objectId); if (!HeapTupleIsValid(tuple)) { if (!missing_ok) elog(ERROR, "could not find tuple for label property %u", object->objectId); - systable_endscan(scan); table_close(rel, AccessShareLock); break; } @@ -4196,7 +4181,6 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok) ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid); appendStringInfoString(&buffer, getObjectDescription(&oa, false)); - systable_endscan(scan); table_close(rel, AccessShareLock); break; } [parent: 5cdec423193c]