Re: dependencyLockAndCheckObject(): dependent vs referenced

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Kyotaro Horiguchi <horikyota.ntt@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2026-05-28T18:40:52Z
Lists: pgsql-hackers
On 28/05/2026 05:46, Kyotaro Horiguchi wrote:
> Recently, the following error message was added in back branches 14-18:
> 
> "dependent %s was concurrently dropped"
> 
> As I understand it, this is emitted in
> dependencyLockAndCheckObject(Oid classId, Oid objectId) when the
> object identified by classId/objectId no longer exists at that point.
> 
> However, looking at one of the callers:
> 
>> void
>> recordMultipleDependencies(const ObjectAddress *depender,
>>                             const ObjectAddress *referenced,
>>                             int nreferenced,
>>                             DependencyType behavior)
>> {
>>      ...
>>      dependencyLockAndCheckObject(referenced->classId,
>                                   referenced->objectId);
> 
> and further up, the function comment says:
> 
>> /*
>>   * Record a dependency between 2 objects via their respective ObjectAddress.
>>   * The first argument is the dependent object, the second the one it
>>   * references.
>>   *
>>   * This simply creates an entry in pg_depend, without any other processing.
>>   */
>> void
>> recordDependencyOn(const ObjectAddress *depender,
>>                     const ObjectAddress *referenced,
>>                     DependencyType behavior)
>> {
>>      recordMultipleDependencies(depender, referenced, 1, behavior);
>> }
> 
> Ignoring higher-level callers for the moment, if this comment is
> considered authoritative, then it seems that the object being checked
> here is the referenced object rather than the dependent one.
> 
> If so, should the message perhaps say:
> 
> "referenced %s was concurrently dropped"
> 
> instead?

Yes, you're right. I mixed up the terminology, in my head "dependent" 
was a synonym for "referenced", but it's not. "dependent" means the same 
as "depender", which is a term we use in some other places.

I've changed the error message and comments to say "referenced". Thanks!

- Heikki