Thread
-
Re: dependencyLockAndCheckObject(): dependent vs referenced
Heikki Linnakangas <hlinnaka@iki.fi> — 2026-05-28T18:40:52Z
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